Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

12 nuevos lenguajes de programación que debe conocer

Lenguajes de programación
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Para algunas personas, aprender un nuevo lenguaje de programación es un exceso que es mejor evitar. ¿Por qué, oh, por qué, argumentan, necesitamos otro idioma más?

¿No tenemos suficiente ya?

¿No funcionan las herramientas existentes?

Y luego están esos buscadores incansables que aprovechan la oportunidad de probar cosas nuevas y tropezar con gemas. El aprendizaje es un fin en sí mismo, y no necesitan mucho convencimiento para quemar sus fines de semana construyendo un juego de cartas basado en consola en ese idioma nuevo y oscuro.

nuevo lenguaje de programación

No importa a qué campamento pertenezca, hay algo más allá del debate: todos queremos dedicar tiempo a algo que tendrá un futuro brillante.

Para las personas en el campo del legado, su idioma existente favorito ya tiene mucho impulso y seguirá teniendo un futuro brillante. A ellos, debo recordarles que su cadena de herramientas de desarrollo preferida ahora madura fue una vez "kool-aid" que muchos se negaron a beber. Y así es hoy; se agregan nuevas tecnologías para resolver nuevos problemas o para aliviar el dolor del desarrollo.

Si algo hace esto de manera suficientemente radical, es probable que continúe arrebatando la mente y llegue a la cima. Cuando eso suceda, no querrá quedarse atrás. 🙂

Y para aquellos a los que les gusta correr con las cosas brillantes, una advertencia: divertirse es esencial como programador, pero debemos tener cuidado de no desperdiciar nuestras energías sin rumbo fijo.

Por supuesto, mierda de cerebro es un pequeño idioma increíblemente retorcido, parecido a un rompecabezas y divertido, pero es poco probable que te beneficies si lo sigues con seriedad. Quiere algo que sea nuevo, sensato y que tenga una base sólida.

Cómo se seleccionaron estos idiomas

Cómo se seleccionaron estos idiomas

La selección de idiomas es un trabajo intimidante, especialmente cuando se están considerando nuevos idiomas para obtener beneficios futuros en el empleo y la satisfacción. Todos los autores de idiomas están firmemente convencidos de que han creado el idioma perfecto posible y han resuelto todos los problemas que hay que resolver. ¿Cómo, entonces, cortas?

Para esta publicación, me centré en algunos parámetros para mantener mi búsqueda dentro de límites razonables.

Fecha de lanzamiento

Específicamente evité los lenguajes que son muy, muy nuevos.

Nuevo, me refiero a idiomas de menos de 5-6 años al momento de escribir, y especialmente aquellos que no han alcanzado la estabilidad (es decir, la versión 1.0). Pero espero volver a esto y escribir sobre su éxito algún día. 😀

Para mí, de 5 a 12 años es el punto óptimo, que es cuando un idioma se ha estabilizado y se están elaborando más refinamientos. Ahora, por supuesto, hay excepciones a esta regla, y se considerarán cuando corresponda.

Fuerte interés de la comunidad

Este es una obviedad, pero a menudo se ignora cuando nos entusiasmamos con algo nuevo. Ahora bien, para muchas personas el respaldo de una gran empresa es suficiente precedente para el éxito, pero no siempre es así.

Sí, Objective-C de Apple y ahora Swift prosperaron porque eran las únicas opciones en un ecosistema altamente controlado, pero Facebook D y corte (una fea versión de un lenguaje ya feo, en mi opinión) siguen siendo poco más que experimentos.

Fuerte interés de la comunidad

La combinación ideal sería un lenguaje respaldado por una empresa grande y estable y con una popularidad explosiva (como React).

Pero el meollo del asunto sigue siendo la comunidad. Si un idioma no está generando entusiasmo y no hay suficientes desarrolladores para educar y popularizar, no saldrá de su tumba de GitHub.

Para mí, esto descarta lenguajes maduros y fascinantes como Raqueta y Erlang, ya que se han mantenido planos en la curva de crecimiento.

USP enfocado y bien definido

Lo tercero que busco es un objetivo claro para el idioma. Por ejemplo, una mejor versión de PHP que soluciona problemas de nombres y se compila en PHP nativo no funciona para mí.

Los beneficios son demasiado pequeños para justificar las grietas si todos intentan moverse hacia él. Con este criterio, no puedo evitar descartar intentos como CoffeeScripty muchos otros lenguajes de compilación en JavaScript similares.

enfocarte

Honestamente, estoy obligado a descartar las mejoras solo de sintaxis de inmediato. La historia ha demostrado que la utilidad supera a la amabilidad cuando se trata de idiomas, por lo que si todos los idiomas nuevos se enfocan en una experiencia más placentera, me temo que no estará en esta lista.

Sintaxis clara y consistente

Sí, lo sé. Solo dije que la sintaxis no importa. Bueno, para ser precisos, dije que las “mejoras solo de sintaxis” no importan. Pero dicho esto, la sintaxis sigue siendo uno de los factores importantes en la productividad y el mantenimiento del programador, por lo que es algo que seguramente se incluirá en mis cálculos aquí.

