Porque apostar por un lenguaje de programación raro

JavaScript. Java. Python. C++. C#. Hasta los que no son desarrolladores les suenan estos nombres. Son algunos de los lenguajes de programación más utilizados por los programadores. Pero en el ecosistema desarrollador también hay profesionales que, por un motivo u otro, apostaron por uno menos frecuente.

Con el paso del tiempo, algunos de esos lenguajes han pasado de ser “rara avis” a, simplemente, menos frecuentes. qué les llevó en su momento a apostar por un lenguaje poco común así como lo mejor y lo peor de estar especializado en algo diferente.

Flutter y Dart

Lara Martín es Ingeniera Android y Google Developer Expert en Flutter y Dart. “No estudié Ingeniería Informática, sino soy licenciada en Biología y tengo un máster en Biotecnología. Pero acabé dedicándome a hacer aplicaciones para móvil”.

Para su trabajo, usa principalmente Kotlin al ser desarrolladora Android, pero también emplea Dart cuando hace aplicaciones Flutter, un framework para el desarrollo de aplicaciones tanto móvil para Android y iOS, como para aplicaciones desktop y también páginas web. Este framework usa un lenguaje de programación llamado Dart. A parte de Kotlin, también ha programado mucho en Java. “En el pasado también hice algunos proyectos en Python y Javascript”, recuerda.

¿Cómo llegaste hasta Dart? “Cuando Google presentó Flutter, me picó la curiosidad porque después de años haciendo aplicaciones Android de forma nativa (es decir usando Java/Kotlin), vi que Flutter simplificaba mucho el trabajo de desarrollar aplicaciones”, nos cuenta. Eso, sumado a que le permitía crear aplicaciones para iOS.

Aprender un nuevo lenguaje “me daba un poco de miedo”. Además, en aquel momento Dart le parecía menos atractivo que Kotlin, “que justamente en esos momentos Google declaró que oficialmente soportaba Kotlin”, rememora. Pero a renglón seguido añade que cuando empezó a aprender Dart “me pareció muy accesible. Es un lenguaje sencillo, sin poca magia, que cualquier persona que conozca Java o Javascript, no va a tener ningún problema aprendiéndolo”.

Especializarse en un lenguaje poco frecuente ha sido algo lógico. “No puedes elegir el lenguaje cuando estás creando aplicaciones móvil, sino que depende del framework que uses. En el caso de Flutter, Dart es el único lenguaje que puedes usar”, sentencia. Sin embargo, es consciente de que Dart es un lenguaje “poco atractivo para muchos porque no se utiliza fuera de Flutter.

En cualquier caso, lo que le gusta de Dart es que es “un lenguaje creado por Google para Google. Esto les permite adaptar el lenguaje a sus necesidades y a las necesidades de Flutter”. Además “permite añadir nuevas funcionalidades de forma más rápida. Por ejemplo, se han añadido «extension functions» después de que la comunidad pidiera esa funcionalidad”.

Lara Martín, no obstante, sí que echa de menos que la comunidad no sea tan numerosa como otras. “Empieza a haber algunas pequeñas conferencias sobre Flutter”, añade, como el Flutter Conf Marbella, “una de las primeras conferencias de Flutter en Europa” que se llevó a cabo en 2019. En enero del 2020 “estuve en Flutter Europe, con otros 500 entusiastas de Flutter y Dart en Polonia”. ¿Lo bueno de ser tan pocos? Que se conocen bastante entre ellos. “Formamos parte de un colectivo en el cual nos ayudamos los unos a los otros”.

Sin embargo, cree que “por suerte Google está trabajando mucho en crear una comunidad. Yo pertenezco a un comité llamado Flutter Ecosystem Committee, en el que estamos evaluando bibliotecas creadas por la comunidad, para recomendarlas a los programadores de Flutter”. También Google tiene mucha documentación, el programa Google Developer Expert, además de muchos tutoriales (codelabs).

