및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기...

36
1 소개 소개 소개 소개 강대기 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산 패러다임 언어 정의, 구현 및 설계

Transcript of 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기...

Page 1: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

1 장 장장장소개소개소개소개 강대기

강대기

프로그래밍언어란무엇인가

?프로그래밍언어에서의추상화

연산패러다임

언어정의

, 구현및설계

Page 2: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

원리

•왜프로그래밍언어를배우는가

?–언어가사고를지배함

–언어는사고의감옥

–프로그래밍언어는우리가컴퓨터에대해생

각하는바에영향을줌 ?

•컴퓨터가하는일은

?–연산

–정보처리

–컴퓨터≈대략사고하는기계

–연산의상한

: 튜링머신

프로

그래

밍언

어론

2

Page 3: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

프로그래밍언어란

?

•프로그래밍언어의정의

1–컴퓨터에게우리가원하는일을시키기위한

표현체계

•인간대기계간의통신모델

•인간대기계간의통신모델

•프로그래밍언어의정의

2–연산을기계가읽을수있고사람이읽을수

있도록기술하는표현체계

•사람대기계통신모델

•또한사람대사람통신모델

프로

그래

밍언

어론

3

Page 4: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

연산이란

?

•튜링튜링튜링튜링머신머신머신머신

(중요중요중요중요

!)–컴퓨터의

컴퓨터의

컴퓨터의

컴퓨터의수학적

수학적

수학적

수학적모델모델모델모델

•처치의설정

(Chu

rch’

s Th

esis)

–튜링머신보다더강력한기계를만드는것은근

본적으로불가능하다

.본적으로불가능하다

.•연산

–컴퓨터에의해수행될수있는모든처리과정

•튜링완전성

–튜링머신이수행할수있는어떤연산이라도기

술할수있는프로그래밍언어는튜링완전

(Tur

ing c

om

ple

te)하다

프로

그래

밍언

어론

4

Page 5: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

기계가독성

(기계가읽을수있음

)

•프로그래밍언어는기계가읽을수있는코드

로효율적으로번역할수있는정도로단순해

야함

–번역이가능해야함

•번역하는알고리즘이존재해야함

•번역하는알고리즘이존재해야함

–번역은충분히쉬어야

(eas

y)함

•컴파일시간이컴파일된프로그램의실제실행시간보

다크면안됨

•컴파일시간이선형시간에수행가능하게한다면

, 문법

은컨텍스트프리문법

(cont

ext-free

gra

mm

ar)에의해

기술되어야함

프로

그래

밍언

어론

5

Page 6: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

인간가독성

(사람이읽기쉬워야

)

•추상화

–프로그램언어는컴퓨터하드웨어의추상화를제

공해야함

–프로그래밍언어는컴퓨터기계의상세한부분은

감출수있어야함

•복잡도제어

–큰프로그램을읽기힘들다

–연산의효과가나타내는범위를작게한다면가독

성이높아짐

–큰프로그램의복잡성을제어하기위한방법중

하나로모듈화접근방법이있음

프로

그래

밍언

어론

6

Page 7: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

추상화

•추상화가가진두가지측면

–상세함을감춘다

–중요한부분은보인다

•몬드리안

(Mond

rian

) 나무들

•몬드리안

(Mond

rian

) 나무들

프로

그래

밍언

어론

7

Page 8: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

사람이용이하게쓰도록

(write

)하는점은어

떤가

•프로그래밍언어는프로그램을읽기쉽게하는게아니

라쓰기쉽게하는거아니던가요

?•프로그램을쓰기쉽게하는건

,전문가나해커들이좋아

하는목표임

–Pe

rl은매우쓰기쉬우나읽기는어려움

–Pe

rl은매우쓰기쉬우나읽기는어려움

•가독성

(Rea

dab

ility

)이야말로진정한목표

–프로그래머가프로그램을짜면그프로그램은후에많은사람들

이읽게됨

•유지보수성

(mai

ntai

nabilt

y)은어떤가

?–유지보수성은프로그래밍언어의가독성

(rea

dab

ility

)과쓰기편

함(w

rita

bili

ty)과직접적으로연관되어있음

프로

그래

밍언

어론

8

Page 9: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

프로그래밍에서의추상화

•추상화범주

–데이터추상화

–제어추상화

•추상화레벨

•추상화레벨

–기본추상화

: 지역화된데이터

/정보의추상화

–구조화된추상화

