본문 바로가기

프로그래밍 언어는 왜 영어처럼 생겼는가- 명령, 조건, 정의 문장이 사고를 자동화한 계보

📑 목차

    앞선 글에서 영어가 사고 구조를 어떻게 표준화했는지를 살펴보았다면, 이 글에서는 그 구조가 프로그래밍 언어라는 형태로 어떻게 구현되었는지를 다룬다.

     

    프로그래밍 언어가 영어처럼 보인다는 사실은 단순한 관습이나 역사적 우연의 결과가 아니다. 이는 인간이 사고를 외부로 이전하고, 그 사고를 반복 가능하고 자동화 가능한 형태로 고정하는 과정에서 필연적으로 선택된 구조의 결과다. 오늘날 사용되는 거의 모든 주요 프로그래밍 언어는 영어 어휘를 차용하고 있으며, 그 문장 구조 또한 영어의 명령문, 조건문, 정의문과 놀라울 정도로 유사한 형태를 취한다. 이는 개발자들이 영어에 익숙했기 때문이라기보다, 영어가 이미 오랜 시간에 걸쳐 인간 사고를 절차와 규칙, 조건의 형태로 조직해 온 언어였기 때문이다. 프로그래밍 언어는 영어를 흉내 낸 것이 아니라, 영어가 구축해 온 사고 구조를 기술적으로 구현한 결과에 가깝다.

     

    영어는 역사적으로 세계를 ‘사건’이 아니라 ‘행위’를 중심으로 조직해 온 언어다. 영어 문장은 정적인 상태를 묘사하기보다, 누가 무엇을 하는지, 그 행위가 어떤 조건에서 발생하며, 어떤 결과로 이어지는지를 선형적으로 배열한다. 이러한 구조는 단순한 서술 방식이 아니라, 사건을 처리하는 인지 알고리즘에 가깝다. 인간은 세계를 인식할 때 사물의 고정된 속성보다 변화, 과정, 원인과 결과의 연결을 중심으로 사고한다. 영어는 이러한 인지 경향을 언어 구조 차원에서 고정했고, 그 결과 사고 자체가 절차적 형태로 언어 내부에 내장되었다.

    프로그래밍 언어는 왜 영어처럼 생겼는가- 명령, 조건, 정의 문장이 사고를 자동화한 계보
    프로그래밍 언어는 왜 영어처럼 생겼는가- 명령, 조건, 정의 문장이 사고를 자동화한 계보

    프로그래밍 언어의 기본 단위 역시 ‘행위’다. 코드는 세계를 설명하지 않는다. 대신 무엇을 수행할 것인지, 어떤 조건에서 그 수행이 발생할 것인지, 그 결과가 다음 단계에 어떤 영향을 미칠지를 규정한다. 이는 영어의 명령문 구조와 거의 완벽하게 겹친다. 영어의 명령문은 주어를 생략한 채 동사로 시작하며, 수행해야 할 행위를 직접적으로 제시한다. “Run the program”, “Check the value”, “Return the result” 같은 문장은 일상 영어이면서 동시에 코드 주석이나 함수 설명으로도 전혀 어색하지 않다. 영어는 이미 인간에게 행위를 직접 지시하고 절차를 안내하는 언어적 틀을 제공하고 있었고, 프로그래밍 언어는 이를 기술적으로 정제했을 뿐이다.

     

    조건문 역시 영어와 프로그래밍 언어를 잇는 핵심 구조다. 영어의 if 구문은 단순한 문법 요소가 아니라, 사고를 분기시키는 인지 장치다. 어떤 조건이 충족되면 특정 결과가 발생하고, 그렇지 않으면 다른 경로로 이동한다는 사고 방식은 영어 문장 속에서 오랫동안 반복되어 왔다. “If the temperature rises, the pressure increases”라는 문장은 과학적 서술이자 조건 기반 논리의 전형적인 예다. 프로그래밍 언어의 if–else 구조는 이러한 영어 문장의 논리 배열을 기계적으로 고정한 것이다. 인간이 이미 언어를 통해 조건적 사고에 충분히 익숙해져 있었기 때문에, 프로그래밍 언어는 이 구조를 거의 그대로 차용할 수 있었다.

     

    정의문은 영어와 프로그래밍 언어를 연결하는 또 하나의 결정적 고리다. 영어 학술 문체에서 정의는 개념의 경계를 설정하고, 이후의 모든 논의를 가능하게 만드는 출발점이다. “A function is a relation between inputs and outputs”와 같은 문장은 자연어 정의이자, 동시에 프로그래밍적 사고의 기초를 제공한다. 프로그래밍 언어에서 변수, 함수, 클래스는 모두 정의를 통해서만 존재할 수 있으며, 정의되지 않은 개체는 사용할 수 없다. 이는 영어가 지식 체계에서 정의를 얼마나 중시해 왔는지를 그대로 반영한다. 영어는 사물을 묘사하기 전에 먼저 “이것이 무엇인가”를 규정하는 언어이며, 프로그래밍 언어는 이 정의 중심 사고를 극단적으로 제도화한 체계다.

     

    중요한 점은 영어의 이러한 구조가 단지 표현의 편의성을 제공한 것이 아니라, 사고를 외부로 분리하고 고정하는 데 결정적인 역할을 했다는 사실이다. 영어 문장은 사고 과정을 명시적으로 드러내며, 그 과정을 다른 사람과 공유할 수 있게 만든다. 이 과정에서 사고는 개인의 머릿속에 머무르지 않고, 문장이라는 외부 구조로 이전된다. 프로그래밍 언어는 바로 이 이전된 사고를 기계가 처리할 수 있는 형태로 변환한 시스템이다. 즉, 프로그래밍은 사고의 기계화라기보다, 이미 언어를 통해 외부화된 사고의 자동화에 가깝다.

     

    이러한 관점에서 보면, 프로그래밍 언어가 영어를 닮은 것은 문화적 선택이 아니라 인지적 필연이다. 영어는 이미 사고를 단계화하고, 조건화하며, 결과 중심으로 배열하는 데 최적화된 언어였다. 프로그래밍 언어는 이 구조를 제거하지 않았고, 오히려 모호함을 제거한 채 극단적으로 명확하게 만들었다. 자연어 영어에서는 암묵적으로 이해되던 요소들이 코드에서는 반드시 명시되어야 하며, 모호함은 오류로 처리된다. 이는 영어 구조의 강화이지, 새로운 구조의 창조가 아니다.

     

    또한 영어는 의미를 고정하지 않는 언어다. 단어는 문맥과 구조에 따라 다양한 의미를 가질 수 있으며, 이 유연성은 영어를 추상적 사고에 강한 언어로 만들었다. 프로그래밍 언어 역시 변수와 함수가 문맥에 따라 다른 값을 가질 수 있도록 설계된다. 변수 이름은 틀을 제공할 뿐, 그 이름이 가리키는 실제 값은 실행 시점에 결정된다. 이는 영어에서 단어가 문장 속에서 기능적으로 해석되는 방식과 매우 유사하다. 이름은 구조를 제공하고, 실제 의미는 조건과 맥락 속에서 채워진다.

     

    더 나아가 영어는 책임을 문장 전체에 분산시키는 언어다. 행위의 결과는 단일 주체에게 귀속되기보다, 조건, 환경, 절차의 결합으로 설명된다. 프로그래밍 언어 역시 오류를 개인의 실패로 처리하지 않는다. 오류는 특정 조건에서 특정 규칙이 충족되지 않았을 때 발생한 결과로 분석된다. 이때 중요한 것은 ‘누가 잘못했는가’가 아니라 ‘어떤 조건에서 시스템이 어떻게 작동했는가’다. 이는 영어가 이미 책임을 구조적으로 배치해 온 언어였기 때문에 가능한 사고 방식이다.

     

    결국 프로그래밍 언어는 영어의 미래가 아니라, 영어의 연장선이다. 영어가 인간 사고를 정렬하고 표준화했다면, 프로그래밍 언어는 그 사고를 기계가 반복 실행할 수 있도록 고정한다. 이 과정에서 영어는 사라지지 않는다. 오히려 영어는 코드의 설명, 문서화, 설계 논의, 오류 분석, 협업의 언어로 계속 사용된다. 프로그래밍 언어가 아무리 발전해도, 그 위에는 항상 영어가 놓인다. 영어는 코드가 무엇을 하는지를 설명하는 메타 언어로 남는다.

     

    이 글이 보여주는 결론은 분명하다. 프로그래밍 언어는 영어를 대체한 새로운 언어가 아니다. 그것은 영어가 수백 년에 걸쳐 구축해 온 사고 구조를 기술적으로 구현한 특수 목적 언어다. 인간이 사고를 언어로 정렬했고, 그 언어가 영어였기 때문에, 기계가 사고를 처리하는 언어 역시 영어의 형태를 닮을 수밖에 없었다. 이러한 흐름을 고려하면, 영어 이후의 언어는 영어를 완전히 대체하기보다는, 영어가 만들어낸 사고 구조를 더욱 정밀하게 활용하고 확장하는 방향으로 발전할 가능성이 크다고 볼 수 있다.