زیگ (زبان برنامهنویسی)
زیگ (به انگلیسی: Zig)، یک زبان برنامهنویسی سیستمی دستوری، همه منظوره، سیستم نوع و کامپایل شده است که توسط اندریو کلی طراحی شدهاست. این زبان برای «نیرومندی، بهینه و نگهداری» با پشتیبانی از زمان کامپایل همگانی و پژواکی و مدیریت حافظه طراحی شدهاست. هدف اصلی این زبان بهبود زبان سی است، در حالی که از زبان راست الهام میگیرد. زبان برنامهنویسی زیگ دارای ویژگیهای بسیاری برای برنامهنویسی سطح پایین است، به ویژه: ساختارهای بستهبندی شده (ساختارهای بدون بالشتک بین فیلدها)، اعداد صحیح با عرض دلخواه و انواع اشارهگرهای چندگانه.
پارادایمهای برنامهنویسی | مولتی پارادایم: دستوری، همزمان، رویهای، برنامهنویسی تابعی |
---|---|
طراحی شده توسط | اندریو کلی |
ظهوریافته در | ۸ فوریه ۲۰۱۶ |
انتشار آزمایشی | 0.10.1
۱۹ ژانویه ۲۰۲۳ |
شیوه نوعدهی | سیستم نوع، strong, inferred, structural, همگانی |
سیستمعامل | نرمافزار چندسکویی |
پروانه | پروانه امآیتی |
.zig, .zir | |
وبگاه | |
متأثر از | |
سی، سی++, الالویام، گو، راست، جاوااسکریپت |
کامپایلر مرحله ۱ در زیگ و C++ نوشته شده و با استفاده از LLVM 11 به عنوان یک back-end, از بسیاری از اهداف اصلی خود پشتیبانی میکند. کامپایلر تحت مجوز MIT منبع باز است. کامپایلر زیگ توانایی کامپایل سی و سیپلاسپلاس را مشابه کامپایلر کلنگ با دستورهای "zig cc" و "zig c++" نشان میدهد، سربرگهای بسیاری از جمله libc و libcxx را برای پلتفرمهای مختلف فراهم میکند و به دستورات فرعی cc و c++ در زیگ اجازه میدهد به عنوان کامپایلر دوگانه خارج از جعبه عمل کند.
توسعه زیگ توسط بنیاد نرمافزار، یک شرکت غیرانتفاعی با ریاست اندرو کلی تأمین میشود که کمکهای مالی را دریافت میکند و چندین کارمند تمام وقت استخدام میکند.
مثالها
برنامهٔ Hello World
const std = @import("std");
pub fn main() !void {
const stdout = std.io.getStdOut().writer();
try stdout.print("Hello, {}!\n", .{"world"});
}
لیست پیوندی عمومی
pub fn main() void {
var node = LinkedList(i32).Node {
.prev = null,
.next = null,
.data = 1234,
};
var list = LinkedList(i32) {
.first = &node,
.last = &node,
.len = 1,
};
}
fn LinkedList(comptime T: type) type {
return struct {
pub const Node = struct {
prev: ?*Node,
next: ?*Node,
data: T,
};
first: ?*Node,
last: ?*Node,
len: usize,
};
}
جستارهای وابسته
منابع
- ↑ Kelley, Andrew. "Introduction to the Zig Programming Language". andrewkelley.me. Retrieved 8 November 2020.
- ↑ https://ziglang.org/download/#release-0.10.1.
- ↑ "Zig has all the elegant simplicity of C, minus all the ways to shoot yourself in the foot". JAXenter (به انگلیسی). 2017-10-31. Retrieved 2020-02-11.
- ↑ "Tired of C? New programming language Zig aims to be more pragmatic and readable" (به انگلیسی). 2017-10-19. Retrieved 2020-04-22.
- ↑ Yegulalp, Serdar (2016-08-29). "New challenger joins Rust to topple C language". InfoWorld (به انگلیسی). Retrieved 2020-02-11.
- ↑ "Zig language and C". سینا (شرکت). 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 (به انگلیسی). 2016-08-29. Retrieved 2020-02-11.
- ↑ "The Zig Programming Language". ziglang.org. Retrieved 2020-02-11.
- ↑ Company, Sudo Null. "Sudo Null - IT News for you". SudoNull (به انگلیسی). Retrieved 2020-02-11.
- ↑ Kelley, Andrew. "Unsafe Zig is Safer Than Unsafe Rust". andrewkelley.me. 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 (به انگلیسی). 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 (به انگلیسی). 2020-04-14. Retrieved 2020-04-19.
- ↑ "A Reply to _The Road to Zig 1.0_". www.gingerbill.org (به انگلیسی). 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 (به انگلیسی). 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 (به انگلیسی). Retrieved 2021-05-28.
- ↑ "https://twitter.com/kubkon/status/1377146321136537602". Twitter (به انگلیسی). 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.