Sintaxis clara y coherente

Junto con la sintaxis surge la idea de coherencia. La denominación de funciones, la estructuración de módulos, etc., son cosas clave que un lenguaje no puede permitirse equivocarse. Es 2018, por el amor de Dios, y otro diseño de lenguaje similar a PHP sería una lástima para todos nosotros. Entonces, sin más preámbulos, comencemos con nuestras cinco recomendaciones principales.

Julia

Para la gente del MIT, los lenguajes disponibles para la ciencia de datos eran, en el mejor de los casos, un compromiso. Python, a pesar de su claridad y popularidad, carecía de construcciones nativas para tratar con objetos de datos. Además, al ser un lenguaje interpretado, Python era lento para ellos (no las bibliotecas, eso sí, ya que en su mayoría están escritas en C).

Pero quizás el mayor inconveniente fue el torpe modelo de concurrencia y la falta de un modelo de computación paralela, el último de los cuales es un elemento básico en la supercomputación.

Como resultado, Julia nació.

Julia alcanzó su lanzamiento estable el 29 de septiembre de 2018, apenas unos días antes de que se escribiera este artículo (¡habla sobre el tiempo!). Esto es lo que el sitio web oficial tiene que decir sobre sus capacidades:

Julia sobresale en computación numérica. Su sintaxis es excelente para las matemáticas, se admiten muchos tipos de datos numéricos y el paralelismo está disponible de inmediato. El envío múltiple de Julia es un ajuste natural para definir tipos de datos tipo matrices y números.

En cuanto a la sintaxis, Julia puede verse como una combinación de Python y C. Sí, probablemente sea la primera vez que un lenguaje ha tenido éxito en estas dos cualidades.

Para simplificar las cosas, Julia es ultrarrápida y no impone una escritura estricta. Aquí hay algunos puntos de referencia:

julia-benchmarks
Los puntos de referencia oficiales de Julia

Como puede ver, Julia es un poco peor que C, pero saca a Java y Python del agua. ¿Y qué tipo de golosinas ofrece Julia?

Bueno, aquí está la implementación de una función para calcular el hipotenusa de un triángulo rectángulo:

julia-fragmento

Finalmente, mientras que la mayoría de los Julia ecosistema está fuertemente inclinado hacia el trabajo matemático, creo que tiene un futuro brillante de propósito general.

Es el primer lenguaje, que yo sepa, que tiene soporte de primera clase para la computación paralela, por lo que no será una sorpresa que gane más popularidad en los dominios web e IoT.

Rust

Si ha probado las nuevas versiones del navegador Firefox, sabrá que finalmente, después de años de trabajo, parece que podrían quitarle algo de participación de mercado a Chrome.

Si el navegador se siente ligero y ágil y se procesa rápidamente, todo es gracias al lenguaje especialmente desarrollado por Mozilla: Herrumbre.

Decir que Rust tiene un futuro brillante será una mentira; el lenguaje ya es un éxito masivo, y si aún no ha oído hablar de él, es porque su área de aplicación es especializada y su objetivo da miedo: ¡reemplazar C ++! Sí, finalmente tenemos un lenguaje que no solo es capaz de hacer esto sino que ya lo está haciendo.

Para las personas frustradas con los sobrecargados desafíos de gestión de memoria y diseño de C ++, Rust es un soplo de aire fresco.

Así es como se ve un programa de Rust:

fragmento de óxido

Conciso y elegante, en mi opinión. Rust sigue el enfoque de programación funcional, lo que hace que su código sea más componible y no hay jerarquías orientadas a objetos con las que luchar.

Entonces, ¿qué le da a Rust el coraje de ir tras C ++? Es el nuevo modelo de memoria. En lugar de confiar en el antiguo baile nuevo () / delete (), Rust introduce la idea de propiedad.

En lugar de asignar y acceder a la memoria directamente, las variables de Rust se “toman prestadas” unas de otras, con estrictas restricciones impuestas por el compilador. El concepto general es demasiado complicado para explicarlo en pocas palabras, así que siéntase libre de revisar el documentos oficiales para obtener más información.

El punto es que esto da como resultado una seguridad de memoria del 100% sin la necesidad de un recolector de basura, lo cual es un gran problema.

Rust ha conquistado el mundo de la programación de sistemas. Ya es compatible con algunas plataformas, potencia los navegadores y los motores de renderizado están reemplazando rápidamente el código C/C++ en los sistemas de producción y se está utilizando para escribir sistemas operativos.

Claro, no es del agrado de todos crear otro navegador o controlador de dispositivo, pero Rust ya se está extendiendo a otros dominios. Ya tenemos varios frameworks web completamente funcionales y ridículamente rápidos en Rust, y se están desarrollando más y más bibliotecas de aplicaciones.

