dev.to

Natural Languages Have Design Trade-offs Too: Georgian Is Dynamically Typed, English Is Statically Typed

자연어에도 설계 트레이드오프가 있습니다: 조지아어는 동적 타입, 영어는 정적 타입

조지아어와 영어, 독일어의 관사와 문법적 성을 비교해 언어마다 정보를 표현하는 방식과 부담이 다르다고 설명합니다. 이를 타입 추론과 정적·동적 타입에 비유하고, 언어 간 번역에서 원문에 없는 성별이나 관사를 AI가 추론해야 한다고 짚습니다.

에디터 노트

관사와 문법적 성을 덜어낸 조지아어가 그만큼 단순해지는 것은 아닙니다. 동사가 주어와 목적어 정보를 담는다는 설명까지 보면, 저자의 비유는 언어별로 문법 부담이 어디에 놓이는지 보여주는 데 설득력이 있습니다. 다만 자연어의 문법적 성과 프로그래밍 언어의 타입은 오류를 다루는 방식과 목적이 달라 완전히 대응하지는 않습니다. 댓글은 문법적 성이 언어마다 어긋나 학습 부담을 키운다는 경험을 보탭니다. 또 관사가 없는 언어를 쓰는 사람이 영어 관사를 어렵게 느끼는 사례도 나옵니다. AI 번역에서 관사와 대명사 선택이 원문에 없는 정보를 보태는 문제는 글의 비교와 직접 맞닿아 있습니다. 다만 본문에는 조지아어 번역 모델의 측정 결과가 제시되지 않아, 이 설명만으로 모델 성능이나 오류 빈도까지 판단할 수는 없습니다.

AI 요약

조지아어를 모국어로 쓰는 개발자가 영어와 조지아어의 문법 차이를 프로그래밍 언어의 설계 트레이드오프에 빗대 설명합니다. 조지아어에는 영어의 a/an, the 같은 관사가 없습니다. 화자는 문맥과 어순으로 처음 언급된 대상인지 이미 나온 대상인지 파악합니다. 더 분명히 해야 할 때는 ეს(이것), ის(저것) 같은 지시어를 쓰거나, 구어에서 ერთი(하나)를 부정관사처럼 씁니다. 표현이 간결해지는 대신 문맥만으로 뜻이 모호해질 때도 있습니다.

관사와 타입 추론

조지아어에서 영어로 번역하면 원문에 없는 관사를 골라 넣어야 합니다. 저자는 모델이 대체로 적절한 답을 고르더라도 그 선택은 추론이라고 설명합니다. C#의 var도 비슷한 사례로 듭니다. 오른쪽 값만으로 타입이 분명하면 var를 쓰기 편하지만, dispatcher.Next()처럼 반환 타입을 알기 어려운 표현은 독자에게 모호할 수 있습니다. 왼쪽에 타입을 적고 오른쪽에서 생략하는 target-typed new도 정보가 문장 안에서 어느 쪽에 놓이는지 보여주는 예입니다.

문법적 성과 대명사

영어의 인칭대명사는 사람의 성별을 반영하지만, 이탈리아어와 독일어는 사물 명사에도 문법적 성을 부여합니다. 독일어에서는 숟가락 der Löffel, 포크 die Gabel, 칼 das Messer처럼 명사마다 성을 외워야 합니다. Mädchen(소녀)은 생물학적 성별과 달리 축소 접미사 -chen 때문에 중성 das를 씁니다. 조지아어에는 문법적 성이 없고 ის 하나가 he, she, it을 모두 가리킵니다. 이 덕분에 명사별 성을 암기할 필요는 줄지만, 대명사가 가리키는 대상은 문맥에 기대게 됩니다. 반대로 문법적 성은 대명사가 어느 명사를 받는지 구분하는 단서를 주기도 합니다. 영어의 단수 they는 성별을 특정하지 않을 때 쓰는 표현이며, 저자는 14세기부터 사용된 역사와 복수형 you가 단수 용법을 받아들인 변화에 비유합니다.

복잡성은 다른 곳으로 이동합니다

