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.
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.
eller i objektorienteret stil:
klasse Greeter def initialize ( @name : String ) end def hilsen "Hej #{ @navn } !" ende ende g = Greeter . ny ( "verden" ) sætter g . salutDen 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 . LytFø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 SymbolKanaler ( 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