Honestamente, si está interesado en un futuro emocionante, Rust es el lenguaje perfecto y ahora es un momento perfecto. Rust es un avión que ha despegado, ¡pero todavía hay tiempo para subir a bordo mientras se dirige hacia las estrellas!

Aprender Óxido de Dmitri Nesteruk.

Elixir

Entre los lenguajes que se centran en la felicidad del desarrollador, el primer lugar se ha reservado permanentemente para Ruby. Es un lenguaje que se lee como poesía y tiene suficientes atajos para reducir la fricción mental por orden de magnitud.

No es de extrañar, entonces, que el marco de Rails siga dominando desarrollo de pila completa para desarrolladores serios y startups. Pero no todos estaban contentos con Rails, especialmente uno de sus principales desarrolladores: José Valim. Creo que el propio creador explica mejor la génesis de este lenguaje en un entrevista:

Es una historia larga, pero intentaré que sea breve y dulce. En 2010, estaba trabajando para mejorar el rendimiento de Rails cuando trabajaba con sistemas de múltiples núcleos, ya que nuestras máquinas y sistemas de producción se envían con cada vez más núcleos. Sin embargo, toda la experiencia fue bastante frustrante ya que Ruby no proporciona la herramienta adecuada para resolver problemas de concurrencia. Fue entonces cuando comencé a buscar otras tecnologías y finalmente me enamoré de la máquina virtual Erlang.

Empecé a usar Erlang cada vez más y, con la experiencia, me di cuenta de que me faltaban algunas construcciones disponibles en muchos otros lenguajes, incluidos los funcionales. Fue entonces cuando decidí crear Elixir, como un intento de traer diferentes construcciones y excelentes herramientas a la máquina virtual Erlang.

Y he aquí Elixir ¡nació!

Al igual que Scala mejora el lenguaje Java pero apunta a la misma máquina virtual subyacente (la JVM), Elixir aprovecha la máquina virtual Erlang de décadas de antigüedad y probada en batalla.

Ahora, una discusión sobre Erlang está más allá del alcance de este artículo, pero lo mínimo que debe saber es que es el secreto mejor guardado de la industria de las telecomunicaciones: si nuestras redes telefónicas son mucho más confiables que nuestros sistemas basados ​​en la Web, todo es gracias a Erlang.

En términos aún más simples, lo que significa es esto. Si está creando un sistema en tiempo real como el chat, Elixir requiere mucha menos memoria RAM y es más estable que Ruby (o PHP, Python y Java, para el caso).

¡Una máquina que ejecuta Ruby y alcanza un máximo de 10,000 200,000 conexiones simultáneas puede manejar fácilmente 2 XNUMX cuando usa Elixir y todavía tiene suficiente RAM para ejecutar juegos XNUMXD!

fragmento de elixir
Fragmento de código de Elixir

En cuanto a la sintaxis, Elixir copia descaradamente a Ruby, y su framework web dominante, Phoenix, copia descaradamente a Rails. Diría que eso también es algo bueno, porque junto con Laravel, Grails, Masonite, etc., estamos llegando a un punto en el que todos los lenguajes tienen estructuras similares a Rails que pueden facilitar la transición. Algunos pueden burlarse de la "falta de originalidad", pero al menos no me quejo.

Finalmente, Elixir es una de esas tecnologías refrescantes, agradables y condenadamente prácticas. Varias tiendas Ruby (e incluso que no son Ruby) se están mudando a Elixir, y grandes empresas como Pinterest lo están utilizando en producción con resultados extremadamente satisfactorios.

Mucha gente piensa que Node.js fue un intento improvisado de concurrencia y pronto sería reemplazado por Elixir. Debo decir que estoy de acuerdo con ellos. 🙂

Kotlin

En 2017 I / O, Google desató una bomba sobre la multitud desprevenida. La empresa anunció formalmente Kotlin como lenguaje principal para el desarrollo de Android, enviando ondas de choque a la industria.

Ahora, que Google haya estado buscando activamente reemplazar a Java no es ninguna sorpresa después de haber sido mordido por una demanda de Oracle; sin embargo, la adopción de Kotlin fue algo inesperada y todavía hay muchas posibilidades de que Google salga pronto con su máquina virtual. Por el momento, sin embargo, Kotlin está disfrutando de un aumento.

Kotlin fue desarrollado por JetBrains, una empresa mejor conocida por su conjunto de editores de código increíblemente buenos. Uno de ellos, IntelliJ IDEA, constituye la base de Android Studio. Los objetivos de diseño de Kotlin son la seguridad, la concisión y el 100 % de interoperabilidad con Java.

Más que cualquier otra cosa, el compilador de Kotlin trabaja más duro para eliminar las excepciones de puntero nulo que son tan comunes en el mundo Java. También reduce bastante la proverbial verbosidad de Java, lo que será un alivio para muchos.

Aquí hay una maravillosa comparación de código entre Java y Kotlin:

java-vs-kotlin
Crédito de la imagen: hype.codes

