• Nie Znaleziono Wyników

PV109: Historie a vývojové trendy ve VT

N/A
N/A
Protected

Academic year: 2022

Share "PV109: Historie a vývojové trendy ve VT"

Copied!
34
0
0

Pełen tekst

(1)

PV109: Historie a v´ yvojov´ e trendy ve VT

Od strojov´eho k´odu k programovac´ım jazyk˚um

Ludˇek Matyska a Eva Hladk´a

Fakulta informatiky Masarykovy univerzity

podzim 2015

(2)

Programovac´ı jazyky v historick´ em v´ yvoji

Strojovˇe z´avisl´e Strojov´y k´od

Jazyky relativn´ıch adres

Jazyky symbolick´ych adres – assemblery Autok´ody

Strojovˇe nez´avisl´e

Zamˇeˇren´e na urˇcit´y typ ´uloh

Fortran – vˇedeckotechnick´e v´ypoˇcty Cobol – hromadn´e zpracov´an´ı dat Pascal – v´yukov´e programy Simula, Simscript – modelov´an´ı diskr´etn´ıch syst´em˚u

Eiffel – objektovˇe orientovan´e Univerz´aln´ı

Zdroj: http://webopedia.com

(3)

Procedur´ aln´ı vs. deklarativn´ı jazyky

Procedur´aln´ı

uraz na popis postupu v´ypoˇctu how to do it

Deklarativn´ı

uraz na popis ˇreˇsen´eho probl´emu what to do

LISP, Prolog, datab´azov´e jazyky apod.

(4)

Strojov´ y k´ od

Program se skl´ad´a z instrukc´ı Instrukci tvoˇr´ı

od operace – co se m´a prov´est jedna ˇci v´ıce adres – s jak´ymi daty absolutn´ı adresy

Instrukce zaps´any v dvojkov´e nebo ˇsestn´actkov´e soustavˇe Kaˇzd´y typ poˇc´ıtaˇce zpracov´av´a vlastn´ı sadu instrukc´ı Rodiny poˇc´ıtaˇc˚u sd´ılej´ı stejnou mnoˇzinu instrukc´ı

(5)

Assemblery

Stoj´ı nad strojov´ym k´odem – symbolisk´y z´apis, vyˇsˇs´ı srozumitelnost a snazˇs´ı programov´an´ı neˇz strojov´y k´od

V´az´any na konkr´etn´ı poˇc´ıtaˇc (rodinu poˇc´ıtaˇc˚u) Tˇri typy

Jazyky relativn´ıch adres

Numerick´a nebo symbolick´a jm´ena instrukc´ı Adresy jsou poˇc´ıt´any relativnˇe v˚ci b´azov´e adrese Pˇred spuˇstˇen´ım se transformuj´ı na adresy re´aln´e Jazyky symbolick´ych adres

Symbolick´e adresy, mohou b´yt absolutn´ı nebo relativn´ı Relokace adres pˇri zaveden´ı programu

Nejrozˇs´ıˇrenˇejˇs´ı jazyky niˇs´ı ´urovnˇe Autok´ody

Jiˇz nebyly omezeny pravidlem jeden pˇr´ıkaz = jedna ˇr´adka

,,Instrukce“ autok´odu mohou b´yt pˇreloˇzeny do v´ıce instrukc´ı poˇc´ıtaˇce Mezistupeˇn jazyk˚u niˇs´ı a vyˇs´ı ´urovnˇe

(6)

Pˇr´ıklad – fragment programu v assembleru

ExcessOfMemory label near mov bx, di

add bx, dx

mov word ptr _heapbase@ + 2, bx mov word ptr _brklvl@ + 2, bx mov ax, _psp@

sub bx, ax ; BX = Number of paragraphs to keep mov es, ax ; ES = Program Segment Prefix address mov ah, 04Ah

push di ; preserve DI

int 021h ; this call clobbers SI,DI,BP !!!!!!

pop di ; restore DI

(7)

Jazyky vyˇsˇs´ı ´ urovnˇ e

