▲GN⁺ 2025-01-08 | parent | ★ favorite | on: Zig의 컴타임 성능 뛰어난 평가(scottredig.com)Hacker News 의견 컴파일 타임 프로그래밍의 문제점에 대한 깊이 있는 논의가 필요함. 스테이지드 프로그래밍은 새로운 것이 아니며, 여러 문제와 설계 상의 절충점이 존재함 제네릭 구현 방식이 파라메트릭성을 깨뜨림. 파라메트릭성은 함수의 타입 서명만으로 함수에 대해 추론할 수 있는 능력을 의미함 Zig가 재귀적 제네릭 타입을 어떻게 처리하는지 명확하지 않음. 일반적으로 타입 시스템은 재귀를 허용하기 위해 게으름을 사용함 타입 체크와 컴파일 타임 계산이 상호작용하는 방식이 흥미로움. Zig가 어떤 선택을 했는지 명확하지 않음 컴파일 타임 코드가 코드 생성 가능성을 제시하지만, 위생에 대한 논의는 없음 D 언어는 17년 전부터 이러한 기능을 가졌으며, 다른 언어로 꾸준히 기능이 이동하고 있음 D는 키워드를 사용하지 않고, "const expression"으로 컴파일 타임 실행을 유도함 비상수 전역 변수, I/O 및 시스템 함수 호출을 피함으로써 많은 함수가 컴파일 타임에 실행 가능함 Zig는 흥미롭지만, 연산자 오버로딩이 없어서 아쉬움. 연산자 오버로딩에 대한 반대 의견을 잘 이해하지 못함 연산자 오버로딩이 실제로 어떤 일이 일어나는지 알 수 없다는 주장은 설득력이 없음 컴파일 타임에 구조체를 생성할 수 있는 패턴이 흥미로움 신경망을 구현할 때 JSON 파일을 생성하고, 이를 읽어 구조체를 생성하는 실험을 진행함 이론적으로 컴파일러가 신경망을 직접 최적화할 수 있음 'fieldNames'는 Nim의 'fieldPairs'와 유사하며, 매우 유용한 구조임 Rust에서는 이러한 기능이 부족함. Rust의 매크로는 비타입 매크로로 제한되어 있음 Zig의 컴파일 타임 기능에 놀랐다면, Nim도 살펴볼 가치가 있음. Nim은 컴파일 타임 코드 평가와 전체 AST 매크로 시스템을 가짐 Zig는 오디오 플러그인 개발에 적합할 수 있지만, C++의 생태계(JUCE 등)가 부족함 Zig는 언어로서 매우 좋으며, 목적에 맞게 사용되는 것이 중요함 Zig의 메타 프로그래밍 기능과 Rust의 방대한 생태계, 커뮤니티, 안전성을 결합한 무언가가 있기를 바람 Zig의 언어 디자인을 선호하지만, 유용하거나 신뢰할 수 있는 것을 작성하기에는 아직 어려움
Hacker News 의견
컴파일 타임 프로그래밍의 문제점에 대한 깊이 있는 논의가 필요함. 스테이지드 프로그래밍은 새로운 것이 아니며, 여러 문제와 설계 상의 절충점이 존재함
D 언어는 17년 전부터 이러한 기능을 가졌으며, 다른 언어로 꾸준히 기능이 이동하고 있음
Zig는 흥미롭지만, 연산자 오버로딩이 없어서 아쉬움. 연산자 오버로딩에 대한 반대 의견을 잘 이해하지 못함
컴파일 타임에 구조체를 생성할 수 있는 패턴이 흥미로움
'fieldNames'는 Nim의 'fieldPairs'와 유사하며, 매우 유용한 구조임
Zig의 컴파일 타임 기능에 놀랐다면, Nim도 살펴볼 가치가 있음. Nim은 컴파일 타임 코드 평가와 전체 AST 매크로 시스템을 가짐
Zig는 오디오 플러그인 개발에 적합할 수 있지만, C++의 생태계(JUCE 등)가 부족함
Zig는 언어로서 매우 좋으며, 목적에 맞게 사용되는 것이 중요함
Zig의 메타 프로그래밍 기능과 Rust의 방대한 생태계, 커뮤니티, 안전성을 결합한 무언가가 있기를 바람