Uploaded avatar of ErikSchierboom

¡Llegó el Agosto de las apps!

@ErikSchierboom
hace Cerca de 3 años
Video

Introducción

Hola. Bienvenido. Espero que todos estén bien. Espero que se hayan 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 de muchos de nosotros ahora
  • Apps nativas como las que corren en tu teléfono o tu tableta
  • Apps de escritorio que corren directamente en tu sistema operativo Windows, Mac o Linux
  • Aplicaciones específicas de un dominio
  • Aplicaciones de negocio
  • ¡Y más!

Entonces, ¿cuáles son los lenguajes?

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

Las insignias

Obtén la insignia completando 5 ejercicios en uno de ellos este mes. Y para la insignia de todo el año, necesitas completar:

  • Anagrama: dada una palabra y una lista 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

Reseñas

ABAP

  • Desarrollado por SAP SE en la década de 1980, y su objetivo de diseño queda claro cuando revisamos qué significaba el acrónimo: Allgemeiner Berichts-Aufbereitungs-Prozessor, que en alemán significa «procesador general de preparación de informes». Más adelante, ABAP pasó a tener una aplicación más general y el acrónimo se actualizó a Advanced Business Application Programming para reflejarlo.
  • Lenguaje de tipado fuerte y estático
  • Multiparadigma: admite programación imperativa y orientada a objetos
  • Se compila 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 construido una fantástica reimplementación de código abierto
  • Se usa en aplicaciones de negocio, como finanzas, gestión de materiales, contabilidad y administración. Tiene clientes en todo el mundo, con muchos nombres grandes como Apple, Amazon y Walmart

Por qué es genial

  • En constante evolución, con nuevas características que se agregan con regularidad
  • Confiable: funcionalidad estable con décadas de experiencia detrás
  • Gran biblioteca estándar

