Top 11 Lenguajes de programación creados por no haber uno mejor

Three panelists rank eleven programming languages created to replace or improve upon existing ones. They cover Rust as a safer alternative to C/C++, Swift replacing Objective-C on iOS, Kotlin as Java's successor on Android, and debate whether Julia or Go deserves the top spot.
Chapters
¿Os habéis fijado que hubo mucha gente que pidió el top de lenguajes creados por no haber uno mejor?
Bueno, muchos... ¿El top no era de lenguajes creados para sustituir a otros?
¿No son lo mismo?
Mmm... hay matices.
¡Vamos!
¿Lo mismo? Pues eso. 11 lenguajes...
Espera, ¿11? ¿Por qué 11 y no 10?
¿Por qué debería poner solo 10? No me gustan los tops que dicen 10 y luego hacen menciones de honor.
Vale, entonces no ¿No quieres dejar ninguno fuera?
En verdad, seguro que alguno se queda fuera, pero estos 11 creo que se han ganado estar aquí en este top. Así que... 11 lenguajes creados para sustituir a otro.
¿O porque no había uno mejor?
En principio voy a hacer un descargo de responsabilidad.
¿Un qué?
Un disclaimer.
Vamos, que no te quieres pillar los dedos.
Exacto. Aunque los datos han sido lo más objetivos posibles, de seguro que puedes encontrar otros lenguajes que te puedan resultar más representativos. Déjanos un comentario en ese caso.
¿Y cuáles son las normas para elegir estos lenguajes? ¿El orden de preferencia? ¡Cuenta, cuenta!
Pues a ver, las normas son claras: son lenguajes que surgieron porque querían sustituir a otro.
¿O porque no había uno mejor?
Sí, solo incluiremos ese tipo de lenguajes.
¿Y el orden tiene algún criterio?
Será por su impacto, cuánto se conocen y usan.
Vale. Pero descartemos algunos lenguajes que son obvios que llenan un hueco que no existía.
¿Te refieres a los primeros? Fortran, COBOL y Lisp.
¡Exacto! Estos está claro que llenan un hueco porque no existían lenguajes en su campo anteriores a ellos.
Comencemos entonces, de menor a mayor impacto. Número 11: Racket.
Mmm... pues no me suena este.
No es muy conocido en verdad. Es un lenguaje de propósito general Vamos, que sirve para todo y muy conocido en el ámbito académico y de investigación. Se creó en 1994.
¿A qué lenguaje intentó sustituir o qué hueco llena?
Tiene una gran capacidad para crear lenguajes específicos de dominio o DSL, lo que facilita mucho la labor de escribir código y enseñar programación. Así que su hueco a llenar estaría en la investigación, enseñanza y como lenguaje práctico.
Ahí, ahí, casi no entra en el top, Pero parece un buen lenguaje para tener presente, con la sintaxis típica de Lisp.
Racket ofrece un enfoque único y flexible para la programación y es un lenguaje muy práctico. Vale la pena echarle un vistazo. Número 10: Chapel.
Este tampoco es muy conocido, ¿no?
No, tampoco. Al igual que Racket, es un lenguaje de propósito general, pero el hueco a llenar por Chapel Está en el campo de la programación paralela y distribuida de alto rendimiento.
¡Vaya! Creía que paralelo y distribuido no podrían ir nunca en la misma frase con alto rendimiento. ¿Consiguió su objetivo?
Sí, aunque el lenguaje Racket es un lenguaje que se ha empleado principalmente en el mundo académico y científico, creado en 2009.
Otro lenguaje al que recomendamos echarle un vistazo entonces, si no lo has hecho ya.
Número 9: V.
Este lenguaje me suena un poco. Creo haber leído que era una estafa.
La verdad es que atrajo mucha malhabilis por culpa de sus promesas un poco irreales.
¿Acaso prometió poder traducir código de C para hacer migraciones instantáneas? ¿O quizá evitar los leaks de memoria sin mecanismos como los de Rust ni recolectores de basura como en otros lenguajes?
Pueeees...
No, ¿verdad? ¿Verdad?
Me temo que el creador hizo esas y más promesas, sí.
Vaya, sí que se vino arriba. Pero entonces, ¿el lenguaje salió al mercado? Si está sobre Shapel y Racket será porque tuvo algo más de visibilidad y éxito, ¿no?
Sí, en verdad está ahí y lo puedes ver. Pero obviamente, aunque consiguió muchas estrellas en GitHub y una gran financiación inicial en Patreon, No cumplió sus promesas y es un lenguaje más.
¿Un lenguaje más? ¿No tiene ninguna característica que lo ponga por encima de los demás?
Podríamos señalar algunas de sus bondades, pero la verdad es que su diseño inicial y sus continuos problemas y fallos, que prometen subsanarse en las siguientes versiones, deja en muy mal lugar a este lenguaje. No obstante, sigue vivo y siguen sacando versiones, así que solo confiar en que vayan mejorando.
Vale, ya veo por qué quedó tan abajo en el ranking. ¿Seguimos?
Número 8: Cristal.
Bonito nombre, parece en la línea de Ruby, por eso de las gemas y las piedras preciosas.
En verdad está más ligado de lo que parece.
¿Es una versión de Ruby?
Más o menos. Este lenguaje intentó ser un reemplazo para Ruby por mantener una sintaxis parecida y un rendimiento cercano al del lenguaje C.
Pues tiene muy buena pinta. Dan ganas de hacer una app en Rails.
Nope.
¿No? ¿No puedo hacer una app en Rails?
Dije una sintaxis muy parecida. Curiosamente esas diferencias que tiene con Ruby hace que Rails no funcione.
¿No? Vaya. Supongo que si no podemos usar uno de los grandes reclamos para el uso de Ruby, habrá poco que hacer con Crystal.
Tiene su propio framework basado en Rails, Phoenix y otros más, pero obviamente No es lo mismo. No tiene tanta comunidad detrás y tendrás que aprender las diferencias para poder utilizarlo.
Supongo que por eso la adopción no fue tan grande.
Sí, pero es normal. Las bondades de Ruby hacen que sea lento y Cristal no incrementó el rendimiento sin variar la flexibilidad inicial de Ruby, sino que intentó ir al extremo opuesto.
Mmm, entonces tendrá sentido únicamente donde se emplease Ruby y no la flexibilidad propia del lenguaje. Entiendo ahora por qué de su baja adopción.
Número siete, Zig.
No me digas, otro lenguaje que intenta sustituir al lenguaje C. Zig also compiles C code.
Exacto. Está a medio camino entre C y Rust, enfocado en la seguridad y el control del sistema para el programador.
Parece entonces la opción adecuada si Rust te parece abrumador y C demasiado inseguro. ¿No?
Es un lenguaje de 2016, bastante joven. Sus creadores dicen que da mayor seguridad que C, tiene las facilidades de Go para la gestión de memoria y menos palabras clave o reservadas que C++ o Rust, por lo que es más fácil de aprender.
Pero si sustituye al lenguaje C principalmente, su nicho es muy pequeño, ¿no? Se quedaría relegado a la programación de sistemas.
En verdad es algo más grande porque gracias a su sencillez permite ser usado no solo en sistemas, sino también en sistemas embebidos, para WebAssembly en el navegador e incluso para videojuegos.
Suena bien, y el lenguaje es verdad que tiene un aspecto muy parecido a la mayoría de lenguajes creados en la década de 2010.
Siguiente, número 6: Nim. Creo que sería muy repetitivo decir que es un lenguaje de propósito general. En verdad todos los que iremos diciendo lo son.
Vale, Nim es de 2008 según parece. ¿A qué lenguaje intentó sustituir?
Pues parece que al igual que Crystal, Nim fue un intento de suplantar a Python de la misma forma, es decir, incrementando su rendimiento.
¿Y en este sí podemos usar Django, su framework web?
Pues me temo que no. Django aprovecha mucha de la sintaxis de Python y Nim no respeta esta sintaxis al 100%.
Entonces supongo que tendrá su propio nicho. ¿En qué se usa y por qué es más conocido que los anteriores?
Pues parece que hay muchos entusiastas de Nim en la programación de videojuegos.
¿Videojuegos? ¿Hay alguno que podamos conocer hecho con Nim?
No son muy conocidos, pero hay ya algunos hechos en Godot y Nim, por lo que es de apreciar que este lenguaje ya comienza a ser conocido en el sector.
Pues buen dato. Si os gusta la sintaxis de Python, la programación de videojuegos y Godot, Echarle un vistazo a Nim es muy buena idea.
Número 5: Haskell.
Este lenguaje sí es más reconocible y, al igual que Racket y Chapel, tiene sus bases en la comunidad académica y científica principalmente, ¿no?
Pues aunque es un lenguaje que comenzó en ese ámbito, se está trasladando a pasos agigantados al sector empresarial y ya hay muchas empresas que lo incorporan.
¿Alguna conocida?
Pues sí, por ejemplo Facebook, IBM, Twitter, NVIDIA y Microsoft.
¡Sí que es entonces usado! Pero, ¿qué lenguaje quiso reemplazar o qué hueco llena?
Pues llena un hueco. Haskell es quizás el único lenguaje 100% de programación funcional. Fue creado precisamente para tomar todas las ideas de este tipo de programación y le dieron el nombre de Haskell Curry.
¿Haskell Curry? ¿Ese no trabajó con Von Neumann?
Sí, de hecho fue muy crítico con la imposición de von Neumann de utilizar diagramas de flujo. Él consideraba que la composición de programas a base de funciones matemáticas era más que suficiente.
¿El lenguaje Haskell se basa en esto?
Más o menos, sí. La programación funcional se basa en la composición, dicho a grandes rasgos.
Pues merece la pena echarle un vistazo.
Número 4: Kotlin.
Este lenguaje sí que me suena. En este lenguaje programan ya casi todos los desarrolladores de Android, ¿verdad?
Sí, en 2017 Google anunciaba que daba soporte a Kotlin para el desarrollo de aplicaciones en Android, por lo que la mayoría de desarrolladores cambiaron a este lenguaje para implementar sus aplicaciones.
Entonces, ¿Kotlin es el lenguaje que sustituye a Java?
Lo intenta. Es verdad que en Android, si no lo ha conseguido, poco le falta. Pero hay que recordar que Java es un lenguaje con mucha historia, mucho código desarrollado, y no a todos les gusta Kotlin. Por lo que un reemplazo completo se ve poco probable. Creo que no hay mucho más que decir sobre este lenguaje de momento, simplemente que si vas a desarrollar con Java antes habría que echarle un vistazo. Quizás descubras una forma más fácil de hacer el mismo trabajo. Número 3: Rust.
Se nota que vamos llegando a los de mayor adopción. Este lenguaje de Mozilla creo que ha sido noticia últimamente.
Sí, sobre todo por el comunicado de la Casa Blanca en el que se desaconseja el uso de lenguajes poco seguros como C o C++ y se ponía a Rust como posible solución.
Este lenguaje se creó como un proyecto de Mozilla en 2006 y atrajo mucho el interés de la comunidad de programadores desplazando a otras alternativas a sustituir a C++ o C, como eran D, Go o Nim, pero tuvieron un pequeño problema.
¿Pasó algo parecido a lo que pasó con V?
No. Rust cumplió sus promesas y estas promesas no eran descabelladas. Incluso muchos dicen de Rust que es uno de los lenguajes mejor diseñados y elegantes.
Entonces, ¿cuál fue el problema?
El problema fue que Rust cambiaba mucho de una versión a la siguiente hasta alcanzar su versión 1.0. Cada nueva versión rompía el código de todos los que adoptaron el lenguaje de forma temprana y esto causó un poco de miedo inicial que se propagó incluso cuando la versión estable fue lanzada.
¿Puede que por eso el lenguaje Go tenga como su principal promesa no hacer cambios que rompan código?
Es posible, pero difícil de saber.
¿Para qué utilizó Mozilla este lenguaje? ¿Creó algún programa con él?
Por supuesto, creó un navegador web llamado Servo.
¿Servo? Hmm, no me suena.
Fue una prueba de concepto. Firefox 57 incorporó componentes de Servo, por lo que podemos decir que Firefox tiene código escrito en Rust. A día de hoy conviven en el proyecto Rust, C++ y JavaScript, entre otros lenguajes usados para construir y mantener el Firefox.
Bueno, pues tenemos nuestro tercer lenguaje más usado que intentó desplazar a C++. Sigamos.
Número 2: Swift.
Este es el lenguaje empleado para desarrollar en iOS. ¿Intenta llenar el hueco de desarrollar para iOS?
Vaya, si no recuerdas que antes de Swift estaba Objective-C, es que este lenguaje sí que hizo bien su trabajo de ser el sucesor de Objective-C.
Pero entonces este lenguaje no lo intentó, lo hizo.
Sí, quizás no debería estar en el top, pero desde luego su hazaña fue debida a lo cerrado que es el entorno de desarrollo de Apple. Si Apple dice que hay que desarrollar en Objective-C, no hay discusión, ese es el lenguaje. Y cuando en 2014 dijo de cambiar a Swift, no hubo mucho que hacer. Los nuevos dispositivos ya son muy difíciles de poder programarse en otro lenguaje que no sea Swift.
Todo un monopolio.
En cierta forma.
Está Android y antes incluso había más opciones como los móviles de Windows o Firefox, pero si las empresas quieren publicar aplicaciones para todos, es obvio que hay que pasar por Swift.
Sí, cierto. No obstante, hay que destacar que no creo que nadie se quejara del cambio. Es decir, Objective-C no era un lenguaje muy fácil y las modificaciones para iOS lo hacían algo complejo. Entonces no creo que hubiera quejas porque Swift era mejor.
Exacto. Cuando un cambio facilita tu trabajo, aunque tengas que aprender algo nuevo, merece la pena a largo plazo. Además, la gente que hace software para Apple normalmente es porque son adeptos de la marca y cada cambio lo toman como positivo.
Vale, pues anotado. Ya solo nos queda uno.
Número 1: Julia.
¿Julia? ¿En serio? Estaba esperando que en este puesto estuviese Go y tú vas y pones a Julia.
Es que me parece que—
No, en serio, que me digas que el puesto 3 es de Rust y el 2 de Swift lo entiendo, pero que me digas que el primer puesto es de Julia.
Es un lenguaje que nadie conoce.
¿Quién conoce a Julia?
Te decía que al igual que Racket y Chapel es otro lenguaje del sector académico creado para lidiar con el problema de tener un Python poco eficiente o un C demasiado complejo. Julia tiene la eficiencia de C y la facilidad de Python y MATLAB, pero nadie lo conoce. Merece la pena echarle un vistazo.
Me niego a que este lenguaje sea el número 1.
Vale, vamos a hacer una cosa. Cambiamos este número 1 y ponemos a Go, ¿vale? Número 1: Go.
Ahora sí. Ni que te hubiese hecho la lista ChatGPT. Pues... No. Mejor no lo digas. De hecho, este lenguaje creo que debe estar el primero porque es realmente el que más notoriedad ha tenido.
Fue creado precisamente para intentar sustituir a C++ por personas que estuvieron en los laboratorios Bell. De hecho, Ken Thompson no fue creador directo ni de C ni de C++, pero estuvo ahí porque sí lo fue del lenguaje B.
Exacto, y hay que remarcar que hay pocos lenguajes que realicen la compilación a la velocidad que lo hace Go.
¡Y esa concurrencia! ¡Y esos goffers!
Pues sí, Go se merece la primera posición. Conclusiones.
Uf, vale. Finalmente nuestro número ha quedado en 12.
¡No! ¡Quedó en 11! Julia no debería haber estado ahí, por lo menos no tan arriba.
Pero te aseguro que hay mucha gente que conoce ese lenguaje.
¿Dónde? ¿En la facultad de física?
Puede.
¿Y vosotros qué pensáis? El lenguaje Julia estaba bien posicionado.
Go debería ceder su puesto.
¿Alguien ha programado en alguno de estos lenguajes?
Déjanos tu comentario.
More from Manuel

Historia de los Lenguajes de Programación: años 1960-1969 #basic #apl #simula #lisp #logo

¿Compilador o intérprete? La historia de una rivalidad que comenzó en los años 40








