174

Иван Калинин - Как правильно выбрать язык программирования

  • Upload
    yandex

  • View
    241

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Иван Калинин - Как правильно выбрать язык программирования
Page 2: Иван Калинин - Как правильно выбрать язык программирования

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

Êàëèíèí Èâàí

15 íîÿáðÿ 2014

Page 3: Иван Калинин - Как правильно выбрать язык программирования
Page 4: Иван Калинин - Как правильно выбрать язык программирования

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

• èñêóññòâåííûé ÿçûê

• äëÿ êîììóíèêàöèè �÷åëîâåê� => �ìàøèíà�

• â ÷àñòíîñòè, äëÿ ïåðåäà÷å êîìïüþòåðóèíñòðóêöèé è êîìàíä

• ò.ê. êîìïüþòåðû äî ñèõ ïîð ïëîõî ïîíèìàþòåñòåñòâåííûå ÿçûêè

• è ëþäè ïëîõî ïîíèìàþò ìàøèííûé ÿçûê

Page 5: Иван Калинин - Как правильно выбрать язык программирования

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

• èñêóññòâåííûé ÿçûê

• äëÿ êîììóíèêàöèè �÷åëîâåê� => �ìàøèíà�

• â ÷àñòíîñòè, äëÿ ïåðåäà÷å êîìïüþòåðóèíñòðóêöèé è êîìàíä

• ò.ê. êîìïüþòåðû äî ñèõ ïîð ïëîõî ïîíèìàþòåñòåñòâåííûå ÿçûêè

• è ëþäè ïëîõî ïîíèìàþò ìàøèííûé ÿçûê

Page 6: Иван Калинин - Как правильно выбрать язык программирования

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

• èñêóññòâåííûé ÿçûê

• äëÿ êîììóíèêàöèè �÷åëîâåê� => �ìàøèíà�

• â ÷àñòíîñòè, äëÿ ïåðåäà÷å êîìïüþòåðóèíñòðóêöèé è êîìàíä

• ò.ê. êîìïüþòåðû äî ñèõ ïîð ïëîõî ïîíèìàþòåñòåñòâåííûå ÿçûêè

• è ëþäè ïëîõî ïîíèìàþò ìàøèííûé ÿçûê

Page 7: Иван Калинин - Как правильно выбрать язык программирования

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

• èñêóññòâåííûé ÿçûê

• äëÿ êîììóíèêàöèè �÷åëîâåê� => �ìàøèíà�

• â ÷àñòíîñòè, äëÿ ïåðåäà÷å êîìïüþòåðóèíñòðóêöèé è êîìàíä

• ò.ê. êîìïüþòåðû äî ñèõ ïîð ïëîõî ïîíèìàþòåñòåñòâåííûå ÿçûêè

• è ëþäè ïëîõî ïîíèìàþò ìàøèííûé ÿçûê

Page 8: Иван Калинин - Как правильно выбрать язык программирования

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

• èñêóññòâåííûé ÿçûê

• äëÿ êîììóíèêàöèè �÷åëîâåê� => �ìàøèíà�

• â ÷àñòíîñòè, äëÿ ïåðåäà÷å êîìïüþòåðóèíñòðóêöèé è êîìàíä

• ò.ê. êîìïüþòåðû äî ñèõ ïîð ïëîõî ïîíèìàþòåñòåñòâåííûå ÿçûêè

• è ëþäè ïëîõî ïîíèìàþò ìàøèííûé ÿçûê

Page 9: Иван Калинин - Как правильно выбрать язык программирования

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

• èñêóññòâåííûé ÿçûê

• äëÿ êîììóíèêàöèè �÷åëîâåê� => �ìàøèíà�

• â ÷àñòíîñòè, äëÿ ïåðåäà÷å êîìïüþòåðóèíñòðóêöèé è êîìàíä

• ò.ê. êîìïüþòåðû äî ñèõ ïîð ïëîõî ïîíèìàþòåñòåñòâåííûå ÿçûêè

• è ëþäè ïëîõî ïîíèìàþò ìàøèííûé ÿçûê

Page 10: Иван Калинин - Как правильно выбрать язык программирования

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

• ìîãóò áûòü ïðîñòûìè:

print("Hello, world!")

• ñëîæíûìè:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>

++.>+.+++++++..+++.>++.<<+++++++++++++++.>.

+++.------.--------.>+.>.

• è íåïîíÿòíûìè:

Page 11: Иван Калинин - Как правильно выбрать язык программирования

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

• ìîãóò áûòü ïðîñòûìè:

print("Hello, world!")

• ñëîæíûìè:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>

++.>+.+++++++..+++.>++.<<+++++++++++++++.>.

+++.------.--------.>+.>.

• è íåïîíÿòíûìè:

Page 12: Иван Калинин - Как правильно выбрать язык программирования

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

• ìîãóò áûòü ïðîñòûìè:

print("Hello, world!")

• ñëîæíûìè:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>

++.>+.+++++++..+++.>++.<<+++++++++++++++.>.

+++.------.--------.>+.>.

• è íåïîíÿòíûìè:

Page 13: Иван Калинин - Как правильно выбрать язык программирования

Èñòîðèÿ

Page 14: Иван Калинин - Как правильно выбрать язык программирования
Page 15: Иван Калинин - Как правильно выбрать язык программирования

Íóëåâîå ïîêîëåíèå

• (ýëåêòðî)ìåõàíè÷åñêèå

• ïðîãðàììèðóþòñÿ ñòðóêòóðîé

• óçêîñïåöèàëüíûå

• âîçìîæíîñòè ïðîãðàììèðîâàíèÿ îãðàíè÷åíû

Page 16: Иван Калинин - Как правильно выбрать язык программирования

Íóëåâîå ïîêîëåíèå

• (ýëåêòðî)ìåõàíè÷åñêèå

• ïðîãðàììèðóþòñÿ ñòðóêòóðîé

• óçêîñïåöèàëüíûå

• âîçìîæíîñòè ïðîãðàììèðîâàíèÿ îãðàíè÷åíû

Page 17: Иван Калинин - Как правильно выбрать язык программирования

Íóëåâîå ïîêîëåíèå

• (ýëåêòðî)ìåõàíè÷åñêèå

• ïðîãðàììèðóþòñÿ ñòðóêòóðîé

• óçêîñïåöèàëüíûå

• âîçìîæíîñòè ïðîãðàììèðîâàíèÿ îãðàíè÷åíû

Page 18: Иван Калинин - Как правильно выбрать язык программирования

Íóëåâîå ïîêîëåíèå

• (ýëåêòðî)ìåõàíè÷åñêèå

• ïðîãðàììèðóþòñÿ ñòðóêòóðîé

• óçêîñïåöèàëüíûå

• âîçìîæíîñòè ïðîãðàììèðîâàíèÿ îãðàíè÷åíû

Page 19: Иван Калинин - Как правильно выбрать язык программирования

Æàêêàðäîâûé ñòàíîê

Page 20: Иван Калинин - Как правильно выбрать язык программирования

Ìàøèíà Áýááèäæà

Page 21: Иван Калинин - Как правильно выбрать язык программирования

Ïðîãðàììèðóåìûé òàáóëÿòîð

Page 22: Иван Калинин - Как правильно выбрать язык программирования

Åãî ïðîãðàììà

Page 23: Иван Калинин - Как правильно выбрать язык программирования

Ìàøèíà Òüþðèíãà

• ïðîãðàììà � íàáîð ñîñòîÿíèé è ïåðåõîäîâìàøèíû

• âõîäíûå è âûõîäíûå äàííûå çàïèñàíû íà ëåíòå

Code number of a Turing machine Input to Output

TAPE

HEAD

Control unit

Print Sk, EraseLeft, Right

Scannedsymbol

Table of U

11X11

RRRLL

ABCDE

10EE1

RLRNR

PKHUS

P1X0Y

RLNRR

MNOPH

Currentstate A:

Currentstate B:

Currentstate V:

. . .

. . .

. . .

. . .

. . .

Writesymbol

Movetape

Nextstate

Writesymbol

Movetape

Nextstate

Writesymbol

Movetape

Nextstate

tape symbol is blank

tape symbol is 0

tape symbol is 1

tape symbol is X

tape symbol is Y

etc.

Page 24: Иван Калинин - Как правильно выбрать язык программирования

Ìàøèíà Òüþðèíãà

• ïðîãðàììà � íàáîð ñîñòîÿíèé è ïåðåõîäîâìàøèíû

• âõîäíûå è âûõîäíûå äàííûå çàïèñàíû íà ëåíòå

Code number of a Turing machine Input to Output

TAPE

HEAD

Control unit

Print Sk, EraseLeft, Right

Scannedsymbol

Table of U

11X11

RRRLL

ABCDE

10EE1

RLRNR

PKHUS

P1X0Y

RLNRR

MNOPH

Currentstate A:

Currentstate B:

Currentstate V:

. . .

. . .

. . .

. . .

. . .

Writesymbol

Movetape

Nextstate

Writesymbol

Movetape

Nextstate

Writesymbol

Movetape

Nextstate

tape symbol is blank

tape symbol is 0

tape symbol is 1

tape symbol is X

tape symbol is Y

etc.

Page 25: Иван Калинин - Как правильно выбрать язык программирования

Ìàøèíà Òüþðèíãà

• ïðîãðàììà � íàáîð ñîñòîÿíèé è ïåðåõîäîâìàøèíû

• âõîäíûå è âûõîäíûå äàííûå çàïèñàíû íà ëåíòå

Code number of a Turing machine Input to Output

TAPE

HEAD

Control unit

Print Sk, EraseLeft, Right

Scannedsymbol

Table of U

11X11

RRRLL

ABCDE

10EE1

RLRNR

PKHUS

P1X0Y

RLNRR

MNOPH

Currentstate A:

Currentstate B:

Currentstate V:

. . .

. . .

. . .

. . .

. . .

Writesymbol

Movetape

Nextstate

Writesymbol

Movetape

Nextstate

Writesymbol

Movetape