Vyˇsˇs´ı ´uroveˇn abstrakce

Prvn´ım jazykem vyˇsˇs´ı ´urovnˇe byl Plankalk¨ul K. Zuseho (pouze specifikace)

Nejsou v´az´any na konkr´etn´ı architekturu Ne vˇzdy realizov´ano do d˚usledk˚u Interpretovan´e vs. pˇrekl´adan´e jazyky

Pˇreklad do strojov´eho k´odu nebo mezik´odu (napˇr. Java bytecode)

(8)

Fortran – FORmula TRANslator (1954)

Prvn´ı jazyk, nez´avisl´y na konkr´etn´ım poˇc´ıtaˇci Urˇcen pro numerick´e a vˇedeck´e aplikace

Tvar z´apisu odvozen z form´atu dˇern´eho ˇst´ıtku (odstranˇeno teprve koncem 80. let)

Procedury a funkce (nerekurzivn´ı), mnoho vestavˇen´ych funkci Ve starˇs´ıch verz´ıch absence vˇetˇsiny obvykl´ych ˇr´ıdic´ıch struktur, velmi omezen´e moˇznosti pr´ace s texty

Velmi efektivn´ı pˇreloˇzen´y k´od – pro vˇedeckotechnick´e v´ypoˇcty prakticky bez konkurence

Zamˇeˇren na separ´atn´ı pˇreklad jednotliv´ych modul˚u – snadn´a tvorba knihoven

Existuj´ı mimoˇr´adnˇe rozs´ahl´e knihovny program˚u

(9)

Fortran – v´ yvojov´ e etapy

Fortran (1954)

Fortran I (1956), II (1957), III (1958)

Fortran IV (1962), z´aklad pro ofici´aln´ı normu ANSI Fortran (1966) Fortran 77 – pozdˇe, ale pˇrece zavedl strukturu

IF–THEN–ELSE–ENDIF, promˇenn´e typu CHARACTER, pˇr´ıkazy pro pr´aci se soubory aj.

Fortran 90 – mnoho dalˇs´ıch rozˇs´ıˇren´ı (pr´ace s polem jako celkem, prvky OOP), celkov´a modernizace jazyka pˇri zachov´an´ı zpˇetn´e kompatibility

Fortran 95

Fortran 2003 – podpora objektov´eho programov´an´ı, abstraktn´ı datov´e typy; ukazatele na procedury; asynchronn´ı I/O

Fortran 2008 (2010)

(10)

Fortran 77 – pˇr´ıklad programu

CHARACTER RECORD*9,VERSE*9,PEN6*6,PEN(6) EQUIVALENCE (PEN6,PEN)

VERSE=CHAR(0)//’GR 90.06’

OPEN(8,FILE=’ ’,FORM=’BINARY’) READ(8,END=200) RECORD IF(RECORD.NE.VERSE) THEN

PRINT *,’**ERROR: MISSING "PLOTS" OR INVALID FILE’

GOTO 300 END IF XMIN= 1.0E9 YMIN= 1.0E9 XMAX=-1.0E9 YMAX=-1.0E9 DO 110 I=1,6

110 PEN(I)=’ ’

CALL SIZSUB(XMIN,YMIN,XMAX,YMAX,PEN,’H’,NUM) PRINT 1000,NUM,XMIN,XMAX,MIN(32.00/(XMAX-XMIN),

* 28.70/(YMAX-YMIN)),

* YMIN,YMAX,MIN(22.00/(XMAX-XMIN),17.00/(YMAX-YMIN)) 1000 FORMAT(12X,’**** GRAPH LIMITS ****’/

* ’ Number of graphs in the metafile:’,i3/

* ’ XMIN =’,F9.3,’ CM’,10X,’XMAX =’,F9.3,’ CM’,10X,

* ’LP_FACTOR =’,F10.5/’ YMIN =’,F9.3,’ CM’,10X,

* ’YMAX =’,F9.3,’ CM’,10X,’COLFACTOR =’,F10.5) IF(PEN6.NE.’ ’) PRINT 1001,PEN

