Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍...

29
Chapter 2 역사 1950 년대: 첫번째 프로그래밍 언어 1960 년대: 프로그래밍 언어들의 난리법석 1970 년대: 단순성, 추상성, 프로그래밍 언어론 1980 년대: 객체지향 프로그래밍 1990 년대: 인터넷, API, 스크립트 언어

Transcript of Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍...

Page 1: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

Cha

pte

r 2

역사

1950

년대

: 첫번째프로그래밍언어

1960

년대

: 프로그래밍언어들의난리법석

1970

년대

: 단순성

, 추상성

, 프로그래밍언어론

1980

년대

: 객체지향프로그래밍

1990

년대

: 인터넷

, API

, 스크립트언어

Page 2: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

수학그리고프로그램

•프로그래밍언어

–컴퓨터의진화의영향

–수학표현의발전의영향

•수학그리고프로그램

–수학자들은어떻게하느냐보다는무엇이냐에

Progra

mm

ing L

angua

ges

2

–수학자들은어떻게하느냐보다는무엇이냐에

더중점을둠

–무엇

: 특성

, 정리

–어떻게

: 알고리즘

, 프로시져

, 프로그림

–B.

C.6

00 년그리스이전에는모든수학이프로

그래밍이었음

Page 3: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

바빌론프로그램의예

•아주오랜옛날

, 연산이란게있었음

–바빌론스타일표현

[Knu

th 1

972]

네모난저수지가있는데

.가로길이와높이는같다

. 그저수지를만들려고판흙들이있는데

. 12

0.

Progra

mm

ing L

angua

ges

3

이흙들의부피는

120이다

. 저수지의가로길이는

5다. 저수지의세로길이는

?//

너무평이하므로번역할필요없음

Add 1

to 5

, get

ting

6.

Div

ide

6 in

to 1

20, o

bta

inin

g 2

0.

Div

ide

5 in

to 2

0, o

bta

inin

g t

he w

idth

, 4.

This is

the

pro

cedur

e.

Page 4: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

바빌론프로그램의추가설명

•기하학적인해결책을보이고있음

Are

a + V

olu

me

= T

(12

0 in

the

exa

mple

)Are

a = len

gth

×w

idth

Volu

me

= len

gth

×w

idth

×he

ight

Progra

mm

ing L

angua

ges

4

heig

ht =

len

gth

In c

ode:

�= �

* �

+ �

* �

* �

Solv

ing for

the

wid

th:

�= �

/ (�

+ �

* �

) = T

/

(1

+ �

) /

Page 5: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

초기의역사

•해석엔진

–찰스배비지

(183

0s-4

0s)

–기계적컴퓨터

–입출력방법

: 펀치카드

•최초의프로그래머

(여자임

)

Progra

mm

ing L

angua

ges

5

•최초의프로그래머

(여자임

)–어거스타에이다러브레이스백작부인

(Ada

Aug

usta

, Coun

tess

Love

lace

)–시인바이런의딸

–프로그래밍언어에서사용되는중요한개념인루

프, 점프

, IF문과같은제어문

, 서브루틴에관한개

념고안

Page 6: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

1950년대

•기초적인프로그래밍언어

–기계어코드

–어셈블리어

: 심볼과니모닉은있으나여전히기계

종속적임

(중요중요중요중요

!)•선구자적인고수준언어들

Progra

mm

ing L

angua

ges

6

•선구자적인고수준언어들

–임퍼러티브언어

•포트란

(FO

RTRAN

)•코볼

(CO

BOL)

•알골

(Alg

ol6

0)–함수언어

•리스프

(LIS

P)•

APL

Page 7: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

FORT

RAN

(중요

!)

•FO

Rm

ula

TRAN

slat

ion

•Jo

hn B

acku

s, IBM

(19

54~19

57)

•최초의고수준프로그래밍언어

•목적코드의효율화가궁극적목적

Progra

mm

ing L

angua

ges

7

•특징들

–배열

–인덱스변수에의해루프제어

–if 문에의한브랜치

(bra

nch)

•아직도쓰이고있음

