Uploaded avatar of ErikSchierboom

¡Es el agosto de las apps!

@ErikSchierboom
hace Alrededor de 3 años
Vídeo

Introducción

Hola. Bienvenido. Espero que todos estéis bien. Espero que os hayáis divertido explorando algunos lenguajes antiguos e influyentes durante Jurasic July. Ahora pasamos al mes 8 de 2023, y a nuestro séptimo mes temático: Appy August.

¿Qué queremos decir con apps?

Bueno, puede significar varias cosas:

  • Aplicaciones web, el pan de cada día para muchos de nosotros hoy en día
  • Apps nativas como las que se ejecutan en tu teléfono o tableta
  • Apps de escritorio que se ejecutan directamente en tu sistema operativo Windows, Mac o Linux
  • Aplicaciones específicas de dominio
  • Aplicaciones empresariales
  • ¡Y mucho más!

Entonces, ¿cuáles son los lenguajes?

Vamos a ver nada menos que 14 lenguajes: ABAP, CoffeeScript, Dart, Delphi, Elm, Java, JavaScript, Kotlin, Objective-C, PHP, PureScript, ReasonML, Swift y TypeScript.

Las insignias

Consigue la insignia completando 5 ejercicios en uno de ellos este mes. Y para la insignia anual, necesitas completar:

  • Anagrama: dada una palabra y un array de posibles anagramas, encuentra sus anagramas
  • Número de teléfono: limpia un número de teléfono
  • Triángulo: clasifica un triángulo
  • Transcripción de ARN: transforma una secuencia de ADN en su complemento de ARN
  • Puntuación de Scrabble: dada una palabra, determina su puntuación de Scrabble

Descripciones generales

ABAP

  • Desarrollado por SAP SE en la década de 1980 y su objetivo de diseño queda claro cuando comprobamos qué significaba el acrónimo: Allgemeiner Berichts-Aufbereitungs-Prozessor, que en alemán significa «procesador general de preparación de informes». Más tarde, ABAP pasó a ser de aplicación más general, y el acrónimo se actualizó a Advanced Business Application Programming para reflejarlo.
  • Lenguaje con tipado fuerte y estático
  • Multiparadigma: admite programación imperativa y orientada a objetos
  • Compilado a bytecode. Curiosamente, el código fuente se almacena dentro de la base de datos
  • Todo el código se ejecuta en el contexto de un sistema SAP, que consta de una base de datos relacional y uno o más servidores de aplicaciones
  • Tecnología propietaria y de código cerrado, aunque uno de nuestros mantenedores ha creado una fantástica reimplementación de código abierto
  • Se usa en aplicaciones empresariales, como finanzas, gestión de materiales, contabilidad y administración. Tiene clientes en todo el mundo, con muchos nombres importantes como Apple, Amazon y Walmart

Por qué es genial

  • En constante evolución, con nuevas funcionalidades añadidas con regularidad
  • Fiable: funcionalidad estable con décadas de experiencia detrás
  • Gran biblioteca estándar

Características destacadas

  • Integración perfecta con el sistema SAP y la base de datos, pero también con muchos otros sistemas
  • El diccionario ABAP contiene todos los metadatos sobre los datos del sistema SAP, lo que incluye tablas, vistas y estructuras. Los tipos de este diccionario se pueden usar para tipar variables estáticamente, incluso cuando el tipo es una tabla
  • ABAP Workbench forma parte del sistema ABAP y contiene un conjunto de herramientas para editar programas. Incluye el diseño de pantallas