1001 FORMAT(/’ 1 2 3 4 5 6 7’/

*’ PENS USED : *’,6A3) GOTO 400

200 PRINT ’(’’****ERROR: EMPTY GRAPHIC FILE’’)’

300 PRINT ’(’’****SIZE_GR ABORTED’’)’

400 END

(11)

Cobol – Common Business Oriented Language (1959)

Urˇcen pro hromadn´e zpracov´an´ı dat

Procedur´aln´ı ˇc´ast programu vypad´a pˇrev´aˇznˇe jako psan´a v bˇeˇzn´e angliˇctinˇe

Prvn´ı jazyk, kter´y zavedl datov´e struktury

V novˇejˇs´ıch verz´ıch zabudov´ano tˇr´ıdˇen´ı, zjednoduˇsen´a tvorba sestav, pˇr´ıstup k datab´az´ım aj.

Obdobnˇe jako Fortran cel´a v´yvojov´a ˇrada (OO COBOL 2002) Program sest´av´a ze 4 ˇc´ast´ı:

IDENTIFICATION DIVISION – program a operaˇcn´ı syst´em

ENVIRONMENT DIVISION – pouˇz´ıvan´e soubory; poˇc´ıtaˇc a operaˇcn´ı syst´em

DATA DIVISION – popis dat

PROCEDURE DIVISION – algoritmus zpracov´an´ı (program)

(12)

Cobol – pˇr´ıklad programu

(13)

Algol – Algorithmic Language (1958)

Prvn´ı pokus o plnˇe univerz´aln´ı jazyk

Zavedl nˇekter´e netradiˇcn´ı znaky (oper´ator n´asoben´ı ×, celoˇc´ıseln´eho elen´ı ÷, umocˇnov´an´ı ↑, negace ¬, dekadick´y exponent a10) Kl´ıˇcov´a slova se podtrhuj´ı nebo tisknou polotuˇcnˇe

Mnoho revoluˇcn´ıch prvk˚u (v dneˇsn´ıch jazyc´ıch uˇz povaˇzovan´ych za samozˇrejm´e): podm´ınˇen´e v´yrazy a pˇr´ıkazy, pˇr´ıkaz for, pˇrep´ınaˇc, rekurzivn´ı procedury, vol´an´ı parametr˚u jm´enem nebo hodnotou, apod.

Starˇs´ı verze neˇreˇsily vstup a v´ystup

Minim´aln´ı moˇznosti pr´ace s texty ve starˇs´ıch verz´ıch Pˇresn´y form´aln´ı popis syntaxe (Backusova norm´aln´ı forma)

(14)

V´ yvojov´ e etapy

Algol 58

Pouze specifikace jazyka Algol 60

Snad nejv´yznamnˇejˇs´ı jazyk vˇsech dob, ovlivnil na desetilet´ı ostatn´ı jazyky

I samotn´y pˇrekladaˇc pˇredstavoval pr˚ulom Algol 68

Nov´y pokus o revoluci v programovac´ıch jazyc´ıch

Zavedl ”kr´atk´e”a ”dlouh´e”datov´e typy (int, short int, real, long real, long long real ...),

Zavedl ukazatele, tj. odkazy ˇci reference na promˇenn´e (ref int ...), l-hodnoty,

Umoˇznil paraleln´ı vˇetve programu, struktury a uniony, uˇzivatelem deklarovan´e oper´atory aj.

Pˇresn´a form´aln´ı definice syntaxe a ˇasteˇcnˇe i s´emantiky.

(15)

Algol 60 – N´ asoben´ı ´ uspornˇ e uloˇ zen´ e symetrick´ e matice vektorem

procedure mulsym(A,b,n);

value n; integer n; real array A,b;

comment mulsym n´asob´ı matici invertovanou procedurou symin na symetrickou matici A~ˇadu n vektorem b.

ysledek pˇrep´ıˇse prvn´ıch n prvk˚u pole A;

begin integer i,k,l,p;

l:=n;

