티스토리 뷰

 

프로그래밍 언어의 발전

동작 방식의 발전

  1. 아이디어 시대 : 계산 자동화를 위한 상상 속의 기계 설계(튜링기계)
  2. 전자식 컴퓨터 등장 : 전자 신호를 통한 계산 기계(애니악)
  3. 프로그램 저장 방식의 컴퓨터 : 프로그램과 처리기를 분리(에드박)

운영체제의 발전

  1. 일괄처리 운영체제 : 관리자를 대신할 프로그램
  2. 시분할 운영체제 : 한 컴퓨터를 여러 사람이 사용
  3. DOS : CLI를 활용한 개인용 컴퓨터
  4. PC 환경 운영체제 : GUI 운영체제와 리눅스의 발전

프로그래밍 언어의 역사

1950년대 : 초기 프로그래밍 언어

  • Portran : 수식과 문장, 제어문의 등장(과학계산용 언어)
  • Algol : 구조화 프로그래밍의 발전. 알고리즘 기술 언어
  • LISP : 초기 함수형 언어

1960년대 : 프로그래밍 언어의 발전

  • Cobol : 레코드 타입의 소개. 서로다른 자료형을 한 묶음으로 표현. 사무용 언어
  • BASIC : 교육용언어
  • Simula : 객체지향의 등장

1970년대 : 프로그래밍 언어의 단순화

  • Pascal : 차세대 교육용 언어. 구조화 프로그래밍 지원
  • C : 진정한 시스템 프로그래밍 언어. Unix 개발용 언어
  • Prolog : 선언적 논리 언어
  • Smalltalk : 객체지향 언어의 발전. GUI, 마우스 등을 도입
  • Ada : 안정성을 위한 언어. 매우 복잡함
  • ML : 타입 시스템을 갖춘 현대 프로그래밍 언어. 강력한 정적 타입 검사
  • Scheme : 간결한 LISP

1980년대 : 현대 프로그래밍 언어 등장

  • Common Lisp : 방대한 LISP의 통합. 객체지향 도입
  • Object-C : C를 기초로한 객체지향 언어
  • C++ : 객체지향 C언어
  • Perl : 문자열 처리를 위한 언어

1990년대 : 프로그래밍 언어의 대중화

  • Java : 단순한 객체지향 언어. JVM 도입
  • JavaScript : 웹 프로그래밍 언어
  • Python : 빠른 프로토타이핑 언어. 스크립트 언어
  • Haskell : 순수 함수형 언어. monad 탑재

프로그램 동작 원리

컴퓨터 동작 원리

CPU : 인출-해석-실행 주기를 반복하여 메모리에 적재된 프로그램의 명령어를 실행

 

프로그래밍 언어 구현이 필요한 이유

  • 기계어 : CPU가 이해하고 수행하는 명령어라 사람이 이해하기 매우 어려움
  • 어셈블리어 : 기계어에 거의 일대일 대응하는 형태의 기호 언어(CPU에 종속적)
  • 고급프로그래밍 언어 : 사람에 가까운 표현. 기계에 종속적이지 않음. 소스프로그램을 목적프로그램으로 변환 필요

 

구현방법

  • 컴파일러 : 소스프로그램을 미리 해석함.(효율적)
  • 인터프리터 : 명령어를 하나씩 해석함. CPU의 인출-해석-실행주기를 흉내냄.
  • 하이브리드 : 인터프리터와 컴파일러 조합. ex) JVM

프로그래밍 언어의 평가 기준

요구사항

  • 표현 풍부성 : 프로그래머의 아이디어를 표현할 수 있어야 함
  • 유지보수성 : 변화에 쉽게 대처할 수 있어야 함
  • 실행 가능성 : 컴퓨터에서 실행할 수 있어야 함

설계원칙

  • 규칙성 : 언어의 기능이 잘 조합될 수 있어야 함(일반성, 직교성, 일관성)
  • 추상화 지원 : 실세계의 대상을 추상화할 수 있고 이를 대상으로 연산할 수 있어야 함(데이터 추상화, 제어 추상화, 추상 데이터 타입 정의)
  • 복잡도 제어 : 복잡한 대상 및 처리 방법을 제어할 수 있어야 함(캡슐화, 모듈화)

평가기준

  • 작성력 : 수식, 문장을 쉽게
  • 가독성 : 쉽게 이해할 수 있게 작성할 수 있는가
  • 신뢰성 : 오류에 빠지는 가능성을 줄일 수 있는가
  • 직교성 : 언어 기능이 서로 간섭하지 않고 자유롭게 조합 가능
  • 일관성 : 유사 기능을 같은 형태로 나타낼 수 있는가
  • 확장성 : 새로운 기능 추가
  • 효율성 : 프로그램이 효율적으로 수행할 수 있는가
  • 유연성 : 프로그래머가 표현하고 싶은 용을 수용할 수 있는가
  • 이식성 : 다른 환경에서 실행할 수 있는가

선택기준

  • 커뮤니티가 활발한지
  • 특정 응용 분야에서 사용됨
  • 새로운 패러다임을 지원

'방송대 > 프로그래밍언어론' 카테고리의 다른 글

프로그래밍 언어의 구현  (0) 2022.09.24
구문분석  (0) 2022.09.24
구문론과 의미론  (0) 2022.09.07
프로그래밍 언어 패러다임  (0) 2022.09.05
1장 프로그래밍 언어 소개  (0) 2022.08.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함