CoffeeScript

  • El lenguaje recibió sus primeros commits en 2009 de la mano de Jeremy Ashkenas; el primer mensaje de commit se titulaba «commit inicial del lenguaje misterioso».
  • Con tipado dinámico y multiparadigma (orientado a objetos, imperativo, funcional, prototípico)
  • Compila a JavaScript (conocido como transpilación). La regla de oro de CoffeeScript es: «Es solo JavaScript». Uno de los primeros lenguajes exitosos en «transpilar a JS»
  • Se hizo popular porque CoffeeScript no tenía algunos de los problemas con los que lidiaban quienes usaban JS en aquel momento (como que la vinculación de «this» funcionara de manera diferente, o que no se admitieran clases). Se incluyó en Ruby on Rails desde la versión 3.1.
  • En 2017 el lenguaje recibió su versión 2.0, que pretendía ponerlo a la altura del último estándar de JavaScript. El lenguaje recibe una actualización aproximadamente una vez al año.
  • El compilador del lenguaje se escribió originalmente en Ruby, pero se reemplazó en 2010 por un compilador autoalojado escrito en CoffeeScript (el compilador no depende de NodeJS y puede ejecutarse directamente en el navegador)
  • CoffeeScript fue influyente porque inspiró a JavaScript a adoptar ciertas funcionalidades (sintaxis de flecha lambda, clases)
  • Solía ser usado por Dropbox y en Rails

Por qué es genial

  • Sintaxis limpia y concisa inspirada en Python, Ruby y Haskell. Menos verboso que JavaScript, elimina muchos paréntesis y llaves, en parte gracias al uso de indentación significativa (los espacios en blanco importan)
  • Semántica simplificada, p. ej., sin confusión en torno a let, var, const, ya que no existen, y == se transpila a === (igualdad estricta), y las vinculaciones de función evitan los errores comunes con «this»
  • Basado en expresiones, lo que significa que puedes asignar el resultado de una expresión if a una variable
  • Mucho azúcar sintáctico, p. ej., usa @ en lugar de this, se puede usar yes/on en lugar de true, // para la división entera, @ en lugar de this y mucho más

Características destacadas

  • Compila a JavaScript limpio y legible por humanos, con una correspondencia uno a uno entre el código fuente y el generado.
  • Gran interoperabilidad con JavaScript: puedes usar código escrito en JS desde CoffeeScript fácilmente (y viceversa). Usa cualquier biblioteca JS escrita
  • Añade funcionalidades que faltan o faltaban en JavaScript: comprensiones de arrays, interpolación de strings, operador existencial (?), comparaciones encadenadas
  • Lenguaje pequeño, el compilador ocupa unos 500 kb (100 kb comprimido)

Dart

  • Diseñado por Lars Bak y Kasper Lund en Google
  • Primera versión en 2011
  • El objetivo era crear un lenguaje rápido y productivo, especialmente adecuado para crear interfaces de usuario
  • Con tipado estático
  • Multiparadigma: principalmente orientado a objetos, pero también funcional e imperativo
  • Puede interpretarse y compilarse justo a tiempo (JIT)
  • Se usa principalmente para crear apps, pero también se puede usar para crear backends

Por qué es genial

  • Fácil de aprender gracias a su sintaxis familiar
  • Sistema de tipos moderno: inferencia de tipos, coincidencia de patrones, async/await
  • Excelente documentación
  • Seguridad mediante un sistema de seguridad frente a nulos sólido: se acabaron las excepciones de puntero nulo
  • Buenas herramientas, compatibilidad con varios IDE. Optimizado para ciclos de retroalimentación cortos, p. ej., mediante una recarga en caliente rápida
  • Ecosistema en crecimiento con muchas bibliotecas disponibles

Características destacadas

  • Puede compilar a JS, nativo, pero también a Swift y Kotlin, ideal para apps móviles.
  • La biblioteca Flutter se puede usar para crear rápidamente apps móviles, web, de escritorio o embebidas. Escribe una vez, ejecuta en diferentes plataformas
  • Excelente soporte de concurrencia, con async/await, isolates (construcciones ligeras de concurrencia), futures y más

Delphi

  • Delphi fue desarrollado por Borland y publicado en 1995.
  • Es un lenguaje de programación Object Pascal y fue desarrollado por Anders Hejlsberg, uno de los arquitectos principales de C#
  • Con tipado fuerte y estático
  • Compila a código nativo
  • Multiparadigma: principalmente orientado a objetos, pero también imperativo, declarativo y dirigido por eventos
  • Se usa en aplicaciones empresariales, GUIs y escuelas (para enseñar programación)

