stringtranslate.com

Crystal (lenguaje de programación)

Crystal es un lenguaje de programación orientado a objetos de propósito general de alto nivel , diseñado y desarrollado por Ary Borenszweig, Juan Wajnerman, Brian Cardiff y más de 400 colaboradores. [5] Con una sintaxis inspirada en el lenguaje Ruby , [4] es un lenguaje compilado con verificación de tipos estática , pero generalmente no es necesario especificar los tipos de variables o argumentos de métodos. Los tipos se resuelven mediante un algoritmo avanzado de inferencia de tipos global. [6] [7] Crystal se encuentra actualmente en desarrollo activo. Se publica como software libre y de código abierto bajo la Licencia Apache versión 2.0.

Historia

El trabajo en el lenguaje comenzó en junio de 2011, [8] con el objetivo de fusionar la elegancia y productividad de Ruby con la velocidad, eficiencia y seguridad de tipos de un lenguaje compilado. [9] [8] Inicialmente llamado Joy , rápidamente fue renombrado a Crystal . [8]

El compilador Crystal fue escrito primero en Ruby, pero luego reescrito en Crystal, volviéndose así autohospedado , a partir de noviembre de 2013. [ 10] La primera versión oficial fue lanzada en junio de 2014. [11] En julio de 2016, Crystal se unió al índice TIOBE .

Descripción

Aunque se parece al lenguaje Ruby en sintaxis, Crystal compila a un código nativo mucho más eficiente utilizando un backend LLVM , a costa de excluir los aspectos dinámicos de Ruby. La inferencia de tipo global avanzada utilizada por el compilador Crystal, combinada con tipos de unión , le da más la sensación de un lenguaje de script de nivel superior que muchos otros lenguajes de programación comparables. Tiene recolección de basura automatizada y ofrece un recolector Boehm . Crystal posee un sistema de macros y admite genéricos, así como sobrecarga de métodos y operadores. Su modelo de concurrencia está inspirado en los procesos secuenciales de comunicación (CSP) e implementa fibras y canales livianos (para comunicación entre fibras) inspirados en Go . [4]

Ejemplos

Hola Mundo

Esta es la forma más sencilla de escribir el programa Hola Mundo en Crystal:

pone "¡Hola mundo!" 

Lo mismo que en Ruby.

O utilizando un estilo de programación orientado a objetos :

clase Greeter def inicializar ( @name : String ) fin       def salute pone "Hola #{ @name } !" fin fin    g = Greeter . new ( "mundo" ) g . salute  

Servidor HTTP

requiere "http/servidor" servidor = HTTP :: Servidor.new do | contexto | contexto.respuesta.contenido_tipo = " texto/ sin formato " contexto.respuesta.print " ¡ Hola mundo ! La hora es # { Time.local } " fin         server.bind_tcp ( " 0.0.0.0 " , 8080 ) pone " Escuchando en http://0.0.0.0:8080 " server.list  

Servidor de eco TCP

requiere "socket" def handle_client ( cliente ) mensaje = cliente . gets cliente . puts mensaje fin      servidor = TCPServer . new ( "localhost" , 1234 ) mientras cliente = servidor . accept? spawn handle_client ( cliente ) fin        

Inferencia de tipos y tipos de unión

El código siguiente define una matriz que contiene distintos tipos sin un ancestro común utilizable. Crystal crea automáticamente un tipo de unión a partir de los tipos de los elementos individuales.

cosas_deseadas = [ :unicornios , "mariposas" , 1_000_000 ] p typeof ( cosas_deseadas . first ) # typeof devuelve el tipo de tiempo de compilación, aquí (Símbolo | Cadena | Int32) p cosas_deseadas . first . class # el método de clase devuelve el tipo de tiempo de ejecución, aquí Símbolo        

Concurrencia

Los canales se pueden utilizar para comunicarse entre fibras, que se inician mediante la palabra clave spawn.

canal = Canal ( Int32 ) . nuevo  spawn do puts "Antes del primer envío" canal . send ( 1 ) puts "Antes del segundo envío" canal . send ( 2 ) fin       pone "Antes de la primera recepción" valor = canal . recibir pone valor # => 1     pone "Antes de la segunda recepción" valor = canal .recibir pone valor # => 2     

Lectura adicional

Referencias

  1. ^ "¡Ya está disponible Crystal 0.1.0!". crystal-lang . 19 de junio de 2014.
  2. ^ "Versión 1.13.3". 18 de septiembre de 2024. Consultado el 21 de septiembre de 2024 .
  3. ^ ab "Soporte de la plataforma Crystal". crystal-lang.org .
  4. ^ abcde Borenszweig, Ary (16 de junio de 2016). "¡Se lanzó Crystal 0.18.0!". crystal-lang.org . Está fuertemente inspirado en Ruby y otros lenguajes (como C#, Go y Python).
  5. ^ "Colaboradores" . Consultado el 25 de julio de 2019 – vía GitHub .
  6. ^ Brian J., Cardiff (9 de septiembre de 2013). "Inferencia de tipos, parte 1". crystal-lang.org .
  7. ^ "Programación con Crystal: 'Un lenguaje para humanos y computadoras'". devm.io . 3 de julio de 2023.
  8. ^ abc David, María Inti (1 de abril de 2016). “La historia detrás de #CrystalLang”. manas.tech .
  9. ^ Hsieh, Adler (20 de septiembre de 2015). "¿Por qué el lenguaje de programación Crystal?". motion-express.com .
  10. ^ Borenszweig, Ary (14 de noviembre de 2013). "Adiós Ruby Thursday". crystal-lang.org .
  11. ^ Borenszweig, Ary (19 de junio de 2014). "¡Ya se lanzó Crystal 0.1.0!". crystal-lang.org .

Enlaces externos