El código de Kotlin es significativamente más corto y tiene mucha menos sobrecarga cognitiva para atravesar.

Pero aclaremos una cosa: es muy poco probable que Kotlin reemplace a Java, aunque rápidamente se está convirtiendo en un favorito. Creo que dentro de diez años, los equipos pequeños y medianos no buscarán más allá de Kotlin, mientras que los grupos grandes continuarán usando Java simplemente por razones heredadas.

Dicho esto, Kotlin tiene un futuro extremadamente brillante ya que hace todo lo que hace Java, puede fusionarse con el código Java sin que nadie se dé cuenta, ¡y es mucho más agradable!

TypeScript

¡Dios sabe que tuve que contenerme para este lugar! Todo dentro de mí gritaba “¡Olmo! ¡Elm!”, pero no importa cuán revolucionarias sean sus ideas o cuán divina la sintaxis, Elm aún no se ve como una alternativa principal para el trabajo de front-end. 🙁 De todos modos, pasemos a lo que is corriente principal: TypeScript.

JavaScript es como las bayas silvestres: feo y desagradable, pero tienes que soportarlo si deseas sobrevivir en la jungla del desarrollo front-end. Se hicieron muchos intentos de reemplazarlo (y muy probablemente, el nuevo WebAssembly estándar tendrá éxito), pero lo que realmente llamó la atención de todos fue el superconjunto desarrollado por Microsoft.

Hay excelentes posibilidades de que hayas oído hablar Mecanografiado: Angular fue el primer framework en adoptarlo desde la versión 2 en adelante, y la gente se apresuró a tomar nota. Esto se debe a que TypeScript agrega superpoderes fantásticos y muy necesarios al lenguaje de programación más famoso del mundo.

Sí, ¡finalmente es posible escribir código JavaScript nativo sin sufrir y sin maldecir el nacimiento!

Estas son las mejoras que TypeScript aporta a la mesa:

✓ Escritura fuerte: Finalmente, una cadena no es un número y un número no es un objeto, ¡que no es una matriz vacía!

✓ Verificación de tipo en tiempo de compilación: Si su código se compila correctamente, está más o menos garantizado que estará libre de las fallas del tiempo de ejecución de JavaScript.

✓ Clases y módulos: Sí, las clases son estándar en ES6, pero también están incluidas en TypeScript, además de un sistema de módulos ordenado.

✓ Inferencia de tipo: Para los tipos complejos, el compilador puede determinar fácilmente el tipo, lo que le ahorra algunos dolores de cabeza.

✓ Asíncrono / espera: Las palabras clave y los patrones asíncronos / en espera son fundamentales, por lo que no tendrá que jugar más con promesas y devoluciones de llamada.

Espacios de nombres, genéricos, tuplas. . . Podría seguir y seguir, pero debería ser suficiente decir que TypeScript convierte una de las peores experiencias de desarrollo en una de las mejores.

fragmento mecanografiado
Fragmento de código de TypeScript

No se puede negar el impacto de TypeScript. Impulsó intentos similares como el Dart de Google fuera del campo (aunque está intentando regresar a través de Flutter, un marco de desarrollo móvil) y abrió los ojos de los desarrolladores de JS a los beneficios de tipos más fuertes.

Como resultado, bibliotecas importantes como React, D3, Vue (¡incluso jQuery!) ahora tienen una versión de TypeScript, y en las mejores tiendas de software del mundo, todos El código JavaScript se está escribiendo como TypeScript código. Los encabezados de TypeScript ahora también están disponibles para Node.js (honestamente, si un nodo puede mejorar su historia de concurrencia y reparar su pésima administración de memoria, durará para siempre).

Te sorprenderá saber que el creador de Node.js, después de arrepentido su creación, está trabajando en un nuevo tiempo de ejecución (no hay un sitio web oficial en este momento; solo el repositorio de GitHub) que tiene TypeScript como su idioma principal.

¿La mejor noticia? TypeScript es un pequeño idioma para aprender con beneficios considerables en el futuro. Si es un desarrollador intermedio de JavaScript, obtendrá suficiente TypeScript en dos días para transferir todo su código existente.

Elm

olmo es tan rápido como se puede pronunciar su nombre y se usa para aplicaciones de front-end, gráficos y juegos. Es un lenguaje de programación funcional creado por Evan Czaplicki en 2012.

Se dice que Elm no tiene excepciones de tiempo de ejecución, ahí es donde brilla. Como un lenguaje tipificado estáticamente, el compilador valida todos los errores en tiempo de compilación (¡guau!) con mensajes amigables (los mensajes son textos completos y no códigos extraños).

¡Qué suspiro de alivio para los desarrolladores (depuradores)! Podrás aprender a codificar en Elm a medida que sigas recibiendo más errores: ¡el compilador te dice qué está mal y sugiere lo que debes hacer para corregirlo!

Elm se jacta de ser más rápido que Reaccionar y más fuertemente tipado que incluso TypeScript. El código de Elm está muy organizado y ordenado y te hará un mejor desarrollador.

