The Tower of (Programming) Babel
- 바벨탑: 1961년 1월 ACM 커버에 등장한 일러스트
- 다양한 프로그래밍 언어들이 발전하며 복잡해진 상황을 상징적으로 표현
시대 구분
- 1950년대: 프로그래밍 언어의 여명기
- 1960년대: 프로그래밍 언어의 범람
- 1970년대: 기본으로의 회귀
- 1980년대: 객체 지향 개념의 부상
- 1990년대 이후: 웹 환경과 스크립트 언어의 대두
- 미래 예측: 특수 목적 언어의 지속적 증가
1950년대 - 프로그래밍 언어의 여명기
- FORTRAN
- 1954-1957년 IBM의 존 배커스(John Backus) 팀
- 과학 및 공학 계산을 위해 개발
- 효율성을 목표로 설계
- 디익스트라는 이 언어가 과거의 실수에 매여 프로그래머들의 사고를 제한한다고 비판
- COBOL
- 1959-1960년 미국 해군의 그레이스 호퍼(Grace Hopper) 팀
- 비즈니스 계산을 위해 개발
- 영어와 유사한 문법으로 가독성을 높였으나 디익스트라는 COBOL을 비판
- 프로그래밍 교육에서 사용하지 말아야 한다고 경고
- LISP
- 존 매카시(John McCarthy)가 MIT에서 인공지능 연구를 위해 개발한 언어
- 리스트 구조의 데이터를 다루기 쉽도록 설계
- 폰 노이만 아키텍처에서 비효율적이라는 한계
- 보완하기 위해 "LISP Machine"이 등장
Backus’s Turing Award Lecture
- 존 배커스의 튜링상 수상 강연
- 배커스는 FORTRAN 개발의 공로로 튜링상 수상
- FORTRAN이 소프트웨어 개발에 미친 영향과 배커스의 철학적 관점
Importance of List Processing in AI Programming
- 리스트 처리의 중요성
- 리스트 기반의 데이터 구조는 인간의 연관 기억 구조와 유사
- AI 프로그래밍에서 특히 중요한 역할
- 움베르토 에코의 푸코의 진자에서 언급된 에피소드
- 인간의 기억은 의미에 따라 연상되는 특징
1960년대 - 프로그래밍 언어의 범람
- Algol60
- 국제위원회에서 알고리즘 표현을 위해 개발한 언어
- 현대 프로그래밍 언어의 표준 제공
- 알고리즘의 자유로운 서술을 가능하게 하여 컴퓨터 독립적인 언어로
- PL/I
- IBM에서 모든 용도의 컴퓨팅을 아우르기 위해 개발한 다목적 언어
- FORTRAN, COBOL, Algol60의 장점을 혼합한 스위스 군용 칼 같은 언어로 평가
- 지나치게 복잡하여 디익스트라는 PL/I를 ‘위험한 종양 같은 성장 특성을 가진 치명적인 질병’에 비유
- Simula67
- 노르웨이 컴퓨팅 센터의 크리스텐 니가드(Kristen Nygaard)와 올레 요한 달(Ole-Johan Dahl)이 개발한 언어
- 시뮬레이션을 위한 현실 문제의 추상화가 목적
- 객체 지향 프로그래밍의 기초가 된 클래스 개념 도입
1970년대 - 기본으로의 회귀
- Pascal
- 니클라우스 비르트(Niklaus Wirth)가 교육 목적으로 개발한 언어
- 단순함을 강조하여 초보자들이 프로그래밍의 기본을 쉽게 배울 수 있도록 설계
- Pascal 컴파일러는 Pascal 언어로 작성
- 부트스트래핑이라는 개념 소개
- C 언어
- 벨 연구소의 데니스 리치(Dennis Ritchie)가 시스템 프로그래밍을 위해 개발한 언어
- 표현과 문장의 일관된 처리를 통해 단순성과 효율성을 동시에 갖추었음
- C 언어는 UNIX 시스템을 작성하는 데 사용
- 이후 많은 언어에 영향
1980년대 - 객체 지향 개념의 부상
- Ada
- 미국 국방부 의뢰, Jean Ichbiah와 그의 팀이 개발한 언어
- 임베디드 및 실시간 시스템에서의 신뢰성을 목표로 하고 추상 데이터 타입 도입
- C++
- Bjarne Stroustrup이 C 언어에 클래스 개념을 추가하여 개발한 언어
- 객체 지향 프로그래밍을 통해 코드 재사용성과 확장성
1990년대 이후 - 웹 환경과 스크립트 언어의 대두
- Java
- 제임스 고슬링(James Gosling)과 팀이 가전 기기용으로 개발
- 웹 프로그래밍 언어
- 자바는 플랫폼 독립성과 객체 지향성을 강조하며 보안성과 신뢰성을 목표로 설계
- JavaScript, Python, Ruby
- 이 시기 웹 발전과 함께 다양한 스크립트 언어들이 등장
- 웹 페이지에 동적 기능을 부여하는 도구에서 시작
- 점차 고급 프로그래밍을 위한 도구로 발전
미래에 대한 예측
- 미래 언어 전망
- 특정 목적을 위한 특수 목적 언어들이 지속적으로 개발될 것 예상
- 새로운 프로그래밍 패러다임에 기반한 언어들이 계속 설계될 것
- 특히 명확한 의미론을 필요로 하는 분야에서의 수요가 커질 것
“Information Superhighway” by Al Gore
- 정보 고속도로
- 앨 고어가 주장
- 디지털 혁명과 인터넷의 중요성 강조
- 정보의 빠른 전달이 가능 + 프로그래밍 언어 또한 새로운 기술과 함께 발전할 필요성
- 앨 고어와 토미 리 존스
- 디지털 및 인터넷 기술의 중요성 강조하는 인물
- 기술 혁신과 그에 따른 언어 발전의 방향성 암시
'[ Computer Science ]' 카테고리의 다른 글
[Programming Language] 6. 구문 (4) | 2024.11.01 |
---|---|
[Programming Language] 5. 설계 원칙 (0) | 2024.10.31 |
[Programming Language] 3. 전체에 대한 개관 (6) | 2024.10.31 |
[Programming Language] 2. 추상화 (2) | 2024.10.31 |
[Programming Language] 1. 프로그래밍 언어론 개요 (0) | 2024.10.31 |