Crystal (limbaj de programare)

Cristal
Clasa de limba limbaj de programare și limbaj de programare orientat pe obiecte
Aparut in 2014 [2]
Dezvoltator Arie Borenveig [d]
Extensie de fișier .cr
Eliberare
A fost influențat Ruby , C , C# , Python [3] , Go și Rust
Licență Licență Apache
Site-ul web crystal-lang.org
Platformă IA-32 , Intel Architecture și x86_64
OS macOS , Linux și FreeBSD

Crystal  este un limbaj de programare orientat pe obiecte de uz general conceput și dezvoltat de Arie Borenzweig, Juan Weinerman și Brian Cardiff. Dezvoltat de o comunitate de peste 300 de dezvoltatori. Are o sintaxă asemănătoare Ruby , dar, spre deosebire de Ruby, este un limbaj compilat și tipizat static care utilizează inferența tipurilor (și, prin urmare, o declarație explicită a tipurilor, ca în Ruby, nu este necesară). Distribuit ca software gratuit și open source sub licența Apache versiunea 2.0.

Programele Crystal sunt compilate folosind LLVM , pierzând în același timp unele dintre aspectele dinamice găsite în Ruby, dar eficiența programelor este mult mai mare, iar performanța este comparabilă cu programele din C [4] [5] [6] . Limbajul folosește colectorul de gunoi Boehm , are un sistem macro , acceptă programarea generică , metoda și supraîncărcarea operatorului . A fost implementată o interfață pentru apelarea funcțiilor din bibliotecile binare în C și C++, în timp ce sintaxa pentru interacțiunea cu astfel de biblioteci este simplificată pe cât posibil, ceea ce facilitează crearea bibliotecilor wrapper, mai degrabă decât scrierea întregului cod de la zero. Crystal acceptă, de asemenea, inserții de asamblare și acces direct prin pointeri  - aceasta este considerată o practică nesigură , dar nu interzisă, deoarece este necesar, în special, să interacționați cu funcțiile din biblioteci externe.

Istorie

Lucrările la un nou limbaj de programare au început în iunie 2011 la Manas. Dezvoltatorii și-au stabilit obiectivul de a crea un limbaj cu eleganța și productivitatea Ruby și cu viteza, eficiența și siguranța de tip a limbajelor de programare compilate. Inițial, dezvoltarea a fost numită Joy, dar ulterior a fost redenumită Crystal.

Prima lansare oficială a limbii a avut loc în iunie 2014. Compilatorul de limbă a fost scris inițial în Ruby până când a fost rescris în Crystal în 2013. În iulie 2016 a intrat în indicele TIOBE . Pe 22 martie 2021, dezvoltatorii au lansat prima versiune stabilă a limbajului - 1.0.0.

Exemple

Salut Lume! :

pune „Bună lume!”

sau în stil orientat pe obiecte:

clasa Greeter def initialize ( @name : String ) end salut def "Salut #{ @name } !" sfârşitul sfârşitului g = Greeter . nou ( „lume” ) pune g . salut

Cel mai simplu server HTTP:

necesită „http/server” server = HTTP :: Server . nou do | context | context . răspuns . content_type = context „text/plain” . răspuns . printează „Bună lume!” Sfârşit server . bind_tcp 8080 pune pe serverul „Ascultare pe http://127.0.0.1:8080” . asculta

Următorul cod declară o colecție (matrice) constând din elemente de diferite tipuri de date; În acest caz, Crystal creează automat un tip de unire cu tipurile de date individuale ale elementelor matricei:

dorit_things = [ :unicorns , "butterflies" , 1_000_000 ] p typeof ( wish_things . first ) # typeof returnează tipurile de date la momentul compilării, în acest caz (Int32 | String | Symbol) p wished_things . primul . class # class metoda returnează tipul de date de rulare, în acest caz Symbol

Canalele ( Channel) sunt folosite pentru comunicarea între fibrele create cu comanda spawn:

canal = Canal ( Int32 ) . nou spawn do pune canalul „Înainte să fie trimis primul mesaj” . trimite ( 1 ) pune canalul „După ce al doilea mesaj este trimis” . trimite ( 2 ) sfârşit pune „Înainte de a primi prima dată” value = canal . primire pune valoarea # => 1 pune „Înainte de a doua obține” value = canal . primire pune valoarea # => 2

Note

  1. Crystal 1.6.0 este lansat! — 2022.
  2. https://crystal-lang.org/2014/06/19/crystal-0.1.0-released.html
  3. https://www.rankred.com/new-programming-languages-to-learn/
  4. kostya/benchmarks . GitHub. Data accesului: 18 februarie 2016. Arhivat din original pe 4 martie 2017.
  5. kostya/crystal-benchmarks-game . GitHub. Preluat la 18 februarie 2016. Arhivat din original la 11 iunie 2018.
  6. smarr/suntem-încă-ipeși . GitHub. Data accesului: 18 februarie 2016.

Literatură

  • Simon St. Laurent, Ivo Balbaert. Crystal de programare: creați aplicații de înaltă performanță, sigure și simultane. - Ed. I. - Raft pragmatic, 2019. - 246 p. — ISBN 1680502867 . — ISBN 978-1680502862 .

Link -uri