5P by neo 8달전 | favorite | 댓글 1개
  • Vala는 GNOME 개발자들에게 모던한 프로그래밍 언어 기능을 제공하는 것을 목표로 하는 프로그래밍 언어
  • C로 작성된 애플리케이션 및 라이브러리와 비교할 때 추가 런타임 요구사항을 부과하지 않으며 다른 ABI를 사용하지 않음
  • 지원하는 모던 언어 기능들: 인터페이스, 프로퍼티, 시그널, Foreach, 람다 표현식, 로컬 변수를 위한 타입 추론, 제네릭, Non-null 타입, 메모리 관리, 예외 처리
  • 객체지향 방식으로 고수준의 추상화를 이용해 편하게 코드를 작성할 수 있으며, GObject, GTK 등 GNOME 기술과 깊이 통합됨
  • 코드를 매우 빠른 네이티브 바이너리로 컴파일함. 기존 C 코드를 Vala 프로그램에서 재사용하거나 Vala에서 C 코드를 생성할 수 있음

기존 C 라이브러리와의 호환성

  • Vala는 런타임 바인딩 없이 기존 C 라이브러리, 특히 GObject 기반 라이브러리에 액세스할 수 있도록 설계되었음
  • Vala 문법으로 클래스 및 메서드 선언을 포함하는 API 파일만 있으면 Vala와 함께 라이브러리를 사용할 수 있음
  • Vala는 현재 GLib 및 GTK+에 대한 바인딩과 함께 제공됨

Vala 컴파일러 valac

  • valac은 Vala 소스 코드를 C 소스 및 헤더 파일로 변환하는 자체 호스팅 컴파일러임
  • Vala 소스 코드에 선언된 클래스와 인터페이스를 생성하기 위해 GObject 타입 시스템을 사용함
  • Vala의 문법은 C#과 유사하며, GObject 타입 시스템에 더 잘 맞도록 수정되었음

C에서 Vala로 작성된 클래스 및 메서드 사용하기

  • Vala 라이브러리에서 생성된 헤더 파일만 설치하면 C 애플리케이션에서 Vala 라이브러리의 GObject 기반 API에 일반적인 방식으로 액세스할 수 있음
  • Vala 파서가 라이브러리로 작성되어 모든 컴파일 시간 정보를 바인딩 생성 시 사용할 수 있으므로, C# 등으로 작성된 애플리케이션에서 Vala 라이브러리에 액세스하기 위한 바인딩 생성기를 작성하는 것도 쉬울 것임

GN⁺의 의견

  • Vala는 C와 유사한 문법으로 GNOME 기술과 잘 통합된 객체지향 언어라는 장점이 있음. 특히 GUI 애플리케이션 개발에 최적화되어 GTK, Granite 등과 쉽게 연동 가능함
  • Vala는 GNOME 데스크탑 환경 개발에 특화된 언어로 그 외의 분야에서는 활용도가 크지 않을 것으로 보임
  • C#과 유사한 문법을 가진 Vala는 C#에 익숙한 개발자들이 GNOME 개발에 참여하는 데에 도움이 될 것임
  • 기존 C 라이브러리와의 호환성을 중요시하면서도 모던한 언어 기능을 지원하려는 Vala의 목표는 신선하지만, 그로 인해 언어 자체의 독창성은 떨어질 수밖에 없을 것으로 보임
  • Vala 프로젝트들을 보면 주로 GNOME이나 elementary OS용 데스크톱 앱이 많은데, 서버 프로그래밍에도 활용 가능한 언어임. 다만 아직 그 분야에선 생태계가 부족한 편
  • Vala가 얼마나 널리 사용될지는 미지수이나, GNOME 생태계에서는 C 대신 Vala를 사용함으로써 생산성 향상을 기대해볼 만함
  • Vala와 문법이 유사하고 GNOME 기술을 사용할 수 있는 Genie라는 언어도 있음. Python처럼 들여쓰기로 코드 블록을 구분하는 게 특징. Vala의 대안으로 고려해볼만함
Hacker News 의견
  • Vala는 최근 활발한 개발 활동이 있었는지에 대해서는 의문이 제기됨. 한 GNOME 개발자의 블로그 포스트에 따르면 Vala는 한 명의 개발자에 의해 유지보수되고 있으며 새로운 개발에는 추천하지 않는다고 함.
  • 한 댓글 작성자는 최근 Vala로 앱을 작성했는데 즐거운 경험이었다고 함. 데스크톱 리눅스와 PinePhone에서 잘 작동하는 앱을 원했기에 Vala가 잘 맞았으며, Python보다 훨씬 더 즐겁고 성능도 좋았다고 함.
  • Vala에는 Genie라는 자매 언어가 있음. 두 언어는 기본적으로 동일하지만 Vala는 C#과 유사한 문법을, Genie는 Python과 같은 의미 있는 공백을 사용함. 둘 다 동일한 컴파일러(valac)에 의해 컴파일됨.
  • Vala는 문법적으로 Swift와 매우 유사해 보임. 문법 외에도 Vala는 1급 참조 카운팅, C 언어 바인딩, 외부 런타임 없이 바이너리로 직접 컴파일되는 점 등이 Swift와 유사함.
  • Vala가 안정된 ABI나 C++ 또는 ObjC와 같은 다른 고급 언어와의 호환성을 갖추고 있는지에 대한 의문이 제기됨. 이는 Swift가 해결하려고 시도하는 어려운 과제임.
  • Vala가 Java나 C#보다 (상당히) 더 생산적이거나 강력한 언어라는 점을 찾기 어려움. Vala의 장점이나 해결하려는 문제가 무엇인지 명확하지 않음.
  • Vala의 장점 중 하나는 GObject와의 호환성 때문에 액세스할 수 있는 광범위한 네이티브 라이브러리라는 의견이 있음. 모든 것이 한 곳에 있는 훌륭한 문서화 웹사이트(valadoc.org)도 개발을 용이하게 만듦.
  • elementary OS의 대부분의 "네이티브" 앱은 Vala로 작성되었다고 함.
  • Geary를 좋아했던 한 댓글 작성자는 그것 때문에 Vala를 조사했고, Vala가 우아한 언어이며 GNOME에서 실용적인 프로그램을 만드는 데 좋다는 것을 알게 되었음. 하지만 최근 7년 동안 Vala를 살펴보지 않았다고 함.
  • GNOME 개발을 위해 Rust를 사용하는 것이 점점 더 인기를 얻고 있음(gtk-rs.org).