{{위키데이터 속성 추적}}
{{Infobox programming language
| name = Zig
| logo = Zig logo 2020.svg
| paradigms = 다중 패러다임: 명령형, 병행, 절차적, 함수형
| designer = 앤드루 켈리(Andrew Kelley)
| released = {{시작 날짜와 나이|2016|02|08|df=yes}}<ref>{{웹 인용|last1=Kelley |first1=Andrew |title=Introduction to the Zig Programming Language |url=https://andrewkelley.me/post/intro-to-zig.html |website=andrewkelley.me |access-date=8 November 2020}}</ref>
| latest release version = 
| latest release date = 
| latest preview version = {{wikidata|property|reference|edit|Q51885456|P348}}
| latest preview date = {{시작 날짜와 나이|{{wikidata|qualifier|Q51885456|P348|P577}}}}
| typing = 정적, 스트롱, 추론, 구조, 제네릭
| platform = [[x86-64]], [[ARM 아키텍처|ARM]], [[MIPS 아키텍처|MIPS]], [[IA-32]], [[웹어셈블리]], [[RISC-V]], [[SPARC]]
| operating system = [[크로스 플랫폼]]
| license = [[MIT 라이선스]]
| file ext = .zig, .zir
| website = {{URL|//ziglang.org/}}
| influenced by = C, C++, LVVM IR, Go, 러스트, 자바스크립트
}}

'''Zig'''(지그)는 [[명령형 프로그래밍|명령형]], [[범용 프로그래밍 언어|범용 목적]]의 정적 [[자료형 체계]], [[컴파일 언어|컴파일]] [[시스템 프로그래밍 언어]]이며 앤드루 켈리가 설계했다.<ref>{{웹 인용|date=2017-10-31 |title=Zig has all the elegant simplicity of C, minus all the ways to shoot yourself in the foot |url=https://jaxenter.com/zig-language-kelley-interview-138517.html |archive-url=https://web.archive.org/web/20171101231710/https://jaxenter.com/zig-language-kelley-interview-138517.html |archive-date=2017-11-01 |access-date=2020-02-11 |website=JAXenter |language=en-US}}</ref><ref>{{웹 인용|date=2017-10-19 |title=Tired of C? New programming language Zig aims to be more pragmatic and readable |url=https://jaxenter.com/replace-c-zig-language-138242.html |archive-url=https://web.archive.org/web/20201001005039/https://jaxenter.com/replace-c-zig-language-138242.html |archive-date=2020-10-01 |access-date=2020-04-22 |language=en-US}}</ref> 이 언어는 내구성, 최적성, 유지보수성을 위해 설계되어 있으며<ref name=RustInfluence>{{웹 인용|url=https://www.infoworld.com/article/3113083/new-challenger-joins-rust-to-upend-c-language.html|title=New challenger joins Rust to topple C language|last=Yegulalp|first=Serdar|date=2016-08-29|website=InfoWorld|language=en|access-date=2020-02-11}}</ref><ref>{{웹 인용|url=https://tech.sina.com.cn/digi/2020-07-12/doc-iirczymm1886067.shtml|title=Zig language and C|date=2020-07-12|website=[[Sina Corp]]|access-date=2020-08-12}}</ref> [[컴파일 타임]], [[제네릭 프로그래밍|제네릭스]], [[반영 (컴퓨터 과학)|반영]], 평가, [[크로스 컴파일러|크로스 컴파일]], 수동 메모리 관리를 지원한다.<ref>{{웹 인용|url=https://ziglang.org/|title=The Zig Programming Language|website=ziglang.org|access-date=2020-02-11}}</ref> 이 언어의 주요 목표는 [[C (프로그래밍 언어)|C 언어]] 기반에서 개선점을 찾으면서<ref name=RustInfluence>{{웹 인용|url=https://www.infoworld.com/article/3113083/new-challenger-joins-rust-to-upend-c-language.html|title=New challenger joins Rust to topple C language|last=Yegulalp|first=Serdar|date=2016-08-29|website=InfoWorld|language=en|access-date=2020-02-11}}</ref><ref>{{웹 인용|url=https://tech.sina.com.cn/digi/2020-07-12/doc-iirczymm1886067.shtml|title=Zig language and C|date=2020-07-12|website=[[Sina Corp]]|access-date=2020-08-12}}</ref> [[러스트 (프로그래밍 언어)|러스트]] 등의 장점을 취하는 것이다.<ref>{{웹 인용|url=https://sudonull.com/post/3683-Zig-programming-language|title=Sudo Null - IT News for you|last=Company|first=Sudo Null|website=SudoNull|language=en|access-date=2020-02-11}}</ref><ref name=RustInfluence/> 지그는 저급 프로그래밍, 특히 필드간 패딩이 없는 구조체(packed struct), 무작위 폭 정수,<ref>{{웹 인용|url=https://www.theregister.co.uk/2020/04/24/llvm_project_adds_support_for/|title=Keen to go _ExtInt? LLVM Clang compiler adds support for custom width integers|last=Tim Anderson 24 Apr 2020 at 09:50|website=www.theregister.co.uk|language=en|access-date=2020-04-24}}</ref> 다중 포인터형<ref>{{웹 인용|url=https://ziglang.org/documentation/master/|title=Documentation - The Zig Programming Language|website=ziglang.org|access-date=2020-04-24}}</ref> 등 수많은 기능을 보유하고 있다.

[[부트스트랩 (컴파일러)|스테이지 1]] 컴파일러는 지그와 C++로 개발되어 있으며 [[LLVM]] 13을 백엔드로 사용하며 네이티브 타겟 중 다수를 지원한다. 컴파일러는 [[MIT 허가서]]로 배포되는 [[오픈 소스]]이다.

== 예시 ==
===Hello World===
<syntaxhighlight lang="zig">
const std = @import("std");

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();
    try stdout.print("Hello, {s}!\n", .{"world"});
}
</syntaxhighlight>

=== 제네릭 링크드 리스트 ===
<syntaxhighlight lang="zig">
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,
    };
}
</syntaxhighlight>

== 같이 보기 ==
* [[C (프로그래밍 언어)]]
* [[C++]]
* [[님 (프로그래밍 언어)]]
* [[러스트 (프로그래밍 언어)]]
* [[D (프로그래밍 언어)]]

== 각주 ==
{{각주}}

== 외부 링크 ==
*{{공식 웹사이트}}
* [https://github.com/ziglang/zig Zig on GitHub]
* [https://www.youtube.com/watch?v=Z4oYSByyRak Movie: Introducing Zig]
* [https://www.youtube.com/watch?v=Gv2I7qTux7g Movie: The Road to 1.0]
* [https://discu.eu/weekly/zig/ Zig Weekly]

{{프로그래밍 언어}}
{{전거 통제}}

[[분류:프로그래밍 언어]]
[[분류:크로스 플랫폼 자유 소프트웨어]]
[[분류:크로스 플랫폼 소프트웨어]]
[[분류:임베디드 시스템]]
[[분류:자유 컴파일러와 인터프리터]]
[[분류:자유 라이브러리]]
[[분류:정적 타입 프로그래밍 언어]]
[[분류:MIT 라이선스 소프트웨어]]
[[분류:시스템 프로그래밍 언어]]
[[분류:C 컴파일러]]