Por qué es genial

  • Fácil de aprender. Object Pascal combina la simplicidad y claridad de Pascal con funcionalidades de programación orientada a objetos, lo que hace que el código sea más fácil de escribir y mantener
  • Entorno de desarrollo integrado (IDE): el IDE de Delphi ofrece un entorno fácil de usar y repleto de funcionalidades que agiliza el proceso de desarrollo. Proporciona navegación de código, herramientas de depuración, autocompletado de código y otras funcionalidades de productividad que hacen que el desarrollo sea más eficiente.
  • Estabilidad: existe desde principios de la década de 1990 con una historia de ser una herramienta y un lenguaje de desarrollo fiables y estables, incluida una fuerte retrocompatibilidad. El código escrito en versiones anteriores de Delphi todavía se puede compilar y ejecutar en versiones más recientes con ajustes mínimos.
  • Soporte multiplataforma: Delphi ha ampliado sus capacidades más allá de Windows y ofrece soporte de desarrollo multiplataforma, lo que permite a los desarrolladores apuntar a múltiples sistemas operativos como macOS, iOS, Android y más. Esto permite crear aplicaciones para un público más amplio y aumenta el alcance de los proyectos.
  • Fuerte comunidad y soporte: Delphi tiene una comunidad dedicada y activa de desarrolladores que contribuyen con bibliotecas, herramientas y recursos al ecosistema.

Características destacadas

  • Ejecutables de alto rendimiento: las aplicaciones Delphi son conocidas por su velocidad y rendimiento. El compilador de Delphi produce ejecutables nativos muy optimizados, lo que puede ser crítico para ciertos tipos de aplicaciones, como las que requieren procesamiento en tiempo real o tareas computacionales pesadas.
  • Entorno de desarrollo rápido de aplicaciones (RAD): las herramientas visuales de diseño de arrastrar y soltar permiten a los desarrolladores crear interfaces de usuario y conectarlas a la funcionalidad con un esfuerzo mínimo, acelerando el proceso de desarrollo.
  • Arquitectura basada en componentes: se basa en una arquitectura basada en componentes, donde se construyen componentes reutilizables para crear aplicaciones. Hace que sea más fácil reutilizar código y reduce el tiempo de desarrollo.
  • Manejo de eventos: Delphi utiliza un modelo de eventos integrado, que permite a los desarrolladores responder fácilmente a las acciones del usuario y otros eventos. El manejo de eventos simplifica el proceso de capturar la entrada del usuario o los eventos del sistema y responder adecuadamente.
  • Conectividad de bases de datos: Delphi proporciona componentes nativos de acceso a bases de datos que permiten una integración perfecta con varios sistemas de bases de datos. Este soporte integrado simplifica el desarrollo de aplicaciones basadas en bases de datos.

Elm

  • El lenguaje fue creado por Evan Czaplicki para su tesis de fin de carrera y publicado en 2012
  • Inicialmente abordó el tema de la programación reactiva funcional (FRP) para GUIs (FRP con señales), pero en 2017 se abandonó FRP en favor de TEA (The Elm Architecture)
  • Lenguaje funcional con tipado estático y fuerte
  • Sintaxis inspirada en Haskell
  • Lenguaje de código abierto, pero muy dogmático, y el estilo de desarrollo implica largos periodos de trabajo profundo por parte de Evan antes de hacer públicas las cosas. Así que los PR pueden tardar mucho en fusionarse y el proyecto puede parecer obsoleto, pero es solo el estilo de trabajo de Evan.
  • Se usa en sitios web, p. ej., NoRedInk, Vendr, Rakuten, Brilliant