Nextstate

tape symbol is blank

tape symbol is 0

tape symbol is 1

tape symbol is X

tape symbol is Y

etc.

Page 26: Иван Калинин - Как правильно выбрать язык программирования

Ìàøèíà Òüþðèíãà

• ïðîãðàììà � íàáîð ñîñòîÿíèé è ïåðåõîäîâìàøèíû

• âõîäíûå è âûõîäíûå äàííûå çàïèñàíû íà ëåíòå

Code number of a Turing machine Input to Output

TAPE

HEAD

Control unit

Print Sk, EraseLeft, Right

Scannedsymbol

Table of U

11X11

RRRLL

ABCDE

10EE1

RLRNR

PKHUS

P1X0Y

RLNRR

MNOPH

Currentstate A:

Currentstate B:

Currentstate V:

. . .

. . .

. . .

. . .

. . .

Writesymbol

Movetape

Nextstate

Writesymbol

Movetape

Nextstate

Writesymbol

Movetape

Nextstate

tape symbol is blank

tape symbol is 0

tape symbol is 1

tape symbol is X

tape symbol is Y

etc.

Page 27: Иван Калинин - Как правильно выбрать язык программирования

Àðõèòåêòóðà ôîí Íåéìàíà

ArithmeticLogicUnit

ControlUnit

Memory

Input Output

Accumulator

Page 28: Иван Калинин - Как правильно выбрать язык программирования

Öèôðîâûå êîìïüþòåðû

Èäåè ìàøèíû Òüþðèíãà è ìàøèíû Ôîí Íåéìàíà îïðåäåëèëè

äàëüíåéøåå ðàçâèòèå ïðîãðàììèðîâàíèÿ:

• îäíîðîäíîñòü ïàìÿòè

• àäðåñàöèÿ ïàìÿòè

• ïðîãðàììíîå óïðàâëåíèå

• äâîè÷íîå êîäèðîâàíèå äàííûõ è ïðîãðàìì

Ïåðâûå ïðîãðàììû äëÿ öèôðîâûõ êîìïüþòåðîâ ïèñàëèñü â

ìàøèííûõ êîäàõ.

Page 29: Иван Калинин - Как правильно выбрать язык программирования

Öèôðîâûå êîìïüþòåðû

Èäåè ìàøèíû Òüþðèíãà è ìàøèíû Ôîí Íåéìàíà îïðåäåëèëè

äàëüíåéøåå ðàçâèòèå ïðîãðàììèðîâàíèÿ:

• îäíîðîäíîñòü ïàìÿòè

• àäðåñàöèÿ ïàìÿòè

• ïðîãðàììíîå óïðàâëåíèå

• äâîè÷íîå êîäèðîâàíèå äàííûõ è ïðîãðàììÏåðâûå ïðîãðàììû äëÿ öèôðîâûõ êîìïüþòåðîâ ïèñàëèñü â

ìàøèííûõ êîäàõ.

Page 30: Иван Калинин - Как правильно выбрать язык программирования

Àññåìáëåð

• íèçêîóðîâíåâûé ÿçûê, ñïåöèàëèçèðîâàííûéäëÿ êîíêðåòíîé àðõèòåêòóðû

• 1-ê-1 ñîîòâåòñòâèå èíñòðóêöèé ÿçûêà êìàøèííûì êîäàì

mov ah,9

mov dx,offset hello_message

int 21h

Page 31: Иван Калинин - Как правильно выбрать язык программирования

Ïåðôîêàðòà

Page 32: Иван Калинин - Как правильно выбрать язык программирования

Ðàííèå ÿçûêè âûñîêîãî óðîâíÿ

 êîíöå 50õ � íà÷àëå 60õ ïðîáëåìû òàêîãî ïîäõîäà ñòàëè

î÷åâèäíû, ïîâèëèñü ïåðâûå ÿçûêè âûñîêîãî óðîâíÿ:

• FORTRAN

• COBOL

Page 33: Иван Калинин - Как правильно выбрать язык программирования

COBOL

001 IDENTIFICATION DIVISION.

002 PROGRAM-ID. 'HELLO'.

003 ENVIRONMENT DIVISION.

004 CONFIGURATION SECTION.

005 SOURCE-COMPUTER. IBM-360.

006 OBJECT-COMPUTER. IBM-360.

0065 SPECIAL-NAMES.

0066 CONSOLE IS CNSL.

007 DATA DIVISION.

008 WORKING-STORAGE SECTION.

009 77 HELLO-CONST PIC X(12) VALUE 'HELLO, WORLD'.

075 PROCEDURE DIVISION.

090 000-DISPLAY.

100 DISPLAY HELLO-CONST UPON CNSL.

110 STOP RUN.

Page 34: Иван Калинин - Как правильно выбрать язык программирования

FORTRAN

READ INPUT TAPE 5, 501, IA, IB, IC

501 FORMAT (3I5)

IF (IA) 777, 777, 701

701 IF (IB) 777, 777, 702

702 IF (IC) 777, 777, 703

703 IF (IA+IB-IC) 777,777,704

704 IF (IA+IC-IB) 777,777,705

705 IF (IB+IC-IA) 777,777,799

777 STOP 1

799 S = FLOATF (IA + IB + IC) / 2.0

AREA = SQRT( S * (S - FLOATF(IA)) * (S - FLOATF(IB)) *

+ (S - FLOATF(IC)))

WRITE OUTPUT TAPE 6, 601, IA, IB, IC, AREA

601 FORMAT (4H A= ,I5,5H B= ,I5,5H C= ,I5,8H AREA= ,F10.2,

+ 13H SQUARE UNITS)

STOP

Page 35: Иван Калинин - Как правильно выбрать язык программирования

Çîëîòîé âåê

Êîíåö 60õ � íà÷àëî 70õ.

Ïðîãðàììèðîâàíèå ïîëó÷àåò ïðèçíàíèå.

Ðåøàþòñÿ íîâûå çàäà÷è, ïîÿâëÿþòñÿ íîâûå ÿçûêè è ïîäõîäû.

• ïðîöåäóðíîå (ñòðóêòóðíîå) ïðîãðàììèðîâàíèå� Algol, C, Pascal

• îáúåêòíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå� Simula, Smalltalk

• ôóíêöèîíàëüíîå ïðîãðàììèðîâàííèå � LISP,ML

Page 36: Иван Калинин - Как правильно выбрать язык программирования

Çîëîòîé âåê

Êîíåö 60õ � íà÷àëî 70õ.

Ïðîãðàììèðîâàíèå ïîëó÷àåò ïðèçíàíèå.

Ðåøàþòñÿ íîâûå çàäà÷è, ïîÿâëÿþòñÿ íîâûå ÿçûêè è ïîäõîäû.

• ïðîöåäóðíîå (ñòðóêòóðíîå) ïðîãðàììèðîâàíèå� Algol, C, Pascal

• îáúåêòíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå� Simula, Smalltalk

• ôóíêöèîíàëüíîå ïðîãðàììèðîâàííèå � LISP,ML

Page 37: Иван Калинин - Как правильно выбрать язык программирования

Çîëîòîé âåê

Êîíåö 60õ � íà÷àëî 70õ.

Ïðîãðàììèðîâàíèå ïîëó÷àåò ïðèçíàíèå.

Ðåøàþòñÿ íîâûå çàäà÷è, ïîÿâëÿþòñÿ íîâûå ÿçûêè è ïîäõîäû.

• ïðîöåäóðíîå (ñòðóêòóðíîå) ïðîãðàììèðîâàíèå� Algol, C, Pascal

• îáúåêòíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå� Simula, Smalltalk

• ôóíêöèîíàëüíîå ïðîãðàììèðîâàííèå � LISP,ML

Page 38: Иван Калинин - Как правильно выбрать язык программирования

Ñêðèïòîâûå ÿçûêè

 80õ-90õ ñ ïîÿâëåíèåì PC â ïðîãðàììèðîâàíèå ïðèõîäÿò

�ïðîñòûå ëþäè�.

Ïîÿâëÿþòñÿ íîâûå ÿçûêè:

• Perl � 1987

• Python � 1991

• Ruby � 1993

Èõ îñíîâûå îñîáåííîñòè:

• íàöåëåííûå íà áûñòðóþ ðàçðàáîòêó

• èíòåðïðåòèðóåìûå

• ñ áîãàòîé ñòàíäàðòíîé áèáëèîòåêîé

Page 39: Иван Калинин - Как правильно выбрать язык программирования

Ñêðèïòîâûå ÿçûêè

 80õ-90õ ñ ïîÿâëåíèåì PC â ïðîãðàììèðîâàíèå ïðèõîäÿò

�ïðîñòûå ëþäè�.

Ïîÿâëÿþòñÿ íîâûå ÿçûêè:

• Perl � 1987

• Python � 1991

• Ruby � 1993

Èõ îñíîâûå îñîáåííîñòè:

• íàöåëåííûå íà áûñòðóþ ðàçðàáîòêó

• èíòåðïðåòèðóåìûå

• ñ áîãàòîé ñòàíäàðòíîé áèáëèîòåêîé

Page 40: Иван Калинин - Как правильно выбрать язык программирования

Ñêðèïòîâûå ÿçûêè

 80õ-90õ ñ ïîÿâëåíèåì PC â ïðîãðàììèðîâàíèå ïðèõîäÿò

�ïðîñòûå ëþäè�.

Ïîÿâëÿþòñÿ íîâûå ÿçûêè:

• Perl � 1987

• Python � 1991

• Ruby � 1993

Èõ îñíîâûå îñîáåííîñòè:

• íàöåëåííûå íà áûñòðóþ ðàçðàáîòêó

• èíòåðïðåòèðóåìûå

• ñ áîãàòîé ñòàíäàðòíîé áèáëèîòåêîé

Page 41: Иван Калинин - Как правильно выбрать язык программирования

Ñêðèïòîâûå ÿçûêè

 80õ-90õ ñ ïîÿâëåíèåì PC â ïðîãðàììèðîâàíèå ïðèõîäÿò

