4P by neo 3달전 | favorite | 댓글 1개

Borgo 프로그래밍 언어 소개

  • Go보다는 표현력이 좋지만 Rust보다는 복잡하지 않은 애플리케이션 작성 언어를 원함
    • Go는 단순하고 직관적이지만, 종종 더 많은 타입 안전성을 제공했으면 함
    • Rust는 작업하기 좋지만(적어도 단일 스레드 코드의 경우) 너무 광범위하고 복잡하며, 때로는 고통스러움
  • Borgo는 Go로 트랜스파일되는 새로운 언어로, 기존 Go 패키지와 완벽하게 호환됨
  • Borgo 구문은 세미콜론이 선택사항인 Rust와 유사함

주요 기능

  • 대수적 데이터 유형 및 패턴 매칭
  • nil 대신 Option 사용
  • 여러 반환 값 대신 Result 사용
  • ? 연산자를 사용한 오류 처리

로컬에서 실행하기

  • Borgo는 Rust로 작성되었으므로 cargo가 필요함
  • 현재 폴더의 모든 .brg 파일을 컴파일하려면:
    • $ cargo run -- build
  • 컴파일러는 .go 파일을 생성하고, 이를 정상적으로 실행할 수 있음

GN⁺의 의견

  • Rust는 강력한 언어지만 러닝커브가 가파르고 도입 장벽이 높은 편인데, Borgo는 Rust의 장점을 Go의 생태계에서 활용할 수 있게 해주는 흥미로운 시도로 보임. 다만 아직 초기 단계라 생태계가 부족할 것으로 예상됨
  • Option과 Result로 nil과 에러 처리를 개선한 것, ? 연산자로 에러 핸들링을 간편하게 한 부분 등은 Go 개발자들이 종종 불편해하던 부분을 해소해줄 것 같음
  • 기존 Go 라이브러리를 그대로 사용할 수 있다는 것은 큰 장점. 하지만 Rust 문법을 차용한만큼 Go 개발자들이 적응하는데 시간이 걸릴 수 있음
  • Transpile 방식이다보니 디버깅이나 런타임 퍼포먼스 등에서 네이티브 Go 코드 대비 불리할 가능성이 있음. 큰 규모의 프로덕션 코드에 적용하기에는 아직 이른 감이 있음
  • Kotlin이 JVM 생태계에서 점유율을 높여가는 것처럼, Borgo도 Go의 솔루션이 되기 위해서는 코드 품질, 개발 생산성, 러닝커브 등 여러면에서 지속적인 개선이 필요해보임. 계속 발전해나간다면 Go 진영의 매력적인 대안이 될 수 있을 것으로 기대됨
Hacker News 의견

요약:

  • Go 언어의 부족한 점을 보완한 Borgo 언어에 대한 긍정적 반응들
    • Enum, Optional 타입 등 Go에서 아쉬웠던 기능들이 추가됨
    • Go 개발자들이 바라던 기능들이 대부분 포함됨
  • Borgo의 일부 디자인 결정은 Go의 특징보다는 Rust를 닮은 느낌
    • impl을 이용한 메서드 정의, 채널과 고루틴 문법, zeroValue() 내장 함수 등
    • 그럼에도 불구하고 Go보다는 Borgo로 개발하는 것을 선호할 것으로 보임
  • 비슷한 시도를 했던 다른 프로젝트들에 대한 소개
    • braid, have, oden 등 Go로 트랜스파일되는 언어를 만들려는 시도들이 있었음
  • Rust의 장점 중 하나인 Borrow Checker를 제외하고 타입 시스템과 에러 핸들링 등의 장점은 가져온 듯함
  • 동적 타이핑과 정적 타이핑의 장단점을 모두 가진 언어가 있으면 좋겠다는 의견
    • 초기 개발 시에는 Python 같은 동적 타이핑의 장점을, 이후에는 점진적으로 정적 타이핑으로 전환할 수 있으면 좋을 것
  • Go의 런타임과 도구 생태계의 장점에 Rust의 Enum 같은 타입 안정성이 더해진 느낌
  • Struct의 필드 가시성을 대소문자로 구분하는 Go의 방식 대신 pub/private 키워드를 도입한 점도 긍정적
  • Gleam 언어와 비슷한 타입 안정성과 복잡도 간의 절충안을 찾은 듯하지만, Erlang이나 JS가 아닌 Go로 컴파일 된다는 점이 성능상 이점
    • 다만 컴파일 에러 메시지가 Rust나 Gleam만큼 친절할지는 의문