ज़िग (प्रोग्रामिंग लैंग्वेज)
Paradigms | Multi-paradigm: imperative, concurrent, procedural, functional |
---|---|
द्वारा डिज़ाइन किया गया | Andrew Kelley |
पहली प्रस्तुति | 8 February 2016[1] |
Preview release | Script error: The module returned a nil value. It is supposed to return an export table.
/ Script error: The module returned a nil value. It is supposed to return an export table. |
ज़िग एक अनिवार्य, सामान्य-उद्देश्य स्थिर रूप से टाइप की गई, संकलित प्रणाली प्रोग्रामिंग भाषा है,जिसे एंड्रयू केली द्वारा प्रारूपित किया गया है। [2][3] भाषा को मजबूती, इष्टतमता और रखरखाव के लिए प्रारूपित किया गया है,[4][5] संकलन सामान्य-समय प्रतिबिंब (कंप्यूटर प्रोग्रामिंग) और मूल्यांकन, क्रॉस संकलन, और मैनुअल मेमोरी प्रबंधन का समर्थन करता है,[6] भाषा का एक प्रमुख लक्ष्य सी (प्रोग्रामिंग भाषा) में सुधार करना है,[7][8] दूसरों के बीच जंग से प्रेरणा लेते हुए जिग में निम्न-स्तरीय प्रोग्रामिंग के लिए कई विशेषताएं हैं, विशेष रूप से पैक्ड स्ट्रक्चर्स (फ़ील्ड के बीच पैडिंग के बिना स्ट्रक्चर्स), मनमाना-चौड़ाई पूर्णांक[9] और कई सूचक प्रकार।[10]
ज़िग केवल एक नई भाषा नहीं है। इसमें C/C++ कंपाइलर भी शामिल है, और जिग का उपयोग किसी एक या दोनों भाषाओं के साथ किया जा सकता है।
संस्करण 0.10 के बाद से (नया डिफ़ॉल्ट) Zig कंपाइलर Zig में लिखा गया है, यानी, यह एक सेल्फ-होस्टिंग कंपाइलर है, और यह उस रिलीज़ की एक प्रमुख नई विशेषता है (पुरानी लीगेसी बूटस्ट्रैपिंग (संकलक)कंपाइलर) कंपाइलर, C ++ में लिखी गई है) है अभी भी एक विकल्प है लेकिन 0.11 में नहीं होगा)। डिफ़ॉल्ट बैकएंड (यानी ऑप्टिमाइज़र) अभी भी एलएलवीएम है (अब संस्करण 15, लीगेसी संस्करण 13 का उपयोग करता है), और एलएलवीएम सी ++ में लिखा गया है। एलएलवीएम के साथ ज़िग (यानी कंपाइलर, इससे उत्पन्न कोड नहीं) 169 एमआईबी है, बनाम एलएलवीएम 4.4 एमआईबी के बिना। संकलन करते समय नए Zig कंपाइलर के साथ बहुत कम मेमोरी का उपयोग किया जाता है (पुराना, अब लीगेसी, कंपाइलर 3.5x अधिक मेमोरी का उपयोग करता है), और यह थोड़ा तेज संकलित करता है। तेज़ निष्पादन योग्य कोड आमतौर पर नए कंपाइलर के साथ अनुपालन किया जाता है (अर्थात इसकी एलएलवीएम कोड जनरेशन बेहतर है), और यह कई बग्स को ठीक करता है, लेकिन संस्करण 0.10 में पुराने लीगेसी कंपाइलर के लिए भी सुधार हैं। स्व-होस्ट किए गए लिंकर को स्वयं-होस्ट किए गए कंपाइलर के साथ कसकर जोड़ा जाता है। नया संस्करण एएमडी जीपीयू के लिए कुछ प्रयोगात्मक (टियर -3) समर्थन भी जोड़ता है (एनवीडिया जीपीयू और प्लेस्टेशन 4 और 5 के लिए कुछ कम समर्थन भी है)).
पुराने बूटस्ट्रैपिंग (कंपाइलर) (स्टेज1) कंपाइलर को एलएलवीएम 13 का उपयोग करते हुए ज़िग और सी++ में लिखा गया है[11] बैक-एंड के रूप में,[12][13] अपने कई मूल लक्ष्यों का समर्थन करना।[14] कंपाइलर एमआईटी लाइसेंस के तहत मुफ़्त और ओपन-सोर्स सॉफ़्टवेयर जारी किया गया है।[15] Zig कंपाइलर C और C ++ को समान रूप से Clang को कमांड zig cc और zig c ++ के साथ संकलित करने की क्षमता को उजागर करता है,[16] सी मानक पुस्तकालय और सी ++ मानक पुस्तकालय सहित कई अलग-अलग प्लेटफार्मों के लिए कई शीर्षलेख प्रदान करना, ज़िग के सीसी और सी ++ उप-आदेशों को बॉक्स के बाहर क्रॉस कंपाइलर के रूप में कार्य करने की इजाजत देता है।[17][18] साथ ही ऑपरेटिंग सिस्टम (ज्यादातर डेस्कटॉप वाले) आधिकारिक तौर पर समर्थित (और प्रलेखित), (न्यूनतम) एप्लिकेशन एंड्रॉइड के लिए बनाए जा सकते हैं और किए गए हैं (एंड्रॉइड एनडीके के साथ, और आईओएस के लिए प्रोग्रामिंग भी संभव है)।
Zig का अपना आधिकारिक पैकेज प्रबंधक नहीं है (गैर-आधिकारिक वाले मौजूद हैं), लेकिन एक मानक के पास 0.12 के लिए एक मील का पत्थर है।
Zig विकास को Zig Software Foundation (ZSF) द्वारा वित्त पोषित किया जाता है, जो एक गैर-लाभकारी निगम है जिसके अध्यक्ष एंड्रयू केली हैं, जो दान लेता है और कई पूर्णकालिक कर्मचारियों को काम पर रखता है।[19][20][21]
उदाहरण
हैलो वर्ल्ड
<वाक्यविन्यास प्रकाश लैंग = ज़िग> const एसटीडी = @import (एसटीडी);
पब एफएन मुख्य ()! शून्य {
const stdout = std.io.getStdOut().लेखक (); कोशिश करें stdout.print(Hello, {s}!\n, .{world});
} </वाक्यविन्यास हाइलाइट>
सामान्य लिंक्ड सूची
<वाक्यविन्यास प्रकाश लैंग = ज़िग> पब fn मुख्य () शून्य {
var नोड = लिंक्डलिस्ट (i32)। नोड { पिछला = अशक्त, अगला = अशक्त, डेटा = 1234, };
var सूची = लिंक्डलिस्ट (i32) { पहले = और नोड, अंतिम = और नोड, लेन = 1, };
}
एफएन लिंक्डलिस्ट (कंपटाइम टी: टाइप) टाइप {
वापसी संरचना { पब कास्ट नोड = संरचना { पिछला: ? * नोड, अगला: ? * नोड, डेटा: टी, };
पहला: ? * नोड, अंतिम: ? * नोड, लेन: उपयोग करें, };
} </वाक्यविन्यास हाइलाइट>
प्रोजेक्ट
- Bun एक जावास्क्रिप्ट और टाइपप्रति रनटाइम है जिसे सफारी (वेब ब्राउज़र) की JavaScriptCore आभासी मशीन का उपयोग करके Zig में लिखा गया है।
यह भी देखें
- सी (प्रोग्रामिंग भाषा)
- सी++
- निम (प्रोग्रामिंग भाषा)
- जंग (प्रोग्रामिंग भाषा)
- डी (प्रोग्रामिंग भाषा)
संदर्भ
- ↑ Kelley, Andrew. "Introduction to the Zig Programming Language". andrewkelley.me. Retrieved 8 November 2020.
- ↑ "Zig has all the elegant simplicity of C, minus all the ways to shoot yourself in the foot". JAXenter (in English). 2017-10-31. Archived from the original on 2017-11-01. Retrieved 2020-02-11.
- ↑ "Tired of C? New programming language Zig aims to be more pragmatic and readable" (in English). 2017-10-19. Archived from the original on 2020-10-01. Retrieved 2020-04-22.
- ↑ Yegulalp, Serdar (2016-08-29). "New challenger joins Rust to topple C language". InfoWorld (in English). Retrieved 2020-02-11.
- ↑ "Zig language and C". Sina Corp. 2020-07-12. Retrieved 2020-08-12.
- ↑ "The Zig Programming Language". ziglang.org. Retrieved 2020-02-11.
- ↑ "Mozilla's Observatory, the Zig programming language, and uSens' VR/AR SDK—SD Times news digest: Aug. 29, 2016". SD Times (in English). 2016-08-29. Retrieved 2020-02-11.
- ↑ "The Zig Programming Language". ziglang.org. Retrieved 2020-02-11.
- ↑ Tim Anderson 24 Apr 2020 at 09:50. "Keen to go _ExtInt? LLVM Clang compiler adds support for custom width integers". www.theregister.co.uk (in English). Retrieved 2020-04-24.
- ↑ "Documentation - The Zig Programming Language". ziglang.org. Retrieved 2020-04-24.
- ↑ "SD Times news digest: C++20 concepts in Visual Studio 2010 version 16.3, Bootstrap to drop IE support, and Zig 0.60 released". SD Times (in English). 2020-04-14. Retrieved 2020-04-19.
- ↑ "A Reply to _The Road to Zig 1.0_". www.gingerbill.org (in British English). 2019-05-13. Retrieved 2020-02-11.
- ↑ ziglang/zig, Zig Programming Language, 2020-02-11, retrieved 2020-02-11
- ↑ "The Zig Programming Language". ziglang.org. Retrieved 2020-02-11.
- ↑ "ziglang/zig". GitHub (in English). Retrieved 2020-02-11.
- ↑ "0.6.0 Release Notes · The Zig Programming Language". ziglang.org. Retrieved 2020-04-19.
- ↑ "'zig cc': a Powerful Drop-In Replacement for GCC/Clang - Andrew Kelley". andrewkelley.me. Retrieved 2021-05-28.
- ↑ "Zig Makes Go Cross Compilation Just Work". DEV Community (in English). Retrieved 2021-05-28.
- ↑ "Jakub Konka on Twitter". Twitter (in English). Retrieved 2021-05-28.
- ↑ "Announcing the Zig Software Foundation ⚡ Zig Programming Language". ziglang.org. Retrieved 2021-05-28.
- ↑ "Sponsor ZSF ⚡ Zig Programming Language". ziglang.org. Retrieved 2021-05-28.