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.
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.
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 . salutCel 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” . ascultaUrmă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 SymbolCanalele ( 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