Apple contratando desarrolladores de compiladores para mejorar la interoperabilidad entre Swift y C++
El nuevo puesto de Apple para un ingeniero de frontend de compiladores pone de relieve su impulso por profundizar la interoperabilidad entre Swift y C++, permitiendo la migración gradual de grandes bases de código C++ existentes (como WebKit y componentes del sistema) a Swift en lugar de reescrituras completas arriesgadas. Los comentaristas debaten el objetivo a largo plazo de Apple de reemplazar la mayor parte de C/C++ con Swift, incluso en código crítico para el rendimiento y posiblemente del kernel, sopesando la seguridad de Swift y sus funciones de rendimiento en evolución (ARC, tipos de solo movimiento) frente a la madurez de C++ y los problemas de ABI. El trabajo también provoca conversaciones sobre compensación, requisitos presenciales en Cupertino y cómo las decisiones de lenguaje y herramientas se cruzan con la calidad de software y la estrategia de plataforma más amplia de Apple.
La estrategia de Apple: interoperabilidad Swift–C++ y migración
- Muchos ven esta contratación como parte del plan a largo plazo de Apple para migrar de forma incremental grandes bases de código en C++ (p. ej., WebKit, posiblemente drivers y componentes del sistema) a Swift, en lugar de mediante grandes reescrituras.
- La interoperabilidad se presenta como una forma de escribir nuevas funciones en Swift dentro de proyectos C++ existentes, con llamadas bidireccionales y una copia mínima de datos.
- Algunos lo ven como la continuación de una tendencia: Apple una vez minimizó públicamente C++, luego lo adoptó (p. ej., las APIs C++ de Metal) y ahora está construyendo puentes para que Swift pueda sucederlo de manera efectiva.
Estado de C++ y otros lenguajes en las plataformas de Apple
- Debate sobre si C++ es “de primera clase”:
- Una postura: C++ se usa mucho dentro de Apple (CoreAudio, daemons, drivers), con ABI estables y una fuerte compatibilidad de herramientas mediante Clang/Xcode.
- La otra: las APIs de la plataforma, los frameworks de UI y las plantillas por defecto están orientados a Swift/Objective‑C; no puedes construir aplicaciones de UI completas solo en C++.
- Objective‑C y Swift se describen como “gestionados” en el sentido de que tienen runtimes, ARC, reflexión y carga dinámica, aunque hay desacuerdo sobre la terminología.
Rendimiento, seguridad y compensaciones entre lenguajes
- Algunos critican C++ por su complejidad (plantillas, UB) y argumentan que la inversión debería ir a lenguajes nuevos y más seguros (Swift, Rust, etc.).
- Otros sostienen que los expertos pueden escribir C++ seguro y de alto rendimiento, y que la ergonomía y el código existente lo justifican.
- Se expresan preocupaciones sobre si Swift puede igualar el rendimiento de C/C++, especialmente en torno a ARC y el recuento de referencias; las respuestas señalan el trabajo en curso sobre tipos de solo movimiento y semántica de valores para evitar la sobrecarga de ARC en rutas críticas.
- Hay escepticismo de que los cambios de lenguaje por sí solos resuelvan problemas como deadlocks o algoritmos deficientes.
Ecosistema y alternativas (Rust, Kotlin, D)
- Varios sugieren Rust para nuevo software de sistema debido a la seguridad, señalando que Apple ya usa Rust del lado del servidor (aunque no está claro en binarios de cliente del sistema operativo enviados).
- D y Kotlin se citan como ejemplos de lenguajes con interoperabilidad existente con C++/plataforma; se elogia Kotlin por su fuerte soporte multiplataforma, con la especulación de que podría superar a Swift en uso de propósito general.
Calidad del software y código heredado
- Varios comentaristas se quejan de que los daemons y aplicaciones de macOS/iOS consumen mucha CPU, se congelan en la UI y realizan operaciones lentas, atribuyendo los problemas de forma diversa a la dinamia de Objective‑C, al descenso de calidad de la era Swift y al ritmo anual de lanzamientos de Apple.
- Otros reportan pocos de esos problemas y ven la calidad como algo dependiente de la carga de trabajo o del tamaño de los datos (p. ej., listas de contactos muy grandes).
Ubicación del trabajo, compensación y prácticas laborales
- El puesto es presencial en Cupertino con patrocinio de visa.
- Los comentaristas señalan los altos costos de vivienda del Área de la Bahía frente al salario base listado; las estimaciones típicas de compensación total son ~1,5–2× el base, pero aun así comprar vivienda local resulta difícil sin dos ingresos o largos desplazamientos.
- Algunos critican la estricta política presencial de Apple y temen que las normas de FAANG impulsen tendencias de regreso a la oficina en toda la industria; otros dicen que presencial frente a remoto es una elección organizativa válida.
Aprender compiladores y el valor de las habilidades de nicho
- Se recomiendan varios recursos para aspirantes a ingenieros de compiladores: cursos de compiladores en línea, “Crafting Interpreters”, “Modern Compiler Implementation”, el tutorial Kaleidoscope de LLVM y pequeños compiladores en C (8cc/chibicc) como material de estudio.
- Hay desacuerdo sobre cuán “de nicho” y bien remunerados son realmente los puestos de compiladores; algunos reportan primas solo modestas respecto a roles generales de software.