for i:=1 step 1 until n do begin A[i]:=0; p:=l+i;

for k:=i step -1 until 1 do begin

A[i]:=A[i]+A[p]×b[k];

p:=p-n-1+k;

end;

if i<n then

for k:=i+1 step 1 until n do A[i]:=A[i]+A[l+k]×b[k];

l:=l+n-i;

end end multsym;

(16)

LISP – List Processing (1958)

Funkcion´aln´ı jazyk, syntaxe silnˇe ovlivnˇena Lambda kalkulem Urˇcen pro zpracov´an´ı seznam˚u

Ty povaˇzov´any za vhodn´y z´apis pro umˇelou inteligenci (LISP samotn´y ale nebyl p˚uvodnˇe pro umˇelou inteligenci navrˇzen)

Nen´ı rozd´ıl mezi daty a programem Pr´avˇe to jej uˇcinilo vhodn´ym pro UI

Pr˚ukopn´ık mnoha nov´ych programovac´ıch technik Program tvoˇren s-v´yrazy

(f a b c) – funkce f aplikovan´a na argumenty a, b, c

LISP je mimoˇr´adnˇe nepˇrehledn´y, je proto extr´emnˇe d˚uleˇzit´e strukturu programu zv´yrazˇnovat vhodnou grafickou ´upravou.

(17)

LISP – program ,,guess my number”

(defparameter *small* 1) (defparameter *big* 100)

(defun guess-my-number () (ash (+ *small* *big*) -1))

(defun smaller ()

(setf *big* (1- (guess-my-number))) (guess-my-number))

(defun bigger ()

(setf *small* (1+ (guess-my-number))) (guess-my-number))

(defun start-over () (defparameter *small* 1) (defparameter *big* 100) (guess-my-number))

(18)

Basic – Beginners All-purpose Symbolic Instruction Code (1964)

Vyvinut´y na Dartmouth College

P˚uvodn´ı verze velmi primitivn´ı, kritizov´an za pomalost a osvojov´an´ı ˇspatn´ych n´avyk˚u

Pozdˇeji nejv´yznamnˇejˇs´ı jazyk na nejmenˇs´ıch poˇc´ıtaˇc´ıch (na stoln´ıch kalkul´atorech a dom´ac´ıch poˇc´ıtaˇc´ıch ˇcasto jedin´y dostupn´y jazyk, integrovan´y pˇr´ımo do hardwaru)

azvy promˇenn´ych pouze jedno p´ısmeno nebo jedno p´ısmeno a jedna ˇc´ıslice

pouze 2 datov´e typy: ˇc´ıslo (re´aln´e) a ˇretˇezec

Kaˇzd´y pˇr´ıkaz zaˇc´ın´a poˇradov´ym ˇc´ıslem, kter´e lze pouˇz´ıt jako n´avˇeˇst´ı Prvn´ı slovo pˇr´ıkazu charakterizuje, co pˇr´ıkaz dˇel´a

(19)

Basic – pˇr´ıklad programu

10 REM PROLOZENI BODU PRIMKOU Y=A+BX 20 REM METODOU NEJMENSICH CTVERCU 30 PRINT "KOLIK BODU BUDE ZADANO (3-100)?"

40 INPUT N 45 IF N<3 THEN 30 46 IF N>100 THEN 30

50 REM POCATECNI STAV PROMENNYCH 52 LET P1=0

54 LET P2=0 56 LET P3=0 58 LET P4=0

60 REM CTENI SOURADNIC A~SUMACE 70 FOR I=1 TO N

80 PRINT I;". DVOJICE X,Y: ";

90 INPUT X,Y

100 LET P1=P1+X 110 LET P2=P2+Y 120 LET P3=P3+X*Y 130 LET P4=P4+X^2 140 NEXT

I~150 REM VYPOCET REGRESNICH KOEFICIENTU A, B 160 LET B=(P3-P1*P2/N)/(P4-P1^2/N)