(Fort

ran

I, II,

III,

IV,

Fo

rtra

n66,

Fort

ran7

7, F

ort

ran9

0, F

ort

ran9

5)

Page 8: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

코볼

(CO

BOL)

(중요

!)

•Com

mon

Busine

ss-O

rien

ted lan

gua

ge

•그레이스하퍼

(Gra

ce H

opper

), 미해군

, 미국

국방성

(195

9~19

60)

•산업계에서는많이애용되었지만

, 학계에서

는무시당해왔음

(장황한문법때문인데

, 사

Progra

mm

ing L

angua

ges

8

는무시당해왔음

(장황한문법때문인데

, 사실그당시가장영어에가까운프로그래밍

언어

)•특징

–레코드구조

–데이터구조와실행블록의분리

–“picture”를이용한포맷팅

Page 9: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

Alg

ol6

0

•ALG

Orith

mic

Lang

uage

•국제위원회에의해만들어짐

(195

8~19

60)

•알고리즘구현을위한언어

•특징

–구조화된문장

Progra

mm

ing L

angua

ges

9

–구조화된문장

–beg

in-e

nd 블럭

–변수의형

(typ

e)선언

–재귀호출

→ 스택기반실행환경

–값기반호출

•문법은

BNF

(Bac

kus-

Nau

r Fo

rm)에의해정

Page 10: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

리스프

(LIS

P) (중요

!)

•LI

St P

roce

ssor

•존매카시

(John

McC

arth

y), M

IT (19

58~19

60)

•특징

–인공지능에서의심볼프로그래밍

Progra

mm

ing L

angua

ges

10

–인공지능에서의심볼프로그래밍

–하나의데이터구조

, S 표현식

(S-e

xpre

ssio

n)–쓰레기수집

(gar

bage

colle

ctio

n)–재귀호출

(rec

ursion)

•리스프의방언들이여전히쓰이고있음

(예를

들어

, Sch

eme,

Com

mon

Lisp

)

Page 11: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

APL

•A P

rogra

mm

ing L

angua

ge

•K. I

vers

on,

Har

vard

, lat

e 19

50s

•Tr

ansf

erre

d to IBM

, ear

ly 1

960s

Progra

mm

ing L

angua

ges

11

•특징

–배열과매트릭스연산

–초기의시분할시스템에서사용됨

(IBM

360

)–단점

: 수학심볼을위해서특별한터미널이필

Page 12: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

1960년대

•프로그래밍언어들이마구등장하기시작

(50쪽

그림

2.1)

•특화된목적의프로그래밍언어들이등장

•주목할만한언어들

–PL

/I: 범용언어의시조

Progra

mm

ing L

angua

ges

12

–PL

/I: 범용언어의시조

–Alg

ol6

8: 직교적설계

(ort

hogona

l des

ign)

•직교성

–언어가문맥에따라다른의미를가지지않는것

•직교성이안되는경우의예

–C에서의배열

–다른특화된언어들

•SN

OBO

L•

Sim

ula6

7•

ISW

IM•

BASI

C

Page 13: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

PL/I

•IB

M 3

60 시리즈를위한언어

(196

3~19

64)

•다른모든프로그래밍언어를아우르기위한

꿈으로시작된범용언어

→ 실패함

!•설계의목적

–FO

RTRAN

, CO

BOL, A

lgol6

0의모든특성을망라

Progra

mm

ing L

angua

ges

13

–FO

RTRAN

, CO

BOL, A

lgol6

0의모든특성을망라

함–병행성

(conc

urre

ncy)과예외처리

(exc

eption

hand

ling)

•단점

–언어번역기를만들기어렵다

–배우기어렵고

, 에러를내기쉽다

Page 14: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

Alg

ol6

8

•국제위원회

(196

3~19

68)

•특징

–완전히직교적인언어

–Alg

ol6

0에새로운특징들이추가됨

Progra

mm

ing L

angua

ges

14

–Alg

ol6

0에새로운특징들이추가됨

•단점

–너무복잡함

: 거의읽을수없는난해한언어

참조매뉴얼

→ 실패

!

Page 15: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

SNO

BOL

•St

riN

g O

rien

ted s

ymBO

lic L

angua

ge

•D. F

arber

, R. G

risw

old

, and

I. P

olo

nsky

of

Bell

Labs

(196

2~3)

•스트링을처리하는언어

Progra

mm

ing L

angua

ges

15

•스트링을처리하는언어

•강력한패턴매칭능력을가지고있음

Page 16: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

Sim

ula6

7

•Krist

en N

ygaa

rd a

nd O

le-J

oha

n D

ahl,

Norw

egia

n Com

put

ing C

ente

r (1

965~

7)•시뮬레이션에사용되는언어

•객체지향언어에필수적인클래스

(cla

ss)

Progra

mm

ing L

angua

ges

16

•객체지향언어에필수적인클래스

(cla

ss)

개념도입

Page 17: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

ISW

IM

•If

you

See

Wha

t I M

ean

•Pe

ter La

ndin

(196

6)•현대의함수언어의조상

(say

Has

kell,

ML)

•특징

–느긋한계산법

(lazy

eva

luat

ion)

(중요

!)

Progra

mm

ing L

angua

ges

17

–느긋한계산법

(lazy

eva

luat

ion)

(중요

!)•결과값이필요할때까지계산을미룸

•1.

지연계산법

–함수형언어에서많이사용됨

•2.

최소계산법

–오프사이드규칙

(중요

!)•인덴테이션에의해변수의영역이결정됨

•최근의경우이런대표적인언어는파이썬

(Pyt

hon)임

Page 18: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

BASI

C (중요

!)

•Be

gin

ners

All-

pur

pose

Sym

bolic

In

stru

ctio

n Code

•Jo

hn K

emen

y an

d T

hom

as K

urtz

at

Dar

tmout

h Colle

ge

(196

4)

Progra

mm

ing L

angua

ges

18

Dar

tmout

h Colle

ge

(196

4)•시분할시스템을위한언어

•나중에마이크로컴퓨터에서채택되었음

•AN

SI S

tand

ard “

min

imal

BASI

C”

(197

8)•

AN

SI ful

l St

andar

d B

ASI

C (19

88)

Page 19: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

1970년대

•단순함과추상화

•언어의복잡함으로인해

, PL/

I 과

Alg

ol6

8가실패했었기때문임

•주목할만한언어들

Progra

mm

ing L

angua

ges

19

•주목할만한언어들

–가장유명한

: Pas

cal,

C–

ADT

(추상데이터형

) 연구

: CLU

, Euc

lid, M

esa

–규제되는

LISP

: Sch

eme

–다른것들

: ML

(Miln

er, 1

978~

), FP

(Ba

ckus

, 19

78),

Prolo

g (Colm

erau

er 1

972~

1982

)

Page 20: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

파스칼

(Pas

cal)

(중요

!)

•N

ikla

us W

irth

(19

71)

•Alg

ol6

8의기본개념들만강조

•작고

, 단순하고

, 효율적이고

, 구조적인언어

•프로그래밍을가르칠때교육용으로많이사용되었음

Progra

mm

ing L

angua

ges

20

•다음의중요한특성들이빠짐

–분리컴파일

–스트링다루기

–확장가능한입출력기능

–[K

erni

gha

n 19

81, “

Why

Pas

cal i

s N

ot M

y Fa

vorite

Pro

gra

mm

ing

Lang

uage”

] 참고

Page 21: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

C (매우중요

!)

•벨연구소의데니스리치

(Den

nis

Ritc

hie)

(1

972)

•형

(typ

e sy

stem

s) 체계를단순화함

•단순한실행환경

(함수는

nest

ing이안됨

)

Progra

mm

ing L

angua

ges

21

•단순한실행환경

(함수는

nest

ing이안됨

)•중간수준언어

: 기계에더가깝게다가간

언어

•운영체제프로그래밍에사용됨

(Uni

x)

Page 22: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

1980년대

•객체지향

•중요한언어들

–Ada

(John

Ich

bia

h, ~

1983

)–

Modul

a-2

(Nik

laus

Wirth

, 198

2)

Progra

mm

ing L

angua

ges

22

–M

odul

a-2

(Nik

laus

Wirth

, 198

2)–

Smal

ltal

k (A

lan

Kay

, ~19

80)

–C++ (Bj

arne

Strous

trup

, 198

0~19

98)

Page 23: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

Ada

(Ada8

3)

•Jo

hn Ich

bia

h Te

am (~19

80)

•미국방성의프로젝트언어

•특징

–패키지

(pac

kage)를통한추상데이터타입

Progra

mm

ing L

angua

ges

23

–패키지

(pac

kage)를통한추상데이터타입

(ADT)

지원

–태스크

(tas

k)를통한병렬프로글래밍지원

–매우크고복잡한언어

–19

80년대의

PL/I

•19

83년에국제표준으로채택되었음

Page 24: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

Modul

a-2

•N

ikla

us W

irth

(19

82, r

evised

in

1985

and

19

88)

•특징

–모듈

(modul

e): A

da의패키지개념

Progra

mm

ing L

angua

ges

24

–모듈

(modul

e): A

da의패키지개념

–코루틴

(coro

utin

e): 제한적으로병행성지원

•교육용언어파스칼을대체함

•큰소프트웨어프로젝트에는거의사용되

지않음

Page 25: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

Smal

ltal

k (S

mal

ltal

k-80

) (중요

!)

•제록스파크

(Xer

ox C

orp

ora

tion’

s Pa

lo A

lto

Rese

arch

Cen

ter)의

Ala

n Kay

, Dan

Ing

alls, e

t al

. at (1

972~

80)

•특징 Si

mul

a(c

lass

)

Progra

mm

ing L

angua

ges

25

–Si

mul

a언어의클래스

(cla

ss) 개념이더강화됨

–GUI 윈도우와마우스를통한환상적인

환상적인

환상적인

환상적인프로그래

밍환경

→ M

ac O

S →

Win

dow

s

•단점

–표시방법이일반적이지않음

–효율적인구현이어려움

Page 26: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

C++ (중요

!)

•벨연구소의비야네스트롭스트룹

(Bja

rne

Stro

ustrup

)•

C w

ith

clas

ses

•효율적인객체지향언어

Progra

mm

ing L

angua

ges

26

•효율적인객체지향언어

•대부분의플랫폼에서사용가능

•19

98 ISO

표준

C++ 제정

•C++0x

–20

09년도현재개발중인새로운

표준

Page 27: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

1990년대

:이제기술이만개하였다

•거대한프로그래밍라이브러리와

API들

•Ja

va (Ja

mes

Goslin

g, 1

995)

: 이미만들어진

API들과함께등장한최초의언어

•Ada의라이브러리들도많아짐

(Ada9

5).

•시스템프로그래밍분야도커짐

: 많은스크립

Progra

mm

ing L

angua

ges

27

•시스템프로그래밍분야도커짐

: 많은스크립

트언어들이도래함

(Per

l, Tc

l, Ja

vasc

ript,

VBS

crip

t, Py

thon)

•함수언어들도많아짐

:–

ML

(Miln

er, 1

978~

1988

)–

Has

kell

(Hud

ak, P

eyto

n-Jo

nes, W

adle

r, 19

89~19

98)

Page 28: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

과연미래는어떨까

?

•C# (20

00): 자바의자리를바꿀수있을까

?•

5~10년뒤의자바는어떠할까

? (대부분의

웹기반이아닌프로그램들은여전히

C++

나C로구현되어있음

.)

Progra

mm

ing L

angua

ges

28

나C로구현되어있음

.)•새로운언어가등장할까

?•프롤로그

(Pro

log)는어떻게될까

?•미래를예측하는게가능하기나할까

?

Page 29: Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍 언어 – 컴퓨터의 진화의 영향 – 수학 표현의 발전의 영향

알아두면좋은언어들

•C

•C++

•Ja

vaC#

•C#

•Py

thon

•Rub

y

Progra

mm

ing L

angua

ges

29