�ïðîñòûå ëþäè�.

Ïîÿâëÿþòñÿ íîâûå ÿçûêè:

• Perl � 1987

• Python � 1991

• Ruby � 1993

Èõ îñíîâûå îñîáåííîñòè:

• íàöåëåííûå íà áûñòðóþ ðàçðàáîòêó

• èíòåðïðåòèðóåìûå

• ñ áîãàòîé ñòàíäàðòíîé áèáëèîòåêîé

Page 42: Иван Калинин - Как правильно выбрать язык программирования

Ñêðèïòîâûå ÿçûêè

 80õ-90õ ñ ïîÿâëåíèåì PC â ïðîãðàììèðîâàíèå ïðèõîäÿò

�ïðîñòûå ëþäè�.

Ïîÿâëÿþòñÿ íîâûå ÿçûêè:

• Perl � 1987

• Python � 1991

• Ruby � 1993

Èõ îñíîâûå îñîáåííîñòè:

• íàöåëåííûå íà áûñòðóþ ðàçðàáîòêó

• èíòåðïðåòèðóåìûå

• ñ áîãàòîé ñòàíäàðòíîé áèáëèîòåêîé

Page 43: Иван Калинин - Как правильно выбрать язык программирования

Èíòåðíåò è Âåá

Âîçíèêàëè ñïåöèàëèçèðîâàííûå ÿçûêè:

• PHP

• JavaScript

Ìíîãèå ñóùåñòâóþùèå ÿçûêè íàøëè íîâûå íèøè è ñòàëè

âåá-îðèåíòèðîâàííûìè:

• Ruby

• Python

• Java

Page 44: Иван Калинин - Как правильно выбрать язык программирования

Èíòåðíåò è Âåá

Âîçíèêàëè ñïåöèàëèçèðîâàííûå ÿçûêè:

• PHP

• JavaScript

Ìíîãèå ñóùåñòâóþùèå ÿçûêè íàøëè íîâûå íèøè è ñòàëè

âåá-îðèåíòèðîâàííûìè:

• Ruby

• Python

• Java

Page 45: Иван Калинин - Как правильно выбрать язык программирования

Æèçíåííûé öèêë ÿçûêà

• ñîçäàíèå

• early adoption

• (ïðîìûøëåííûé) óñïåõ

• óàãàñàíèå, ñìåíà äðóãèìè ÿçûêàìè

Page 46: Иван Калинин - Как правильно выбрать язык программирования

Æèçíåííûé öèêë ÿçûêà

• ñîçäàíèå

• early adoption

• (ïðîìûøëåííûé) óñïåõ

• óàãàñàíèå, ñìåíà äðóãèìè ÿçûêàìè

Page 47: Иван Калинин - Как правильно выбрать язык программирования

Æèçíåííûé öèêë ÿçûêà

• ñîçäàíèå

• early adoption

• (ïðîìûøëåííûé) óñïåõ

• óàãàñàíèå, ñìåíà äðóãèìè ÿçûêàìè

Page 48: Иван Калинин - Как правильно выбрать язык программирования

Æèçíåííûé öèêë ÿçûêà

• ñîçäàíèå

• early adoption

• (ïðîìûøëåííûé) óñïåõ

• óàãàñàíèå, ñìåíà äðóãèìè ÿçûêàìè

Page 49: Иван Калинин - Как правильно выбрать язык программирования

×òî åñòü ÿçûê ïðîãðàììèðîâàíèÿ

Page 50: Иван Калинин - Как правильно выбрать язык программирования

ßçûê ýòî

• ñèíòàêñèñ

• ñåìàíòèêà

• runtime

Page 51: Иван Калинин - Как правильно выбрать язык программирования

ßçûê ýòî

• ñèíòàêñèñ

• ñåìàíòèêà

• runtime

Page 52: Иван Калинин - Как правильно выбрать язык программирования

ßçûê ýòî

• ñèíòàêñèñ

• ñåìàíòèêà

• runtime

Page 53: Иван Калинин - Как правильно выбрать язык программирования

Ñèíòàêñèñ

Îïðåäåëÿåò ôîðìó òåêñòîâîãî ïðåäñòàâëåíèÿ ïðîãðàìì.

• ãðàììàòèêà ÿçûêà � ôîðìàëüíàÿ, êàê ïðàâèëî� êîíòåêñòíî-ñâîáîäíàÿ (òèï 2 ïî Õîìñêîìó)

• BNF-îïèñàíèå ñèíòàêñèñà

Page 54: Иван Калинин - Как правильно выбрать язык программирования

ãðàììàòèêà LISP

expression ::= atom | list

atom ::= number | symbol

number ::= [+-]?['0'-'9']+

symbol ::= ['A'-'Z''a'-'z'].*

list ::= '(' expression* ')'

(defun factorial (x)

(if (zerop x)

1

(* x (factorial (- x 1)))))

Page 55: Иван Калинин - Как правильно выбрать язык программирования

ãðàììàòèêà LISP

expression ::= atom | list

atom ::= number | symbol

number ::= [+-]?['0'-'9']+

symbol ::= ['A'-'Z''a'-'z'].*

list ::= '(' expression* ')'

(defun factorial (x)

(if (zerop x)

1

(* x (factorial (- x 1)))))

Page 56: Иван Калинин - Как правильно выбрать язык программирования

Ñåìàíòèêà

Ìîæåò áûòü:

• îïèñàíà íà åñòåñòâåííîì ÿçûêå

• çàäàíà ôîðìàëüíî

• îïðåäåëåíà èñõîäíîé ðåàëèçàöèåé

• îïðåäåëåíà íàáîðîì òåñòîâ

Ðàçäåëÿåòñÿ íà:

• ñòàòè÷åñêóþ

• äèíàìè÷åñêóþ

Page 57: Иван Калинин - Как правильно выбрать язык программирования

Ñåìàíòèêà

Ìîæåò áûòü:

• îïèñàíà íà åñòåñòâåííîì ÿçûêå

• çàäàíà ôîðìàëüíî

• îïðåäåëåíà èñõîäíîé ðåàëèçàöèåé

• îïðåäåëåíà íàáîðîì òåñòîâ

Ðàçäåëÿåòñÿ íà:

• ñòàòè÷åñêóþ

• äèíàìè÷åñêóþ

Page 58: Иван Калинин - Как правильно выбрать язык программирования

Ñåìàíòèêà

Ìîæåò áûòü:

• îïèñàíà íà åñòåñòâåííîì ÿçûêå

• çàäàíà ôîðìàëüíî

• îïðåäåëåíà èñõîäíîé ðåàëèçàöèåé

• îïðåäåëåíà íàáîðîì òåñòîâ

Ðàçäåëÿåòñÿ íà:

• ñòàòè÷åñêóþ

• äèíàìè÷åñêóþ

Page 59: Иван Калинин - Как правильно выбрать язык программирования

Ñåìàíòèêà

Ìîæåò áûòü:

• îïèñàíà íà åñòåñòâåííîì ÿçûêå

• çàäàíà ôîðìàëüíî

• îïðåäåëåíà èñõîäíîé ðåàëèçàöèåé

• îïðåäåëåíà íàáîðîì òåñòîâ

Ðàçäåëÿåòñÿ íà:

• ñòàòè÷åñêóþ

• äèíàìè÷åñêóþ

Page 60: Иван Калинин - Как правильно выбрать язык программирования

Ñåìàíòèêà

Ìîæåò áûòü:

• îïèñàíà íà åñòåñòâåííîì ÿçûêå

• çàäàíà ôîðìàëüíî

• îïðåäåëåíà èñõîäíîé ðåàëèçàöèåé

• îïðåäåëåíà íàáîðîì òåñòîâ

Ðàçäåëÿåòñÿ íà:

• ñòàòè÷åñêóþ

• äèíàìè÷åñêóþ

Page 61: Иван Калинин - Как правильно выбрать язык программирования

Ñåìàíòèêà

Ìîæåò áûòü:

• îïèñàíà íà åñòåñòâåííîì ÿçûêå

• çàäàíà ôîðìàëüíî

• îïðåäåëåíà èñõîäíîé ðåàëèçàöèåé

• îïðåäåëåíà íàáîðîì òåñòîâ

Ðàçäåëÿåòñÿ íà:

• ñòàòè÷åñêóþ

• äèíàìè÷åñêóþ

Page 62: Иван Калинин - Как правильно выбрать язык программирования

Ñåìàíòèêà

Ìîæåò áûòü:

• îïèñàíà íà åñòåñòâåííîì ÿçûêå

• çàäàíà ôîðìàëüíî

• îïðåäåëåíà èñõîäíîé ðåàëèçàöèåé

• îïðåäåëåíà íàáîðîì òåñòîâ

Ðàçäåëÿåòñÿ íà:

• ñòàòè÷åñêóþ

• äèíàìè÷åñêóþ

Page 63: Иван Калинин - Как правильно выбрать язык программирования

Ñåìàíòèêà

Ìîæåò áûòü:

• îïèñàíà íà åñòåñòâåííîì ÿçûêå

• çàäàíà ôîðìàëüíî

• îïðåäåëåíà èñõîäíîé ðåàëèçàöèåé

• îïðåäåëåíà íàáîðîì òåñòîâ

Ðàçäåëÿåòñÿ íà:

• ñòàòè÷åñêóþ

• äèíàìè÷åñêóþ

Page 64: Иван Калинин - Как правильно выбрать язык программирования

Ñòàòè÷åñêàÿ ñåìàíòèêà

• ïðèäàåò ñìûñë ëåêñè÷åñêèì êîíñòðóêöèÿì

• îïðåäåëÿåò äîïóñòèìûå çíà÷åíèÿ ïåðåìåííûõè ïàðàìåòðîâ

• äîïîëíÿåò ñèíòàêñè÷åñêèå îãðàíè÷åíèÿ

Page 65: Иван Калинин - Как правильно выбрать язык программирования

Ñòàòè÷åñêàÿ ñåìàíòèêà

