Crystal (langage de programmation)

Crystal est un langage de programmation orienté objet conçu et développé par Ary Borenszweig et Juan Wajnerman, ainsi que par plus d'une centaine de contributeurs listés[1]. Crystal est développé de manière open-source sous licence Apache 2.0 et sa syntaxe est inspirée par Ruby. Le type des variables et arguments est vérifié statiquement sans qu'il soit nécessaire de le préciser dans le code.

Pour les articles homonymes, voir Crystal.

Historique

Le travail sur le langage a commencé en juin 2011[2], avec pour objectif de créer un langage ayant l'élégance et la productivité de Ruby et la vitesse, l'efficacité et la sécurité du typage statique d'un langage compilé[2],[3]. Initialement appelé Joy, le projet a été rapidement renommé en Crystal[2].

Le compilateur de Crystal a d'abord été écrit en Ruby, mais a été réécrit plus tard en Crystal devenant ainsi un langage auto-hébergé à partir de 2013[4]. La première version officielle est sortie en juin 2014[5],[6]. Et en juillet 2016, Crystal a rejoint l'index TIOBE.

Description

Bien qu'il ressemble au langage Ruby dans sa syntaxe, Crystal se compile en un code natif beaucoup plus efficace en utilisant un backend LLVM[7]. Le prix à payer pour cela est l'interdiction d'utiliser les aspects dynamiques de Ruby. De récents tests de performance ont démontré que Crystal a une performance largement similaire à celle du C pour une vaste étendue de tâches de calculs[8],[9],[10]. Le langage a automatisé le ramassage de miettes et offre actuellement un collecteur de Boehm. Crystal possède un système de macros, supporte la généricité et la surcharge d'opérateurs.

Exemples

Hello World

Voici la manière la plus simple d'écrire un "Hello World" en Crystal:

puts "Hello World!"

Ou en utilisant un style de programmation orientée objet:

class Greeter
  def initialize(name)
    @name = name.capitalize
  end

  def salute
    puts "Hello #{@name}!"
  end
end

g = Greeter.new("world")
g.salute

Serveur HTTP

# A very basic HTTP server
require "http/server"

server = HTTP::Server.new 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(8080)

Références

  1. Crystal source code
  2. (en-US) María Inti David, « The story behind #CrystalLang », Manas Technology Solutions, (lire en ligne, consulté le )
  3. « Why Crystal programming language? | Motion Express | Ruby, Rails, Golang & DevOps », sur motion-express.com (consulté le )
  4. Good-bye Ruby Thursday
  5. Why Crystal programming language?
  6. Crystal 0.1.0 released!
  7. (en) Ramon Wartala, « Crystal – A Ruby-esque programing language », Linux Magazine, (consulté le )
  8. Some benchmarks of different languages
  9. Crystal implementations for The Computer Language Benchmarks Game
  10. Are We Fast Yet?

Liens externes

  • Portail de l’informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.