Por qué es genial

  • Es un lenguaje muy pequeño, uno de los más fáciles de aprender de la familia ML de lenguajes funcionales con tipado estático. Esto lo hace casi ideal para enseñar programación funcional.
  • Los errores del compilador son los más agradables y útiles que encontrarás.
  • Lenguaje estable: la última versión es de 2019
  • Los paquetes del ecosistema son pocos pero de alta calidad.
  • Un potente ecosistema de análisis estático con elm-review (impulsa el analizador del track de Elm de Exercism).

Características destacadas

  • La Arquitectura de Elm (TEA) subyace a todas las apps Elm, por lo que es muy fácil revisar aplicaciones Elm desconocidas.
  • ¡Sin excepciones en tiempo de ejecución! Excepto por un par de cosas.
  • No se rompe al actualizar dependencias, el versionado semántico lo impone el compilador.
  • Cuando compila, funciona (excepto errores de lógica). Y cuando te acostumbras, es muy difícil volver a otros lenguajes.
    • «elm-ui» de Matthew Griffith permite «cuando compila, funciona» para estilos y diseño, no necesitas CSS.
  • Aplicaciones web full-stack: Lamdera es un spin-off que usa Elm para aplicaciones web full-stack sin necesidad de código de pegamento entre frontend y backend.

Java

  • Desarrollado por James Gosling en Sun Microsystems y publicado en 1995.
  • Cinco objetivos originales:
    • Simple, orientado a objetos y familiar.
    • Robusto y seguro.
    • Neutral en cuanto a la arquitectura y portátil.
    • Alto rendimiento.
    • Interpretado, con hilos y dinámico.
  • Con tipado fuerte y estático
  • Compilado a bytecode (se está trabajando en código nativo)
  • Multiparadigma: imperativo, orientado a objetos y funcional
  • El lenguaje y la máquina virtual tienen especificaciones oficiales, y por tanto también múltiples implementaciones (p. ej., OpenJDK JVM y la VM Hotspot de Oracle)
  • Se usa en una cantidad enorme de software, desde sitios web hasta sistemas embebidos, y desde apps hasta bases de datos

Por qué es genial

  • Se ejecuta (casi) en todas partes (como te recordará gustosamente el actualizador de Java ;))
  • Propósito general: se puede usar para casi cualquier carga de trabajo, incluidas apps, sitios web y sistemas embebidos
  • Interoperabilidad con otros lenguajes de la JVM, como Kotlin, Groovy, Scala y Clojure
  • Excelentes herramientas, tanto para IDE como para otras herramientas como sistemas de compilación

Características destacadas

  • La JVM es una máquina virtual madura, estable y de alto rendimiento que se mejora continuamente
  • Enorme ecosistema, con una cantidad masiva de bibliotecas disponibles. Esas bibliotecas son, como Java, maduras, estables y completas
  • En evolución: el lenguaje y el runtime siguen evolucionando, con actualizaciones regulares del lenguaje para hacerlo más moderno y abordar las quejas de la gente (como la reducción del código repetitivo y la verbosidad). En cuanto al runtime, se inician regularmente nuevos proyectos para seguir evolucionando el runtime (p. ej., el proyecto Loom para construcciones ligeras de concurrencia y la compilación nativa mediante GraalVM)

JavaScript

  • Brendan Eich fue contratado por Netscape en 1995 para proporcionar un lenguaje que hiciera dinámicas las páginas web. El primer prototipo se creó, famosamente, en 10 días
  • Estandarizado como ECMAScript en 1997
  • Dinámico y débilmente tipado
  • Solía ser únicamente interpretado, pero hoy en día a menudo se compila justo a tiempo
  • Multiparadigma: prototípico (bastante raro), pero también orientado a objetos, imperativo y funcional
  • Enormemente influyente para hacer de la web el éxito que es hoy. P. ej., AJAX fue muy útil para añadir interactividad. Estándar de facto para el desarrollo web, ya que es el único lenguaje de programación con soporte integrado en el navegador
  • Probablemente el lenguaje más usado hoy en día
  • Se usa para backends, frontend, scripts y herramientas de línea de comandos