• ïðèäàåò ñìûñë ëåêñè÷åñêèì êîíñòðóêöèÿì

• îïðåäåëÿåò äîïóñòèìûå çíà÷åíèÿ ïåðåìåííûõè ïàðàìåòðîâ

• äîïîëíÿåò ñèíòàêñè÷åñêèå îãðàíè÷åíèÿ

Page 66: Иван Калинин - Как правильно выбрать язык программирования

Ñòàòè÷åñêàÿ ñåìàíòèêà

• ïðèäàåò ñìûñë ëåêñè÷åñêèì êîíñòðóêöèÿì

• îïðåäåëÿåò äîïóñòèìûå çíà÷åíèÿ ïåðåìåííûõè ïàðàìåòðîâ

• äîïîëíÿåò ñèíòàêñè÷åñêèå îãðàíè÷åíèÿ

Page 67: Иван Калинин - Как правильно выбрать язык программирования

Ñåìàíòèêà ýòàïà âûïîëíåíèÿ

• îïðåäåëÿåò îáùèé õàðàêòåð âûïîëíåíèÿïðîãðàììû

• îïèñûâàåò, êàê ðàáîòàþò âñòðîåííûå îïåðàöèè

• çàäàåò òðåáîâàíèÿ äëÿ èíòåðïðåòàòîðà /ðàíòàéìà

Page 68: Иван Калинин - Как правильно выбрать язык программирования

Ñåìàíòèêà ýòàïà âûïîëíåíèÿ

• îïðåäåëÿåò îáùèé õàðàêòåð âûïîëíåíèÿïðîãðàììû

• îïèñûâàåò, êàê ðàáîòàþò âñòðîåííûå îïåðàöèè

• çàäàåò òðåáîâàíèÿ äëÿ èíòåðïðåòàòîðà /ðàíòàéìà

Page 69: Иван Калинин - Как правильно выбрать язык программирования

Ñåìàíòèêà ýòàïà âûïîëíåíèÿ

• îïðåäåëÿåò îáùèé õàðàêòåð âûïîëíåíèÿïðîãðàììû

• îïèñûâàåò, êàê ðàáîòàþò âñòðîåííûå îïåðàöèè

• çàäàåò òðåáîâàíèÿ äëÿ èíòåðïðåòàòîðà /ðàíòàéìà

Page 70: Иван Калинин - Как правильно выбрать язык программирования

Ñèñòåìà òèïîâ

• òèïèçèðîâàííûé èëè íåòèïèçèðîâàííûé ÿçûê

• ñòàòè÷åñêàÿ èëè äèíàìè÷åñêàÿ òèïèçàöèÿ

• ñòðîãàÿ èëè ñëàáàÿ òèïèçàöèÿ

Page 71: Иван Калинин - Как правильно выбрать язык программирования

Ñèñòåìà òèïîâ

• òèïèçèðîâàííûé èëè íåòèïèçèðîâàííûé ÿçûê

• ñòàòè÷åñêàÿ èëè äèíàìè÷åñêàÿ òèïèçàöèÿ

• ñòðîãàÿ èëè ñëàáàÿ òèïèçàöèÿ

Page 72: Иван Калинин - Как правильно выбрать язык программирования

Ñèñòåìà òèïîâ

• òèïèçèðîâàííûé èëè íåòèïèçèðîâàííûé ÿçûê

• ñòàòè÷åñêàÿ èëè äèíàìè÷åñêàÿ òèïèçàöèÿ

• ñòðîãàÿ èëè ñëàáàÿ òèïèçàöèÿ

Page 73: Иван Калинин - Как правильно выбрать язык программирования

Ñèñòåìà òèïîâ

• òèïèçèðîâàííûé èëè íåòèïèçèðîâàííûé ÿçûê

• ñòàòè÷åñêàÿ èëè äèíàìè÷åñêàÿ òèïèçàöèÿ

• ñòðîãàÿ èëè ñëàáàÿ òèïèçàöèÿ

Page 74: Иван Калинин - Как правильно выбрать язык программирования

Ñèñòåìà òèïîâ

• òèïèçèðîâàííûé èëè íåòèïèçèðîâàííûé ÿçûê

• ñòàòè÷åñêàÿ èëè äèíàìè÷åñêàÿ òèïèçàöèÿ

• ñòðîãàÿ èëè ñëàáàÿ òèïèçàöèÿ

Page 75: Иван Калинин - Как правильно выбрать язык программирования

Ïàðàäèãìà

• ñ ãðå÷åñêîãî � øàáëîí, ïðèìåð, îáðàçåö

• ñèñòåìà èäåé è ïîíÿòèé, îïðåäåëÿþùèõ ñòèëüíàïèñàíèÿ êîìïüþòåðíûõ ïðîãðàìì (wiki)

• ÿçûê "áëàãîâîëèò"îäíîé èëè íåñêîëüêèìïàðàäèãìàì (ìóëüòèïàðàäèãìåííîñòü)

Page 76: Иван Калинин - Как правильно выбрать язык программирования

Ïàðàäèãìà

• ñ ãðå÷åñêîãî � øàáëîí, ïðèìåð, îáðàçåö

• ñèñòåìà èäåé è ïîíÿòèé, îïðåäåëÿþùèõ ñòèëüíàïèñàíèÿ êîìïüþòåðíûõ ïðîãðàìì (wiki)

• ÿçûê "áëàãîâîëèò"îäíîé èëè íåñêîëüêèìïàðàäèãìàì (ìóëüòèïàðàäèãìåííîñòü)

Page 77: Иван Калинин - Как правильно выбрать язык программирования

Ïàðàäèãìà

• ñ ãðå÷åñêîãî � øàáëîí, ïðèìåð, îáðàçåö

• ñèñòåìà èäåé è ïîíÿòèé, îïðåäåëÿþùèõ ñòèëüíàïèñàíèÿ êîìïüþòåðíûõ ïðîãðàìì (wiki)

• ÿçûê "áëàãîâîëèò"îäíîé èëè íåñêîëüêèìïàðàäèãìàì (ìóëüòèïàðàäèãìåííîñòü)

Page 78: Иван Калинин - Как правильно выбрать язык программирования

Ãëàâíûå ïàðàäèãìû• èìïåðàòèâíàÿ: ïðîãðàììà � íàáîðïîñëåäîâàòåëüíûõ èíñòðóêöèé, èçìåíÿþùèõâíóòðåííå ñîñòîÿíèå âû÷èñëèòåëÿ

• ôóíêöèîíàëüíàÿ: ïðîãðàììà � íàáîðìàòåìàòè÷åñêèõ ôóíêöèé, ðàáîòà ïðîãðàììû� âû÷èñëåíèå çíà÷åíèÿ ôóíêöèé

• îáúåêòíî-îðèåíòèðîâàííàÿ: ïðåäìåòíàÿîáëàñòü îïèñûâàåòñÿ ïðè ïîìîùè îáúåêòîâ ñîñâîéñòâàìè è ìåòîäàìè, ïðîãðàììà � ïðîöåññâçàèìîäåéñòâèå îáúåêòîâ

• ëîãè÷åñêàÿ: ïðîãðàììà � íàáîð óòâåðæäåíèé îïðåäìåòíîé îáëàñòè, ðàáîòà ïðîãðàììû �óñòàíîâëåíèå èñòèííîñòè âûñêàçûâàíèé

Page 79: Иван Калинин - Как правильно выбрать язык программирования

Ãëàâíûå ïàðàäèãìû• èìïåðàòèâíàÿ: ïðîãðàììà � íàáîðïîñëåäîâàòåëüíûõ èíñòðóêöèé, èçìåíÿþùèõâíóòðåííå ñîñòîÿíèå âû÷èñëèòåëÿ

• ôóíêöèîíàëüíàÿ: ïðîãðàììà � íàáîðìàòåìàòè÷åñêèõ ôóíêöèé, ðàáîòà ïðîãðàììû� âû÷èñëåíèå çíà÷åíèÿ ôóíêöèé

• îáúåêòíî-îðèåíòèðîâàííàÿ: ïðåäìåòíàÿîáëàñòü îïèñûâàåòñÿ ïðè ïîìîùè îáúåêòîâ ñîñâîéñòâàìè è ìåòîäàìè, ïðîãðàììà � ïðîöåññâçàèìîäåéñòâèå îáúåêòîâ

• ëîãè÷åñêàÿ: ïðîãðàììà � íàáîð óòâåðæäåíèé îïðåäìåòíîé îáëàñòè, ðàáîòà ïðîãðàììû �óñòàíîâëåíèå èñòèííîñòè âûñêàçûâàíèé

Page 80: Иван Калинин - Как правильно выбрать язык программирования

Ãëàâíûå ïàðàäèãìû• èìïåðàòèâíàÿ: ïðîãðàììà � íàáîðïîñëåäîâàòåëüíûõ èíñòðóêöèé, èçìåíÿþùèõâíóòðåííå ñîñòîÿíèå âû÷èñëèòåëÿ

• ôóíêöèîíàëüíàÿ: ïðîãðàììà � íàáîðìàòåìàòè÷åñêèõ ôóíêöèé, ðàáîòà ïðîãðàììû� âû÷èñëåíèå çíà÷åíèÿ ôóíêöèé

• îáúåêòíî-îðèåíòèðîâàííàÿ: ïðåäìåòíàÿîáëàñòü îïèñûâàåòñÿ ïðè ïîìîùè îáúåêòîâ ñîñâîéñòâàìè è ìåòîäàìè, ïðîãðàììà � ïðîöåññâçàèìîäåéñòâèå îáúåêòîâ

• ëîãè÷åñêàÿ: ïðîãðàììà � íàáîð óòâåðæäåíèé îïðåäìåòíîé îáëàñòè, ðàáîòà ïðîãðàììû �óñòàíîâëåíèå èñòèííîñòè âûñêàçûâàíèé

Page 81: Иван Калинин - Как правильно выбрать язык программирования