170 LET A=(P2-P1*B)/N 180 IF(B<0 THEN 186 182 LET Z$ ="-"

184 GOTO 190 186 LET Z$ ="+"

190 PRINT

200 PRINT "ROVNICE PRIMKY JE Y="A;Z$ ;ABS(B);"X"

210 PRINT

(20)

PL/I – Programming Language One (1964)

Univerz´aln´ı programovac´ı jazyk vyvinut´y v IBM Snaha spojit Fortran a COBOL

uvodnˇe NPL (tak´e National Physical Paboratory), pˇrejmenov´an na PL/I

PL/I ´uzce propojena s OS/360

Dialekty pro r˚uzn´e poˇc´ıtaˇce (kv˚uli propojen´ı s pˇr´ısluˇsn´ymi operaˇcn´ımi syst´emy)

Operaˇcn´ı syst´em Multics byl naps´an v PL/I

Aˇz pˇriliˇs univerz´aln´ı, coˇz vedlo k nepˇrehledn´e syntaxi i s´emantice:

E. Dijkstra: Pouˇz´ıvat PL/I mus´ı b´yt jako pilotovat letadlo pomoc´ı 7000 tlaˇc´ıtek, pˇrep´ınaˇu a p´ak v kokpitu.

Absolutnˇe nech´apu, jak bychom mohli intelektu´alnˇe zvl´adnout naˇse rozr˚ustaj´ıc´ı se programy, kdyˇz uˇz s´am programovac´ı jazyk – n´s hlavn´ı n´astroj! – se pro svou baroknost vymkl z naˇs´ı intelektu´aln´ı kontroly.

(21)

PL/I – Deklarovan´ e c´ıle

Co je intuitivnˇe jasn´e a jednoznaˇcn´e, nen´ı zak´az´ano Pokud je to moˇzn´e, neuchylovat se ke strojov´emu k´odu

Strojovˇe nez´avisl´y (pˇresto je na nˇem patrno, ˇze vznikl pro IBM/360) Modularita

P´eˇce o zaˇc´ateˇcn´ıky

Staˇc´ı znalost mal´e podmnoˇziny jazyka pro ´uspˇeˇsn´e psan´ı program˚u

(22)

PL/I – pˇr´ıklad podprogramu

DECLARE ABS GENERIC (ABS1 ENTRY (FIXED),

ABS2 ENTRY (FLOAT REAL), ABS3 ENTRY (COMPLEX));

ABS1: ABS2: PROCEDURE (X); DECLARE Y;

Y=X;

IF Y LT 0 THEN Y=-Y; RETURN(Y);

ABS3: ENTRY (X);

RETURN (SQRT(REAL(X)**2 + IMAG(X)**2));

END ABS;

(23)

APL – A Programming Language (1964)

Univerz´aln´ı programovac´ı jazyk

Velmi ,,hutn´y“ z´apis (aˇz 10kr´at struˇcnˇejˇs´ı neˇz v bˇeˇzn´ych jazyc´ıch) Prvn´ı verze jiˇz v roce 1962

Implementace na IBM 360/370, CDC, UNIVAC, rusk´em BESM aj.

Pouˇz´ıv´a se dodnes, pˇrekladaˇce a speci´aln´ı fonty jsou na Webu

(24)

APL

Speci´aln´ı sortiment znak˚u (nutnost pouˇz´ıvat zvl´aˇstn´ı termin´al ˇci font nebo nahrazovat speci´aln´ı znaky n´ahradn´ımi kombinacemi znak˚u ASCII)

Program na prvn´ı pohled (nezasvˇecen´emu) zcela nesrozumiteln´y Velmi mnoho oper´ator˚u, vˇetˇsina jako un´arn´ı i bin´arn´ı (obvykle

s r˚uzn´ymi v´yznamy: ÷x znamen´a 1/x, x÷y znamen´a x/y; *x znamen´a ex, x*y znamen´a xy)

Oper´atory maj´ı stejnou prioritu a prov´ad´ı se odzadu, poˇrad´ı vˇsak lze zmˇenit z´avorkami

Bohat´a podpora pr´ace s vektory a maticemi (napˇr. A÷~B znamen´a vyn´asob matici A inverz´ı matice B)

(25)

APL – pˇr´ıklad

(26)

Pascal (1970)

Snadn´y k nauˇcen´ı, zvl´aˇst’ vhodn´y pro v´yuku, m´enˇe pro praktick´e programov´an´ı

Autorem je Niklaus Wirth, jazyk je pojmenov´an na poˇcest B. Pascala Siln´a typov´a kontrola, vˇetˇsina chyb se zachyt´ı uˇz pˇri kompilaci Program se mus´ı kompilovat vcelku – ˇz´adn´a modularita Vyjadˇrovac´ı moˇznosti tak mal´e, ˇze vˇetˇsina implementac´ı jazyk rozˇsiˇruje (neportabilnˇe, napˇr. unit v pˇrekladaˇc´ıch fy Borland)

Nˇekter´e nedostatky byly odstranˇeny v revidovan´e verzi jazyka (napˇr.

zaveden´ı konformantn´ıch pol´ı).

Novˇejˇs´ı pˇrekladaˇce jazyk podstatnˇe rozˇs´ıˇrily – za cenu v´aˇzn´eho omezen´ı pˇrenositelnosti program˚u.

(27)

Smalltalk (1970)

Plnˇe objektovˇe orientovan´y jazyk

Silnˇe typovan´y, dynamick´y a interpretovan´y Vznikl v Xerox PARC

N´astroj pro programov´an´ı v grafick´em prostˇred´ı

Specifick´a syntaxe (inspirace obr´acenou polskou notac´ı BPN) Nˇekolik variant oznaˇcen´ych podle roku vzniku (72, 74, 76, 78, 80) V´yraznˇe ovlivnil nov´e (C++, Java) i aktualizovan´e verze starˇs´ıch (Cobol, LISP) programovac´ıch jazyk˚u

(28)

Prolog – Programation en Logique (1970)

Deklarativn´ı logick´y jazyk, logika prvn´ıho ˇr´adu

Autory jsou Alain Colmeraurer a Phillipe Roussel z univerzity Aix-Marseille

Slouˇzil pro usnadnˇen´ı komunikace s poˇc´ıtaˇcem v pˇrirozen´em jazyce Vyuˇz´ıv´an zejm´ena v oblasti umˇel´e inteligence a v poˇc´ıtaˇcov´e lingvistice Jednoduch´a syntax, zaloˇzen na predik´atov´e logice prvn´ıho ˇr´adu Hornovy klauzule, unifikace, rekurze a backtracking

Z´aklad logick´eho programov´an´ı Japonsk´a 5. generace poˇc´ıtaˇu Rada verz´ı, vˇˇ cetnˇe podpory OOP

(29)

Prolog – Probl´ em Hanoisk´ ych vˇ eˇ z´ı

% move(N,X,Y,Z) - move N disks from peg X to peg Y, with peg Z being the

% auxilliary peg

% Transfer the first n-1 discs to some other peg X

% Move the last disc on X to Y

% Transfer the n-1 discs from X to peg Y

move(1,X,Y,_) :-

write(’Move top disk from ’), write(X),

write(’ to ’), write(Y), nl.

move(N,X,Y,Z) :- N>1, M is N-1, move(M,X,Z,Y), move(1,X,Y,_), move(M,Z,Y,X).

Zdroj: http://www.cs.toronto.edu/~hojjat/384w09/simple-prolog-examples.html

(30)

Jazyk C (1972)

Vyvinut v Bell Laboratories – D. Ritchie a K. Thompson Spojuje prvky jazyk˚u vysok´e a n´ızk´e ´urovnˇe

Univerz´aln´ı, zvl´aˇst’ vhodn´y pro syst´emov´e programov´an´ı

Tˇesn´a n´avaznost na operaˇcn´ı syst´em, zpoˇc´atku silnˇe sv´az´an s Unixem Snadno se v nˇem udˇel´a chyba, kter´a neporuˇsuje syntax a nen´ı proto zachycena pˇrekladaˇcem

Velmi efektivn´ı generovan´y k´od, bohat´a nab´ıdka oper´ator˚u Fortran vs. C

V´yvojov´e etapy

Kernighan-Ritchie (K-R) C ANSI C (postupnˇe nˇekolik verz´ı) ISO/IEC C (C99)

(31)

Ada (1980)

Vyvinut na zak´azku ministerstav obrany (DoD) USA

Pojmenov´an na poˇcet Ady Augusty Byronov´e hrabˇenky Lovelace uvodnˇe tuto ambici mˇel Algol 68

Prosazen jako jedin´y jazyk pro v´yvoj nov´ych syst´em˚u (bezpeˇcn´e programov´an´ı)

Univerz´aln´ı jazyk pro vˇsechny typy aplikac´ı vˇcetnˇe ˇr´ızen´ı v re´aln´em ˇ

case

Strukturovan´y, staticky typovan´y a objektovˇe orientovan´y jazyk Zavedl nebo pˇrevzal nˇekter´e neobvykl´e modern´ı prvky (zpracov´an´ı yjimek, generick´e funkce)

Podpora ,,bezpeˇcn´eho“ paralelismu a explicitn´ı podpora soubˇznosti Velmi dokonal´y, ale m´alo rozˇs´ıˇren´y

(32)

Ada – pˇr´ıklad programu

restricted(MATH_LIB, TEXT_IO) procedure QUADRATIC_EQUATION is

use TEXT_IO;

A, B, C, D: FLOAT;

begin

GET(A); GET(B); GET(C);

D:=B**2-4.0*A*C;

if D<0.0 then

PUT("COMPLEX ROOTS");

else declare

use MATH_LIB; -- tam je funkce SQRT begin

PUT("REAL ROOTS: ");

PUT(B-SQRT(D))/(2.0*A));

