[Programming Language] 4. 프로그래밍 언어 개발의 역사

2024. 10. 31. 21:57·[ Computer Science ]

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

  • 정보 고속도로
    • 앨 고어가 주장
    • 디지털 혁명과 인터넷의 중요성 강조
    • 정보의 빠른 전달이 가능 + 프로그래밍 언어 또한 새로운 기술과 함께 발전할 필요성

 

  • 앨 고어와 토미 리 존스
    • 디지털 및 인터넷 기술의 중요성 강조하는 인물
    • 기술 혁신과 그에 따른 언어 발전의 방향성 암시
728x90

'[ Computer Science ]' 카테고리의 다른 글

[Programming Language] 6. 구문  (6) 2024.11.01
[Programming Language] 5. 설계 원칙  (0) 2024.10.31
[Programming Language] 3. 전체에 대한 개관  (7) 2024.10.31
[Programming Language] 2. 추상화  (2) 2024.10.31
[Programming Language] 1. 프로그래밍 언어론 개요  (0) 2024.10.31
'[ Computer Science ]' 카테고리의 다른 글
  • [Programming Language] 6. 구문
  • [Programming Language] 5. 설계 원칙
  • [Programming Language] 3. 전체에 대한 개관
  • [Programming Language] 2. 추상화
dev charlotte
dev charlotte
주 - 컴퓨터공학 / 복수 - 산업 보안
    250x250
  • dev charlotte
    int main() {
    dev charlotte
  • 전체
    오늘
    어제
    • 분류 전체보기
      • [ Laboratory ]
        • Paper review
        • Advanced Operating System
        • System Software & Storage
        • Lab etc
      • [ Computer Science ]
        • Algorithm_C++
        • Operating System
        • Information Retrieval
        • Database_sql
        • SW Engineering
        • Computer Network
        • JavaScript
        • Python
        • Data Structure
        • CS study
        • Distributed systems
      • [ Computer Security ]
        • Convergence Security
        • Web Security
        • PIMS
        • Network Security
        • Digital Finance
      • [ Artificial Intelligence ]
        • Trend
        • Seminar
      • [ 미래, 같이, LG ]
      • [ Development ]
        • [ Front-end ]
        • [ Back-end ] Spring 기본
        • [ Back-end ] Node.js
      • etc
        • 현대오토에버 스마트 모빌리티 공학 체험 교육
      • It's me
  • 블로그 메뉴

    • 링크

      • GitHub
    • 공지사항

    • 인기 글

    • 태그

      프로그래머스
      코딩 교육
      대학생 대외활동
      코딩 인강
      공대생 대외활동
      백준
      스마트모빌리티공학체험교육
      ssafy 13기
      자바스크립트
      현대오토에버 스마트모빌리티
      spdk
      오블완
      데이터베이스
      현대오토에버 스마트 모빌리티
      프로그래밍 언어론
      소프트웨어 공학
      프로그래머스 코테
      싸피 13기
      SSAFY
      싸피
      코드잇
      프로그래머스 c++
      MySQL
      현대오토에버
      ACM
      티스토리챌린지
      프로그래머스 입문
      hotstorage
      SQL
      비전공자 코딩
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.4
    dev charlotte
    [Programming Language] 4. 프로그래밍 언어 개발의 역사
    상단으로

    티스토리툴바