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.
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.
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 . saludoEl 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" . escucharEl 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ímboloLos 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