Обзорный курс по языкам программирования [Антон Евгеньевич Москаль kouzdra] (pdf) читать постранично

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

Îáçîðíûé êóðñ ïî ÿçûêàì ïðîãðàììèðîâàíèÿ
Àíòîí Ìîñêàëü

17 ÿíâàðÿ 2003 ã.

Îãëàâëåíèå
1

2

Îñíîâíûå êîíöåïöèè ÿçûêîâ ïðîãðàììèðîâàíèÿ

2

1.1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

1.1.1

ïåðåõîäû, õâîñòîâàÿ ðåêóðñèÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

1.1.2

if, match

2

1.1.3

öèêëû,

1.1.4

èñêëþ÷åíèÿ

Óïðàâëÿþùèå êîíñòðóêöèè

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

while

÷åðåç ðåêóðñèþ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

ßçûêè ïðîãðàììèðîâàíèÿ

3

2.1

3

2.2

2.3

2.4

ßçûêè àññåìáëåðà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

PDP-11

2.1.1

Ñèñòåìà êîìàíä

2.1.2

Ìåòêè, ëîêàëüíûå ìåòêè, îïåðàòîðû ïðèñâàèâàíèÿ è ñåêöèîíèðîâàíèÿ . . . . . . . . .

5

2.1.3

Ìàêðîñðåäñòâà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

2.1.4

Ìèíèìàëüíàÿ àðõèòåêòóðà:

ßçûê

C

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

PDP-8

3

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

2.2.1

CPL, BCPL,

ñîçäàíèå

B

2.2.2

Îïèñàíèå

B

2.2.3

PDP-11 :

2.2.4

Äàëüíåéøàÿ ýâîëþöèÿ

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

Ýâîëþöèÿ

Ôóíêöèîíàëüíûå ÿçûêè

B

â

C

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

C

λ-èñ÷èñëåíèÿ

2.3.1

Îñíîâíûå ïîíÿòèÿ

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.3.2

LISP, Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.3.3

ML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.3.4

ëåíèâûå ÿçûêè: Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.3.5

Ââîä-âûâîä â ÷èñòî ôóíêöèîíàëüíûõ ÿçûêàõ, ëèíåéíûå òèïû â Clean

. . . . . . . . .

6

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.4.1

Simula-67 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.4.2

SmallTalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.4.3

Self: Áåcêëàññîâûé ÎÎ-ÿçûê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.4.4

Ðàçëè÷íûå âèäû íàñëåäîâàíèÿ

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.4.5

Ìóëüòèìåòîäû: ßçûê Cecil

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

Îáúåêòíî-îðèåíòèðîâàííûå ÿçûêè

1

Ãëàâà 1

Îñíîâíûå êîíöåïöèè ÿçûêîâ
ïðîãðàììèðîâàíèÿ
1.1

Óïðàâëÿþùèå êîíñòðóêöèè

1.1.1

ïåðåõîäû, õâîñòîâàÿ ðåêóðñèÿ

1.1.2

if, match

1.1.3

öèêëû,

1.1.4

èñêëþ÷åíèÿ

while

÷åðåç ðåêóðñèþ

2

Ãëàâà 2

ßçûêè ïðîãðàììèðîâàíèÿ
2.1

ßçûêè àññåìáëåðà

ßçûêè àññåìáëåðà ÿâëÿþòñÿ ÿçûêàìè íèçêîãî óðîâíÿ, ïðåäíàçíà÷åííûìè äëÿ ïðîãðàììèðîâàíèÿ â òåðìèíàõ ìàøèííûõ êîìàíä. Íàèáîëåå ñóùåñòâåííûìè èõ îñîáåííîñòÿìè ÿâëÿþòñÿ:



ïðÿìîå ñîîòâåòñòâèå îïåðàòîðîâ àññåìáëåðà è ìàøèííûõ êîìàíä



ñðåäñòâà, ïîçâîëÿþùèå äåòàëüíî óïðàâëÿòü ðàçìåùåíèåì ïðîãðàììû è äàííûõ â ïàìÿòè



