Computers/Programming Language

ch1. preliminaries

emzei 2012. 3. 13. 14:11

◆ Reasons for studying concepts of PLs

  • Increased capacity to express ideas 
  • Improved background for choosing appropriate language
    • (적합한 언어를 선택)
  • Increased ability to learn and describe new languages
    • (새로운 언어를 쉽게 학습, cf. C언어는 알골 계열의 언어)
  • Better understanding of the significance of implementation
    • 구현의 중요성(컴파일러마다 조금씩 상이)
  • Better use of languages that already known
    • (이미 알고 있는 언어를 더 잘 사용할 수 있음)
  • Overall advancement of computing
    • (컴퓨팅하는데에 전반적으로 발전)


◆ Programming Domain (분야)

  • 과학기술분야
    • 계산
  • 사무처리분야
    • 자료(레코드) 정리 및 정렬, 출력
  • 인공지능분야
  • 시스템프로그래밍
    • 고급언어로 만드는 OS (과거에는 어셈블리어로 구성, 오늘날은 고급언어.  파일 크기가 커지고 속도가 저급언어에 비해 느리지만, 고급언어로 하면 실수할 확률이 적어지고 코딩하기 용이함)
  • 웹 소프트웨어
    • 보통 컴파일러보다 인터프리터
  • 초고급언어
    • 짧은 코드 ( 쓰기 좋다 / 컴파일 후 코드가 길어진다 )
  • 특수목적언어
    •  특정 상황 모방 ( simulator )
  • 객체지향
  • JAVA, XML
  • 다음은 어떤 분야들이???
    • 3대 NEW 패러다임 : 객체지향 / 논리지향 / 함수 지향


◆ Language evaluation criteria

▷ Readability

- writability와 상충 관계

- 너무 많은 개념은 좋지않음

- 중복되는 개념은 좋지 않음

- 연산자가 오버로딩되면 가독성이 떨어짐

(a+1에서 더하기가 정수연산인지 실수연수인지)

Orthogonality - 직교한다 -> 중복이없다 -> 객체의 역할 분담-> 결합성

- 제어문 : 70년대 'go to' 논란

- 데이터 타입과 구조 - 단순


▷ Writability

- 단순성과 직교성

- 추상화 지원

- 표현


▷ Reliability (신뢰도)

- 타입 체크

  • 컴파일 체크/런타임체크

- 예외 처리

- 별칭/별명

  • 혼동하기 쉬움(신뢰도 하락, 일관성 X)

- readability와 wirtability (reliability와 상충)

▷ Cost


◆ Influences on language design

▷컴퓨터 구조

- 폰노이만 방식 : 언어 사용하기에 환경/성능이 좋아짐

- 비 폰노이만 방식 : 병렬처리/함수형언어 등에 용이


▷프로그래밍 설계 방법

- 어셈블리 프로그래밍

- 고급언어

- 구조화된 프로그래밍

- 시스템 프로그래밍

- 객체지향 프로그래밍

- 인공지능 프로그래밍

- network transparent 프로그래밍

- 그외


◆ Language categories

- 명령

- 함수

- 논리

- 객체지향

- markup


◆ Language design trade-offs

- 상충관계 

  • 신뢰성 vs 실행비용
  • 가독성 vs wriatability
  • 유연성 vs 안전성

◆ Implementation methods

▷컴파일-실행

: 번역->실행(실행속도 빠름) / 컴파일~ *최적화

▷인터프리터

:번역X, 실행(실행속도 느림) / ex. command


하이브리드 구현시스템

- 중간정도 분석된 코드를 인터프맅하여 실행 (실행시간 단축)


◐전처리기

- 전처리문,전처리지시어,전처리명령어

- pcc

- RatFOR

- 효과: language extension


◆ Programming environments

- 소프트웨어 개발 도구들 ...

'Computers > Programming Language' 카테고리의 다른 글

ch6-2. Data Type  (0) 2012.03.19
ch6-1. Data Type  (0) 2012.03.17
ch5. Names, bindings, type checking, and scope  (0) 2012.03.16
ch4. Lexical and syntax analysis  (0) 2012.03.15
ch3. describe syntax and semantics  (0) 2012.03.14