: 프로그램구조의추상화

–단위추상화

: 전체프로그램의추상화

프로

그래

밍언

어론

9

Page 10: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

추상화의예

데이터추상화

제어추상화

기본추상화

기본적인값, 변수,

데이터형

표현식(expression)

평가, goto,

배정문(assignment)

프로

그래

밍언

어론

10

배정문(assignment)

구조화된

추상화

데이터구조,

구조화된형

구조화된제어,

서브프로그램

단위추상화

추상화데이터형, 소프트웨어

컴포넌트,라이브러리

Page 11: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

연산패러다임

•패러다임이란

?–토마스쿤

–스타일

, 패턴

, 전형적인예들

–문제해결을위한일반적인모델

–문제해결을위한일반적인모델

•연산패러다임에영향을주는요소

–컴퓨터하드웨어

–수학적인연산모델

프로

그래

밍언

어론

11

Page 12: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

프로그래밍패러다임

(중요

!)•

http

://e

n.w

ikip

edia

.org

/wik

i/Pr

ogra

mm

ing_p

arad

igm

•임퍼러티브패러다임

(Imper

ativ

e Pa

radig

m)

–폰노이만모델

(von

Neu

man

n m

odel

)–내장프로그램에의해프로세서가움직인다

•함수패러다임

(Fun

ctio

nal P

arad

igm

)–함수의추상적인개념에근거

–람다칼큘러스또는람다계산법

(lam

bda

calc

ulus

) –주로함수표

–람다칼큘러스또는람다계산법

(lam

bda

calc

ulus

) –주로함수표

현에기반하는형식시스템

(쉽게말해프로그래밍언어

)•논리패러다임

(Logic

Par

adig

m)

–기호논리에근거함

–수학적인연역법

(ded

uction)

•객체지향패러다임

(Obje

ct-O

rien

ted P

arad

igm

)–실세계

, 객체들간의상호작용에근거

–임페러디브패러다임의확장

프로

그래

밍언

어론

12

Page 13: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

임퍼러티브프로그래밍

•폰노이만모델

(von

Neu

man

n M

odel

)–프로세서는내장된컴퓨터

프로그램에의해움직인다

–컴퓨터메모리안에데이터

뿐만아니라프로그램도들

어간다