Dado que Elm está basado en módulos, puede crear fácilmente componentes reutilizables. Elm compila en JavaScript que puede ejecutar en el navegador. Entonces, todo lo que necesita para que Elm funcione es nodo y npm, y simplemente puede obtener Elm usando el comando:

npm install -g elm@<version> 

Puedes poner la versión que quieras instalar, por ejemplo, 0.19.1.

A continuación, puede comprobar si Elm está correctamente instalado utilizando el –version dominio. Si aún no desea realizar toda la instalación y configuración, simplemente vaya a su página web oficial y usa el editor en línea para jugar.

Entonces, ¡juguemos un poco, entonces!

Si no está utilizando el compilador en línea, tendrá que instalar todas las dependencias para el programa que escribiremos ahora (aunque es bastante fácil).

Pidamos a un usuario que escriba su nombre dentro de un cuadro de texto e imprima lo mismo en la página con un saludo.

import Browser

import Html exposing (Html, Attribute, div, input, text)

import Html.Attributes exposing (..)

import Html.Events exposing (onInput)

-- MAIN

main =

  Browser.sandbox { init = init, update = update, view = view }

-- MODEL

type alias Model =

  { content : String

  }

init : Model

init =

  { content = "" }

-- UPDATE

type Msg

  = Change String

update : Msg -> Model -> Model

update msg model =

  case msg of

    Change newContent ->

      { model | content = String.append "Hello..." newContent }

-- VIEW

view : Model -> Html Msg

view model =

  div []

    [ input [ placeholder "Type your name", onInput Change ] []

    , div [] [ text (model.content) ]

    ]

Aquí está la pantalla inicial cuando construyes el programa:

imagen-85
Primera pantalla

Escriba un nombre y esto es lo que obtendrá en la pantalla:

imagen-84
pantalla final

Aunque este programa puede parecer excesivo para su propósito, a medida que aumenta la complejidad del programa, apreciará lo fácil que se vuelve depurar y mantener.

Puede ver una separación clara entre el modelo, la vista y el controlador (actualización). Similar a cómo usamos HTML etiquetas, podemos crear formularios en Elm usando las etiquetas modelo div.

En el evento 'al ingresar' (es decir, el usuario ingresa un texto), el programa llama a 'Cambiar', y el programa imprime el nombre de usuario junto con 'Hola' usando la función String.append.

Pony

Poni se compila y sigue un modelo actor de computación diseñado para un comportamiento asíncrono, es decir, aplicaciones altamente concurrentes.

Los lenguajes de programación tradicionales proporcionan una función de "bloqueo" para manejar la concurrencia, lo que afecta el rendimiento. Pony no tiene candado, por lo que se evitan operaciones de bloqueo o situaciones de interbloqueo. Cada actor es de un solo subproceso.

Pony también proporciona seguridad basada en capacidades, donde los usuarios deben usar una "capacidad de referencia" para acceder a un objeto en particular, lo que garantiza un manejo seguro de los datos. Por ejemplo, las capacidades describen qué otros alias se niegan en lugar de qué se permiten.

Nociones como mutabilidad y aislamiento se basan en estas capacidades. Esta característica de capacidad de 'negar' libera a Pony de la carrera de datos.

Pony es seguro, rápido y preciso y ahorra tiempo de desarrollo, lo que lo convierte en una buena opción para aplicaciones bancarias y financieras.

Pony garantiza la seguridad de tipos para el manejo de datos. No tiene excepciones, solo se deben manejar los errores para compilar el código. La razón principal de esto es que Pony está tipificado estáticamente. Debe especificar explícitamente el tipo (como Java y a diferencia de Python) de una variable antes de usarla

let name: String

Similar a Java, puede crear constructores. Suponga que tiene una clase de empleado con nombre y edad:

