성인의 인지예비능이 인지기능에 미치는 영향 · 2020. 10. 12. · 성인의 인지예비능이 인지기능에 미치는 영향 -우울, 주관적 기억감퇴 및
Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍...
Transcript of Chapter 2 - kowon.dongseo.ac.krkowon.dongseo.ac.kr/~dkkang/PL2009Spring/Ch02.pdf · 프로그래밍...
Cha
pte
r 2
역사
1950
년대
: 첫번째프로그래밍언어
1960
년대
: 프로그래밍언어들의난리법석
1970
년대
: 단순성
, 추상성
, 프로그래밍언어론
1980
년대
: 객체지향프로그래밍
1990
년대
: 인터넷
, API
, 스크립트언어
수학그리고프로그램
•프로그래밍언어
–컴퓨터의진화의영향
–수학표현의발전의영향
•수학그리고프로그램
–수학자들은어떻게하느냐보다는무엇이냐에
Progra
mm
ing L
angua
ges
2
–수학자들은어떻게하느냐보다는무엇이냐에
더중점을둠
–무엇
: 특성
, 정리
–어떻게
: 알고리즘
, 프로시져
, 프로그림
–B.
C.6
00 년그리스이전에는모든수학이프로
그래밍이었음
바빌론프로그램의예
•아주오랜옛날
, 연산이란게있었음
–바빌론스타일표현
[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.
바빌론프로그램의추가설명
•기하학적인해결책을보이고있음
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
+ �
) /
�
�
초기의역사
•해석엔진
–찰스배비지
(183
0s-4
0s)
–기계적컴퓨터
–입출력방법
: 펀치카드
•최초의프로그래머
(여자임
)
Progra
mm
ing L
angua
ges
5
•최초의프로그래머
(여자임
)–어거스타에이다러브레이스백작부인
(Ada
Aug
usta
, Coun
tess
Love
lace
)–시인바이런의딸
–프로그래밍언어에서사용되는중요한개념인루
프, 점프
, IF문과같은제어문
, 서브루틴에관한개
념고안
1950년대
•기초적인프로그래밍언어
–기계어코드
–어셈블리어
: 심볼과니모닉은있으나여전히기계
종속적임
(중요중요중요중요
!)•선구자적인고수준언어들
Progra
mm
ing L
angua
ges
6
•선구자적인고수준언어들
–임퍼러티브언어
•포트란
(FO
RTRAN
)•코볼
(CO
BOL)
•알골
(Alg
ol6
0)–함수언어
•리스프
(LIS
P)•
APL
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)
코볼
(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”를이용한포맷팅
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)에의해정
의
리스프
(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
)
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
)–단점
: 수학심볼을위해서특별한터미널이필
요
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
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)
•단점
–언어번역기를만들기어렵다
–배우기어렵고
, 에러를내기쉽다
Alg
ol6
8
•국제위원회
(196
3~19
68)
•특징
–완전히직교적인언어
–Alg
ol6
0에새로운특징들이추가됨
Progra
mm
ing L
angua
ges
14
–Alg
ol6
0에새로운특징들이추가됨
•단점
–너무복잡함
: 거의읽을수없는난해한언어
참조매뉴얼
→ 실패
!
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
•스트링을처리하는언어
•강력한패턴매칭능력을가지고있음
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)
개념도입
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)임
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)
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
)
파스칼
(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”
] 참고
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)
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)
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년에국제표준으로채택되었음
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): 제한적으로병행성지원
•교육용언어파스칼을대체함
•큰소프트웨어프로젝트에는거의사용되
지않음
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
•단점
–표시방법이일반적이지않음
–효율적인구현이어려움
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년도현재개발중인새로운
표준
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)
과연미래는어떨까
?
•C# (20
00): 자바의자리를바꿀수있을까
?•
5~10년뒤의자바는어떠할까
? (대부분의
웹기반이아닌프로그램들은여전히
C++
나C로구현되어있음
.)
Progra
mm
ing L
angua
ges
28
나C로구현되어있음
.)•새로운언어가등장할까
?•프롤로그
(Pro
log)는어떻게될까
?•미래를예측하는게가능하기나할까
?
알아두면좋은언어들
•C
•C++
•Ja
vaC#
•C#
•Py
thon
•Rub
y
Progra
mm
ing L
angua
ges
29