Características destacadas

  • Integración perfecta con el sistema SAP y su 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 de forma estática, incluso cuando el tipo es una tabla
  • El Workbench ABAP es 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 allá por 2009, de la mano de Jeremy Ashkenas, y el primer mensaje de commit se titulaba «initial commit of the mystery language».
  • De tipado dinámico y multiparadigma (orientado a objetos, imperativo, funcional, prototípico)
  • Se compila a JavaScript (lo que se conoce como transpiling). La regla de oro de CoffeeScript es: «Es solo JavaScript». Uno de los primeros lenguajes exitosos en «transpilar a JS»
  • Se volvió popular porque CoffeeScript no tenía algunos de los problemas con los que lidiaba la gente que hacía JS en ese entonces (como que el binding de «this» funcionara de manera distinta, o que no se admitieran las clases). Se incluyó en Ruby on Rails a partir de la versión 3.1.
  • En 2017 el lenguaje recibió su versión 2.0, que buscaba ponerlo a la par con el estándar más reciente de JavaScript. El lenguaje recibe una actualización más o menos una vez al año.
  • El compilador del lenguaje se escribió originalmente en Ruby, pero en 2010 se reemplazó por un compilador autoalojado escrito en CoffeeScript (el compilador no depende de NodeJS y puede ejecutarse directamente en el navegador)
  • CoffeeScript fue influyente en el sentido de que inspiró a JavaScript a adoptar ciertas características (la sintaxis de flecha para las lambdas, las 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, eliminando muchos paréntesis y llaves, en parte gracias al uso de la indentación significativa (los espacios en blanco son importantes)
  • 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 los enlaces de funciones 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
  • Mucha azúcar sintáctica, p. ej., usar @ 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

  • Se 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 de JS escrita
  • Agrega características que faltan o faltaban en JavaScript: comprensiones de listas, interpolación de cadenas, operador existencial (?), comparaciones encadenadas
  • Lenguaje pequeño, el compilador pesa 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 construir interfaces de usuario
  • De tipado estático
  • Multiparadigma: principalmente orientado a objetos, pero también funcional e imperativo
  • Se puede interpretar y compilar just-in-time
  • Se usa principalmente para construir apps, pero también se puede usar para construir 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 sólido sistema de seguridad frente a nulos: se acabaron las excepciones de puntero nulo
  • Buenas herramientas, con soporte en varios IDE. Optimizado para un ciclo de retroalimentación corto, p. ej., mediante una recarga en caliente rápida
  • Ecosistema en crecimiento con muchas bibliotecas disponibles

Características destacadas

  • Se puede compilar a JS, a nativo, pero también a Swift y Kotlin, ideal para apps móviles.
  • La biblioteca Flutter se puede usar para construir 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 lanzado en 1995.
  • Es un lenguaje de programación Object Pascal y fue desarrollado por Anders Hejlsberg, uno de los arquitectos principales de C#
  • De tipado fuerte y estático
  • Se compila a código nativo
  • Multiparadigma: mayormente orientado a objetos, pero también imperativo, declarativo y dirigido por eventos
  • Se usa en aplicaciones de negocio, GUIs y escuelas (para enseñar programación)

Por qué es genial

  • Fácil de aprender. Object Pascal combina la sencillez y la claridad de Pascal con características de la programación orientada a objetos, lo que facilita escribir y mantener código
  • Entorno de desarrollo integrado (IDE): el IDE de Delphi ofrece un entorno fácil de usar y repleto de funciones que agiliza el proceso de desarrollo. Proporciona navegación de código, herramientas de depuración, autocompletado de código y otras funciones de productividad que hacen el desarrollo más eficiente.
  • Estabilidad: existe desde principios de la década de 1990, con un historial de ser una herramienta y un lenguaje de desarrollo confiables y estables, incluyendo una fuerte compatibilidad con versiones anteriores. El código escrito en versiones anteriores de Delphi aún se puede compilar y ejecutar en versiones más nuevas 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 una audiencia más amplia 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 de Delphi son conocidas por su velocidad y su rendimiento. El compilador de Delphi produce ejecutables nativos altamente 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 apoya en una arquitectura basada en componentes, donde se construyen componentes reutilizables para armar aplicaciones. Facilita la reutilización de código y reduce el tiempo de desarrollo.
  • Manejo de eventos: Delphi usa un modelo de eventos integrado que permite a los desarrolladores responder fácilmente a las acciones del usuario y a otros eventos. El manejo de eventos simplifica el proceso de capturar la entrada del usuario o los eventos del sistema y responder adecuadamente.
  • Conectividad con bases de datos: Delphi proporciona componentes nativos de acceso a bases de datos que permiten una integración perfecta con diversos 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 licenciatura y lanzado 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, de tipado estático y fuerte
  • Sintaxis inspirada en Haskell
  • Lenguaje de código abierto, pero con opiniones muy marcadas, y su estilo de desarrollo implica largos periodos de trabajo profundo de Evan antes de hacer públicas las cosas. Así que los PR pueden no fusionarse por mucho tiempo y el proyecto puede parecer estancado, 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 de tipado estático. Esto casi lo hace 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 linting con elm-review (impulsa el analizador del track de Elm de Exercism).

Características destacadas

  • The Elm Architecture (TEA) subyace a todas las apps de Elm, por lo que es muy fácil revisar aplicaciones de Elm desconocidas.
  • ¡Sin excepciones en tiempo de ejecución! Salvo por un par de cosas.
  • Nada se rompe al actualizar dependencias, el versionado semántico lo impone el compilador.
  • Cuando compila, funciona (salvo errores de lógica). Y cuando te acostumbras, es muy difícil volver a otros lenguajes.
    • elm-ui de Matthew Griffith habilita que «cuando compila, funciona» para el estilo y el diseño; no necesitas CSS.
  • Aplicaciones web full-stack: Lamdera es un derivado que usa Elm para apps web full-stack con cero pegamento entre el frontend y el backend.

Java

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

Por qué es genial

  • Se ejecuta en (casi) todas partes (como te recordará con gusto el actualizador de Java ;))
  • De propósito general: se puede usar para casi cualquier carga de trabajo, incluyendo apps, sitios web y sistemas embebidos
  • Interoperabilidad con otros lenguajes de la JVM, como Kotlin, Groovy, Scala y Clojure
  • Excelentes herramientas, tanto para IDEs como para otras herramientas como los 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, como Java, son maduras, estables y repletas de funciones
  • En evolución: el lenguaje y el runtime siguen evolucionando, con actualizaciones regulares del lenguaje para hacerlo más moderno y atender las quejas de la gente (como la reducción del código repetitivo y de la verbosidad). En cuanto al runtime, se inician nuevos proyectos con regularidad para seguir evolucionándolo (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, famosamente, se creó en 10 días
  • Estandarizado como ECMAScript en 1997
  • De tipado dinámico y débil
  • Solía ser puramente interpretado, pero hoy en día a menudo se compila just-in-time
  • 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 agregar 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

  • De propósito general: se puede usar para muchas cargas de trabajo: backend, frontend, scripts, herramientas de línea de comandos. Muchas de las herramientas que se usan para la web están escritas en JavaScript (y corren sobre nodejs)
  • Los runtimes (como V8) están muy optimizados y pueden ser muy eficientes, aunque el lenguaje sea altamente dinámico
  • Un 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 características, como async/await o la interpolación de cadenas. 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 de JavaScript
  • El soporte de JSON es de primera, prueba de ello es que JSON significa JavaScript Object Notation
  • Diseñado para ser bueno con código basado en 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
  • Corre en la mayoría de las plataformas y del 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 construir aplicaciones web (p. ej., eslint, parcel)
  • Se puede usar de forma isomórfica, 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 lo hace más fácil de mantener y permite reutilizar código entre el frontend y el backend
  • Su enorme popularidad significa: muchos recursos para aprender (videos, blogs, cursos) y una vasta comunidad con la que interactuar

Kotlin

  • Desarrollado por JetBrains en 2010, famosos por sus IDEs (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 características que les faltaban. Scala tenía estas características, pero resultó ser demasiado lento de compilar. Así se inició el Proyecto Kotlin.
  • De tipado fuerte y estático
  • Multiparadigma: imperativo, orientado a objetos, funcional, declarativo
  • Por defecto, se 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)
  • En 2019, Google lo marcó como el lenguaje preferido para escribir apps de Android
  • Se usa para construir sitios web, apps (mayormente de Android) e incluso IDEs completos (los IDEs antes mencionados)

Por qué es genial

  • De propósito general: se puede usar para casi cualquier carga de trabajo, incluyendo apps y sitios web. En 2019, Google consideró a Kotlin el lenguaje preferido para desarrollar apps de Android
  • Al correr sobre 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 podría tener con Java, como las excepciones verificadas, 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 consistente 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 eso se implementa como una biblioteca que usa la característica de corrutinas del lenguaje. Las corrutinas son una forma de manejar funciones suspendidas, que ofrecen una abstracción más segura y menos propensa a errores para las operaciones asíncronas que los futures y las promises.
  • Gran concurrencia: async/await, canales e inmutabilidad ayudan a conseguir una excelente concurrencia
  • Compose multiplatform permite construir interfaces de usuario compartidas desde la misma base de código usando una sintaxis declarativa

Objective-C

  • Originalmente desarrollado 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 la construcción orientada a objetos central
  • Superconjunto de C, así 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 de macOS e iOS hasta la llegada de Swift en 2014
  • Se usa para apps de macOS e iOS

Por qué es genial

  • La combinación de C con características orientadas a objetos puede ser realmente poderosa
  • 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 compatibilidad con versiones anteriores

Características destacadas

  • Admite el conteo 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 la memoria
  • El runtime dinámico permite el method 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 observer o proxy)
  • Los protocolos y las interfaces llevan características de interfaz a C, y las interfaces de categoría incluso permiten extender tipos existentes