Por qué es genial

  • Propósito general: se puede usar para muchas cargas de trabajo: backend, frontend, scripts, herramientas de línea de comandos. Muchas herramientas que se usan para la web están escritas en JavaScript (y se ejecutan en nodejs)
  • Los runtimes (como V8) están muy optimizados y pueden tener un rendimiento excelente, aunque el lenguaje sea muy dinámico
  • Lenguaje relativamente pequeño, lo que lo hace relativamente fácil de aprender. Poder ejecutarlo en un navegador lo hace especialmente genial, ya que puedes obtener retroalimentación visual mientras aprendes
  • La especificación se actualiza con frecuencia para introducir nuevas funcionalidades, como async/await o la interpolación de strings. También hay mucha innovación en torno a las herramientas, con herramientas más nuevas como deno, esbuild y bun.js que se desarrollan para ayudar a trabajar con bases de código JavaScript
  • El soporte de JSON es de primera, prueba de ello es que JSON significa JavaScript Object Notation
  • Diseñado para ser bueno para código dirigido por eventos y no bloqueante

Características destacadas

  • Enorme ecosistema. Hay una cantidad enorme de bibliotecas disponibles (2,1 millones de paquetes en septiembre de 2022), pero también muchos otros lenguajes que apuntan a JavaScript
  • Se ejecuta en la mayoría de plataformas y hardware, desde Windows hasta Apple, desde Raspberry Pi hasta teléfonos, desde servidores web hasta plataformas serverless. Los navegadores web tienen soporte nativo integrado, así que no hace falta instalar un runtime.
  • Ideal para el desarrollo web, con muchos frameworks entre los que elegir (React, Vue, Angular), así como un montón de herramientas para ayudar a crear aplicaciones web (p. ej., eslint, parcel)
  • Se puede usar de forma isomorfa, lo que significa que el mismo lenguaje (y la misma base de código) se puede usar tanto para el backend como para el frontend. Esto facilita el mantenimiento y permite reutilizar código entre frontend y backend
  • Su enorme popularidad significa: muchos recursos de los que aprender (vídeos, blogs, cursos), una vasta comunidad con la que interactuar

Kotlin

  • Desarrollado por JetBrains en 2010, famosos por sus IDE (p. ej., IntelliJ, CLion, GoLand y Rider)
  • La mayoría de los productos de JetBrains estaban escritos en Java, pero querían un lenguaje de la JVM que redujera el código repetitivo, acelerara el desarrollo y admitiera algunas funcionalidades que echaban en falta. Scala tenía estas funcionalidades, pero se consideró que era demasiado lento de compilar. Así se inició el proyecto Kotlin.
  • Con tipado fuerte y estático
  • Multiparadigma: imperativo, orientado a objetos, funcional, declarativo
  • Por defecto, compila a bytecode de la JVM, pero también puede compilar a JS y a nativo (útil para plataformas en las que las máquinas virtuales no son posibles o deseables, como los dispositivos iOS)
  • Fue marcado por Google como el lenguaje preferido para escribir apps Android en 2019
  • Se usa para crear sitios web, apps (principalmente Android) e incluso IDE completos (los IDE mencionados)

Por qué es genial

  • Propósito general: se puede usar para casi cualquier carga de trabajo, incluidas apps y sitios web. Google consideró Kotlin el lenguaje preferido para desarrollar apps Android en 2019
  • Al ejecutarse en la JVM, se aplican todos sus beneficios: una VM madura y de alto rendimiento y una cantidad masiva de bibliotecas disponibles
  • Alivia muchos de los problemas que la gente pueda tener con Java, como las excepciones comprobadas, la seguridad frente a nulos y la verbosidad
  • Lenguaje moderno: inferencia de tipos avanzada, basado en expresiones, inmutabilidad, coincidencia de patrones, corrutinas, canales
  • Excelentes herramientas (es de esperar cuando el propio IDE está escrito en el lenguaje :)

