GPT4와 클로드를 사용해 정리한 내용입니다.
원문 PPT: Language Evolution
JavaScript라는 언어의 발전에는 크게 세 부류의 이해관계자들이 관여되어 있습니다:
JavaScript를 사용하는 개발자들은 프론트엔드, 백엔드, 네이티브 애플리케이션(웹 기술 활용), 임베디드 시스템 등 다양한 영역에 걸쳐 있습니다. 이들은 JavaScript 언어가 보다 간결하고 생산성을 높여주길 기대하며, 언어 발전의 주요한 요구자이기도 합니다.
JavaScript 언어를 직접 구현하거나 관련 도구를 제공하는 이들이 두 번째 이해관계자입니다. Babel이나 TypeScript 같은 트랜스파일러, SpiderMonkey, JSC, V8, XS 같은 JavaScript 엔진을 개발하는 팀들이 여기에 해당합니다. 이들은 언어의 새로운 기능을 효율적으로 지원하면서도 성능과 안정성을 유지하기 위해 노력하고 있습니다.
마지막으로, JavaScript로 작성된 소프트웨어를 사용하는 최종 사용자들이 있습니다. 이들은 웹 브라우저, 서버 런타임, IoT/임베디드 기기 등을 통해 JavaScript 기반 소프트웨어를 사용합니다. 수십억 명에 달하는 사용자가 JavaScript를 기반으로 한 서비스를 이용하고 있는 만큼, 이들의 요구는 언어 발전에서 매우 중요합니다.
JavaScript는 그 규모 면에서 매우 특별한 언어입니다. 전 세계적으로 2,500만 명 이상의 개발자들이 JavaScript를 사용하고 있고, 수십억 명의 사람들이 JavaScript로 작성된 소프트웨어를 사용하고 있습니다. 또한 다수의 독립적인 JavaScript 구현체들이 유지보수되고 있다는 점도 특기할 만합니다.
JavaScript 언어를 발전시키려는 주요 이유는 개발자의 생산성을 높이기 위함입니다. 이를 통해 개발자들이 더 나은 애플리케이션을 더 쉽게 만들 수 있도록 돕고자 합니다.
개발자들을 돕기 위해 언어를 발전시키는 과정에서 복잡도가 감소하는 것이 아니라 이동하는 현상이 발생합니다. 예를 들어, 애플리케이션 수준의 복잡성은 해당 애플리케이션 사용자들에게만 영향을 미치고 비교적 쉽게 패치할 수 있지만, 언어 구현체 수준의 복잡성은 모든 사용자가 그 영향을 받으며 패치하기도 어렵습니다. 특히, 브라우저 엔진의 경우 모든 사용자가 잠재적인 영향을 받을 수 있습니다.
JavaScript의 최종 사용자들은 주로 보안, 성능, 안정성을 원합니다:
새로운 언어 기능이 추가되면 사용자에게 부정적인 영향을 미칠 수 있습니다:
결과적으로 새로운 기능이 사용자의 요구를 만족시키는 데 도움이 되는 경우도 있지만, 복잡성과 성능 저하, 보안 문제 등 부정적인 영향이 상쇄되지 않는 경우가 많습니다. 이는 개발자들의 생산성과 사용자 경험 간의 긴장 관계를 만들어냅니다.
오늘날 대부분의 JavaScript 개발자들은 TypeScript와 Babel 같은 도구를 사용하여 개발하고 있습니다. 이러한 도구들은 JavaScript 언어 발전의 핵심 요소로 자리 잡았으며, 이를 통해 언어의 변화를 유연하게 받아들일 수 있습니다.
발표자는 JavaScript를 두 개의 레이어로 나눌 것을 제안합니다:
개발자에게는 JavaScript가 JS0 + JSSugar로 구성된 하나의 언어로 보이게 하자는 것입니다. 이 접근 방식은 다음과 같은 이점을 제공합니다:
ABI란 소프트웨어 애플리케이션과 하드웨어 또는 운영 체제 간의 상호작용을 정의하는 인터페이스입니다. 여기서 JS0는 다른 도구와의 상호 운용을 위한 표준 인터페이스 역할을 합니다.
JavaScript 생태계의 발전을 위해서는 TC39 내에서 더 많은 개발 도구 제작자들의 목소리가 반영되어야 합니다. 또한 일반 개발자와 사용자 간의 활발한 소통이 필요합니다. JavaScript의 진화가 어떤 영향을 미칠지 함께 고민하고, 최적의 방향으로 발전해 나가는 것이 중요합니다.
결론적으로, 개발 도구를 적극 활용하여 문법적 변화에 유연히 대응하고, 사용자 가치에 충실한 방향으로 API와 기능을 발전시키는 것은 JavaScript 생태계 전체에 긍정적인 영향을 미칠 수 있습니다. 하지만 보안, 성능, 생산성 등 서로 상충할 수 있는 가치들 사이에서 균형을 찾는 것은 여전히 어려운 과제입니다. 중요한 것은 열린 자세로 논의를 이어가며 다양한 이해관계자 간의 협력을 통해 한층 더 성숙한 언어와 생태계를 만들어 나가는 것입니다.