Crystal (programozási nyelv)

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.

Történelem

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.

Példák

Helló Világ! :

felteszi a "Hello World!"

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öl

A 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 . hallgat

A 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 Symbolt

A 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

Jegyzetek

  1. Megjelent a Crystal 1.6.0! – 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. Hozzáférés időpontja: 2016. február 18. Az eredetiből archiválva : 2017. március 4.
  5. kostya/crystal-benchmarks-game . GitHub. Letöltve: 2016. február 18. Az eredetiből archiválva : 2018. június 11.
  6. smarr/are-we-fast-még . GitHub. Hozzáférés időpontja: 2016. február 18.

Irodalom

  • Simon St. Laurent, Ivo Balbaert. Programozási kristály: Hozzon létre nagy teljesítményű, biztonságos, egyidejű alkalmazásokat. - 1. kiadás - Pragmatikus Könyvespolc, 2019. - 246 p. — ISBN 1680502867 . — ISBN 978-1680502862 .

Linkek