Cristal (lenguaje de programación)

Cristal
clase de idioma lenguaje de programación y lenguaje de programación orientado a objetos
Apareció en 2014 [2]
Desarrollador Arie Borenveig [d]
extensión de archivo .cr
Liberar
sido influenciado Rubí , C , C# , Python [3] , Go y Rust
Licencia licencia apache
Sitio web crystal-lang.org
Plataforma IA-32 , Arquitectura Intel y x86_64
sistema operativo macOS , Linux y FreeBSD

Crystal  es un lenguaje de programación orientado a objetos de propósito general diseñado y desarrollado por Arie Borenzweig, Juan Weinerman y Brian Cardiff. Desarrollado por una comunidad de más de 300 desarrolladores. Tiene una sintaxis similar a la de Ruby , pero, a diferencia de Ruby, es un lenguaje compilado y tipificado estáticamente que utiliza la inferencia de tipos (y, por lo tanto, no es necesaria una declaración explícita de tipos, como en Ruby). Distribuido como software gratuito y de código abierto bajo la licencia Apache versión 2.0.

Los programas de Crystal se compilan usando LLVM , mientras pierden algunos de los aspectos dinámicos que se encuentran en Ruby, pero la eficiencia de los programas es mucho mayor y el rendimiento es comparable a los programas en C [4] [5] [6] . El lenguaje utiliza el recolector de basura Boehm , tiene un sistema de macros , admite programación genérica , sobrecarga de métodos y operadores . Se ha implementado una interfaz para llamar a funciones desde bibliotecas binarias en C y C++, mientras que la sintaxis para interactuar con dichas bibliotecas se simplifica al máximo, lo que facilita la creación de bibliotecas contenedoras en lugar de escribir todo el código desde cero. Crystal también admite inserciones de ensamblador y acceso directo mediante punteros  ; esto se considera una práctica insegura , pero no está prohibida, ya que es necesario, en particular, para interactuar con funciones de bibliotecas externas.

Historia

El trabajo en un nuevo lenguaje de programación se inició en junio de 2011 en Manas. Los desarrolladores se fijaron el objetivo de crear un lenguaje con la elegancia y productividad de Ruby y la velocidad, eficiencia y seguridad de tipos de los lenguajes de programación compilados. Inicialmente, el desarrollo se llamó Joy, pero luego pasó a llamarse Crystal.

El primer lanzamiento oficial del idioma tuvo lugar en junio de 2014. El compilador de lenguaje se escribió originalmente en Ruby hasta que se reescribió en Crystal en 2013. En julio de 2016 ingresó al índice TIOBE . El 22 de marzo de 2021, los desarrolladores lanzaron la primera versión estable del lenguaje: 1.0.0.

Ejemplos

¡Hola Mundo! :

pone "¡Hola mundo!"

o en estilo orientado a objetos:

class Greeter def initialize ( @name : String ) end saludo def "Hola #{ @name } !" final final g = saludador . nuevo ( "mundo" ) pone g . saludo

El servidor HTTP más simple:

requiere "http/servidor" servidor = HTTP :: Servidor . nuevo hacer | contexto | contexto _ respuesta _ content_type = "texto/simple" contexto . respuesta _ imprimir "¡Hola mundo!" final servidor _ bind_tcp 8080 pone el servidor "Escuchando en http://127.0.0.1:8080" . escuchar

El siguiente código declara una colección (matriz) que consta de elementos de varios tipos de datos; Crystal en este caso crea automáticamente un tipo de unión con los tipos de datos individuales de los elementos de la matriz:

cosas_deseadas = [ :unicornios , "mariposas" , 1_000_000 ] p typeof ( cosas_deseadas . primero ) # typeof devuelve los tipos de datos en tiempo de compilación, en este caso (Int32 | String | Symbol) p cosas_deseadas . primero _ clase # método de clase devuelve el tipo de datos de tiempo de ejecución, en este caso Símbolo

Los canales ( Channel) se utilizan para la comunicación entre fibras creadas con el comando spawn:

canal = Canal ( Int32 ) . nuevo spawn do pone el canal "Antes de que se envíe el primer mensaje" . enviar ( 1 ) pone "Después de que se envíe el segundo mensaje" canal . enviar ( 2 ) terminar pone "Antes de obtener por primera vez" valor = canal . recibir pone valor # => 1 pone "Antes del segundo obtener" valor = canal . recibir pone valor # => 2

Notas

  1. ¡Se lanza Crystal 1.6.0! — 2022.
  2. https://crystal-lang.org/2014/06/19/crystal-0.1.0-released.html
  3. https://www.rankred.com/nuevos-lenguajes-de-programación-para-aprender/
  4. kostya/puntos de referencia . GitHub. Fecha de acceso: 18 de febrero de 2016. Archivado desde el original el 4 de marzo de 2017.
  5. kostya/crystal-benchmarks-game . GitHub. Consultado el 18 de febrero de 2016. Archivado desde el original el 11 de junio de 2018.
  6. smarr/somos-rápidos-todavía . GitHub. Fecha de acceso: 18 de febrero de 2016.

Literatura

  • San Simón Laurent, Ivo Balbaert. Programación Crystal: Cree aplicaciones simultáneas, seguras y de alto rendimiento. - 1ª ed. - Estantería pragmática, 2019. - 246 p. — ISBN 1680502867 . — ISBN 978-1680502862 .

Enlaces