Por qué opino que Cristal es un lenguaje de programación importante? Es una buena pregunta. Cristal implementa un lenguaje de tipado dinámico como Ruby como un lenguaje de tipado estático mediante la inferencia de tipos.
Parece una tontería pero permite obtener código de tipado estático, lo cual nos trae con sigo una herramienta fundamental para la búsqueda de errores que es el chequeo por tipo. Sin tener que sacrificar casi nada de nuestro lenguaje de tipado dinámico.
Digo casi nada porque por ejemplo no podemos cambiar el tipo de una variable, por ejemplo :
var a = 2
a = "hola"
no compilaría, pero la pregunta del millón es ¿ eso es útil ?
Es decir a alguien realmente le interesa cambiar de tipo una variable, yo creo que no. No escribo código de tipado dinámico pero imagino, que no existe un interés de reutilizar las variables. Por lo tanto festejo que no se pueda hacer esto en Cristal.
Por ultimo, ¿que piensan, otros lenguajes le seguirán los pasos a Cristal?
Dejo link: https://crystal-lang.org/
Translate
Mostrando las entradas con la etiqueta Cristal. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Cristal. Mostrar todas las entradas
domingo, 31 de marzo de 2019
viernes, 9 de junio de 2017
Cristal, rápido como C, amigable como Ruby
Cristal es un lenguaje similar a ruby que viene creciendo bastante, entre sus características podemos nombrar:
Sintaxis: La sintaxis de cristal es muy similar a la de ruby, lo que lo hace fácil de leer y de escribir.
Veamos un ejemplo:
# A very basic HTTP server
require "http/server"
server = HTTP::Server.new(8080) do |context|
context.response.content_type = "text/plain"
context.response.print "Hello world, got #{context.request.path}!"
end
puts "Listening on http://127.0.0.1:8080"
server.listen
Es un lenguaje compilado, lo que lo hace más rápido y con menos uso de memoria.
Chequeo de tipos, cristal es de tipado estático y hace chequeos de tipo en tiempo de compilación.
Chequeo de posibles errores por valores nulos.
if rand(2) > 0
my_string = "hello world"
end
puts my_string.upcase
y si compilamos:
$ crystal hello_world.cr
Error in hello_world.cr:5: undefined method 'upcase' for Nil (compile-time type is (String | Nil))
puts my_string.upcase
^~~~~~
Macros, que permiten extender el lenguaje:
class Object
def has_instance_var?(name) : Bool
{{ @type.instance_vars.map &.name.stringify }}.includes? name
end
end
person = Person.new "John", 30
person.has_instance_var?("name") #=> true
person.has_instance_var?("birthday") #=> false
y mucho más!!
Dejo link:
https://crystal-lang.org/
Suscribirse a:
Entradas (Atom)