PHP

  • Desarrollado e implementado por Rasmus Lerdorf en 1993 y lanzado por primera vez en 1995
  • El nombre es una sigla recursiva: PHP: Hypertext Preprocessor
  • De tipado dinámico y débil, con la opción de agregar gradualmente aserciones de tipos fuertes en tiempo de ejecución
  • Multiparadigma: imperativo, funcional, orientado a objetos, procedimental, reflexivo
  • Interpretado o compilado just-in-time
  • 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 está en uso en el 77,4 % de todos los sitios web^1, independientemente de plataformas específicas
  • Sintaxis simple, similar a la de otros lenguajes de programación establecidos (Java, JavaScript, C), lo que lo hace fácil de aprender
  • De propósito general. Úsalo para muchos fines: desde crear pequeños scripts web hasta crear grandes aplicaciones del lado del servidor que ejecutan las 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, lanzando características modernas
  • Multiplataforma. Corre en todo: Windows, Mac, Linux, Unix
  • De código abierto y gratuito

Características destacadas

  • Simple de ejecutar y desplegar. Sin cadena de compilación. Sin compiladores.
  • Sistema de tipos gradual. Agrega tipos donde los necesites y 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 con su primera versión lanzada en 2013
  • Comenzó a trabajar en PureScript porque no estaba satisfecho con otros intentos de transpilar Haskell a JavaScript
  • De tipado fuerte y estático
  • Se compila a JS
  • Lenguaje puramente funcional
  • Sintaxis y características inspiradas en Haskell
  • Se usa para construir aplicaciones web, pero también se puede usar para construir apps del lado del servidor o aplicaciones de escritorio mediante Electron