ìàêðîñðåäñòâà, ïîçâîëÿþùèå ñîçäàâàòü ïñåâäîêîìàíäû íåñêîëüêî áîëåå âûñîêîãî óðîâíÿ, íåæåëè
ìàøèííûå îïåðàöèè

 ñâîå âðåìÿ ÿçûêè àññåìáëåðà èñïîëüçîâàëèñü êàê ÿçûêè äëÿ ñèñòåìíîãî ïðîãðàììèðîâàíèÿ: íà íèõ
ïèñàëèñü îïåðàöèîííûå ñèñòåìû, êîìïèëÿòîðû è ïðîñòî ñòàíäàðòíûå óòèëèòû. Âûçûâàëîñü ýòî ñ îäíîé
ñòîðîíû íåäîñòàòêîì ãèáêîñòè òîãäàøíèõ ÿçûêîâ âûñîêîãî óðîâíÿ, ñ äðóãîé ñòîðîíû  êðàéíåé îãðàíè÷åííîñòüþ ðåñóðñîâ. Àññåìáëåð ïîçâîëÿåò âûæàòü èç àïïàðàòóðû ìàêñèìóì âîçìîæíîãî, îñîáåííî,
ïîêà îáúåìû ïðîãðàìì ñðàâíèòåëüíî íåâåëèêè è ïðîáëåìû, ñâÿçàííûå ñî ñëîæíîñòüþ è óïðàâëÿåìîñòüþ
ïðîåêòà íå íà÷èíàþò ñòàíîâèòüñÿ îïðåäåëÿþùèìè.
À íà ìàøèíàõ, ó êîòîðûõ îáúåì ïàìÿòè èñ÷èñëÿëñÿ òûñÿ÷àìè, â ëó÷øåì ñëó÷àå  äåñÿòêàìè òûñÿ÷
ñëîâ, îíè íå ìîãëè áûòü âåëèêè.
Ñî âðåìåíåì îáëàñòü ïðèìåíåíèÿ àññåìáëåðà ñóæàëàñü, è â íàñòîÿùèé ìîìåíò îíà îãðàíè÷åíà ïðîãðàììèðîâàíèåì êðèòè÷åñêèõ ïî ýôôåêòèâíîñòè ôðàãìåíòîâ êîäà (÷àñòî ïåðåïèñûâàíèå íåñêîëüêèõ äåñÿòêîâ
ñòðîê êðèòè÷åñêîãî ó÷àñòêà êîäà íà àññåìáëåð ñïîñîáíî äàòü âûèãðûø â ñêîðîñòè â íåñêîëüêî ðàç, èíîãäà
íà ïîðÿäêè), îñîáåííî, åñëè òàì âîçìîæíî èñïîëüçîâàíèå ñïåöèàëèçèðîâàííûõ êîìàíä, íàïîäîáèå êîìàíä
ñèãíàëüíûõ ïðîöåññîðîâ èëè

IA-32 SSE .

Êðîìå ýòîãî, ÿçûê àññåìáëåðà ÷àñòî èñïîëüçóåòñÿ êàê ïðîìåæóòî÷íîå ïðåäñòàâëåíèå ïðîãðàììû â

Unix,

ïðîöåññå êîìïèëÿöèè: áîëüøèíñòâî êîìïèëÿòîðîâ, ðàáîòàþùèõ ïîä

ïîðîæäàþò èìåííî àññåìáëåð,

êîòîðûé ïîòîì óæå êîìïèëèðóåòñÿ â îáúåêòíûé êîä.

2.1.1

PDP-11

Ñèñòåìà êîìàíä

PDP-11

 îäíà èç âû÷èñëèòåëüíûõ ìàøèí, ðàçðàáîòàííûõ ôèðìîé

DEC

(

Digital Equipment Corporation ) â

??? ãîäó. Õîòÿ ìàøèíà ïîëíîñòüþ óñòàðåëà, åå àðõèòåêòóðà îêàçàëà áîëüøîå âëèÿíèå íà