Aprende programación con OCaml

Las preguntas sobre si todavía vale la pena aprender lenguajes como OCaml en la era de los modelos de lenguaje grandes suscitan argumentos contundentes de que la comprensión humana, los modelos mentales y el placer de resolver problemas siguen siendo esenciales. Los comentaristas destacan las fortalezas de OCaml como un lenguaje simple pero potente de la familia ML, útil para enseñar conceptos básicos de informática, influir en cómo los desarrolladores piensan sobre el diseño de sistemas y funcionar especialmente bien con tipos estáticos y flujos de trabajo asistidos por LLM, al tiempo que lo comparan con Rust, Haskell y C como herramientas de enseñanza o producción. Otros señalan recursos prácticos, opciones de GUI y la tensión entre aprender por utilidad profesional y por crecimiento intelectual personal.

Si conviene aprender OCaml (o cualquier otra cosa) en la era de los LLM

  • Muchos sostienen que todavía deberías aprender lenguajes como OCaml por razones intrínsecas: curiosidad, disfrute, ejercicio mental y desarrollo de comprensión, no solo por empleabilidad.
  • Analogías: historia vs libros, hornear a mano vs máquinas, tocar un instrumento vs darle al play, caminar vs vehículos, hacer sudoku vs dejar que las computadoras lo resuelvan.
  • Varios advierten que externalizar el pensamiento a los LLM erosiona la comprensión y la capacidad de generar ideas nuevas o incluso de dar indicaciones eficaces a las herramientas.
  • Otros lo plantean de forma pragmática: incluso si los LLM ayudan, debes entender programación para guiar y verificar su salida.

Beneficios y naturaleza de OCaml / lenguajes de la familia ML

  • Se dice que aprender OCaml u otro lenguaje funcional cambia fundamentalmente cómo la gente piensa sobre los programas y los sistemas complejos.
  • OCaml se describe como multiparadigma (funcional, imperativo, orientado a objetos) con semántica simple y tipos estáticos potentes.
  • Algunos afirman que es una buena puerta de entrada a los métodos formales y que la próxima década puede poner el énfasis en la verificación formal.
  • Hay apoyo a conocer al menos un lenguaje tipo C, uno Lisp y uno tipo ML.

OCaml como primer lenguaje de enseñanza

  • Varios defienden ML como el lenguaje ideal de “primera lengua” para científicos de la computación por la claridad de sus abstracciones.
  • Otros argumentan que C (o similar) es mejor para entender cómo se ejecutan los programas en el hardware, aunque hay objeciones de que el C moderno está muy lejos de las máquinas reales.
  • Las experiencias difieren: aprender OCaml o Haskell primero puede ser duro al principio, pero se le atribuyen beneficios a largo plazo; algunos encuentran desagradable ser el único programador funcional en un equipo imperativo.

Sinergia OCaml + LLM (“arma secreta”)

  • Hay afirmaciones fuertes de que los LLM escriben OCaml de forma inusualmente buena, especialmente en comparación con sistemas de tipos más complejos.
  • Las razones dadas: tipos Hindley–Milner, inferencia global, compilación rápida y archivos de interfaz proporcionan bucles de retroalimentación ajustados para el modelo.
  • Se considera que Rust y Haskell son más complejos o más lentos para este propósito; se dice que los detalles están bajo estudio activo, pero la evidencia sigue sin publicarse y es algo poco clara.

Recursos, herramientas y ecosistema

  • El curso Cornell CS3110 de OCaml y su libro de texto se recomiendan repetidamente; el libro destacado es elogiado pero se considera demasiado difícil para principiantes absolutos.
  • Se fomenta el aprendizaje basado en REPL para novatos.
  • Las opciones de GUI mencionadas incluyen enlaces basados en GTK y algunos toolkits para macOS/Linux, pero no surge un consenso claro sobre el “mejor” marco multiplataforma.

Escepticismo y alternativas

  • Una minoría descarta OCaml como algo extraño o que no merece la pena aprender frente a Python, JS/Go, Lean, Rust, o frente a centrarse en “AI-maxing” y habilidades de ingeniería más amplias.
  • Otros responden que, una vez que OCaml encaja, puede reemplazar muchos lenguajes de scripting y de aplicaciones en el uso diario.