Vx - 하나의 언어로 모든 칩을
요약
본 글은 새로운 프로그래밍 언어 'Vx'를 분석하며, 이 언어가 다양한 종류의 칩에서 정확하고 빠르게 동작하는 작업에는 적합하지만, 탐색적 개발에는 한계가 있음을 지적합니다. 저수준 언어와 하드웨어 발전 추이를 비교하며, 컴파일러 최적화에 의존하지 않고 SIMD를 지원하는 언어의 중요성을 강조합니다.
핵심 포인트
- Vx는 특정 작업(정확하고 빠른 동작)에는 적합하나 탐색적 개발엔 부적합함.
- 하드웨어 발전은 단일 클럭 속도에서 데이터 처리량 및 멀티스레딩으로 초점을 옮겼음.
- 새로운 언어 설계는 추상 기계를 타입 시스템으로 옮기는 접근을 보임.
- LLM의 도움을 받아 여러 최신 언어의 장점을 통합하는 시도가 이루어지고 있음.
잘 맞는 용도와 맞지 않는 용도를 명확히 구분해 줘서 정말 반가움. Vx는 열 종류의 칩에서 정확하고 빠르게 돌아가야 하는 작업에는 적합하지만, 아직 무엇을 만들지 탐색하는 작업에는 적합하지 않다고 함. 모든 사용자와 모든 용도를 만족시킨다고 홍보하는 도구가 너무 많고, 그런 홍보는 누구에게도 도움이 되지 않음.
「C는 저수준 언어가 아님: 컴퓨터는 빠른 PDP-11이 아님」 같은 비판이 떠오름. 우리가 쓰는 저수준 언어의 추상 기계는 1970년대 이후 크게 바뀌지 않았지만, 그 아래의 실제 하드웨어는 엄청나게 정교해졌음. 컴파일러 내장 함수나 최적화기에 의존하지 않고 SIMD를 간단히 지원하는 언어가 얼마나 되는지만 봐도 알 수 있음.
이 분야가 흥미로워서 이런 발상을 바탕으로 실험적인 내장형 DSL을 만들어 본 적도 있음. Vx 문서를 훑어보니 유연성을 높이기 위해 추상 기계의 일부를 타입 시스템으로 옮기는 접근으로 보임.
PDP-11 이후 나온 CPU 대부분을 비롯해 많은 CPU는 지원할 언어, 흔히 C/C++에 맞춰 설계되었고 후기 x86이 그 예임. 비정렬 메모리를 사용하는 SIMD를 위한 AVX 도입, 포인터로 메모리 경계를 넘나드는 루프를 펼칠 때 불이익을 피하도록 하는 적재·저장 관련 단서 등이 해당함. C++ 자체도 함께 발전했음.
디코딩 속도를 높이기 위한 RISC에서 CISC로의 큰 전환에 이어 벡터화와 가상화로 이동했다는 점도 중요함. 처음에는 단일 스레드 클럭 속도를 높이려 했지만, 2004년경 전력 한계에 부딪힌 뒤에는 데이터 처리량과 멀티스레딩을 늘리는 방향으로 바뀌었으며 코드 변경도 필요했음. 이후에는 여러 가상 머신을 지원하는 방향으로 이어짐.
“최고의 프로그래밍 언어를 만들고 싶으니 Rust, Mojo, Zig에서 사람들이 좋아하는 점을 모아 명세를 만들어 줘! 미래도 고려해야 하니 GPU에서도 돌아가게 해 줘. 너무 LLM이 쓴 것처럼 보이지 않게 하고, 실수하지 마.”라고 주문한 듯함. 일단 행운을 빌겠음.
점차 LLM이 이런 작업을 아주 잘하며, 충분히 생산적으로 활용할 수 있다는 쪽으로 생각이 바뀌고 있음. 어쩌면 인간과 LLM의 최적 협업 방식이라고 부를 만함.
Vx라는 이름의 유래가 궁금함. 관련은 없어 보이지만 VxWorks 운영체제와 너무 비슷해서 신경 쓰임.
“하나의 언어로 모든 칩을 지원”한다고 하는데, 정말 모든 칩일까? 포인터 같은 개념을 쓰는 걸 보면 아날로그 칩은 대상으로 삼을 수 없을 듯함.
왜 Vlang 같은 느낌이 드는 걸까?
프로젝트 첫 페이지는 무엇보다 중요함. 그것조차 직접 쓸 생각이 없다면 나머지 프로젝트에도 큰 기대를 하기 어려움.
설명 자체도 앞뒤가 맞지 않음. Apple의 통합 메모리에서는 전송이 거의 아무 작업도 하지 않는 코드로 컴파일되지만, “데이터 지역성은 바이너리를 프로파일링하는 대신 소스를 읽어서 증명할 수 있어야 하므로” 전송을 명시한다고 함. 여기서 프로파일링이 왜 등장하는 걸까? 다른 곳에서는 충돌 여부를 다루는데, 프로파일링은 성능에 관한 것임.
“대부분의 언어는 가속기를 인프라로 취급하고, 수학 연산을 쓰면 거대하고 불투명한 런타임이 전달 방식을 결정하지만, Vx는 이를 언어의 의미 체계로 취급한다”는 설명도 이해하기 어려움. Vx는 가속기를 인프라로 취급하지 않는다는 건지, 거대하고 불투명한 런타임이 없다는 건지, 수학 연산을 의미 체계로 취급한다는 건지 불분명함.
모바일에서도 제대로 표시되지 않는 듯함. 나도 사이드 프로젝트를 바이브 코딩할 때 겪었는데, 겉보기에는 세련됐지만 모바일에 맞추는 데만 여러 차례 프롬프트를 넣고 스크린샷도 한두 장 이상 올려야 했음.
링크를 열지 않아도 제목만으로 AI가 양산한 저질 콘텐츠라는 걸 알 수 있는 부류임.
이 언어를 둘러싼 홍보는 많이 봤지만, Mojo보다 나은 핵심 장점이 무엇인지는 아직 찾지 못했음.
열 종류의 칩에서 정확하고 빠르게 돌아가야 하는 작업에 적합하고, 아직 탐색 중인 작업에는 부적합하다면 AI가 사용하기에 좋은 언어처럼 들림.
AI 자동 생성 콘텐츠
본 콘텐츠는 RSS: GeekNews (한국어)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기