본문 바로가기

좋아하는 것_매직IT/96.IT 핫이슈

V언어 프로그래밍 리뷰(2022)를 소개합니다.

반응형

V언어 프로그래밍 리뷰(2022)를 소개합니다. (mawfig.github.io)

 

V언어관련 주요내용을 정리해보면 아래와 같습니다. 

V 프로그래밍 언어 리뷰
  • V언어가 나온 몇년이 지난 2022년에 V언어가 홍보했던 기능들을 직접 테스트하며 리뷰하는 글입니다.
  • 피쳐들의 평가를 미작동, 경고, 작동으로 나눠서 평가했으며. 아래는 그 평가 리스트의 평가 결과입니다. 평가를 위한 예제 코드와 평가에 대한 근거는 모두 본문에 있습니다.
  • 아래 리스트는 영어 공부하면서 번역한거라 사실 관계에 오류가 있을 수 있습니다. 참고 용도로만 사용해주세요.
  • 유지보수하기 좋은 간단한 언어.
    • 주관적인 주장임.
    • N/A
안전
  • 널 없음.
    • V언어는 널 포인터( V 레퍼런스 )를 컴파일러 에러나 경고 없이 만들 수 있음.
    • 미지원.
  • undefined value 없음.
    • 초기화하지 않은 메모리를 컴파일러 에러나 경고 없이 읽을 수 있음.
    • 미지원.
  • undefined behavior 없음.
    • V 컴파일러는 3가지 다른 형태의 UB를 작성하는 걸 막지 않았음. UB 발생함.
    • 미지원.
  • 변수 쉐도잉 (서로다른 이름 공간에 같은 이름을 만들 때, 이름이 가려지는 현상) 없음.
    • 로컬 변수를 가릴 수 없었음.
    • 미지원.
  • 바운스 체크.
    • 몇가지 기본적인 확인은 있지만, 사소하게 바이패스할 수 있음.
    • 경고.
  • 상수 변수가 기본.
    • 변수들은 의미있는 상수가 아님. mut 선언된 변수에 상수 레퍼런스를 할당한 다음 변수를 바꾸면 원본 상수 변수도 변경되도록 손쉽게 바꿀 수 있음.
    • 미지원.
  • 순수 함수들이 기본.
    • 이 주장은 순수함을 불순함이 의미하는 것으로 재정의하므로 의미가 없음.
    • (저자는 I/O 함수 지원은 본질적으로 불순할 수 밖에 없다는 걸 지적했으며, 문서에는 I/O 함수를 제외한 모든 함수가 순수하다고 했지만. I/O 함수를 호출할 수 있을 때부터 그 함수들은 순수하지 않다고 말했습니다. 그래서 의미가 덮어졌다고 말하는 것 같습니다. 본문에는 순수 함수들이 불순한 값을 뱉는 우수꽝스러운 예제를 보여줍니다. )
    • 미지원.
  • 상수 구조체가 기본.
    • 이미 위에서 상수 변수들을 우회할 수 있음을 증명했습니다.
    • 미지원.
  • Option과 그 결과값에 대한 필수 에러 체크.
    • 광고대로 작동함.
  • Sum types(type MyType = string | int 와 같은 문법입니다.)
    • Sum Types는 일반적으로는 작동하는 것처럼 보이지만, 내부 구현 이슈가 있음. ( type을 두 개 더 만드는 걸로 V언어가 금지하는 레퍼런스를 Sum Types으로 삼는 행동을 가능하게 만듭니다. )
    • 경고.
  • 일반화(제너릭)
    • 기본 구현은 존재하지만 아주 버그 투성이며 자기 스스로 강조하며 설명한 안전과 컴파일러 성능과는 완전히 동떨어져있는 것처럼 보임.
    • 미지원.
  • 글로벌 변수 없음.
    • V는 전역적으로 공유되는 상태를 만들거나 변경하는 것에 어떠한 의미있는 방식으로도 막지 않음.
    • 미지원.
