기타 Lobsters · 1일 전

"더는 못 참겠다" 기괴한 셸 스크립트 문법 갈아엎으려는 새 언어 등장

핵심 요약
  • 기존 셸 스크립트를 신규 언어인 '오일(Oil)'로 자동 변환해 주는 작업과 그 설계 방식이 공개되었습니다.
  • 기존 셸이 기능 확장 시 기괴한 문법을 덧붙이던 한계를 벗어나, 중괄호 블록과 명확한 함수/프로시저 분리 등을 통해 언어를 현대화하려는 시도입니다.
  • 복잡하게 나뉘어 있던 4가지 하위 언어 체계를 명령어와 표현식 2개로 대폭 정리해 유지보수성을 높이는 것을 목표로 삼았습니다.
요약 기존 셸(Shell) 스크립트의 난해하고 확장 불가능한 문법적 한계를 극복하기 위해 시작된 오일(Oil) 언어 프로젝트의 자동 변환 작업 과정이 공개되었습니다. 작성자는 셸 프로그램 코드를 오일 언어로 자동 변환하는 기능을 개발 중이며, 실제 작성된 기존 스크립트들이 제대로 표현되는지를 통해 언어 설계의 완성도를 검증하고 있습니다. 작성자는 기존 셸 문법이 대소문자 변환(예: ^, ^^, ,, 등) 같은 새 기능이 추가될 때마다 기괴하게 꼬이는 등 문법적 파산 상태에 이르렀다고 진단했습니다. 오일은 마치 커피스크립트가 자바스크립트에 깔끔한 문법을 제공했던 것처럼, 파이프라인이나 체이닝 같은 셸의 강력한 의미론을 살리면서도 awk나 make의 장점 및 설정 언어로서의 특성을 흡수하는 것을 목표로 합니다. 실제 변환 예시로 제시된 스크립트에서는 몇 가지 뚜렷한 변화가 확인됩니다. 기존의 셸 함수는 프로세스와 프로시저의 성격을 모두 지닌 'proc' 키워드로 정의되며, 타입 기반 인자와 반환값을 갖는 파이썬 스타일의 'func'와 명확히 분리되었습니다. 또한 then/fi 대신 일관성 있게 중괄호({}) 블록을 도입했고, 난해했던 대괄호 [ 대신 test 명령어나 C 스타일 불리언 표현식을 지향하도록 바꿨습니다. 아울러 $? 같은 암호 같은 특수 변수는 $Status처럼 읽기 쉬운 명칭으로 대체되었습니다. 오일은 기존 셸이 명령어, 단어, 산술, 불리언 등 타입별로 난립하던 4개의 하위 언어 구조를 단 2개(명령어 및 표현식 언어)로 단순화하여 가독성과 유지보수성을 대폭 끌어올리고자 합니다.
Sponsored · 광고