Ãëàâíûå ïàðàäèãìû• èìïåðàòèâíàÿ: ïðîãðàììà � íàáîðïîñëåäîâàòåëüíûõ èíñòðóêöèé, èçìåíÿþùèõâíóòðåííå ñîñòîÿíèå âû÷èñëèòåëÿ

• ôóíêöèîíàëüíàÿ: ïðîãðàììà � íàáîðìàòåìàòè÷åñêèõ ôóíêöèé, ðàáîòà ïðîãðàììû� âû÷èñëåíèå çíà÷åíèÿ ôóíêöèé

• îáúåêòíî-îðèåíòèðîâàííàÿ: ïðåäìåòíàÿîáëàñòü îïèñûâàåòñÿ ïðè ïîìîùè îáúåêòîâ ñîñâîéñòâàìè è ìåòîäàìè, ïðîãðàììà � ïðîöåññâçàèìîäåéñòâèå îáúåêòîâ

• ëîãè÷åñêàÿ: ïðîãðàììà � íàáîð óòâåðæäåíèé îïðåäìåòíîé îáëàñòè, ðàáîòà ïðîãðàììû �óñòàíîâëåíèå èñòèííîñòè âûñêàçûâàíèé

Page 82: Иван Калинин - Как правильно выбрать язык программирования

Runtime

Ïðîãðàììà ìîæåò âûïîëíÿòüñÿ ïî-ðàçíîìó:

• èíòåðïðåòàöèÿ � ÷òåíèå èñõîäíîãî êîäà âìîìåíò çàïóñêà

• êîìïèëÿöèÿ â ìàøèííûé êîä � îòäåëüíûé øàãäî çàïóñêà

• áàéò-êîìïèëÿöèÿ è âûïîëíåíèå â âèðòóàëüíîéìàøèíå

Ýòè òåõíèêè ìîãóò êîìáèíèðîâàòüñÿ � èíòåðïðåòàòîð ìîæåò

êîìïèëèðîâàòü "íà ëåòó äèíàìè÷åñêè-ñãåíåðèðîâàííûé êîä

ìîæåò èíòåðïðåòèðîâàòüñÿ áåç êîìïèëÿöèè.

Page 83: Иван Калинин - Как правильно выбрать язык программирования

Runtime

Ïðîãðàììà ìîæåò âûïîëíÿòüñÿ ïî-ðàçíîìó:

• èíòåðïðåòàöèÿ � ÷òåíèå èñõîäíîãî êîäà âìîìåíò çàïóñêà

• êîìïèëÿöèÿ â ìàøèííûé êîä � îòäåëüíûé øàãäî çàïóñêà

• áàéò-êîìïèëÿöèÿ è âûïîëíåíèå â âèðòóàëüíîéìàøèíå

Ýòè òåõíèêè ìîãóò êîìáèíèðîâàòüñÿ � èíòåðïðåòàòîð ìîæåò

êîìïèëèðîâàòü "íà ëåòó äèíàìè÷åñêè-ñãåíåðèðîâàííûé êîä

ìîæåò èíòåðïðåòèðîâàòüñÿ áåç êîìïèëÿöèè.

Page 84: Иван Калинин - Как правильно выбрать язык программирования

Runtime

Ïðîãðàììà ìîæåò âûïîëíÿòüñÿ ïî-ðàçíîìó:

• èíòåðïðåòàöèÿ � ÷òåíèå èñõîäíîãî êîäà âìîìåíò çàïóñêà

• êîìïèëÿöèÿ â ìàøèííûé êîä � îòäåëüíûé øàãäî çàïóñêà

• áàéò-êîìïèëÿöèÿ è âûïîëíåíèå â âèðòóàëüíîéìàøèíå

Ýòè òåõíèêè ìîãóò êîìáèíèðîâàòüñÿ � èíòåðïðåòàòîð ìîæåò

êîìïèëèðîâàòü "íà ëåòó äèíàìè÷åñêè-ñãåíåðèðîâàííûé êîä

ìîæåò èíòåðïðåòèðîâàòüñÿ áåç êîìïèëÿöèè.

Page 85: Иван Калинин - Как правильно выбрать язык программирования

Runtime

Ïðîãðàììà ìîæåò âûïîëíÿòüñÿ ïî-ðàçíîìó:

• èíòåðïðåòàöèÿ � ÷òåíèå èñõîäíîãî êîäà âìîìåíò çàïóñêà

• êîìïèëÿöèÿ â ìàøèííûé êîä � îòäåëüíûé øàãäî çàïóñêà

• áàéò-êîìïèëÿöèÿ è âûïîëíåíèå â âèðòóàëüíîéìàøèíå

Ýòè òåõíèêè ìîãóò êîìáèíèðîâàòüñÿ � èíòåðïðåòàòîð ìîæåò

êîìïèëèðîâàòü "íà ëåòó äèíàìè÷åñêè-ñãåíåðèðîâàííûé êîä

ìîæåò èíòåðïðåòèðîâàòüñÿ áåç êîìïèëÿöèè.

Page 86: Иван Калинин - Как правильно выбрать язык программирования

Runtime

Ïðîãðàììà ìîæåò âûïîëíÿòüñÿ ïî-ðàçíîìó:

• èíòåðïðåòàöèÿ � ÷òåíèå èñõîäíîãî êîäà âìîìåíò çàïóñêà

• êîìïèëÿöèÿ â ìàøèííûé êîä � îòäåëüíûé øàãäî çàïóñêà

• áàéò-êîìïèëÿöèÿ è âûïîëíåíèå â âèðòóàëüíîéìàøèíå

Ýòè òåõíèêè ìîãóò êîìáèíèðîâàòüñÿ � èíòåðïðåòàòîð ìîæåò

êîìïèëèðîâàòü "íà ëåòó äèíàìè÷åñêè-ñãåíåðèðîâàííûé êîä

ìîæåò èíòåðïðåòèðîâàòüñÿ áåç êîìïèëÿöèè.

Page 87: Иван Калинин - Как правильно выбрать язык программирования

Ïðåäñòàâèòåëè

Page 88: Иван Калинин - Как правильно выбрать язык программирования
Page 89: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1972 ãîäó

• ñîçäàòåëè � Äåííèñ Ðèò÷è (Dennis Ritchie) èêîëëåãè

• èìïåðàòèâíûé

• êîìïèëèðóåìûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• ðó÷íîå óïðàâëåíèå ïàìÿòüþ

Page 90: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1972 ãîäó

• ñîçäàòåëè � Äåííèñ Ðèò÷è (Dennis Ritchie) èêîëëåãè

• èìïåðàòèâíûé

• êîìïèëèðóåìûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• ðó÷íîå óïðàâëåíèå ïàìÿòüþ

Page 91: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1972 ãîäó

• ñîçäàòåëè � Äåííèñ Ðèò÷è (Dennis Ritchie) èêîëëåãè

• èìïåðàòèâíûé

• êîìïèëèðóåìûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• ðó÷íîå óïðàâëåíèå ïàìÿòüþ

Page 92: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1972 ãîäó

• ñîçäàòåëè � Äåííèñ Ðèò÷è (Dennis Ritchie) èêîëëåãè

• èìïåðàòèâíûé

• êîìïèëèðóåìûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• ðó÷íîå óïðàâëåíèå ïàìÿòüþ

Page 93: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1972 ãîäó

• ñîçäàòåëè � Äåííèñ Ðèò÷è (Dennis Ritchie) èêîëëåãè

• èìïåðàòèâíûé

• êîìïèëèðóåìûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• ðó÷íîå óïðàâëåíèå ïàìÿòüþ

Page 94: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1972 ãîäó

• ñîçäàòåëè � Äåííèñ Ðèò÷è (Dennis Ritchie) èêîëëåãè

• èìïåðàòèâíûé

• êîìïèëèðóåìûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• ðó÷íîå óïðàâëåíèå ïàìÿòüþ

Page 95: Иван Калинин - Как правильно выбрать язык программирования

Äî ñèõ ïîð êðàéíå àêòóàëåí, èñïîëüçóåòñÿ äëÿ:

• ñèñòåìíîãî ïðîãðàììèðîâàíèÿ (íàïðèìåð,Linux)

• number-crunching

• ïðîãðàììèðîâàíèÿ ìèêðîêîíòðîëëåðîâ èâñòðàèâàåìûõ ñèñòåì

Page 96: Иван Калинин - Как правильно выбрать язык программирования

Äî ñèõ ïîð êðàéíå àêòóàëåí, èñïîëüçóåòñÿ äëÿ:

• ñèñòåìíîãî ïðîãðàììèðîâàíèÿ (íàïðèìåð,Linux)

• number-crunching

• ïðîãðàììèðîâàíèÿ ìèêðîêîíòðîëëåðîâ èâñòðàèâàåìûõ ñèñòåì

Page 97: Иван Калинин - Как правильно выбрать язык программирования

Äî ñèõ ïîð êðàéíå àêòóàëåí, èñïîëüçóåòñÿ äëÿ:

• ñèñòåìíîãî ïðîãðàììèðîâàíèÿ (íàïðèìåð,Linux)

• number-crunching

• ïðîãðàììèðîâàíèÿ ìèêðîêîíòðîëëåðîâ èâñòðàèâàåìûõ ñèñòåì

Page 98: Иван Калинин - Как правильно выбрать язык программирования

C � ïðèìåðû

Hello world:

#include <stdio.h>

int main(void)

{

printf("Hello, world!\n");

return 0;

}

Page 99: Иван Калинин - Как правильно выбрать язык программирования
Page 100: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1995 ãîäó

• ñîçäàòåëè � Äæåéìñ Ãîñëèíã (James Gosling) èSun Microsystems

• îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• áàéò-êîìïèëèðóåìûé ñ âèðòóàëüíîé ìàøèíîé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 101: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1995 ãîäó

• ñîçäàòåëè � Äæåéìñ Ãîñëèíã (James Gosling) èSun Microsystems

• îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• áàéò-êîìïèëèðóåìûé ñ âèðòóàëüíîé ìàøèíîé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 102: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1995 ãîäó

