An Interest In:
Web News this Week
- April 29, 2024
- April 28, 2024
- April 27, 2024
- April 26, 2024
- April 25, 2024
- April 24, 2024
- April 23, 2024
Por que voc deveria aprender Crystal?
Alguma vez voc j ouviu falar dessa incrvel linguagem chamada Crystal? Certo, vamos entender um pouco sobre tudo que essa incrvel linguagem de programao tem para oferecer.
O objetivo deste pequeno artigo falar um pouco sobre Crystal e por quais motivos voc poderia se interessar pelo desenvolvimento utilizando-a.
O que Crystal?
Sendo uma linguagem de programao multi-paradigma, para humanos e computadores, desenhada e desenvolvida por Ary Borenszweig, Juan Wajnerman, Brian Cardiff, alm de mais de 480 colaboradores at o momento, tendo sintaxe inspirada na linguagem Ruby, Crystal se destacou por aplicar conceitos de concorrncia e uso geral de uma maneira "diferenciada", utilizando verificao esttica de tipos por meio de um algoritmo de inferncia global. Atualmente em desenvolvimento ativo, tendo como licena a Apache 2.0.
Histria
Com seus primeiros trabalhos se iniciando em 2011 com o objetivo de mesclar a produtividade e elegncia de Ruby com a velocidade, eficincia e segurana de uma linguagem compilada, surge a chamada Joy, que posteriormente foi renomeada para Crystal.
Seu primeiro compilador foi escrito em Ruby, mas, reescrito em Crystal, possibilitando uma auto-hospedagem a partir de novembro de 2013, tendo uma primeira verso lanada em junho de 2014, alm de ingressar no ndice TIOBE em julho de 2016. Sua primeira verso estvel surgiu em maro de 2021, a famosa verso 1.0!
Por que Crystal mais eficiente?
Simples, Crystal compila o cdigo nativo usando LLVM, excluindo aspectos dinmicos do Ruby. Sua inferncia de tipo global avanada aplicada no compilador, combinada com tipos de unio cria uma sensao de uma linguagem de script de maior nvel do que muitas outras linguagens de programao que podem ser comparadas.
Alm disso, Crystal possui um sistema de macro e suporta sobrecarga de mtodos e operadores. Seu modelo de concorrncia inspirado na comunicao de processos sequenciais (CSP) implementando threads verdes (traduo literal de "green threads") chamadas de fibras (traduo literal de "fibers") e outros conceitos inspirados na linguagem de programaao Go. Outro ponto importante sua coleta de lixo automatizada oferecendo um coletor Boehm.
Como instalar?
A instalao varia para cada sistema operacional a ser utilizado! Voc pode tentar instalar pelo seu gerenciador de pacotes padro buscando pelo pacote nomeado crystal
ou ento seguir o guia oficial de instalao!
Caso voc esteja utilizando Windows, voc pode instalar tanto pelo WSL quanto experimentar a verso de testes do instalador oficial para Windows!
Shards
Shards o nome do gerenciador de dependncias da linguagem de programao Crystal, que utiliza por padro o arquivo shard.yml
para definir configuraes de projeto.
name: shardsversion: 0.1.0dependencies: openssl: github: datanoise/openssl.cr branch: masterdevelopment_dependencies: minitest: git: https://github.com/ysbaddaden/minitest.cr.git version: ~> 0.3.1license: MIT
Voc pode ver o repositrio oficial clicando aqui.
Cdigo
Utilizando por padro a extenso de arquivos .cr
vamos criar um exemplo prtico apenas mostrando a base de um simples "Hello World", um servidor HTTP e um modelo de concorrncia, vamos l?
Hello World!
p "Hello World!"# ouputs "Hello World!"
Servidor HTTP
require "http/server"server = HTTP::Server.new do |context| context.response.content_type = "text/plain" context.response.print "Hello, got #{context.request.path}!"endputs "Listening on http://127.0.0.1:8080"server.listen(8080)
Agora basta acessar a pgina local com porta "8080" para testarmos!
Modelo de Concorrncia
channel = Channel(Int32).newtotal_lines = 0files = Dir.glob("*.txt")files.each do |f| spawn do lines = File.read_lines(f) channel.send lines.size endendfiles.size.times do total_lines += channel.receiveendputs total_lines
Onde posso ver mais sobre Crystal?
Voc pode ler a documentao oficial, seguir o perfil oficial da linguagem no GitHub e at mesmo estudar meu prprio guia em portugus de introduo ao Crystal: o famoso Crystal4noobs!
Original Link: https://dev.to/guto/por-que-voce-deveria-aprender-crystal-2c12
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To