프로그래밍 언어의 기원이 된 7가지 근원(ur-languages) 언어 (2022)

프로그래밍 언어 학습의 핵심은 문법이 아닌 ALGOL, Lisp, ML 등 7가지 근원(ur-languages) 언어의 패턴을 이해하는 것이며, 대다수 현대 언어는 ALGOL 계열에 속합니다. 새로운 근원의 언어를 배우는 것은 단순한 기술 습득을 넘어 새로운 신경 회로(neural pathways)를 형성하는 수준의 노력이 필요합니다.

AI 요약

프로그래밍 언어 선택에 있어 Java, Python, C# 등 유사한 언어들 사이의 고민은 큰 의미가 없으며, 중요한 것은 그 기저에 흐르는 '근원(ur-languages)'을 이해하는 것입니다. 저자는 현대 소프트웨어 환경에서 ALGOL, Lisp, ML, Self, Forth, APL, Prolog라는 7가지의 독자적인 근원 언어 체계를 정의합니다. 이 중 ALGOL은 에이다 러브레이스의 해석 기관용 프로그램부터 Grace Hopper의 A-0, Fortran, COBOL 등을 거쳐 현대의 JavaScript와 Java에 이르기까지 가장 방대한 계보를 형성하고 있습니다. 같은 근원 계열 내에서의 언어 전환은 쉽지만, 서로 다른 근원 언어로 넘어가는 것은 사고의 구조 자체를 바꿔야 하는 도전입니다. 따라서 진정한 숙련자가 되기 위해서는 각기 다른 근원을 가진 언어들의 기본 패턴을 익혀 뇌의 사고 범위를 확장해야 합니다.

핵심 인사이트

  • 7대 근원 언어 정의: 소프트웨어의 근간을 이루는 7가지 유형으로 ALGOL, Lisp, ML, Self, Forth, APL, Prolog를 제시했습니다.
  • ALGOL의 지배력: C, C++, Python, Java, C#, Ruby, JavaScript 등 대중적인 언어 대부분이 ALGOL이라는 하나의 기원에서 파생되었습니다.
  • 역사적 계보: ALGOL의 기원은 에이다 러브레이스(Ada Lovelace)의 해석 기관 프로그램과 Eckert-Mauchly 아키텍처(EDVAC, Univac)의 기계어까지 거슬러 올라갑니다.
  • 인지적 비용: 동일한 근원 언어 내의 이동은 쉽지만, 다른 계열(예: ALGOL에서 Lisp로)의 언어를 배울 때는 새로운 '신경 회로' 형성이 필요하여 더 많은 시간이 소요됩니다.

주요 디테일

  • ALGOL의 특성: 할당(assignment), 조건문(conditionals), 루프(loops)의 순차적 실행과 함수 중심의 구조를 가집니다.
  • ALGOL의 세부 버전: 역사적으로 ALGOL 58, ALGOL 60, ALGOL W, ALGOL 68 등의 버전이 존재하며 현대 언어에 지대한 영향을 미쳤습니다.
  • Grace Hopper의 기여: 1950년대 초반 고수준 언어의 초기 시도인 A-0 컴파일러가 ALGOL 계열의 형성 과정에 포함됩니다.
  • 패턴의 동일성: C, Java, Python 등에서 배열을 루프하는 기본 방식(int[10] arr; for문 등)은 문법적 차이에도 불구하고 본질적으로 동일한 사고 패턴을 공유합니다.
  • 언어 조직의 차이: Lisp은 새로운 언어 구조를 명명하며 조직하는 반면, APL은 기호 시퀀스의 조각이 곧 행동의 정의이자 레이블이 되는 독특한 방식을 취합니다.

향후 전망

  • 개발자 교육 측면에서 유사한 ALGOL 계열 언어를 여러 개 배우기보다, 서로 다른 근원을 가진 언어(예: ML이나 Prolog)를 학습하는 것이 사고력 확장에 더 유리할 것입니다.
  • 새로운 프로그래밍 패러다임이 등장하더라도 결국 이 7가지 근원 중 하나에 뿌리를 두거나 이를 조합하는 형태로 발전할 가능성이 높습니다.
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...