데이터 구조를 정의할 때 마지막 항목 뒤에 쉼표(후행 쉼표)를 허용할 것인가 말 것인가는 프로그래밍 언어 설계의 오랜 논쟁거리입니다. 특히 JSON(JavaScript Object Notation)은 마지막 멤버 뒤에 쉼표를 허용하지 않아 개발자들이 데이터를 추가하거나 삭제할 때 불필요한 코드 변경을 유발하며 불편함을 초래한다는 지적이 많습니다.
JSON 객체에서 `{"a": 1, "b": 2, "c": 3}`처럼 마지막 멤버("c": 3) 뒤에 쉼표를 붙이면 유효하지 않은 JSON으로 처리됩니다. 이는 새로운 키-값 쌍을 마지막에 추가할 때 기존 마지막 줄에도 쉼표를 추가해야 하는 번거로움을 만듭니다. 반면, 파이썬(Python)과 고(Go) 같은 언어는 딕셔너리나 맵 리터럴에서 후행 쉼표를 허용하여, 항목 추가·삭제·재배치를 훨씬 유연하게 만듭니다. 예를 들어, `{"a": 1, "b": 2, "c": 3,}`처럼 마지막 쉼표를 허용하면, `"y": 4`를 추가할 때 단순히 한 줄만 추가하면 됩니다. 이는 버전 관리 시스템(Git)에서 변경 사항을 추적할 때도 이점을 제공합니다.
일부 언어는 파싱(parsing) 모호성 때문에 후행 쉼표를 금지하기도 합니다. 프롤로그(Prolog)나 루비(Ruby) 같은 언어에서는 제어 구문에서 후행 쉼표가 문장의 끝을 모호하게 만들 수 있습니다. 하지만 JSON의 경우는 데이터 구문이므로 이러한 모호성 문제는 적습니다. JSON이 처음 설계될 당시 자바스크립트(JavaScript)의 부분집합으로 브라우저에서 `eval` 함수로 바로 실행될 수 있도록 만들어졌기 때문에, 당시 자바스크립트가 후행 쉼표를 지원하지 않아 JSON도 이를 따랐다는 역사적 배경도 있습니다.
결국 후행 쉼표 허용 여부는 개발자의 생산성과 편의성에 직접적인 영향을 미치는 중요한 설계 결정입니다. 후행 쉼표를 허용하는 언어들은 코드 변경 시 필요한 수정 범위를 최소화하고, 버전 관리 시스템에서 깔끔한 변경 이력을 유지하는 데 도움을 줍니다. 이는 개발자들이 더 효율적으로 작업하고 오류를 줄이는 데 기여하는 작은 디테일이지만, 그 영향은 결코 작지 않습니다.