• ñîçäàòåëè � Äæåéìñ Ãîñëèíã (James Gosling) èSun Microsystems

• îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• áàéò-êîìïèëèðóåìûé ñ âèðòóàëüíîé ìàøèíîé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 103: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1995 ãîäó

• ñîçäàòåëè � Äæåéìñ Ãîñëèíã (James Gosling) èSun Microsystems

• îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• áàéò-êîìïèëèðóåìûé ñ âèðòóàëüíîé ìàøèíîé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 104: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1995 ãîäó

• ñîçäàòåëè � Äæåéìñ Ãîñëèíã (James Gosling) èSun Microsystems

• îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• áàéò-êîìïèëèðóåìûé ñ âèðòóàëüíîé ìàøèíîé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 105: Иван Калинин - Как правильно выбрать язык программирования

• ñîçäàí â 1995 ãîäó

• ñîçäàòåëè � Äæåéìñ Ãîñëèíã (James Gosling) èSun Microsystems

• îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé

• ñòðîãî- è ñòàòè÷åñêè-òèïèçèðîâàííûé

• áàéò-êîìïèëèðóåìûé ñ âèðòóàëüíîé ìàøèíîé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 106: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ïðèêëàäíîãî ïðîãðàììèðîâàíèÿ, â ò.÷.âåá-ïðîãðàììèðîâàíèÿ

• âñòðàèâàåìûõ ñèñòåì

• âûñîêîíàãðóæåííûé ñèñòåìÑòîèò îòëè÷àòü ñïåöèôèêàöèè ÿçûêà Java è ðàçëè÷íûå

ðåàëèçàöèè JVM: � Sun JDK, IBM JDK, OpenJDK, etc

Page 107: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ïðèêëàäíîãî ïðîãðàììèðîâàíèÿ, â ò.÷.âåá-ïðîãðàììèðîâàíèÿ

• âñòðàèâàåìûõ ñèñòåì

• âûñîêîíàãðóæåííûé ñèñòåìÑòîèò îòëè÷àòü ñïåöèôèêàöèè ÿçûêà Java è ðàçëè÷íûå

ðåàëèçàöèè JVM: � Sun JDK, IBM JDK, OpenJDK, etc

Page 108: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ïðèêëàäíîãî ïðîãðàììèðîâàíèÿ, â ò.÷.âåá-ïðîãðàììèðîâàíèÿ

• âñòðàèâàåìûõ ñèñòåì

• âûñîêîíàãðóæåííûé ñèñòåì

Ñòîèò îòëè÷àòü ñïåöèôèêàöèè ÿçûêà Java è ðàçëè÷íûå

ðåàëèçàöèè JVM: � Sun JDK, IBM JDK, OpenJDK, etc

Page 109: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ïðèêëàäíîãî ïðîãðàììèðîâàíèÿ, â ò.÷.âåá-ïðîãðàììèðîâàíèÿ

• âñòðàèâàåìûõ ñèñòåì

• âûñîêîíàãðóæåííûé ñèñòåì

Ñòîèò îòëè÷àòü ñïåöèôèêàöèè ÿçûêà Java è ðàçëè÷íûå

ðåàëèçàöèè JVM: � Sun JDK, IBM JDK, OpenJDK, etc

Page 110: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ïðèêëàäíîãî ïðîãðàììèðîâàíèÿ, â ò.÷.âåá-ïðîãðàììèðîâàíèÿ

• âñòðàèâàåìûõ ñèñòåì

• âûñîêîíàãðóæåííûé ñèñòåìÑòîèò îòëè÷àòü ñïåöèôèêàöèè ÿçûêà Java è ðàçëè÷íûå

ðåàëèçàöèè JVM: � Sun JDK, IBM JDK, OpenJDK, etc

Page 111: Иван Калинин - Как правильно выбрать язык программирования

Java � ïðèìåðû

Hello world:

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello, world!");

}

}

Page 112: Иван Калинин - Как правильно выбрать язык программирования
Page 113: Иван Калинин - Как правильно выбрать язык программирования

• LISt Processor

• ñîçäàí â 1958 ãîäó

• ñîçäàòåëè � Äæîí Ìàêêàðòè

• ÷èñòûé ôóíêöèîíàëüíûé ÿçûê

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• êàê ïðàâèëî, èíòåðïðåòèðóåìûé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 114: Иван Калинин - Как правильно выбрать язык программирования

• LISt Processor

• ñîçäàí â 1958 ãîäó

• ñîçäàòåëè � Äæîí Ìàêêàðòè

• ÷èñòûé ôóíêöèîíàëüíûé ÿçûê

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• êàê ïðàâèëî, èíòåðïðåòèðóåìûé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 115: Иван Калинин - Как правильно выбрать язык программирования

• LISt Processor

• ñîçäàí â 1958 ãîäó

• ñîçäàòåëè � Äæîí Ìàêêàðòè

• ÷èñòûé ôóíêöèîíàëüíûé ÿçûê

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• êàê ïðàâèëî, èíòåðïðåòèðóåìûé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 116: Иван Калинин - Как правильно выбрать язык программирования

• LISt Processor

• ñîçäàí â 1958 ãîäó

• ñîçäàòåëè � Äæîí Ìàêêàðòè

• ÷èñòûé ôóíêöèîíàëüíûé ÿçûê

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• êàê ïðàâèëî, èíòåðïðåòèðóåìûé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 117: Иван Калинин - Как правильно выбрать язык программирования

• LISt Processor

• ñîçäàí â 1958 ãîäó

• ñîçäàòåëè � Äæîí Ìàêêàðòè

• ÷èñòûé ôóíêöèîíàëüíûé ÿçûê

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• êàê ïðàâèëî, èíòåðïðåòèðóåìûé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 118: Иван Калинин - Как правильно выбрать язык программирования

• LISt Processor

• ñîçäàí â 1958 ãîäó

• ñîçäàòåëè � Äæîí Ìàêêàðòè

• ÷èñòûé ôóíêöèîíàëüíûé ÿçûê

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• êàê ïðàâèëî, èíòåðïðåòèðóåìûé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 119: Иван Калинин - Как правильно выбрать язык программирования

• LISt Processor

• ñîçäàí â 1958 ãîäó

• ñîçäàòåëè � Äæîí Ìàêêàðòè

• ÷èñòûé ôóíêöèîíàëüíûé ÿçûê

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• êàê ïðàâèëî, èíòåðïðåòèðóåìûé

• íåò äîñòóïà ê ïàìÿòè, àâòîìàòè÷åñêàÿ ñáîðêàìóñîðà

Page 120: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• íàó÷íîãî ïðîãðàììèðîâàíèÿ è èññëåäîâàíèé

• èñêóñòâåííîãî èíòåëëåêòà

• âñåãî, ÷åãî óãîäíî

Ìíîæåñòâî ðåàëèçàöèé è äèàëåêòîâ:

• CommonLisp � êëàññè÷åñêàÿ ðåàëèçàöèÿ

• Scheme � óïðîùåííû äèàëåêò

• Clojure � ðàáîòàåò ïîâåðõ JVM

Page 121: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• íàó÷íîãî ïðîãðàììèðîâàíèÿ è èññëåäîâàíèé

• èñêóñòâåííîãî èíòåëëåêòà

• âñåãî, ÷åãî óãîäíî

Ìíîæåñòâî ðåàëèçàöèé è äèàëåêòîâ:

• CommonLisp � êëàññè÷åñêàÿ ðåàëèçàöèÿ

• Scheme � óïðîùåííû äèàëåêò

• Clojure � ðàáîòàåò ïîâåðõ JVM

Page 122: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• íàó÷íîãî ïðîãðàììèðîâàíèÿ è èññëåäîâàíèé

• èñêóñòâåííîãî èíòåëëåêòà

• âñåãî, ÷åãî óãîäíî

Ìíîæåñòâî ðåàëèçàöèé è äèàëåêòîâ:

• CommonLisp � êëàññè÷åñêàÿ ðåàëèçàöèÿ

• Scheme � óïðîùåííû äèàëåêò

• Clojure � ðàáîòàåò ïîâåðõ JVM

Page 123: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• íàó÷íîãî ïðîãðàììèðîâàíèÿ è èññëåäîâàíèé

• èñêóñòâåííîãî èíòåëëåêòà

• âñåãî, ÷åãî óãîäíî

Ìíîæåñòâî ðåàëèçàöèé è äèàëåêòîâ:

• CommonLisp � êëàññè÷åñêàÿ ðåàëèçàöèÿ

• Scheme � óïðîùåííû äèàëåêò

• Clojure � ðàáîòàåò ïîâåðõ JVM

Page 124: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• íàó÷íîãî ïðîãðàììèðîâàíèÿ è èññëåäîâàíèé

• èñêóñòâåííîãî èíòåëëåêòà

• âñåãî, ÷åãî óãîäíî

Ìíîæåñòâî ðåàëèçàöèé è äèàëåêòîâ:

• CommonLisp � êëàññè÷åñêàÿ ðåàëèçàöèÿ

• Scheme � óïðîùåííû äèàëåêò

• Clojure � ðàáîòàåò ïîâåðõ JVM

Page 125: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• íàó÷íîãî ïðîãðàììèðîâàíèÿ è èññëåäîâàíèé

• èñêóñòâåííîãî èíòåëëåêòà

• âñåãî, ÷åãî óãîäíî

Ìíîæåñòâî ðåàëèçàöèé è äèàëåêòîâ:

• CommonLisp � êëàññè÷åñêàÿ ðåàëèçàöèÿ

• Scheme � óïðîùåííû äèàëåêò

• Clojure � ðàáîòàåò ïîâåðõ JVM

Page 126: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• íàó÷íîãî ïðîãðàììèðîâàíèÿ è èññëåäîâàíèé

• èñêóñòâåííîãî èíòåëëåêòà

• âñåãî, ÷åãî óãîäíî

Ìíîæåñòâî ðåàëèçàöèé è äèàëåêòîâ:

• CommonLisp � êëàññè÷åñêàÿ ðåàëèçàöèÿ

