9P by GN⁺ 5일전 | ★ favorite | 댓글 2개
  • Fennel은 Lua 런타임에서 실행되는 프로그래밍 언어임
  • Lua는 간단하면서도 강력한 프로그래밍 언어로, 다른 프로그램에 쉽게 통합되어 사용자에게 재프로그래밍 가능성을 제공함
  • Fennel은 Lua의 단점을 보완하여, 보다 명확하고 오류를 줄이는 대안을 제공함
  • Fennel은 Lisp 계열의 문법을 사용하여, 구문 복잡성을 줄이고 코드의 가독성을 높임
  • Fennel은 변수 재할당, 테이블 표기법, 함수의 인수 검사 등에서 Lua보다 개선된 기능을 제공함

Fennel이란?

  • Fennel은 Lua 런타임에서 실행되는 프로그래밍 언어임
  • Lua는 간단하면서도 강력한 언어로, 다른 프로그램에 쉽게 통합되어 사용자에게 재프로그래밍 가능성을 제공함
  • Fennel은 Lua의 단점을 보완하여, 보다 명확하고 오류를 줄이는 대안을 제공함

Lua의 장점

  • Lua는 작고 빠른 언어로, 약 19,000줄의 C 코드로 구성되어 278kb로 컴파일됨
  • 개념적 단순성을 유지하면서도 강력한 기능을 제공함
  • 다른 프로그램에 쉽게 통합되어 사용자가 프로그램을 재프로그래밍할 수 있게 함

Fennel의 주요 특징

  • Fennel은 Lisp 계열의 문법을 사용하여, 구문 복잡성을 줄이고 코드의 가독성을 높임
  • 모든 것이 표현식으로 처리되며, 연산자 우선순위나 조기 반환에 대한 모호성이 없음
  • 변수: 전역 변수 사용을 어렵게 하여 실수를 줄이고, 변수 재할당 시 var를 사용하여 명확성을 높임

테이블과 루프

  • Fennel은 테이블 표기법을 개선하여, 배열과 키/값 테이블을 구분함
  • 루프에서 foreach를 사용하여 명확한 구문을 제공함

함수와 기타 기능

  • Fennel은 함수의 인수 검사를 지원하여, 인수 부족 시 오류를 발생시킴
  • 구조 분해패턴 매칭을 지원하여, 보다 선언적인 조건문 작성이 가능함
  • 매크로 시스템을 포함하여, 새로운 구문 형태를 쉽게 확장할 수 있음
Hacker News 의견
  • 새로운 언어들이 Lua 런타임을 목표로 하는 것을 보는 것이 즐거움

    • 최근에 SSE 서버를 Lua로 프로그래밍 가능하게 만들었음
    • Lua와 mlua-rs Rust 바인딩을 강력히 추천함
  • Fennel이 좋음

    • neovim 설정을 Fennel로 변환한 후 후회하지 않음
  • Forth, Lisp, Lua 외에도 Tcl이 작은 임베디드 언어로 언급될 가치가 있음

    • v8 버전부터 복잡해졌지만, 초기 버전은 매우 간단했음
    • Ousterhout의 책을 읽고 감명받아 직접 구현해보았음
  • LISPy 언어의 매력을 이해하지 못함

    • 파서는 간단하고 우아하지만, 개발자는 사용자의 편의를 우선해야 한다고 생각함
    • 코드 작성이 번거롭고 불필요하게 기호가 많음
    • C와 유사한 구문을 파싱하는 것이 그렇게 어렵지 않음
  • Fennel의 Lua로 컴파일하면서 메타 프로그래밍 기능을 유지하는 접근 방식이 우아함

    • 구문이 Clojure를 연상시키지만 JVM 오버헤드는 없음
    • 임베디드 시스템이나 게임 개발에 적합한 조합임
  • Fennel이 꽤 좋음

    • 점진적 타입 지원이나 정적 도구를 위한 타입 주석을 허용했으면 좋겠음
    • 동적 타이핑이 유효한 선택이지만, 점진적 타입 지원이 있는 언어가 많아져서 돌아가기 어려움
  • Lua 위에 구축된 다른 언어를 찾는 사람들을 위한 정보

  • 괄호에 대해 불평하는 사람들은 Lisp을 충분히 코딩하지 않았을 것임

    • 괄호를 극복하면 언어의 동질성이 빛나고 Lisp을 좋아하는 이유를 이해하게 됨
  • 캐주얼하고 재미있는 게임 개발에 좋음

    • TIC-80이 직접 지원하며, Fennel에서 PICO-8로 쉽게 전환 가능함

문스크립트 링크가 잘못 걸려있네요~
https://moonscript.org/