퍼포먼스
  • C만큼 빠름( V의 메인 벡엔드 컴파일러는 사람이 읽을 수 있는 C언어 코드 )
    • V의 퍼포먼스 주장은 검증되지 않은 것처럼 보임.
    • 미지원.
  • 추가 비용없는 C 상호 운용
    • 광고대로 작동함.
  • 최소화되어있는 할당
    • 주관적인 주장임.
    • N/A. (저자는 int를 선언한 V코드가 C언어로 번역될 때, C언어상에서는 int를 malloc 되는 결과물을 보여줬습니다.)
  • 런타임 리플렉션 없는 내장된 직렬화
    • 광고대로 작동함.
  • 아무런 디펜던시가 없는 네이티브 바이너리들로 컴파일됨.
    • V는 아직 그 주장을 달성하지 못한 것처럼 보이지만, 일반적인 아이디어로는 V 프로그램이 상대적으로 자급자족하며 작다는 약간의 진실도 있음.
    • 경고.
빠른 컴파일
  • V는 100만 라인을 초당, 그리고 CPU 코어마다 컴파일함.
    • V 컴파일러는 주장한 수준의 성능 근처에 오지 않았음. (V 컴파일러 밴치마크 사이트에서도 20만 V 라인을 컴파일정도임.)
    • 미지원.
  • V는 V로 쓰여졌고, 1초 언더로 V 스스로 컴파일할 수 있음.
    • 광고대로 작동함.
  • 혁신적 메모리 관리
    • V의 주장들은 잘 뒷받침되지 않으며, 현재 존재하는 구현은 혁신적이라고 설명할 수 없음.
    • 미지원

그리고, 요약은 아래와 같습니다.

Summary

To consolidate the above into one table:

AreaRatingNotes

Simple language for building maintainable programs N/a Subjective claim.
Safety    
> No null 🛑 We’re able to create a null pointer (V reference) with no compiler errors or warnings.
> No undefined values 🛑 We could read uninitialized memory without compiler error or warnings.
> No undefined behavior 🛑 The V compiler didn’t stop us from creating three different forms of UB.
> No variable shadowing ✔️ We weren’t able to shadow local variables.
> Bounds checking ⚠️ Some basic checking exists but can be trivially bypassed.
> Immutable variables by default 🛑 Variables aren’t immutable in any significant way because you can trivially turn an immutable reference into a mutable one.
> Pure functions by default 🛑 Claim is meaningless as it redefines “pure” to mean “impure”.
> Immutable structs by default 🛑 Immutability can be by-passed trivially.
> Option/Result and mandatory error checks ✔️ Works as advertised.
> Sum types ⚠️ Sum types generally seem to work but there are implementation issues.
> Generics 🛑 A basic implementation exists but is very buggy and seems completely out of place in a language with an self described emphasis on safety and compiler performance.
> No global variables 🛑 V does not prevent you from creating and mutating globally shared state in any meaningful way.
Performance    
> As fast as C (V’s main backend compiles to human readable C) 🛑 V’s performance claims don’t seem to be valid.
> C interop without any costs ✔️ Works as advertised.
> Minimal amount of allocations N/a Subjective claim.
> Built-in serialization without runtime reflection ✔️ Works as advertised.
> Compiles to native binaries without any dependencies ⚠️ V doesn’t seem to achieve the exact claims made at this time but there is some truth to the general ideas that V programs are relatively self-contained and small.
Fast Compilation    
> V compiles ≈1 million lines of code per second per CPU core 🛑 The V compiler does not come close to the claimed level of performance.
> V is written in V and compiles itself in under a second ✔️ Works as advertised.
Innovative memory management 🛑 V’s claims are not well supported and the existing implementation cannot be described as “innovative”.

좀 더 자세한 내용은 아래 홈페이지 참고부탁드릴께요~

V Language Review (2022) | mawfig.github.io

 

V Language Review (2022)

V is a programming language promising to be “Simple, fast, safe, compiled. For developing maintainable software.” V has a controversial past but what is the state of V in 2022?

mawfig.github.io

 

오늘의 블로그는 여기까지고요...

항상 믿고 봐주셔서 감사합니다.

728x90
300x250