• Scheme � óïðîùåííû äèàëåêò

• Clojure � ðàáîòàåò ïîâåðõ JVM

Page 127: Иван Калинин - Как правильно выбрать язык программирования

LISP � ïðèìåðû

Hello world:

(princ "Hello, world!")

Bubble sort:

(defun bubble-sort (sequence &optional (compare #'<))

"sort a sequence (array or list)"

(loop with sorted = nil until sorted do

(setf sorted t)

(loop for a below (1- (length sequence)) do

(unless (funcall compare (elt sequence a)

(elt sequence (1+ a)))

(rotatef (elt sequence a)

(elt sequence (1+ a)))

(setf sorted nil)))))

Page 128: Иван Калинин - Как правильно выбрать язык программирования

LISP � ïðèìåðû

Hello world:

(princ "Hello, world!")

Bubble sort:

(defun bubble-sort (sequence &optional (compare #'<))

"sort a sequence (array or list)"

(loop with sorted = nil until sorted do

(setf sorted t)

(loop for a below (1- (length sequence)) do

(unless (funcall compare (elt sequence a)

(elt sequence (1+ a)))

(rotatef (elt sequence a)

(elt sequence (1+ a)))

(setf sorted nil)))))

Page 129: Иван Калинин - Как правильно выбрать язык программирования
Page 130: Иван Калинин - Как правильно выбрать язык программирования

• Monty Python's Flying Circus

• ñîçäàí â 1991 ãîäó

• ñîçäàòåëü � Guido van Rossum

• ìóëüòèïàðàäèãìåííûé,îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé,ôóíêöèîíàëüíûé

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• èíòåðïðåòèðóåìûé, áàéò-êîìïèëèðóåìûé ñâèðòóàëüíîé ìàøèíîé (â çàâèñèìîñòè îòðåàëèçàöèè)

Page 131: Иван Калинин - Как правильно выбрать язык программирования

• Monty Python's Flying Circus

• ñîçäàí â 1991 ãîäó

• ñîçäàòåëü � Guido van Rossum

• ìóëüòèïàðàäèãìåííûé,îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé,ôóíêöèîíàëüíûé

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• èíòåðïðåòèðóåìûé, áàéò-êîìïèëèðóåìûé ñâèðòóàëüíîé ìàøèíîé (â çàâèñèìîñòè îòðåàëèçàöèè)

Page 132: Иван Калинин - Как правильно выбрать язык программирования

• Monty Python's Flying Circus

• ñîçäàí â 1991 ãîäó

• ñîçäàòåëü � Guido van Rossum

• ìóëüòèïàðàäèãìåííûé,îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé,ôóíêöèîíàëüíûé

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• èíòåðïðåòèðóåìûé, áàéò-êîìïèëèðóåìûé ñâèðòóàëüíîé ìàøèíîé (â çàâèñèìîñòè îòðåàëèçàöèè)

Page 133: Иван Калинин - Как правильно выбрать язык программирования

• Monty Python's Flying Circus

• ñîçäàí â 1991 ãîäó

• ñîçäàòåëü � Guido van Rossum

• ìóëüòèïàðàäèãìåííûé,îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé,ôóíêöèîíàëüíûé

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• èíòåðïðåòèðóåìûé, áàéò-êîìïèëèðóåìûé ñâèðòóàëüíîé ìàøèíîé (â çàâèñèìîñòè îòðåàëèçàöèè)

Page 134: Иван Калинин - Как правильно выбрать язык программирования

• Monty Python's Flying Circus

• ñîçäàí â 1991 ãîäó

• ñîçäàòåëü � Guido van Rossum

• ìóëüòèïàðàäèãìåííûé,îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé,ôóíêöèîíàëüíûé

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• èíòåðïðåòèðóåìûé, áàéò-êîìïèëèðóåìûé ñâèðòóàëüíîé ìàøèíîé (â çàâèñèìîñòè îòðåàëèçàöèè)

Page 135: Иван Калинин - Как правильно выбрать язык программирования

• Monty Python's Flying Circus

• ñîçäàí â 1991 ãîäó

• ñîçäàòåëü � Guido van Rossum

• ìóëüòèïàðàäèãìåííûé,îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé,ôóíêöèîíàëüíûé

• ñòðîãî- è äèíàìè÷åñêè-òèïèçèðîâàííûé

• èíòåðïðåòèðóåìûé, áàéò-êîìïèëèðóåìûé ñâèðòóàëüíîé ìàøèíîé (â çàâèñèìîñòè îòðåàëèçàöèè)

Page 136: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ñêðèïòîâîãî ïðîãðàììèðîâàíèÿ

• âåá-ïðîãðàììèðîâàíèÿ

• íàó÷íîãî ïðîãðàììèðîâàíèÿ

Python � ñïåöèôèêàöèÿ ÿçûêà, ðåàëèçàöèè:

• CPython � îñíîâíàÿ (reference)

• Jython � ïîâåðõ JVM

• PyPy � Python in Python

Page 137: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ñêðèïòîâîãî ïðîãðàììèðîâàíèÿ

• âåá-ïðîãðàììèðîâàíèÿ

• íàó÷íîãî ïðîãðàììèðîâàíèÿ

Python � ñïåöèôèêàöèÿ ÿçûêà, ðåàëèçàöèè:

• CPython � îñíîâíàÿ (reference)

• Jython � ïîâåðõ JVM

• PyPy � Python in Python

Page 138: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ñêðèïòîâîãî ïðîãðàììèðîâàíèÿ

• âåá-ïðîãðàììèðîâàíèÿ

• íàó÷íîãî ïðîãðàììèðîâàíèÿ

Python � ñïåöèôèêàöèÿ ÿçûêà, ðåàëèçàöèè:

• CPython � îñíîâíàÿ (reference)

• Jython � ïîâåðõ JVM

• PyPy � Python in Python

Page 139: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ñêðèïòîâîãî ïðîãðàììèðîâàíèÿ

• âåá-ïðîãðàììèðîâàíèÿ

• íàó÷íîãî ïðîãðàììèðîâàíèÿ

Python � ñïåöèôèêàöèÿ ÿçûêà, ðåàëèçàöèè:

• CPython � îñíîâíàÿ (reference)

• Jython � ïîâåðõ JVM

• PyPy � Python in Python

Page 140: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ñêðèïòîâîãî ïðîãðàììèðîâàíèÿ

• âåá-ïðîãðàììèðîâàíèÿ

• íàó÷íîãî ïðîãðàììèðîâàíèÿ

Python � ñïåöèôèêàöèÿ ÿçûêà, ðåàëèçàöèè:

• CPython � îñíîâíàÿ (reference)

• Jython � ïîâåðõ JVM

• PyPy � Python in Python

Page 141: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ñêðèïòîâîãî ïðîãðàììèðîâàíèÿ

• âåá-ïðîãðàììèðîâàíèÿ

• íàó÷íîãî ïðîãðàììèðîâàíèÿ

Python � ñïåöèôèêàöèÿ ÿçûêà, ðåàëèçàöèè:

• CPython � îñíîâíàÿ (reference)

• Jython � ïîâåðõ JVM

• PyPy � Python in Python

Page 142: Иван Калинин - Как правильно выбрать язык программирования

Èñïîëüçóåòñÿ äëÿ:

• ñêðèïòîâîãî ïðîãðàììèðîâàíèÿ

• âåá-ïðîãðàììèðîâàíèÿ

• íàó÷íîãî ïðîãðàììèðîâàíèÿ

Python � ñïåöèôèêàöèÿ ÿçûêà, ðåàëèçàöèè:

• CPython � îñíîâíàÿ (reference)

• Jython � ïîâåðõ JVM

• PyPy � Python in Python

Page 143: Иван Калинин - Как правильно выбрать язык программирования

Python � ïðèìåðû

Hello world:

print("Hello, world!")

Bubble sort:

def bubblesort(lst):

"Sorts lst in place and returns it."

for passesLeft in range(len(lst)-1, 0, -1):

for i in range(passesLeft):

if lst[i] > lst[i + 1]:

lst[i], lst[i + 1] = lst[i + 1], lst[i]

return lst

Page 144: Иван Калинин - Как правильно выбрать язык программирования

Python � ïðèìåðû

Hello world:

print("Hello, world!")

Bubble sort:

def bubblesort(lst):

"Sorts lst in place and returns it."

for passesLeft in range(len(lst)-1, 0, -1):

for i in range(passesLeft):

if lst[i] > lst[i + 1]:

lst[i], lst[i + 1] = lst[i + 1], lst[i]

return lst

Page 145: Иван Калинин - Как правильно выбрать язык программирования

Âûáîð ÿçûêà ïîä çàäà÷ó

Page 146: Иван Калинин - Как правильно выбрать язык программирования

Ýêîñèñòåìà

• ñðåäñòâà ðàçðàáîòêè (IDE)

• áèáëèîòåêè è ôðåéìâîðêè

• òåñòîâûå ôðåéìâîðêè è èíñòðóìåíòû

• ñèñòåìû ïàêåòèðîâàíèÿ è ðàçâåðòûâàíèÿ

• êîììüþíèòè

Page 147: Иван Калинин - Как правильно выбрать язык программирования

Ýêîñèñòåìà

• ñðåäñòâà ðàçðàáîòêè (IDE)

• áèáëèîòåêè è ôðåéìâîðêè

• òåñòîâûå ôðåéìâîðêè è èíñòðóìåíòû

• ñèñòåìû ïàêåòèðîâàíèÿ è ðàçâåðòûâàíèÿ

• êîììüþíèòè

Page 148: Иван Калинин - Как правильно выбрать язык программирования

Ýêîñèñòåìà

• ñðåäñòâà ðàçðàáîòêè (IDE)

• áèáëèîòåêè è ôðåéìâîðêè

• òåñòîâûå ôðåéìâîðêè è èíñòðóìåíòû

• ñèñòåìû ïàêåòèðîâàíèÿ è ðàçâåðòûâàíèÿ

• êîììüþíèòè

Page 149: Иван Калинин - Как правильно выбрать язык программирования

Ýêîñèñòåìà

• ñðåäñòâà ðàçðàáîòêè (IDE)

• áèáëèîòåêè è ôðåéìâîðêè

• òåñòîâûå ôðåéìâîðêè è èíñòðóìåíòû

• ñèñòåìû ïàêåòèðîâàíèÿ è ðàçâåðòûâàíèÿ

• êîììüþíèòè

Page 150: Иван Калинин - Как правильно выбрать язык программирования

Ýêîñèñòåìà

• ñðåäñòâà ðàçðàáîòêè (IDE)

• áèáëèîòåêè è ôðåéìâîðêè

• òåñòîâûå ôðåéìâîðêè è èíñòðóìåíòû

• ñèñòåìû ïàêåòèðîâàíèÿ è ðàçâåðòûâàíèÿ

• êîììüþíèòè

Page 151: Иван Калинин - Как правильно выбрать язык программирования

Ïîïóëÿðíîñòü

Page 152: Иван Калинин - Как правильно выбрать язык программирования

Ñêîðîñòü îáó÷åíèÿ

Page 153: Иван Калинин - Как правильно выбрать язык программирования

Íèøåâîñòü ÿçûêîâ

Page 154: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• âåá-ïðèëîæåíèå

• âçàèìîäåéñòâèå ñ áàçîé äàííûõ

• âíóòðåííèé ñåðâèñ â êàìïàíèè

• íèçêàÿ íàãðóçêà

• áûñòðàÿ ðàçðàáîòêà

Íàø âûáîð � Python èëè Ruby

Page 155: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• âåá-ïðèëîæåíèå

• âçàèìîäåéñòâèå ñ áàçîé äàííûõ

• âíóòðåííèé ñåðâèñ â êàìïàíèè

• íèçêàÿ íàãðóçêà

• áûñòðàÿ ðàçðàáîòêà

Íàø âûáîð � Python èëè Ruby

Page 156: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• âåá-ïðèëîæåíèå

• âçàèìîäåéñòâèå ñ áàçîé äàííûõ

• âíóòðåííèé ñåðâèñ â êàìïàíèè

• íèçêàÿ íàãðóçêà

• áûñòðàÿ ðàçðàáîòêà

Íàø âûáîð � Python èëè Ruby

Page 157: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• âåá-ïðèëîæåíèå

• âçàèìîäåéñòâèå ñ áàçîé äàííûõ

• âíóòðåííèé ñåðâèñ â êàìïàíèè

• íèçêàÿ íàãðóçêà

• áûñòðàÿ ðàçðàáîòêà

Íàø âûáîð � Python èëè Ruby

Page 158: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• âåá-ïðèëîæåíèå

• âçàèìîäåéñòâèå ñ áàçîé äàííûõ

• âíóòðåííèé ñåðâèñ â êàìïàíèè

• íèçêàÿ íàãðóçêà

• áûñòðàÿ ðàçðàáîòêà

Íàø âûáîð � Python èëè Ruby

Page 159: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• âåá-ïðèëîæåíèå

• âçàèìîäåéñòâèå ñ áàçîé äàííûõ

• âíóòðåííèé ñåðâèñ â êàìïàíèè

• íèçêàÿ íàãðóçêà

• áûñòðàÿ ðàçðàáîòêà

Íàø âûáîð � Python èëè Ruby

Page 160: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• âåá-ïðèëîæåíèå

• âçàèìîäåéñòâèå ñ áàçîé äàííûõ

• âíóòðåííèé ñåðâèñ â êàìïàíèè

• íèçêàÿ íàãðóçêà

• áûñòðàÿ ðàçðàáîòêà

Íàø âûáîð � Python èëè Ruby

Page 161: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• áèëëèíãîâàÿ ñèñòåìà ñîòîâîãî îïåðàòîðà

• òûñÿ÷è îïåðàöèé â ñåêóíäó

• âûñîêàÿ íàäåæíîñòü è îòêàçîóñòîé÷èâîñòü

• ãèáêîñòü â êîíôèãóðàöèè, äèàãíîñòèêàïðîáëåì

Íàø âûáîð � Java, C++, Erlang

Page 162: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• áèëëèíãîâàÿ ñèñòåìà ñîòîâîãî îïåðàòîðà

• òûñÿ÷è îïåðàöèé â ñåêóíäó

• âûñîêàÿ íàäåæíîñòü è îòêàçîóñòîé÷èâîñòü

• ãèáêîñòü â êîíôèãóðàöèè, äèàãíîñòèêàïðîáëåì

Íàø âûáîð � Java, C++, Erlang

Page 163: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• áèëëèíãîâàÿ ñèñòåìà ñîòîâîãî îïåðàòîðà

• òûñÿ÷è îïåðàöèé â ñåêóíäó

• âûñîêàÿ íàäåæíîñòü è îòêàçîóñòîé÷èâîñòü

• ãèáêîñòü â êîíôèãóðàöèè, äèàãíîñòèêàïðîáëåì

Íàø âûáîð � Java, C++, Erlang

Page 164: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• áèëëèíãîâàÿ ñèñòåìà ñîòîâîãî îïåðàòîðà

• òûñÿ÷è îïåðàöèé â ñåêóíäó

• âûñîêàÿ íàäåæíîñòü è îòêàçîóñòîé÷èâîñòü

• ãèáêîñòü â êîíôèãóðàöèè, äèàãíîñòèêàïðîáëåì

Íàø âûáîð � Java, C++, Erlang

Page 165: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• áèëëèíãîâàÿ ñèñòåìà ñîòîâîãî îïåðàòîðà

• òûñÿ÷è îïåðàöèé â ñåêóíäó

• âûñîêàÿ íàäåæíîñòü è îòêàçîóñòîé÷èâîñòü

• ãèáêîñòü â êîíôèãóðàöèè, äèàãíîñòèêàïðîáëåì

Íàø âûáîð � Java, C++, Erlang

Page 166: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• áèëëèíãîâàÿ ñèñòåìà ñîòîâîãî îïåðàòîðà

• òûñÿ÷è îïåðàöèé â ñåêóíäó

• âûñîêàÿ íàäåæíîñòü è îòêàçîóñòîé÷èâîñòü

• ãèáêîñòü â êîíôèãóðàöèè, äèàãíîñòèêàïðîáëåì

Íàø âûáîð � Java, C++, Erlang

Page 167: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• êîä áîðòîâîé ÝÂÌ äëÿ ñïóòíèêà

• îãðàíè÷åííûå ðåñóðñû

• æåñòêîå ðåàëüíîå âðåìÿ

• ñòðîãî èçâåñòíûå çàäà÷è

• áîëüøîå êîëè÷åñòâî âû÷èñëåíèé

Íàø âûáîð � Ñ è Ñ-ïîäîáíûå ÿçûêè (èëè äàæå àññåìáëåð)

Page 168: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• êîä áîðòîâîé ÝÂÌ äëÿ ñïóòíèêà

• îãðàíè÷åííûå ðåñóðñû

• æåñòêîå ðåàëüíîå âðåìÿ

• ñòðîãî èçâåñòíûå çàäà÷è

• áîëüøîå êîëè÷åñòâî âû÷èñëåíèé

Íàø âûáîð � Ñ è Ñ-ïîäîáíûå ÿçûêè (èëè äàæå àññåìáëåð)

Page 169: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• êîä áîðòîâîé ÝÂÌ äëÿ ñïóòíèêà

• îãðàíè÷åííûå ðåñóðñû

• æåñòêîå ðåàëüíîå âðåìÿ

• ñòðîãî èçâåñòíûå çàäà÷è

• áîëüøîå êîëè÷åñòâî âû÷èñëåíèé

Íàø âûáîð � Ñ è Ñ-ïîäîáíûå ÿçûêè (èëè äàæå àññåìáëåð)

Page 170: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• êîä áîðòîâîé ÝÂÌ äëÿ ñïóòíèêà

• îãðàíè÷åííûå ðåñóðñû

• æåñòêîå ðåàëüíîå âðåìÿ

• ñòðîãî èçâåñòíûå çàäà÷è

• áîëüøîå êîëè÷åñòâî âû÷èñëåíèé

Íàø âûáîð � Ñ è Ñ-ïîäîáíûå ÿçûêè (èëè äàæå àññåìáëåð)

Page 171: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• êîä áîðòîâîé ÝÂÌ äëÿ ñïóòíèêà

• îãðàíè÷åííûå ðåñóðñû

• æåñòêîå ðåàëüíîå âðåìÿ

• ñòðîãî èçâåñòíûå çàäà÷è

• áîëüøîå êîëè÷åñòâî âû÷èñëåíèé

Íàø âûáîð � Ñ è Ñ-ïîäîáíûå ÿçûêè (èëè äàæå àññåìáëåð)

Page 172: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• êîä áîðòîâîé ÝÂÌ äëÿ ñïóòíèêà

• îãðàíè÷åííûå ðåñóðñû

• æåñòêîå ðåàëüíîå âðåìÿ

• ñòðîãî èçâåñòíûå çàäà÷è

• áîëüøîå êîëè÷åñòâî âû÷èñëåíèé

Íàø âûáîð � Ñ è Ñ-ïîäîáíûå ÿçûêè (èëè äàæå àññåìáëåð)

Page 173: Иван Калинин - Как правильно выбрать язык программирования

Íàïðèìåð

• êîä áîðòîâîé ÝÂÌ äëÿ ñïóòíèêà

• îãðàíè÷åííûå ðåñóðñû

• æåñòêîå ðåàëüíîå âðåìÿ

• ñòðîãî èçâåñòíûå çàäà÷è

• áîëüøîå êîëè÷åñòâî âû÷èñëåíèé

Íàø âûáîð � Ñ è Ñ-ïîäîáíûå ÿçûêè (èëè äàæå àññåìáëåð)

Page 174: Иван Калинин - Как правильно выбрать язык программирования

Ñïàñèáî çà âíèìàíèå!

Âîïðîñû?