Zig 프로그래밍 언어 소개

Zig는 최적화 되었으며 견고하고 재사용 가능한 프로그램 및 관리를 위한 범용 프로그래밍 언어 입니다. C/C++ 언어를 대체하고자 개발되었으며 어떤 면에서는 C언어로 작성된 프로그램보다 빠른 코드를 생성한다고 합니다.

Zig언어는 다음의 특징이 있습니다.

간결한 언어

  • 숨겨진 흐름 제어 없음
  • 숨겨진 메모리 할당 없음
  • 전처리기와 매크로 없음

컴파일 타임

  • 컴파일 타임에 함수 호출 가능
  • 런타임 오버헤드 없이 모든 자료형을 값처럼 수정 가능
  • 컴파일 과정에서의 대상 아키텍처에 대한 에뮬레이트 가능

Zig를 통한 코드 관리

  • 크로스 컴파일 지원. C/C++ 컴파일러로도 사용 가능
  • zig build로 모든 플랫폼에 대한 일관성 있는 개발 환경 구축 가능
  • 링크 타임 최적화(LTO)로 C/C++ 프로젝트에 Zig 컴파일 단위 추가 가능

Zig으로 개발된 대표적인 프로그램은 JavsScript 런타임인 Bun이 있습니다. DenoNode.js에 비해 월등히 빠른 것이 특징이며 npm 등을 대체합니다.

Zig언어는 코드 자체가 의미하는 바 대로 코딩할 수 있어서 C언어를 선호하는 분들이 접근하기 좋은 언어로 보입니다.

다음은 Zigg Zagg의 Zig언어 코드 예시 입니다.

const std = @import("std");

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();
    var i: usize = 1;
    while (i <= 16) : (i += 1) {
        if (i % 15 == 0) {
            try stdout.writeAll("ZiggZagg\n");
        } else if (i % 3 == 0) {
            try stdout.writeAll("Zigg\n");
        } else if (i % 5 == 0) {
            try stdout.writeAll("Zagg\n");
        } else {
            try stdout.print("{d}\n", .{i});
        }
    }
}

| 출력

 zig build-exe zag.zig
$ ./zag
1
2
Zigg
4
Zagg
Zigg
7
8
Zigg
Zagg
11
Zigg
13
14
ZiggZagg

윈도우에서는 winget을 통해 간단히 설치 가능합니다. (설치 과정이 오래 걸리는데 아마도 패키지를 설치 과정에서 컴파일 하는 듯 해 보입니다.)

winget install zig.zig

https://ziglang.org/ko/

3개의 좋아요