Esta desarrolladora cree que Google está apostando fuerte por Flutter. Tanto que “parece que será la forma preferida para crear aplicaciones en el nuevo sistema operativo en el que están trabajando”, llamado Fucsia. “Pero nunca se sabe”, añade. Reconoce que por ahora hay poca demanda de desarrolladores que conozcan este lenguaje y, cuando la hay, generalmente buscan freelancers “ya que muchas empresas de momento están probando la tecnología primero, antes de lanzarse a crear un equipo entero”. Sin embargo, cree que poco a poco se ven más ofertas de trabajo, aunque cree que “es incierto todavía cuál va a ser el futuro”. En cuanto a los salarios, no hay diferencia con desarrolladores Android o iOS, según esta experta.

Lara Martín asegura que tanto Flutter como Dart son fáciles de aprender y, en su opinión, muy atractivos para desarrolladores Android y iOS, ya que “desarrollar aplicaciones con Flutter es mucho más rápido y sencillo”. Sin embargo, advierte que “a veces es necesario tener un poco de conocimiento de la plataforma nativa Android o iOS, con lo cual para alguien que no tenga experiencia creando aplicaciones móvil, puede que lo encuentre un poco más difícil”.

Para aquellos que les pique el gusanillo, les anima a visitar la web de Flutter y clicar en «Get started», para instalar Flutter y Dart, y crear la primera aplicación. “Ahí veran que tienen tutoriales específicos para gente que viene de otras plataformas y lenguajes, como React Native, Xamarin y web”.

Elixir

Rafa Paez es desarrollador de software y “un apasionado del crecimiento personal y la educación financiera”. Actualmente trabaja como Principal Software Engineer en Cabify y lo hace en remoto desde Mallorca.

Trabaja principalmente con Elixir, aunque también toca un poco de Ruby y actualmente está aprendiendo Go. “Elixir, Go y Ruby son los 3 lenguajes de programación principales que utilizamos en Cabify para el back-end de nuestra plataforma”, nos explica.

Cuando empezó a programar lo hizo en C# y en .NET, de Microsoft. Pero a los 7 años le llegó la oportunidad para trabajar en una startup londinense usando Ruby. “Hace poco más de 3 años descubrí Elixir y me enamoré de este lenguaje de programación. Antes de ser contratado por Cabify, estuve casi un año desarrollando un producto con Elixir para mi propia startup”, nos cuenta. “Quedé muy positivamente sorprendido con la elegancia del lenguaje Elixir, la solidez de su plataforma Erlang y la productividad que conseguí con Phoenix, el framework web más popular de Elixir”, asegura Paéz, quien también conoce Java, VB.NET, Javascript, Ada y C entre otros, “aunque nunca profundicé en ellos”.

Pero Elixir fue su gran apuesta personal y, de hecho, fue la opción que escogió para crear el producto de su propia startup. “Su creador, José Valim, era contribuidor de Ruby on Rails y un día, trabajando en una nueva “feature”, quedó frustrado por un problema de concurrencia que el lenguaje Ruby no podía resolver de forma natural, por diseño del lenguaje. Tras una larga investigación, descubrió el lenguaje Erlang que es concurrente por naturaleza. Pero había un pequeño problema, el lenguaje era poco atractivo – nada que ver con la agradable sintaxis de Ruby. Así que él creó Elixir, un lenguaje funcional basado en Erlang pero con una sintaxis elegante influenciada por Ruby”.

Para Rafa Paez, hay varias ventajas en Elixir. “Es un lenguaje funcional, concurrente, elegante, moderno, robusto, fiable y rápido”, sentencia. “Está diseñado para crear aplicaciones escalables y mantenibles. Además se ejecuta sobre la máquina virtual de Erlang (BEAM). Por ponerte un ejemplo, WhatsApp se desarrolló en Erlang. Muchos programadores Ruby se han pasado Elixir por estas ventajas y cada vez hay más empresas adoptándolo”.