Características destacadas

  • Productivo: Kotlin adopta las mejores partes de otros lenguajes, moldeándolas en un lenguaje coherente y productivo, y en algunos casos incluso mejora el original (p. ej., con métodos de extensión locales)
  • Corrutinas: mientras que en muchos lenguajes async/await está integrado en el lenguaje, en Kotlin se implementa como una biblioteca usando la funcionalidad de corrutinas del lenguaje. Las corrutinas son una forma de tratar con funciones suspendidas, que proporcionan una abstracción más segura y menos propensa a errores para operaciones asíncronas que los futures y las promises.
  • Gran concurrencia: async/await, canales, inmutabilidad, todo ayuda a conseguir una excelente concurrencia
  • Compose multiplataforma permite crear interfaces de usuario compartidas desde la misma base de código usando una sintaxis declarativa

Objective-C

  • Desarrollado originalmente por Brad Cox y Tom Love a principios de la década de 1980, fue seleccionado por NeXT para su sistema operativo NeXTSTEP. Debido a que macOS de Apple desciende directamente de NeXTSTEP, se convirtió en el lenguaje de elección para el software de Apple
  • Diseñado para combinar las ideas orientadas a objetos de SmallTalk con C, usando el paso de mensajes como construcción central orientada a objetos
  • Superconjunto de C, por lo que cualquier código C es código Objective-C válido y ambos se pueden combinar en la misma base de código
  • Tipado estático y dinámico
  • Compilado
  • Lenguaje estándar para escribir aplicaciones macOS e iOS hasta la llegada de Swift en 2014
  • Se usa para apps macOS e iOS

Por qué es genial

  • La mezcla de C con funcionalidades orientadas a objetos puede ser realmente potente
  • Runtime ligero, lo que lo hace eficiente en recursos
  • Sintaxis de clases ligera
  • La enumeración rápida permite bucles for más fáciles que en C
  • Fuerte retrocompatibilidad

Características destacadas

  • Admite el recuento automático de referencias (ARC), que libera automáticamente la memoria cuando un objeto ya no se referencia, lo que facilita la gestión de memoria
  • El runtime dinámico permite el método swizzling (cambiar dinámicamente el comportamiento de un selector (como el monkey patching)), la reflexión y el reenvío de mensajes (ideal para el patrón observador o proxy)
  • Los protocolos y las interfaces aportan funcionalidades de interfaz a C, con interfaces de categoría que incluso permiten extender tipos existentes

PHP

  • Desarrollado e implementado por Rasmus Lerdorf en 1993 y publicado por primera vez en 1995
  • El nombre es un acrónimo recursivo PHP: Hypertext Preprocessor
  • Con tipado dinámico y débil, con opción de añadir gradualmente aserciones de tipo fuerte en tiempo de ejecución
  • Multiparadigma: imperativo, funcional, orientado a objetos, procedural, reflexivo
  • Interpretado o compilado justo a tiempo
  • La plataforma original de renderizado del lado del servidor
  • Se usa para sitios web (Facebook, Wikipedia y muchos más) y también para muchos sistemas de gestión de contenidos (Wordpress, JOOMLA).

Por qué es genial

  • Es omnipresente: PHP se usa en el 77,4 % de todos los sitios web^1, independientemente de plataformas concretas
  • Sintaxis simple, similar a otros lenguajes de programación establecidos (java, javascript, c), lo que lo hace fácil de aprender
  • Propósito general. Úsalo para muchos usos: desde crear pequeños scripts web hasta crear grandes aplicaciones del lado del servidor ejecutadas por empresas.
  • Muy establecido y ampliamente adoptado. Existen muchos recursos de aprendizaje, frameworks y bibliotecas.
  • Fuerte soporte de bases de datos
  • Todavía en desarrollo activo, publicando funcionalidades modernas
  • Multiplataforma. Se ejecuta en todo: Window, Mac, Linux, Unix
  • Código abierto y gratuito

Características destacadas

  • Fácil de ejecutar y desplegar. Sin cadena de compilación. Sin compiladores.
  • Sistema de tipos gradual. Añade tipos donde los necesites, usa el tipado dinámico para simplificar partes de tu desarrollo.
  • Prototipado rápido. Crea una página web para probar tu idea y ejecútala en tu propia máquina.