Por qué es genial

  • Comparte mucho 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 y codificación de JSON a tipos, fácil y con seguridad de tipos
  • Se compila a JavaScript legible por humanos
  • Buenas herramientas

Características destacadas

  • El núcleo funcional es perfecto para aplicaciones web con seguridad de tipos y sin errores en tiempo de ejecución
  • Excelente interoperabilidad con JS
  • Se compila a JS eficiente

ReasonML

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

Por qué es genial

  • Todas las bondades de OCaml, pero en un entorno web:
    • Sistema de tipos potente: todos los valores se tipan con tipos más simples (como registros, variantes y opciones) preferidos sobre 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
  • Se 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 de TS. También puede interoperar con C. Incluso admite sintaxis similar a JSX

Swift

  • El desarrollo de Swift fue iniciado por Chris Lattner en 2010 y anunciado al mundo en el evento WWDC de 2014.
  • El objetivo era reemplazar el viejo 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.
  • De tipado fuerte y estático
  • Compilado, usando LLVM para manejar 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, cadenas Unicode
  • Productivo: Swift adopta las mejores partes de otros lenguajes (como Rust, Python, C# y Ruby), moldeándolas en un lenguaje consistente 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 la memoria mediante ARC (Automatic Reference Counting)
  • Se actualiza con regularidad. Al principio, Apple no tenía miedo de introducir cambios que rompieran la compatibilidad para cosas que demostraron no funcionar bien. Esto evita que se acumule «equipaje». Por lo general, se pone a disposición una herramienta para ayudar a migrar el código. Desde Swift 5, la interfaz binaria de aplicaciones (ABI) es estable
  • A diferencia de Objective-C, Swift corre en todas las plataformas principales: macOS, Windows y Linux

Características destacadas

  • Rápido. Se compila a código máquina eficiente, lo que lo hace correr 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 de 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 lanzó 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
  • Su popularidad crece rápidamente, con muchas herramientas que ofrecen tipos de TypeScript o que se convierten a TypeScript. También hay muchos recursos disponibles
  • El lenguaje se actualiza con regularidad, con adopción temprana de las próximas características de ECMAScript

Características destacadas

  • Mejor seguridad y corrección: el tipado estático puede eliminar muchas clases de errores que uno suele cometer con JS
  • Interoperabilidad perfecta con JS. Se pueden agregar definiciones de tipos personalizadas para trabajar con código JS de forma segura en cuanto a tipos. Hay definiciones de tipos personalizadas disponibles para una gran cantidad
  • Excelente soporte de herramientas y de IDE. Las anotaciones de tipo, el autocompletado de código e incluso la refactorización segura a gran escala están disponibles en muchos IDEs
  • Obtén todos los beneficios de correr en el ecosistema de JS: una enorme cantidad de paquetes, muchas herramientas, una gran comunidad, etc.

¿Cuál probar?

  1. Si quieres construir apps nativas, Dart, Delphi, Java, Kotlin y Swift son excelentes opciones. Dicho esto, cualquiera de los otros lenguajes que compilan a JS también se podría usar para construir apps nativas. Vale la pena señalar que el lenguaje oficial para construir apps de iOS/macOS es Swift, y para apps de Android es Kotlin
  2. Si quieres construir aplicaciones web, CoffeeScript, Dart, Elm, Java, JavaScript, Kotlin, PHP, PureScript, ReasonML y TypeScript son excelentes
  3. Si te interesa la programación funcional, Elm, PureScript y ReasonML son opciones naturales, y CoffeeScript, Dart, Java, JavaScript, Kotlin, Swift y TypeScript también admiten la 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 de negocio, ABAP y Delphi son perfectos para eso
martes, 01 de agosto de 2023 · ¿Te resultó útil?