Son tantas las cosas buenas que, en su opinión, tiene Elixir que apenas ve algunos defectos. “Hace 3 años, cuando yo empecé a usarlo, era un lenguaje relativamente nuevo y quizás no había tantas herramientas y librerías, como por ejemplo había en Ruby. Pero hoy en día esto ha cambiado y el ecosistema de Elixir es muy estable y avanzado”, asegura. Quizá por eso tampoco nota dificultades para trabajar con Elixir. “Hay muchos plugins para Elixir en los principales editores, como Visual Studio Code, por ejemplo. Tenemos incluso conferencias anuales muy importantes como la ElixirConf EU y a la cual solemos ir algunos de Cabify, ya que la empresa nos invita a ir a este tipo de eventos”, asegura.

Este aumento de la popularidad de Elixir también hace que, en su experiencia, cada vez haya más puestos de trabajo para desarrolladores de Elixir. “En este último año, he notado un incremento de trabajos para Elixir, por las ofertas constantes que recibo a través de LinkedIn”. Además, asegura que, en términos generales, las ofertas tienen una buena variable económica. “Sí están bien pagados los programadores Elixir”. Pero, en su experiencia en Cabify, si eres un buen ingeniero “con un poco de ayuda” se aprende el lenguaje “bastante rápido y sin problema”.

Por todo ello, Rafa Paez remarca que “Elixir es un lenguaje funcional que está en auge y debido a sus ventajas lo seguirá estando por muchísimos años”, por lo que “veo mucho futuro a Elixir y los ingenieros que lo utilizan. A Go también le veo futuro”.

Prolog y Haskell

José Antonio Riaza Valverde es graduado en Ingeniería Informática con mención en Computación por la Universidad de Castilla-La Mancha. Actualmente es investigador predoctoral en la Universidad de Castilla-La Mancha, donde realiza su tesis doctoral en el grupo de investigación DEC-TAU (“Declarative Programming and Automatic Program Transformation”).

“En nuestro grupo diseñamos lenguajes de programación declarativos y técnicas automáticas para optimizar programas, y creamos herramientas para trabajar con ellos. Actualmente estamos trabajando en FASILL (“Fuzzy Aggregators and Similarity Into a Logic Language”), un lenguaje de programación lógico difuso que extiende las capacidades de Prolog al permitir tratar con información imprecisa incorporando grados de verdad y conectivas difusas en las reglas del programa”.

Además, Riaza es el creador y desarrollador principal de Tau Prolog, un intérprete de Prolog de código abierto para navegadores, enteramente escrito en JavaScript.

En su grupo de investigación trabajan fundamentalmente con## Prolog, “ya que nuestra principal línea de investigación es la programación lógica. No obstante, también me declaro acólito de Haskell y de la programación funcional”.

¿Cómo entró en contacto con Haskell y Prolog? Durante el tercer año de carrera. “Cuando ves todo lo que puedes hacer con unas pocas líneas de código, te entran ganas de seguir aprendiendo sobre estos lenguajes, y cuando te acostumbras a programar en ellos, te da mucha pereza tener que volver a trabajar con lenguajes imperativos”, explica. Hasta ese momento conocía los lenguajes que se suelen utilizar en la carrera: C, Java, Python y JavaScript.

Riaza explica que un programa se compone de una parte lógica y otra de control. “El componente lógico determina el significado del programa (qué hace), mientras que el componente de control solamente afecta a su eficiencia (cómo lo hace)”. Y, en su opinión, “cuando trabajas con un lenguaje declarativo, estás dejando de lado la parte de control, que se asume automática al sistema, para centrarte en la parte lógica. Por lo tanto, si a la hora de programar me puedo desentender de la mitad de la ecuación, ¡estupendo!”.