PureScript

  • Diseñado por Phil Freeman y primera versión publicada en 2013
  • Empezó a trabajar en PureScript porque no estaba satisfecho con otros intentos de transpilar Haskell a JavaScript
  • Con tipado fuerte y estático
  • Compila a JS
  • Lenguaje puramente funcional
  • Sintaxis y funcionalidades inspiradas en Haskell
  • Se usa para crear aplicaciones web, pero también se puede usar para crear apps del lado del servidor o aplicaciones de escritorio mediante Electron

Por qué es genial

  • Comparte gran parte de lo que hace grande a Haskell:
    • Sistema de tipos fuerte y potente: tipos de datos algebraicos, clases de tipos, tipos de orden superior
    • Expresivo: coincidencia de patrones, inferencia de tipos
    • Seguridad: sin nulos, tipos inmutables
    • Puramente funcional: los efectos secundarios se codifican en el sistema de tipos
  • Decodificación/codificación de JSON a tipos fácil y segura en cuanto a tipos
  • Compila a JavaScript legible por humanos
  • Buenas herramientas

Características destacadas

  • Su núcleo funcional es perfecto para aplicaciones web seguras en cuanto a tipos sin errores en tiempo de ejecución
  • Excelente interoperabilidad con JS
  • Compila a JS eficiente

ReasonML

  • Creado por Jordan Walke en Facebook y primera versión publicada en 2016
  • Basado en OCaml, pero con idiosincrasias eliminadas y diseñado para la interoperabilidad con JS
  • Lenguaje con tipado estático y funcional
  • Compilado
  • Se usa para crear sitios web (p. ej., en Facebook)

Por qué es genial

  • Toda la bondad de OCaml pero en un entorno web:
    • Sistema de tipos potente: todos los valores están tipados con tipos más simples (como registros, variantes y opciones) en lugar de tipos complejos. Se acabaron los errores de undefined, lo que mejora la fiabilidad
    • Expresivo: coincidencia de patrones, inferencia de tipos, desestructuración
    • Seguridad: sin nulos, inmutabilidad por defecto
  • Compila a JavaScript legible por humanos
  • Se puede compilar a OCaml (y viceversa), lo que significa que puede usar todo el ecosistema de OCaml (p. ej., para compilar a un binario nativo)

Características destacadas

  • Los tiempos de compilación de ReasonML son súper rápidos, lo que significa ciclos de iteración rápidos.
  • Excelente interoperabilidad con JS, tanto para usar JS desde código ReasonML como para exportar ReasonML a JS. Incluso puede generar tipos TS. También puede interoperar con C. Incluso admite sintaxis tipo JSX

Swift

  • El desarrollo de Swift fue iniciado por Chris Lattner en 2010 y anunciado en todo el mundo en el evento WWDC en 2014.
  • El objetivo era reemplazar el antiguo lenguaje de programación de Apple, Objective-C, que no había recibido cambios importantes desde principios de los 80, con un lenguaje nuevo y moderno. Diseñado para interoperar con grandes porciones de Objective-C.
  • Con tipado fuerte y estático
  • Compilado, usando LLVM para gestionar la compilación a código máquina (como, p. ej., Rust)
  • Multiparadigma: funcional, orientado a objetos, imperativo, declarativo
  • Originalmente software propietario, pero de código abierto desde 2015
  • Se usa principalmente para apps móviles y de escritorio, pero también se usa para backends y en escenarios serverless