(너무당연해보이지

Processor

어간다

(너무당연해보이지

만그당시에는획기적이었

음)

–fe

tch-

dec

ode-

exec

ute 사이

•폰노이만병목현상

(bottle

ne

ck)

•대표적언어

: C

프로

그래

밍언

어론

13

Memory

Page 14: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

임퍼러티브프로그래밍예

function gcd (u, v: in integer) return integer is

y, t, z: integer;

begin

z := u;

y := v;

loop

loop

exit when y = 0;

t := y;

y := z mod y;

z := t;

end loop;

return z;

end gcd;

프로

그래

밍언

어론

14

Page 15: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

객체지향프로그래밍

•객체

–메모리위치

+ 적용가능한오퍼레이션

•클래스

–동일한특성을가진모든객체들을기술함

–객체들의행동을정의함

–객체들의행동을정의함

–클래스의인스턴스가객체

•메시지와메쏘드

–1

+ 2

–임퍼러티브한관점

: + 는데이터

1,2에적용됨

–객체지향관점

: 메시지

(+ 2

)가객체

1에보내짐

, 이때

+는객체

1의메쏘드

프로

그래

밍언

어론

15

Page 16: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

객체지향프로그래밍예

(1/2

)import java.io.*;

class IntWithGcd

{ public IntWithGcd( int val ) { value = val; }

public int getValue() { return value; }

public int gcd ( int v )

{ int z = value; /* “imperative”version */

int y = v;

while ( y != 0 )

{ int t = y; y = z % y; z = t;

} return z;

} private int value;

}

프로

그래

밍언

어론

16

Page 17: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

객체지향프로그래밍예

(2/2

)class GcdProg /* driver */

{ public static void main (String args[])

{ System.out.println("Input two integers:");

BufferedReader in = new BufferedReader(

new InputStreamReader(System.in));

try /* must handle I/O exceptions */

{ IntWithGcd x = /* create an object */

{ IntWithGcd x = /* create an object */

new IntWithGcd(Integer.parseInt(in.readLine()));

int y = Integer.parseInt(in.readLine());

System.out.print("The gcd of " + x.getValue()

+ " and " + y + " is ");

System.out.println(x.gcd(y)); }

catch ( Exception e)

{ System.out.println(e); System.exit(1); }

}

}

프로

그래

밍언

어론

17

Page 18: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

함수프로그래밍

•연산이란함수의평가이다

.–연산을함수의평가라는관점에서응용한언어들

•함수언어

–값기반

–변수나배정문은사용불가

–루프도사용불가

•재귀함수이론에근거한이론적인특성들

튜링완전성은다음을통해얻을수있음

–정수값들

–수학함수들

–이미가지고있는함수

, 선택

, 및재귀를통해새로운함수를정

의할수있는메카니즘

프로

그래

밍언

어론

18

Page 19: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

함수프로그래밍예

(define (gcdu v)

(if (= v 0) u

(gcd v (modulo u v))))

(define (euclid) ; sequential!

(display "enter two integers:")

(newline) ; goes to next line on screen

function gcd

(let ((u (read)) (v (read)))

(display "the gcd of ")

(display u)

(display " and ")

(display v)

(display " is ")

(display (gcd u v))

(newline)))

프로

그래

밍언

어론

19

gcddriver

Page 20: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

논리프로그래밍

•연산은증명이다

–선언적인언어들

•논리언어들

–프로그램은참인주장

(ass

ertion)들의집합

–프로그램은참인주장

(ass

ertion)들의집합

–하부구조에내재된시스템들이제어흐름을

결정

–아주고차원적인언어들

프로

그래

밍언

어론

20

Page 21: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

논리프로그래밍예

gcd(U,V,U):-V=0.

gcd(U,V,X):-not(V=0),

YisUmodV,

gcd(V,Y,X).

프로

그래

밍언

어론

21

Page 22: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

다중패러다임언어

•순수하게하나의패러다임만가지고있는언어는거의

없음

•현재의임퍼러티브언어들은재귀호출을지원함

–다음슬라이드의

C 프로그램

•어떤객체지향언어들은기본형데이터와객체들을구

•어떤객체지향언어들은기본형데이터와객체들을구

별함–자바언어는두개의정수데이터형이있음

: 기본정수

(int), 그

리고객체정수

(Integer)

•대부분의함수언어들은시퀀싱

(순서대로나열

)기능이

있음–

Sche

me 언어에서는입출력을위해시퀀싱사용

프로

그래

밍언

어론

22

Page 23: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

함수스타일

C 프로그램

#include <stdio.h>

int gcd(int u, int v) /* “functional”version */

{if (v == 0) return u;

else return gcd (v, u % v); /* “tail”recursion */

} main() /* I/O driver */

main() /* I/O driver */

{ int x, y;

printf("Input two integers:\n");

scanf("%d%d",&x,&y);

printf("The gcd of %d and %d is %d\n",

x,y,gcd(x,y));

return 0;

}

프로

그래

밍언

어론

23

Page 24: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

일반재귀호출

(Rec

ursion)

•in

t su

m(in

t n)

•{

•if(

n == 1

)•

retu

rn 1

;•

retu

rn n

+ s

um(n

-1);

•}

•}

•su

m(3

) =>

•3

+ s

um(2

) <--

(1)

•3

+ (2

+ s

um(1

))•

3 + (2

+ (1)

)•

3 + (3)

<--

(2)

•6

프로

그래

밍언

어론

24

Page 25: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

꼬리재귀호출

(Tai

l Re

curs

ion)

•in

t su

m(in

t n,

int

acc

)•

{•

if(n

== 1

)•

retu

rn (ac

c+1)

;•

retu

rn s

um(n

-1, a

cc+n)

;•

}•

}

•su

m(3

, 0) =>

•su

m(2

, 3) <

--(3

)•

sum

(1, 5

)•

6 <

--(4

)•

6•

6

프로

그래

밍언

어론

25

Page 26: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

언어의정의

•언어를왜정의해야하는가

?1.주어진프로그램에대해어떤연산이실제수행되는가를알기

위해

2.프로그램에대해수학적으로사고해내기위해

3.언어의구현을정확히하기위해

(기계에독립적으로

)4.프로그래머가부딪히는어려운문제를풀기위해

5.언어의설계과정에서이론적원리를만들고제공하기위해

•언어의정의가필요한사람은

?–프로그래머

: 1, 2

, 4–언어를구현하는사람

: 3–언어를설계하는사람

: 5

프로

그래

밍언

어론

