Crystal (programmeringssprog)

Krystal
Sprog klasse programmeringssprog og objektorienteret programmeringssprog
Dukkede op i 2014 [2]
Udvikler Arie Borenveig [d]
Filtypenavn _ .cr
Frigøre
Blev påvirket Ruby , C , C# , Python [3] , Go og Rust
Licens Apache licens
Internet side crystal-lang.org
Platform IA-32 , Intel Architecture og x86_64
OS macOS , Linux og FreeBSD

Crystal  er et objektorienteret programmeringssprog til generelle formål designet og udviklet af Arie Borenzweig, Juan Weinerman og Brian Cardiff. Udviklet af et fællesskab på over 300 udviklere. Det har en Ruby -lignende syntaks, men i modsætning til Ruby er det et kompileret og statisk skrevet sprog, der bruger typeinferens (og derfor er en eksplicit erklæring af typer, som i Ruby, ikke nødvendig). Distribueret som gratis og open source-software under Apache-licensen version 2.0.

Krystalprogrammer kompileres ved hjælp af LLVM , mens de mister nogle af de dynamiske aspekter, der findes i Ruby, men effektiviteten af ​​programmerne er meget højere, og ydeevnen kan sammenlignes med programmer i C [4] [5] [6] . Sproget bruger Boehm garbage collector , har et makrosystem , understøtter generisk programmering , metode og operatøroverbelastning . En grænseflade til at kalde funktioner fra binære biblioteker i C og C++ er implementeret, mens syntaksen for at interagere med sådanne biblioteker er forenklet så meget som muligt, hvilket gør det nemt at lave wrapper-biblioteker frem for at skrive al koden fra bunden. Crystal understøtter også assembler-indsatser og direkte adgang med pointere  - dette betragtes som en usikker praksis, men ikke forbudt, da det især er nødvendigt at interagere med funktioner fra eksterne biblioteker.

Historie

Arbejdet med et nyt programmeringssprog blev startet i juni 2011 hos Manas. Udviklerne satte sig som mål at skabe et sprog med Rubys elegance og produktivitet og hastigheden, effektiviteten og typesikkerheden i kompilerede programmeringssprog. Oprindeligt hed udviklingen Joy, men blev senere omdøbt til Crystal.

Den første officielle udgivelse af sproget fandt sted i juni 2014. Sprogkompileren blev oprindeligt skrevet i Ruby, indtil den blev omskrevet i Crystal i 2013. I juli 2016 kom han ind i TIOBE-indekset . Den 22. marts 2021 udgav udviklerne den første stabile version af sproget - 1.0.0.

Eksempler

Hej Verden! :

sætter "Hej verden!"

eller i objektorienteret stil:

klasse Greeter def initialize ( @name : String ) end def hilsen "Hej #{ @navn } !" ende ende g = Greeter . ny ( "verden" ) sætter g . salut

Den enkleste HTTP-server:

kræver "http/server" server = HTTP :: Server . ny gør | kontekst | kontekst . svar . content_type = "tekst/almindelig" kontekst . svar . print "Hej verden!" ende server . bind_tcp 8080 sætter "Listening on http://127.0.0.1:8080" server . Lyt

Følgende kode erklærer en samling (array) bestående af elementer af forskellige datatyper; Crystal opretter i dette tilfælde automatisk en unionstype med de individuelle datatyper for array-elementerne:

ønskede_ting = [ :enhjørninger , "sommerfugle" , 1_000_000 ] p typeof ( ønskede_ting . først ) # typeof returnerer datatyperne på kompileringstidspunktet, i dette tilfælde (Int32 | Streng | Symbol) p ønskede_ting . først . klasse # klasse metode returnerer runtime datatype, i dette tilfælde Symbol

Kanaler ( Channel) bruges til kommunikation mellem fibre oprettet med kommandoen spawn:

kanal = Kanal ( Int32 ) . ny spawn do puts "Før den første besked sendes" kanal . send ( 1 ) sætter "Efter den anden besked er sendt" kanal . send ( 2 ) ende sætter "Før første gang" værdi = kanal . modtage sætter værdi # => 1 sætter "Før den anden get" værdi = kanal . modtage sætter værdi # => 2

Noter

  1. Crystal 1.6.0 er frigivet! – 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. Dato for adgang: 18. februar 2016. Arkiveret fra originalen 4. marts 2017.
  5. kostya/crystal-benchmarks-game . GitHub. Hentet 18. februar 2016. Arkiveret fra originalen 11. juni 2018.
  6. smarr/er-vi-faste-endnu . GitHub. Dato for adgang: 18. februar 2016.

Litteratur

  • Simon St. Laurent, Ivo Balbaert. Programmering af krystal: Skab højtydende, sikre, samtidige apps. - 1. udg. - Pragmatisk bogreol, 2019. - 246 s. — ISBN 1680502867 . — ISBN 978-1680502862 .

Links