PUT(B+SQRT(D))/(2.0*A));

PUT(NEWLINE);

end;

end if;

end QUADRATIC_EQUATION;

(33)

Historie programovac´ıch jazyk˚ u

Zdroj: http://iwi.uni-hannover.de

(34)

Dalˇs´ı odkazy na historii programovac´ıch jazyk˚ u

http://oreilly.com/news/graphics/prog_lang_poster.pdf http://www.scriptol.com/programming/history.php

http://www.levenez.com/lang/

Cytaty

Powiązane dokumenty

- transport posiłków w atestowanych termosach gwarantujących utrzymanie odpowiedniej temperatury oraz jakości przewożonych potraw. Wykonawca zobowiązany jest do

wspólnie, Zamawiający zażąda przed zawarciem umowy w sprawie zamówienia publicznego, umowy regulującej współpracę tych Wykonawców.. Zamawiający zawiera umowę w sprawie

Index bonity umoˇz ˇnuje rychl ´e posouzen´ı solventnosti obchodn´ıch partner ˚u a funguje jako syst ´em vˇcasn ´eho varov ´an´ı pˇred moˇzn´ym ´upadkem firmy.. ˇ

Zamawiający nie zastrzega do osobistego wykonania żadnej części zamówienia. Wykonawca może powierzyć wykonanie części zamówienia podwykonawcy, pod warunkiem

wspólnie, Zamawiający zażąda przed zawarciem umowy w sprawie zamówienia publicznego, umowy regulującej współpracę tych Wykonawców. Zamawiający zawiera umowę w sprawie

Zamawiający wskaże termin i miejsce podpisania umowy Wykonawcy, którego oferta została uznana za najkorzystniejszą w piśmie informującym o wyniku postępowania. Wykonawcy,

Struˇ cn´ e shrnut´ı Prologu Rozd´ıly od procedur´ aln´ıch jazyk˚ u. Rozd´ıly od procedur´ aln´ıch

Jde o poˇ c´ ateˇ cn´ı ´ ulohu pro soustavu line´ arn´ıch obyˇ cejn´ ych diferenci´ aln´ıch rovnic 1.. Newtonovu metodu lze