26

Page 27: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

언어를정의하는방법

•언어는다음으로정의됨

–신택스

(syn

tax)

: 프로그램의구조

–시멘틱스

(sem

antics

): 프로그램의의미또는실행

•참고

: 시멘틱웹

•신택스의정의

•신택스의정의

–우리가쓰는자연어

–컨택스트프리언어

(cont

ext-free

gra

mm

ar) (4

장참

고)

•의미의정의

–자연어

: 정확하지않음

–형식적방법

(form

al m

etho

ds)

: 너무어려움

(13 장

)

프로

그래

밍언

어론

27

Page 28: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

언어번역기

•언어번역기

–언어로쓰여진프로그램을받아서실행함

–언어처리기라고도함

•언어언어언어언어번역기의

번역기의

번역기의

번역기의두 두두두가지가지가지가지형태형태형태형태

(중요중요중요중요

!)•언어언어언어언어번역기의

번역기의

번역기의

번역기의두 두두두가지가지가지가지형태형태형태형태

(중요중요중요중요

!)–인터프리터

(inte

rpre

ter) -통역

–컴파일러

(com

pile

r) -번역

–의사인터프리터또는하이브리드번역기

(pse

udo-int

erpre

ter,

or

hybrid t

rans

lato

r)

프로

그래

밍언

어론

28

Page 29: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

인터프리터

INTERPRETER

Source

Code

input

output

프로

그래

밍언

어론

29

INTERPRETER

input

output

Page 30: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

컴파일러

COMPILER

Source

Code

Target

Code

further translation

(assembler or linker)

프로

그래

밍언

어론

30

(assembler or linker)

Executable

Code

processor

(real machine)

input

output

Page 31: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

의사인터프리터

COMPILER

Source

Code

Intermediate

Intermediate

Code

프로

그래

밍언

어론

31

INTERPRETER

(virtual machine)

input

output

Page 32: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

언어번역의중요이슈들

•비표준적인특성들

–언어

⊂ 번역기가허용하는언어

–즉

, 번역기가비표준적인특성을가질수있다는

것임

→ 구현에의존하는프로그램

–비표준적인특성들은사용하지않는것이좋음

–비표준적인특성들은사용하지않는것이좋음

•언어특성들의분류

–정적특성들

: 프로그램실행이전에결정됨

–동적특성들

: 프로그램실행중에결정됨

–언어특성들은구현방법과그에상응하는실행

환경을결정함

프로

그래

밍언

어론

32

Page 33: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

번역의효율성

번역비용

실행속도

컴파일

높음

빠름

인터프리트

없음

느림

프로

그래

밍언

어론

33

인터프리트

없음

느림

하이브리드

중간

중간

Page 34: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

에러처리

•에러의종류

–신택스에러

(구문에러

): 프로그램이제대로표현

되지않았음

, 다른말로폼이안좋음

(not w

ell-

form

ed)

–시멘틱에러

(의미에러

)–시멘틱에러

(의미에러

)•정적시멘틱에러

: 컴파일시간에잡을수있음

(예를들

어, 호환되지않는데이터타입

)•동적시멘틱에러

: 실행시간에잡을수있음

(예를들어

, 0으로나누는것

)

–논리에러

: 프로그래머만이알고있는에러

•대부분의번역기들은디버깅툴들을지원함

프로

그래

밍언

어론

34

Page 35: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

에러의예

(Jav

a)public int gcd ( int v#) // lexicalerror

{ int z = value

// syntax error -missing ;

y = v;

// static semantic error -

// y undefined

while ( y >= 0 ) // dynamic semantic -

//

division by zero

//

division by zero

{ int t = y; y = z % y; z = t;

} return y;

// logicerror-should return t

}

프로

그래

밍언

어론

35

Page 36: 및설계 - Dongseokowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch01.pdf · 1 장 소개 강대기 프로그래밍 언어란 무엇인가? 프로그래밍 언어에서의 추상화 연산

언어설계

•추상화메커니즘

–사람이읽을수있어야하는데

,중요한요소

–훌륭하고일관성있는추상화집합이제공

•킬러응용프로그램

(크게히트치는프로그

램)

–C: U

nix

프로

그래

밍언

어론

36

–C: U

nix

–Ja

va: I

nter

net

–C++: 가장효율적인객체지향언어

•언어의실용성

–다른언어나시스템과인터페이스가용이함

–좋은

API

라이브러리