Por qué es genial

  • Lenguaje moderno: inferencia de tipos, coincidencia de patrones, tipos de datos algebraicos, strings Unicode
  • Productivo: Swift adopta las mejores partes de otros lenguajes (como Rust, Python, C# y Ruby), moldeándolas en un lenguaje coherente y productivo
  • Seguro: los punteros no se exponen, un tipo opcional que evita las excepciones de puntero nulo, manejo explícito de errores y gestión automática de memoria mediante ARC (recuento automático de referencias)
  • Se actualiza con regularidad. Al principio, Apple no tenía miedo de introducir cambios rupturistas para cosas que habían demostrado no funcionar bien. Esto evita que se acumule «carga». Normalmente se pone a disposición una herramienta para ayudar en la migración del código. Desde Swift 5, la interfaz binaria de aplicación (ABI) es estable
  • A diferencia de Objective-C, Swift se ejecuta en todas las plataformas principales: macOS, Windows y Linux

Características destacadas

  • Rápido. Compila a código máquina eficiente, lo que hace que se ejecute rápido
  • Interoperabilidad perfecta con Objective-C, pero también interoperabilidad con C y C++
  • Gran comunidad, con muchos recursos excelentes disponibles

TypeScript

  • Creado en Microsoft en respuesta a la frustración al desarrollar aplicaciones a gran escala en JS. Uno de los diseñadores fue Anders Hejlsberg, el arquitecto principal de C# y creador de Delphi y Turbo Pascal
  • La primera versión se publicó en 2012
  • Multiparadigma: funcional, prototípico, imperativo, orientado a objetos y genérico
  • Usa tipado gradual y tipado pato
  • Compilado (a JS)
  • Se usa para sitios web, tanto frontend como backend, scripts y herramientas de línea de comandos

Por qué es genial

  • Sistema de tipos potente y flexible: tipos unión, tipos literales, tuplas. Básicamente, cualquier patrón que se pueda usar en código JS se puede describir de forma segura en cuanto a tipos en TS. El sistema de tipos es tan potente que incluso es Turing completo
  • Al ser un superconjunto de JS, permite una introducción gradual en una base de código JS
  • Combina lo mejor de ambos mundos: tipado dinámico y estático
  • En rápido crecimiento en popularidad, con muchas herramientas que proporcionan tipos TypeScript o que se convierten a TypeScript. También hay muchos recursos disponibles
  • El lenguaje se actualiza con regularidad, con adopción temprana de funcionalidades próximas de ECMAScript

Características destacadas

  • Mayor seguridad y corrección: el tipado estático puede eliminar muchas clases de errores que uno comete típicamente con JS
  • Interoperabilidad perfecta con JS. Se pueden añadir definiciones de tipos personalizadas para trabajar con código JS de forma segura en cuanto a tipos. Hay definiciones de tipos personalizadas disponibles para un gran número
  • Excelente soporte de herramientas/IDE. Las anotaciones de tipo, el autocompletado de código e incluso la refactorización segura a gran escala están disponibles en muchos IDE
  • Obtén todos los beneficios de ejecutarse en el ecosistema JS: una enorme cantidad de paquetes, muchas herramientas, una gran comunidad, etc.

¿Cuál probar?

  1. Si quieres crear apps nativas, Dart, Delphi, Java, Kotlin y Swift son grandes elecciones. Dicho esto, cualquiera de los otros lenguajes que compilan a JS también podría usarse para crear apps nativas. Vale la pena señalar que el lenguaje oficial para crear apps iOS/macOS es Swift, y para apps Android es Kotlin
  2. Si quieres crear aplicaciones web, CoffeeScript, Dart, Elm, Java, JavaScript, Kotlin, PHP, PureScript, ReasonML y TypeScript son geniales
  3. Si te interesa la programación funcional, Elm, PureScript y ReasonML son elecciones naturales, y CoffeeScript, Dart, Java, JavaScript, Kotlin, Swift y TypeScript también admiten programación funcional
  4. Para la programación orientada a objetos, ABAP, Dart, Delphi, Java, Kotlin, Objective-C, PHP y Swift son candidatos lógicos, y CoffeeScript, JavaScript y TypeScript también admiten este paradigma
  5. Si te interesa escribir aplicaciones empresariales, ABAP y Delphi son perfectos para eso
01 de agosto de 2023 · ¿Te ha resultado útil?