저자는 관사와 성이 없다고 해서 조지아어 전체가 단순한 것은 아니라고 덧붙입니다. 조지아어 동사는 주어와 목적어 정보를 함께 담을 수 있고, 시제에 따라 주어의 격도 달라집니다. 단어 앞의 표시를 덜어낸 만큼 동사가 더 많은 문법 정보를 표현한다는 설명을 Tesler's law, 즉 복잡성 보존 법칙과 연결합니다. 독일어의 성은 정적 타입처럼 명사에 태그를 붙이고 주변 표현이 그 태그와 일치하게 하는 방식, 조지아어 대명사는 문맥에서 의미를 정하는 동적 타입에 비유합니다. 다만 저자는 정적·동적 타입과 강한·약한 타입은 서로 다른 축이라고 명시합니다. Python은 동적이면서 강한 타입이고, JavaScript는 동적이면서 약한 타입이라 설명합니다.

자연어와 프로그래밍 언어의 변화

프로그래밍 언어는 서로 기능을 빌려 빠르게 발전하지만, 자연어는 주로 어휘를 빌리고 문법 구조는 천천히 바뀐다고 비교합니다. C#의 제네릭, 람다, LINQ, 패턴 매칭, 레코드와 nullable reference types를 다른 언어권의 영향을 받은 사례로 들고, async/await가 JavaScript와 Python, Rust 등으로 퍼진 사례도 언급합니다. 반면 영어는 고대 영어의 문법적 성을 잃었고 thou의 역할을 you가 흡수했습니다. 자연어의 문법 변화는 수세기에 걸쳐 진행되며, 정해진 변경 기록이나 이전 버전에서 옮기는 안내서는 없습니다.

dev.to 반응

  • @sylwia-lask — 폴란드어에도 독일어처럼 세 가지 문법적 성이 있지만 서로 일치하지 않습니다. 폴란드어 kot(고양이)는 남성형인데 독일어 die Katze는 여성형이라 골치 아픕니다. 폴란드어에는 관사도 없어서 영어 관사를 자꾸 틀립니다. 관사는 인위적인 기능처럼 느껴집니다.
    • @fm — 벵골어에도 남성, 여성, 중성 세 가지 문법적 성이 있습니다. 고양이는 그저 고양이일 뿐이며 수컷 고양이나 암컷 고양이라고 따로 말할 수 있습니다. 자연어는 모호합니다. 그래서 모호하고 비결정적인 언어가 결정적이고 모호하지 않은 언어인 프로그래머를 대체하지 못한다고 계속 말합니다.
    • @georgekobaidze — 요지를 이해합니다. AI는 모호성을 다루는 능력이 좋아지고 있지만, 프로그래머를 완전히 대체하기에는 아직 거리가 멉니다.
  • @marcobblk — 이탈리아인으로 조지아에 살고 있습니다. 조지아어의 기술적 실험도 좋았지만, 설명 덕분에 4년 동안 조지아어를 잘 익히지 못한 이유를 이해하는 데 도움이 됐습니다. 알파벳을 익혀 읽고 쓸 수 있지만 내용을 이해하지 못합니다. 어린 시절부터 접하지 않은 발음을 듣거나 따라 하는 일도 어렵습니다. 교육적인 글에 감사드립니다.
    • @georgekobaidze — 도움이 됐다니 기쁩니다. 조지아어는 복잡한 언어이며 다른 언어와 완전히 다른 세계입니다. 이탈리아어처럼 단어가 모음으로 끝나는 점은 비슷하지만 그 외에는 많이 다릅니다.
  • @technogamerz — 인도 출신이며 모국어는 힌디어입니다. 인도에는 공식 지정 언어 22개와 수백 가지 언어 및 방언이 있어 한 언어만으로는 부족하게 느껴질 때가 있습니다. 힌디어에는 사물에도 남성형과 여성형 문법적 성이 있습니다. 영어와 같은 관사는 없고 전치사 대신 후치사를 씁니다.
    • @georgekobaidze — 조지아도 작은 나라이지만 방언이 꽤 많습니다. 인도에는 방언이 얼마나 많을지 상상만 할 수 있습니다.
    • @technogamerz — 라자스탄 출신이며 일 때문에 남인도에 살고 있습니다. 그곳에서는 사람들이 다른 언어를 써서 무슨 말인지 못 알아들을 때가 있습니다. 영어로 글을 쓸 때도 힌디어로 생각합니다.
    • @georgekobaidze — 영화와 게임, 음악으로 영어에 많이 노출됐고 박사 연구로 미국에 몇 달 살았으며 국제 기업에서 수년간 일하면서 생각하는 언어가 영어로 바뀌었습니다. 일부 내용은 영어로 표현하기가 더 쉽기 때문일 수도 있습니다.

원문: dev.to / 번역·요약: Trawling