AI Briefing

프로그래밍의 7개 ur-language (2022)

·2026.04.19 16:38

주류 언어를 7개 계열로 나눠 각각의 사고방식을 설명한다.

프로그래밍 언어는 문법만 다른 것이 아니라, 문제를 푸는 기본 패턴 자체가 다른 계열로 나뉜다.

대표적인 7개 ur-language를 다음처럼 정리한다.

  • ALGOL: for, if, 대입, 함수 중심의 절차형 언어 계열. C, Java, Python, C++, JavaScript, Ada 등 대부분의 주류 언어가 여기에 속한다.
  • Lisp: 괄호로 둘러싼 prefix 표현식과 macro가 핵심이다. 코드 자체를 리스트로 다루며, 언어의 의미를 확장할 수 있다.
  • ML: first-class function, Hindley-Milner type system, 재귀 기반 반복이 핵심이다. Haskell, OCaml, Standard ML, Agda, Idris 같은 계열로 이어진다.
  • Self: 객체가 메시지를 주고받는 방식으로 동작하는 object-oriented 계열이다. class보다 객체 자체와 메시지 전달이 중심이며, JavaScript의 뿌리로도 설명된다.
  • Forth: stack language로, 인자를 명시적으로 넘기지 않고 스택 위에서 연산한다. 파서를 바꾸거나 작은 전용 언어를 얹기 쉽다.
  • APL: 모든 것이 array이며, 짧은 기호 연산자로 고차원 배열 연산을 압축해서 표현한다. MATLAB, NumPy, R에도 영향을 줬다.
  • Prolog: 프로그램을 factsrules로 쓰고, 런타임이 질의를 해결하도록 탐색한다. 논리식 기반의 검색 언어다.

글의 핵심은, 같은 “코딩”이라도 어떤 ur-language에 익숙한지에 따라 사고방식과 생산성이 크게 달라진다는 점이다.

또한 각 계열은 서로 일부 아이디어를 흡수해 왔다. 예를 들어 ALGOL 계열은 Self의 객체 개념과 ML의 타입 아이디어를 받아들였고, Lisp와 Forth, Prolog는 각각 macro, 파서 확장, 사실/질의라는 방식으로 언어 자체를 프로그램의 일부로 만든다.

결론적으로, 한 계열에만 머무르지 말고 여러 ur-language를 접하면 문제를 보는 관점설계 가능한 해법이 넓어진다고 주장한다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.