Zig (programmeringsspråk)

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 9 juni 2021; kontroller kräver 4 redigeringar .
Zig
Språkklass programmeringsspråk , imperativt programmeringsspråk , allmänt programmeringsspråk [d] , kompilerat programmeringsspråk , systemprogrammeringsspråk [d] , programmeringsspråk för flera paradigm , procedurspråk och funktionellt programmeringsspråk
Utförandetyp Sammanställt
Framträdde i 2015 [1]
Författare Andrew Kelley
Utvecklaren Andrew Kelley
Filtillägg _ .zig
Släpp 0.9.1 (14 februari 2022 ) ( 2022-02-14 )
Typ system statisk, strikt
Blivit påverkad C , C++ , Go , Rust och JavaScript
Licens MIT
Hemsida ziglang.org
 Mediafiler på Wikimedia Commons

Zig  är ett imperativt , statiskt skrivet , kompilerat , allmänt programmeringsspråk [2] [3] . Språket designades för att skapa mjukvara för " robusthet, optimalitet och underhållsbarhet " [4] [5] .  Språket stöder generisk programmering och kompileringstidsreflektion , korskompilering och manuell minneshantering [6] . Huvudmålet med språket är att konkurrera med (och bli bättre) C [7] [8] , samtidigt som man lånar några idéer från Rust [9] .

Språket har många funktioner för programmering på låg nivå , särskilt: packade strukturer (strukturer med nolljustering mellan fält), heltalstyper av godtycklig längd (till exempel: i7, i8, i63) [10] , flera typer av pekare [11] .

Kompilatorn är skriven på själva språket, såväl som i C++. LLVM 12 [12] används som en kompilatorbackend [13] [14] . Kompilatorn är licensierad under den fria MIT-licensen [14] . Kompilatorn har förmågan att kompilera C- och C++- program med hjälp av kommandona "zig cc" och "zig c++" [15] . Programmeringsspråket Nim stöder användningen av Zig-kompilatorn som C-kompilatorn.

Kodexempel

hej världen

const std = @import ( "std" ); pub fn main () ! void { const stdout = std . io . getStdOut (). författare (); prova stdout . print ( "Hej, {}! \n " , .{ "världen" }); }

Generaliserad länkad lista

fn LinkedList ( comptime T : type ) typ { return struct { pub const Node = struct { föregående : ?* Nod , nästa : ?* Nod , data : T _ }; först : ?* Nod , sista : ?* Nod , len : använda , }; } pub fn main () void { var node = LinkedList ( i32 ). nod { . föregående = null , . nästa = null , . data = 1234 , }; var list = LinkedList ( i32 ) { . första = & nod , . sista = & nod , . len = 1 , }; }

Anteckningar

  1. Kelley A. init - 2015.
  2. "Zig har all den eleganta enkelheten som C, minus alla sätt att skjuta sig själv i foten  "  ? . JAXenter (31 oktober 2017). Hämtad 20 september 2020. Arkiverad från originalet 25 november 2021.
  3. Trött på C?   Nytt programmeringsspråk Zig syftar till att bli mer pragmatiskt och läsbart ? . JAXenter (19 oktober 2017). Hämtad 20 september 2020. Arkiverad från originalet 25 november 2021.
  4. Serdar Yegulalp. Ny utmanare ansluter sig till Rust för att störta C-  språket . InfoWorld (29 augusti 2016). Hämtad 20 september 2020. Arkiverad från originalet 25 november 2021.
  5. IT之 . tech.sina.com.cn (12 juli 2020). Hämtad 20 september 2020. Arkiverad från originalet 25 november 2021.
  6. Zig-programmeringsspråket . ziglang.org . Hämtad 21 september 2020. Arkiverad från originalet 1 april 2022.
  7. Mozillas observatorium, Zig-programmeringsspråket och uSens VR/AR SDK—SD Times nyhetssammandrag: Aug. 29, 2016  (engelska)  ? . SD Times (29 augusti 2016). Hämtad 21 september 2020. Arkiverad från originalet 25 november 2021.
  8. Zig-programmeringsspråket . ziglang.org . Hämtad 21 september 2020. Arkiverad från originalet 1 april 2022.
  9. Osäker Zig är säkrare än osäkra rost - Andrew Kelley . andrewkelley.me . Hämtad 21 september 2020. Arkiverad från originalet 21 februari 2022.
  10. Sugen på att gå _ExtInt? LLVM Clang-kompilatorn lägger till stöd för  heltal med anpassad bredd . www.theregister.com . Hämtad 21 september 2020. Arkiverad från originalet 26 oktober 2020.
  11. Dokumentation - Zig-programmeringsspråket . ziglang.org . Hämtad 21 september 2020. Arkiverad från originalet 31 mars 2022.
  12. SD Times nyhetssammanfattning: C++20-koncept i Visual Studio 2010 version 16.3, Bootstrap för att släppa IE-stöd och Zig 0.60   släppt ? . SD Times (14 april 2020). Hämtad 21 september 2020. Arkiverad från originalet 25 november 2021.
  13. ↑ Ett svar på _Vägen till  Zig 1.0_  ? . www.gingerbill.org (13 maj 2019). Hämtad 21 september 2020. Arkiverad från originalet 7 september 2021.
  14. ↑ 1 2 ziglang/zig . — 2020-09-21. Arkiverad från originalet den 30 mars 2022.
  15. 0.6.0 Release Notes Zig-programmeringsspråket . ziglang.org . Hämtad 21 september 2020. Arkiverad från originalet 21 februari 2022.

Länkar