Kristály | |
---|---|
Nyelvóra | programozási nyelv és objektumorientált programozási nyelv |
Megjelent | 2014 [2] |
Fejlesztő | Arie Borenveig [d] |
Fájlkiterjesztés _ | .cr |
Kiadás |
|
Befolyásolt | Ruby , C , C# , Python [3] , Go és Rust |
Engedély | Apache licenc |
Weboldal | crystal-lang.org |
Felület | IA-32 , Intel Architecture és x86_64 |
OS | macOS , Linux és FreeBSD |
A Crystal egy általános célú objektum-orientált programozási nyelv, amelyet Arie Borenzweig, Juan Weinerman és Brian Cardiff tervezett és fejlesztettek. Egy több mint 300 fejlesztőből álló közösség fejlesztette. Ruby -szerű szintaxisa van , de a Ruby-val ellentétben ez egy lefordított és statikusan tipizált nyelv, amely típuskövetkeztetést használ (és ezért a típusok kifejezett deklarációja, mint a Ruby esetében, nem szükséges). Ingyenes és nyílt forráskódú szoftverként terjesztve az Apache licenc 2.0 verziója alatt .
A Crystal programokat LLVM segítségével fordítják le , miközben elveszítik a Rubyban található dinamikus szempontok egy részét, de a programok hatékonysága jóval magasabb, teljesítményük pedig a C [4] [5] [6] programjaihoz hasonlítható . A nyelv a Boehm szemétgyűjtőt használja , makrórendszerrel rendelkezik , támogatja az általános programozást , a metódusokat és az operátor túlterhelését . Egy interfész a bináris könyvtárakból való függvényhíváshoz C és C++ nyelven, miközben az ilyen könyvtárakkal való interakció szintaxisa a lehető legnagyobb mértékben leegyszerűsödött, ami megkönnyíti a burkolókönyvtárak létrehozását, ahelyett, hogy az összes kódot a semmiből írnák ki. A Crystal támogatja az assembler betéteket és a mutatókkal való közvetlen hozzáférést is - ez nem biztonságos gyakorlat, de nem tilos, mivel különösen a külső könyvtárak funkcióival kell együttműködni.
Az új programozási nyelv kidolgozása 2011 júniusában kezdődött Manasnál. A fejlesztők egy olyan nyelv létrehozását tűzték ki célul, amely a Ruby eleganciájával és termelékenységével, valamint a lefordított programozási nyelvek sebességével, hatékonyságával és típusbiztonságával rendelkezik. Kezdetben a fejlesztés neve Joy volt, de később átkeresztelték Crystalra.
A nyelv első hivatalos kiadására 2014 júniusában került sor. A nyelvi fordító eredetileg Ruby nyelven íródott, amíg 2013-ban át nem írták Crystalban. 2016 júliusában bekerült a TIOBE indexbe . 2021. március 22-én a fejlesztők kiadták a nyelv első stabil verzióját - az 1.0.0-t.
vagy objektum-orientált stílusban:
class Greeter def inicializálja ( @name : String ) end def tisztelgés "Hello #{ @name } !" vége vége g = Üdvözlő . új ( "világ " ) g . üdvözölA legegyszerűbb HTTP szerver:
"http/server" szükséges szerver = HTTP :: Szerver . új do | összefüggés | összefüggésben . válasz . content_type = "szöveg/sima" kontextus . válasz . print "Hello world!" vége szerver . A bind_tcp 8080 a "Listening on http://127.0.0.1:8080" szervert helyezi el . hallgatA következő kód különféle adattípusok elemeiből álló gyűjteményt (tömböt) deklarál; A Crystal ebben az esetben automatikusan létrehoz egy uniótípust a tömbelemek egyedi adattípusaival:
kívánt_dolgok = [ : unicorns , "pillangók" , 1_000_000 ] p typeof ( Kívánt_dolgok . először ) # typeof visszaadja az adattípusokat fordítási időben, ebben az esetben (Int32 | String | Symbol) p Kívánt_dolgok . először . class # class metódus futásidejű adattípust ad vissza, ebben az esetben a SymboltA csatornák ( Channel) a következő paranccsal létrehozott szálak közötti kommunikációra szolgálnak spawn:
csatorna = Csatorna ( Int32 ) . új A spawn do az "Az első üzenet elküldése előtt" csatornát helyezi el . send ( 1 ) "A második üzenet elküldése után" csatornát helyezi el . küld ( 2 ) vége "Mielőtt az első szerzés " értéke = csatorna . fogadás értéke # => 1 " Befor the second get" értéke = csatorna . fogadás értéke # => 2