2022-10-19 TIL

SanE·2024년 1월 26일
0

컴퓨터공학

목록 보기
2/23

##
프로그래밍 언어론

1950년대 - 최초의 프로그래밍 언어


1950년대 초반

  • 기계어 사용 (프로그램 저장 방식)
    • 어셈블리어 -기계 의존적, 자연어와 상이한 구문

1950년대 중반

  • FORTRAN
    • 1954 ~ 57 John Backus에 의해 고안된 최초의 고급언어
    • 배열, 반복 구조, 분기문, 부프로그램 등의 특징은 이후 언어에 큰 영향

1950년대 후반

  • ALGOL60 : 알고리즘 기술을 위한 언어로 개발

    • 영향-

      Pascal, C, Modula-2, Ada 등의 파생어에 영향

    • 특징-

      구조적 명령분

      블록 개념 도입

      양식의 자유화

      BNF를 사용한 최초의 언어

      자료형 선언, call-by-value 기법

  • LISP

    • 영향-

      Scheme 등등

    • 특징-

      리스트 구조와 함수 응용을 기본으로 함

      인공지능 분야에서 사용

      획일적인 자료 구조

      함수 응용이 기본 표기법

      run-time 기억장소 할당 제공을 위한 garbage collection 사용

      *garbage collection : 더 이상 사용되지 않는 기억장소를 자동으로 재생하는 방식

  • APL
    • 특징-

      행렬을 포함하는 수학적 연산의 편리 제공

      -단점-

      제어 구조 없음, 그리스 문자 사용, 프로그램 이해가 어려움

1960년대 - 프로그래밍 언어의 폭증


수많은 언어의 생성 시기이며 대부분 소멸했고 일부 언어는 프로그래밍 언어 발전에 큰 공헌을 했음

  • PL/I : IBM Project

    • 새로운 개념 추가
      • 병행성
      • 기억장소 할당
      • 예외 처리
    • IBM의 막강한 지원이 있었으나 많은 문제를 내포
      • 번역기가 크고 작성이 어려움
      • 실행 효율 저하
      • 배우기 어려움
      • 오류가 자주 발생(신뢰성 저하)
  • Algol68

    • 새로운 특성 독자 개발
    • 이론적으로 일관성을 갖는 구조
    • 직교성 강조
    • 디자인 일관성
    • 파일 시스템
    • BUT 범용 컴퓨터에서 사용 불가능
  • Snobol - 문자열 특화

  • Simula67 - 객체 지향 언어 ( 최초로 클래스 개념 도입 ), 시뮬레이션 목적

  • Basic

    • 시분할용의 간결한 언어
    • 마이크로 컴퓨터 이식
    • 후에 나온 Basic : 제어 구조, 변수 선언, 프로시저 추가

1970년대 - 간결성, 추상화


1970년대 언어의 특징

  • 60년대 혼돈의 시기 후 간결성과 일관성 추구

  • Pascal

    • 작음
    • 간결함
    • 효율적
    • 구조적
    • 프로그램 교육용
    • 유용한 문자열 조작, 입출력 기능, 분리 컴파일
  • C

    • Pascal 과 다른 각도의 간결함
    • 수식위주
    • 하드웨어 접근 용이
    • 중급 언어로 분류
    • UNIX의 성공 → C언어의 재중화

C, Pascal : 간결성, 디자인 일관성 ⇒ 성공요인


1970년대 중/후반 언어의 특징

  • 자료 추상화 / 병행성 등의 메커니즘 시도

  • CLU

    • 추상화 기법을 위한 일관성 있는 접근 방식
    • 추상화 메커니즘
      • 자료 추상화
      • 제어 추상화
      • 예외 처리 방식
  • Euclid

    • Pascal 개선 언어
      • Pascal 의 단점인 이명(aliasing) 개선
      • 자료형의 추상화
    • 프로그램의 형식적 검증을 목적으로 한 최초의 언어
  • Mesa

    • Pascal 구조에 모듈 구조, 예외처리기, 병행성, 병렬 프로그래밍의 개념을 추가

1980년대


특징

  • Ada 등장

  • 함수형 언어에 관심

  • 논리형 프로그래밍 언어 등장

  • 객체 지향 언어에 대한 연구 활발

  • Ada ( 미 국방성 공모작 수상 )

    • 자료 추상화, 타입 메커니즘, 병행처리, 예외처리기 도입
    • 디자인이 섬세하고 상세함
    • 단점 : 복잡, 방대
  • Modula-2

    • Pascal 의 디자인에 결점 보완
    • 추상화, 부분적 동시처리
    • 교육 목적으로 인기
    • 내장형 시스템 프로그래밍 목적 ( 임베디드 시스템 )
  • Prolong

    • 논리형 언어
    • 인공진능 분야에서 많이 사용
  • SETL

    • 미적분이나 이산 수학을 가르칠 때 모델로 사용
    • 구현의 결핍으로 사용에 어려움
  • Smalltalk

    • 객체 지향 언어의 모범
  • C++

    • C 언어를 확장한 객체지향 언어
  • Eiffel

    • Pascal과 가까우면서 일관성 있는 객체지향 언어

1980년에 등장한 함수형 언어

  • Scheme
    • Lisp 언어 개정
    • Lisp 보다 획일적
  • Common Lisp
    • 표준
  • ML
    • 기존 함수형 언어와 다름
    • Pascal과 유사하지만 훨씬 유연성이 있다.

1990년대 - World Wide Web 프로그래밍


특징

  • 제 4세대 언어 대두

    • 응용문제를 빠르게 구현
    • 실사용자가 직접 프로그래밍
    • 데이터베이스를 쉽게 처리
  • HTML, JAVA 등장

  • Java

    • C++ 기반
      • 많은 구조 삭제
      • 일부 구조 변경 / 추가
    • 내장 시스템 목표
    • Java 응용 분야가 확장 ⇒ Web 프로그래밍

Java 특징

  • 자료형, 클래스 제공
  • 기본 자료형 : 스칼라 형 제공
  • 배열 - 미리 정의된 클래스 객체로 제공
  • 포인터 삭제 ⇒ 참조형 제공
  • 논리형 제공
  • 단일 상속
  • 쓰레기 수집 (garbage collection)
  • 중간 언어 제공 - 이식성 증가
profile
완벽을 찾는 프론트엔드 개발자

0개의 댓글