티스토리 뷰

목차

     

    프로그래밍 언어의 발전

    동작 방식의 발전

    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
    링크
    «   2024/07   »
    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 31
    글 보관함