En el caso de Haskell, las ventajas que encuentra son “el orden superior, el polimorfismo y las clases de tipos te proporcionan una capacidad increíble de abstracción”. Además, el hecho de que el lenguaje sea puramente funcional “le proporciona propiedades muy útiles para su estrategia de evaluación, ya que una expresión no tiene porqué computarse hasta que realmente es necesario. Esto te permite, entre otras cosas, manejar estructuras de datos infinitas”, asegura. Si a ello le sumamos la “currificación de las funciones y al uso de estructuras comunes como funtores y mónadas, hace que sea muy cómodo y elegante construir nueva funcionalidad a base de aplicar parcialmente y componer otras funciones”.

Mientras, de Prolog destacaría “la reversibilidad, la vuelta atrás automática y el no determinismo, que te permiten explorar un gran espacio de búsqueda con muy poco código”. Riaza defiende que los argumentos de los predicados en Prolog no tienen una dirección, no son de entrada o de salida, y por lo tanto “un predicado que concatena listas también te sirve para separarlas, por ejemplo. Por otra parte, es un lenguaje homoicónico, es decir, las reglas del programa pueden ser manipuladas como datos del propio lenguaje, lo que te permite modificar fácilmente el comportamiento del programa en tiempo de ejecución. Además cuenta con gramáticas de cláusulas definidas, que proporcionan una forma conveniente y efectiva de expresar gramáticas, resultando especialmente útiles en el procesamiento de lenguajes naturales y de lenguajes formales”.

Para este ingeniero, la peor parte de estos lenguajes es la curva de aprendizaje y el cambio de mentalidad que requieren si estás acostumbrado a otros paradigmas de programación. “En los lenguajes imperativos, lo normal es especificar un programa como una secuencia de acciones que van mutando estados (asignando datos a variables que pueden cambiar de valor) hasta producir un resultado final, y poseen estructuras de control para modificar el flujo de las acciones. En los lenguajes declarativos no existen los estados, no le indicas al ordenador cómo tiene que computar las cosas, y esto es algo que al principio puede resultar extraño”, explica.

En su experiencia, en el caso de los lenguajes lógicos como Prolog es conveniente conocer ciertos aspectos formales de la lógica de predicados antes de empezar a programar, como son la unificación sintáctica o la resolución SLD, “ya que su semántica se apoya fuertemente en estos conceptos”.

Pero, más allá de eso, cree que no es difícil aprender ni trabajar con estos lenguajes menos corrientes. “En la web hay documentación y recursos suficientes para aprender, listas de correo y foros para resolver dudas, etcétera”, asegura. Además, explica que le han ayudado mucho otros programadores que trabajan con lenguajes lógicos o que mantienen las principales implementaciones de los mismos. “Siempre hacen todo lo posible por dar visibilidad a los lenguajes declarativos y ayudar a otros desarrolladores”, asegura.

Y tú, ¿qué lenguaje elegiste o cual piensas aprender en un futuro?, apuesta por algo que te apasione, quizá sea el lenguaje más usado dentro de poco y seas contratado por una empresa de Sillicon Valley.


¿Quieres aprender a programar de manera profesional?

 

Te invitamos a formar parte de Azul School donde vas a tener acceso a cursos profesionales con certificado. Además tienes acceso a una red social de programadores donde puedes conocer gente de tu ciudad o país.

 

Si quieres acceder a todas las funciones te regalamos un descuento del 75% usando este cupón (no vas a encontrar este descuento en ningún otro lugar) Cupón: azulweb y lo puedes cambiar aquí: Haz clic aquí para cambiar el cupón del 75%.

 

También puedes probar la plataforma de forma gratuita y obtener un curso gratuito aquí: Haz clic aquí para probar la plataforma de forma gratuita.


Ernesto Mota

Ernesto Mota

Nací en el d.f., sigo siendo defeño, hoy radico en la hermosa ciudad de Cuernavaca, Morelos, soy Ing. en Sistemas computacionales, con un posgrado en Tecnologías de información, Doctorando en ambientes virtuales de aprendizaje y realidad aumentada, Tecnólogo es mi categoría laboral, y mi linea de investigación es la realidad aumentada aplicada a nuevos entornos de aprendizaje.

También te podría gustar...