'Transpiler'라는 용어, 정말 필요할까?
'Transpiler'의 모호성을 지적하며, 컴파일러와의 차이점을 형식적 정의를 통해 분석함
구문 번역, 의미론적 번역, 지역적 재작성 등 세 가지 정의를 제시하고, 각 정의의 한계점을 설명함
개발자들은 'Transpiler'라는 용어 대신 '컴파일러'를 사용하는 것이 더 명확하다고 결론 내림
구문 번역과 의미론적 번역의 차이
구문 번역은 소스 언어의 구문을 대상 언어의 구문으로 변환하는 데 초점을 맞춘다. 구체적으로, BNF 문법을 사용하여 언어의 구문을 정의하고, 'Transpiler'는 이러한 구문 구조를 다른 언어에 맞게 변환한다. 따라서, 구문 번역은 단순 변환에 가깝다. 반면, 의미론적 번역은 프로그램의 의미를 보존하는 데 중점을 둔다. 의미론적 번역은 컴파일러의 핵심 기능이며, 프로그램의 정확성을 보장한다.
지역적 재작성과 표현력
지역적 재작성은 프로그램의 특정 부분을 독립적으로 변환하는 방식이다. 구체적으로, Syntactic sugar는 지역적 재작성의 대표적인 예시로, 코드의 가독성을 높이지만 언어의 표현력을 변경하지 않는다. 따라서, 지역적 재작성은 단순 변환에 적합하다. 반면, 표현력을 추가하는 변환은 전역적 분석을 필요로 하며, 'Transpiler'의 범위를 벗어난다. Expressive constructs는 지역적 변환으로 처리하기 어렵다.
'Transpiler' 용어 사용에 대한 실질적 조언
'Transpiler'라는 용어는 모호하며, 컴파일러와 명확하게 구분되지 않는다. 구체적으로, 컴파일러와 'Transpiler'의 차이점을 명확히 정의하기 어렵다. 따라서, 'Transpiler' 대신 '컴파일러'라는 용어를 사용하는 것이 더 정확하고, 오해를 줄일 수 있다. 결과적으로, 개발자는 문맥에 따라 적절한 용어를 선택하여 의사소통의 명확성을 높여야 한다.