class Employee

  let name: String

  let age: U64

  new create(name': String) =>

    name = name'

Los desarrolladores de Java pueden notar que hay diferencias sutiles en la sintaxis (sin llaves, ¡guau!). También hay un ''' al final de los atributos de clase. También puedes crear funciones:

fun get_emp_name(): String => name

Alcance para escribir funciones, ¿eh?

Ahora, la parte principal – de actores y promesas.

Los actores Pony tienen comportamientos, similares a las funciones, pero solo asincrónicos: se ejecutan en algún momento en el futuro cercano, pero no necesariamente de inmediato cuando se les llama. Pero 'prometen' que los comportamientos se ejecutarán con seguridad.

actor Employee
  // actor has fields, similar to class
  let name: String

  // and of course, constructor
  new create(name': String) =>
    name = name'

  // Note the behaviour 'be' instead of the fun function
  be get_emp_name(promise: Promise[String]) => promise(name)

Bueno, las promesas también se pueden rechazar, si el actor no puede cumplir con la solicitud asíncrona que se envía. Puedes crear una promesa:

// Create a new promise

let promise = Promise[String]

E invocar el comportamiento del actor pasando la promesa a cumplir (en nuestro caso, obteniendo el nombre del empleado).

employee.emp_get_name(promise)

¿Crees que este código compilará?

Otra gran característica de Pony es que es seguro para la memoria, sin NULL ni desbordamientos de búfer. Cualquier código que pueda devolver un valor nulo nunca se compilará a menos que se corrija.

Bueno, todavía no le hemos dicho al programa qué es 'empleado' (nuestro actor):

let employee = Employee(“J K Rowling”)

A diferencia de cualquier otro lenguaje de programación, Pony permite la división por cero y el resultado es cero. Existen pruebas matemáticas para todas las funciones de Pony.  

Para escribir programas Pony, necesitas instalar el compilador Pony. Dado que Pony es un lenguaje compilado, debe compilar el programa usando 'ponyc' antes de ejecutarlo.

Una vez que instale el compilador, pruebe el hola programa mundial.

Vyper

Vyper es un lenguaje de programación de contratos inteligentes basado en Python. Al igual que Python, es legible por humanos, fácil de codificar y seguro. Vyper compila hasta el código de bytes de la máquina virtual Ethereum (EVM). EVM identifica el estado de Ethereum para cada bloque en la cadena de bloques.

Para comprender por qué Vyper es especial, comprendamos los contratos inteligentes.

Los contratos inteligentes son programas almacenados en una cadena de bloques que definen y ejecutan un acuerdo entre el vendedor y el comprador cuando se cumplen los requisitos del contrato.

Estos son contratos automatizados autoejecutables que no necesitan intervención humana. Sin embargo, los contratos inteligentes son propensos a vulnerabilidades.

Por ejemplo, se pueden hacer contratos inteligentes para liberar ether a direcciones arbitrarias o eliminarlos por direcciones arbitrarias, o es posible que no puedan liberar ether. Estas vulnerabilidades generalmente se introducen a través del código, ya sea intencional o no.

Vyper elimina este problema al proporcionar un código seguro, lo que dificulta la introducción de código vulnerable o engañoso. Aunque Vyper se basa en Python, no sigue muchos programación orientada a objetos paradigmas, como herencia, sobrecarga, recursividad, etc. Esto evita la complejidad del código (tener múltiples archivos, lo que dificulta la auditoría).

Vyper tampoco es compatible con el ensamblaje en línea, lo que significa que los programas no pueden realizar ninguna acción directamente en el EVM, lo que evita los ataques.

Estas características hacen que Vyper sea bastante seguro para escribir código para contratos inteligentes utilizados en cadenas de bloques.

Para practicar la escritura de programas en Vyper, puede utilizar el remezclarncompilador de línea.

También puede instalar Vyper usando docker o pip (si tiene Python) siguiendo las instrucciones en el Página de documentación de Vyper.

R

R es uno de los lenguajes de programación más populares para el análisis de datos y máquina de aprendizaje. Tiene API para todas las matemáticas complejas, estadísticas y cálculos científicos, algoritmos de aprendizaje automático y representaciones visuales.

R es de código abierto y muy popular por su rica interfaz gráfica de usuario. Tiene una comunidad vibrante y estable y puede integrarse fácilmente con otros lenguajes como C, C++, etc.

Obtenemos todas las características anteriores a través de CRAN (Comprehensive R Archive Network), que contiene más de 10000 paquetes para estadísticas, probabilidad, análisis de datos, computación, gráficos y muchos más.

Para ver la magia de R, probemos un programa simple para encontrar el promedio (media) de 11 números. Para encontrar la media, tomamos la suma de los números y la dividimos por el número total de valores (11 en nuestro caso). R tiene una función llamada 'media' que hace todos estos cálculos por nosotros.

mynums <- c(51, 52, 53, 94, 88, 61, 31, 34, 76, 20, 10)

mean(mynums)

El resultado es:

[1] 51.81818

Podemos graficarlos usando el método plot:

boxplot(mynums)

diagrama de caja

Hay muchos paquetes avanzados, como ggplot2, dplyr y muchos más, para mostrar gráficos enriquecidos en R.

También podemos ver un histograma rápido con los valores anteriores para ver el rango donde encajan los valores.

hist(mynums, breaks = 10, col = "sky blue", main = "Histogram of marks", xlab = "Height Bin")

histograma

Tenga en cuenta que le hemos dado un descanso de 10; podemos cambiar esto a cualquier número dependiendo de las divisiones que queramos.

La variable anterior, mynum era un vector que contenía una lista de números. Similar a Python, creamos un marco de datos en R para trabajar con más dimensiones.

Esto es más útil para el análisis. Por ejemplo, podemos combinar varios vectores, crear un marco de datos y manipularlos según la cantidad de variables y el tipo de análisis que necesitemos.

Digamos que tenemos vectores de nombre, habilidad y edad del empleado. Podemos crear un marco de datos y mostrar los datos juntos:

employees = data.frame(Name = c("John","Mac","April","Ron","Matt"),

                        Age = c(23,28,30,43,31), Skill = c("Java", "Python", "C++", "R", "PHP"))

print(employees)

> print(employees)

    Name Age  Skill

1   John  23   Java

2    Mac  28 Python

3  April  30    C++

4 Ron  43      R

5 Matt  31    PHP

Otra característica interesante de R es la facilidad de manipulación de matrices usando arreglos. R lo dejará boquiabierto al realizar cálculos matriciales complejos con una brisa. Todo lo que tienes que hacer es crear la matriz y dársela al programa R.

M1 <- matrix(c(1, 2, 1, 2), ncol=2)

M2 <- matrix(c(3, 4, 3, 4), ncol=2)

print(M1*M2)

>print(M1*M2)

     [,1] [,2]

[1,]    3    3

[2,]    8    8

Apache Groovy

Después de una cuidadosa consideración y evaluación, he incluido Maravilloso en mi lista de los mejores lenguajes de programación. Este lenguaje es como la mantequilla en la parte superior de un delicioso pastel, brindando sabor y realce adicionales a cualquier proyecto.

Una de las principales razones por las que Groovy merece un lugar en la lista es su amplia gama de funciones, que han contribuido a su creciente popularidad en el mundo de la tecnología. Como un lenguaje ágil y dinámico para Java Virtual Machine (JVM), permite funciones de programación modernas para desarrolladores de Java con una curva de aprendizaje mínima.

Apache Groovy

Vale la pena señalar que la JVM es una abreviatura de máquina virtual de Java. JVM es una parte integral de Java, que proporciona una plataforma para ejecutar el código de bytes de Java en cualquier dispositivo. Groovy, construido sobre la JVM, ofrece una amplia gama de funciones que mejoran su rendimiento y lo convierten en untractive opción para los desarrolladores. 

En términos simples, proporciona una plataforma para ejecutar el código de bytes de Java, lo que hace posible usar Java en cualquier dispositivo. Desde una perspectiva de rendimiento, Groovy puede verificar el tipo de forma estática y compilar su código para mejorar la solidez y el rendimiento.

La perfecta integración de Groovy con las clases y bibliotecas de Java existentes lo diferencia de otros lenguajes de programación. También puede compilar directamente en el código de bytes de Java, lo que facilita su uso en cualquier lugar donde pueda usar Java. Esta característica se suma a la flexibilidad y versatilidad de Groovy y lo convierte en la mejor opción para los desarrolladores que buscan crear software eficiente y confiable.

La naturaleza dinámica de Groovy puede hacer que la verificación de tipos sea problemática y que la depuración del código sea más desafiante, lo cual es una desventaja potencial. Sin embargo, muchos programadores creen que la flexibilidad y la simplicidad de Groovy superan cualquier desventaja potencial.

Como desarrollador, es esencial reconocer el valor único que aporta Groovy. Para ilustrar este punto, me gustaría compartir un ejemplo que muestra cómo las potentes funciones de Groovy pueden mejorar su código.

def greeting = "Hello, World!"
println greeting

// Define a list of numbers
def numbers = [1, 2, 3, 4, 5]

// Use a closure to map the list to its squares
def squares = numbers.collect { it * it }

println squares

En este ejemplo, ilustramos la versatilidad y expresividad del lenguaje Groovy definiendo una variable de cadena e imprimiéndola en la consola usando la función println. 

Además, mostramos cómo Groovy simplifica operaciones complejas, como transformar una lista de números usando un cierre para crear una nueva lista que contiene los cuadrados de cada número. Esto demuestra cómo Groovy puede mejorar su productividad como desarrollador al proporcionar una sintaxis concisa y legible para las tareas de programación diarias.

Por lo tanto, es evidente por qué Groovy merece la atención de todos los desarrolladores.

Crystal

Después de una extensa investigación, no pudimos evitar agregar Cristal a nuestra lista. ¡Y no, no estamos hablando de minerales! Crystal es un lenguaje de programación orientado a objetos de propósito general lanzado en 2014. Fue diseñado para tener una sintaxis muy parecida a Ruby y, al mismo tiempo, ser rápido y eficiente. Con su sistema de tipo estático y compilación anticipada, Crystal ofrece a los desarrolladores la velocidad de C y la simplicidad de Ruby.

Crystal es un lenguaje de programación relativamente nuevo que está ganando popularidad entre los desarrolladores debido a su impresionante velocidad y facilidad de uso. A menudo se describe como "Rápido como C, ingenioso como Ruby", destacando su capacidad para proporcionar un rendimiento ultrarrápido mientras mantiene la sintaxis y la legibilidad fáciles de usar de Ruby. 

Cristal

Sin embargo, Crystal logra su impresionante velocidad sacrificando algunos de los aspectos dinámicos de Ruby y restringiendo ciertas construcciones de programación. Sin embargo, esta compensación ha convertido a Crystal en untractive opción para crear aplicaciones de alto rendimiento en un lenguaje más amigable para los desarrolladores.

# Define a class for a person with name and age attributes
class Person
  getter name : String
  getter age : Int32

  def initialize(@name : String, @age : Int32)
  end
end

# Create an array of Person objects
people = [Person.new("Alice", 25), Person.new("Bob", 30), Person.new("Charlie", 35)]

# Use a block to filter the array by age and map the names to uppercase
names = people.select { |person| person.age >= 30 }.map { |person| person.name.upcase }

# Print the resulting array of uppercase names
puts names.inspect

Este código demuestra los beneficios de Crystal en cuanto a sintaxis, rendimiento y seguridad de tipos. La sintaxis de Crystal es similar a la de Ruby, por lo que es fácil de leer y escribir. Sin embargo, Crystal compila en código nativo, lo que resulta en una ejecución más rápida que los lenguajes interpretados como Ruby. 

Además, Crystal tiene tipos estáticos, lo que proporciona seguridad de tipos en tiempo de compilación y mejora el rendimiento. En este ejemplo, el código usa un bloque para filtrar una matriz de objetos Person por edad y asigna los nombres a mayúsculas, lo que demuestra la flexibilidad y expresividad de la sintaxis de Crystal.

Reason

Razón es un lenguaje de programación contemporáneo con una sintaxis similar a JavaScript u otros lenguajes de la familia C con el robusto sistema de tipos de OCaml. Debido a sus sólidas capacidades de verificación de tipos, los desarrolladores pueden encontrar problemas antes y escribir un código más sólido y confiable. 

La interfaz fácil de usar y el diseño sencillo de Reason lo convierten en una opción fantástica para varios trabajos de programación, independientemente de su nivel de experiencia en programación.

Razón

Reason y OCaml son lenguajes de programación muy versátiles que se pueden usar en varios entornos gracias a numerosos proyectos que los respaldan. Una forma de usarlos es crear ejecutables nativos que puedan ejecutarse directamente en su máquina usando el compilador estándar. Además, varias herramientas como "dune" y "esy" que ayudan en este proceso. 

Otra opción es compilar Reason en código JavaScript compatible con los navegadores, lo que se puede lograr a través de proyectos como ReScript (anteriormente BuckleScript) y Js_of_ocaml. Estas opciones versátiles hacen que Reason y OCaml sean atractivos para los desarrolladores de diversas industrias.

Reason es un lenguaje de programación contemporáneo con una interfaz fácil de usar y una sintaxis similar a JavaScript. Su versatilidad y diseño sencillo lo convierten en una opción popular para los desarrolladores en diversas industrias.

Conclusión y descargo de responsabilidad

Bueno, todos tenemos diferentes favoritos, pero vale la pena probar los idiomas anteriores, ya que vienen con todas las características nuevas y resuelven muchos de los problemas que dejaron los idiomas anteriores.

Elm es ideal para una separación de código más ordenada y programación modular. Pony es uno de los mejores para la programación asíncrona.

Si bien Vyper es bastante nuevo en el mundo del lenguaje de contratos inteligentes, ofrece una alternativa prometedora a Solidity. Vyper obtiene una buena puntuación en particular en lo que respecta a la definición de contratos y el manejo de errores. R, por otro lado, se considera uno de los mejores lenguajes para análisis y ya cuenta con una gran comunidad.

Los idiomas específicos están ganando tanta popularidad como los de este artículo, pero no se han incluido en la lista por varias razones. Aquí hay un vistazo rápido:

  • Golang: ya establecido como un idioma convencional, aunque no muy popular. Creo que en este punto, Golang tiene varios competidores que mantendrán baja su participación de mercado.
  • Swift: Apple tiene un control férreo sobre su ecosistema, y ​​Swift es el único idioma disponible allí. Anteriormente, el Objective C estaba de moda, como ahora lo está Swift. Lo considero una trampa y me niego a incluirlo aquí. 😀

El futuro siempre es incierto, y una forma de seguir con su carrera es atenerse a lo que ya está funcionando y negarse a “distraerse”. Si lo hace, Java, PHP, Python, Ruby, etc., son todos lenguajes excelentes para seguir. Sin embargo, para algunos de nosotros, la norma no es suficiente. Quieren salir a explorar y apostar a lo grande en el futuro. Si cae en el último campo, uno de estos cinco idiomas debería estar en la parte superior de su lista de tareas pendientes.

Finalmente, cuando intente evaluar un idioma, no deje que el esfuerzo lo abrume porque no es mucho. Si ya conoce algunos lenguajes de programación, puede aprender cualquiera de estos dentro de dos meses como máximo, dedicando de 5 a 6 horas a la semana. Mientras que la felicidad y los rendimientos monetarios que se pueden generar en el futuro serán varias veces mayores.

A continuación, puede consultar lenguajes de programación para usar en ciencia de datos.

Gracias a nuestros patrocinadores
Más lecturas excelentes sobre la carrera
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder