Turingi masin
1937 Universaalne masin suudab arvutada/järeldada kõike
Turingi
tees: kõike mida
saab üldse mingi
masinaga järeldada/arvutada, saab ka Turingi
masinaga arvutada
Parmenides
(5 saj. e.m.a) kasutas
pikki loogilisi põhjendusi.
Zenon Elast
(5 saj e.ma) paradoksid
Sofistid- Sokrates
(470-399 e.m.a),
Platon (428/427 - 348/347e.m.a)
Aristoteles :
väidete struktuur kui iseseisev uurimisobjekt
Süllogismi
näited:1eeldus:iga koer on imetaja, 2eeldus mõned neljajalgsed on
koerad, järeldus: mõned neljajalgsed on
imetajad . Süllogism on
väitlus, kus mingitest etteantud väidetest järeldub paratamatult
uus väide. Aristotelese puhul alati kaks kategoorilist eeldust, üks
kategooriline järeldus
Stoikud
uurisid, kuidas saab loogiliste sidesõnade (ja, ei, või, kui
…siis)abil lihtsamatest lausetest keerulisemaid kokku panna ja
kuidas näidata selliselt moodustatud lausete õigsust.
Ramon
Llull
1235-
1315 müstik Peateos Ars
magna , generalis et ultima;
Leonardo
da Vinci
ca 1500, Tegi joonise kalkulaatorist, hiljem tehti sellest
katseeksemplar
Schickard
1625
väitis ehitanud olevat masina mis
liitis , lahutas, korrutas ja jagas
Blaise Pascal 1640 ehitas ainult liitva ja lahutava masina. Kokku ehitas 50
masinat Saksa
filosoof Leibniz 1646 -1716,
leiutas 1671 arvuti mis liitis, lahutas, korrutas ja
jagas. 1714 võettis
Henry Mill
inglismaal patent kirjutusmasinale, kuid seda ei ehitatud. 1829
Willam
Austin Burt
võttis
patendi Ameerikas kirjutusmasinale.
Sholes’ klaviatuur
ca
1874 (QWERTY
laotus ),
Dvoraki
klaviatuur
ca 1936 (1982 tunnustati ANSI poolt)
Jacquard
1800 võttis kasutusele oma
kangastelgede juhtimiseks
perfokaardid .
1928 tegi IBM oma perfokaardid.
Charles Babbage (kellelt
pärineb programmeeritava arvuti mõiste. Babbage't, kui Arvuti isa
peetakse esimese mehaanilise kalkulaatori(arvuti) loojaks, mis
omakorda pani aluse keerulistemate disainide loomisele.) 1991. aastal
loodi perfektselt töötav arvuti just Babbage'i plaanidele ja
skeemidele tuginedes. 1822: Difference
Engine , jäi pooleli
(
mehhaanilise kalkulaatori, mille ülesandeks oli arvutada
polünoomifunktsioonide väärtused) Varsti pärast automaatse
kalkulaatori tegemise põrumist alustas Babbage uue ja raskema,
täisautomaatse arvutusmasina, disainimist. Masin ei ole üksik
lõpetatud projekt, vaid kogum õnnestunud disainidest, millega ta
tegeles kuni oma surmani 1871. aastal. Põhiline erinevus kahe masina
vahel on see, et täisautomaatset arvutusmasinat saab programmeerida
kasutades löödud kaarte. Ta taipas, et
programmid saab panna
nendesse kaartidesse, nii et isik peab algselt ainult programmi looma
ja siis panema kaardid masinasse ja
laskma sellel töötada.
Täisautomaatne masin oleks kasutanud Jacquardi löödud
kaartide silmuseid, et kontrollida mehhaanilist kalkulaatorit, mis oleks kokku
pannud tulemused baseerudes eelnevate arvutuste tulemustele. See
masin oli ka mõeldud töötamaks ka sellistel detailidel, mida
kasutatakse moodsates arvutites, näiteks järjestikune kontroll ja
hargnevus ning see oleks olnud esimene mehaaniline seade, mis oleks
olnud Turingi masinale vastavate võimalustega. Ada
Lovelace ,
imetlusväärne
matemaatik ja üks väheseid inimesi, kes täismahus
mõistis Babbage'i ideesid, lõi täisautomaatse arvutusmasina jaoks
programmi. Oleks täisautomaatne arvutusmasin valmis ehitatud, siis
tema programm oleks oleks olnud võimeline
arvutama Bernoulli
numbrite järjestust/jada. Tänu sellele tööle on Lovelace'le
kingitud esimese arvutiprogrammeerija
tiitel . 1979ndal aastal anti
kaasaegsele programmkeelele tema auks nimi Ada.
Morse 1837 :
elektritelegraaf, Wheatstone 1857: perfolint
George
Boole, de Morgan Loogika (lausearvutuse) alused 1847-1854 Matemaatilise algebra ideede
kasutamine loogika jaoks: Loogika algebra:1*A = A, 0*A = 0, A+0 = A,
A+1 = 1,A+B = B+A, A*B = B*A, A*A = A
Enimkasutatud
tehted on: & (ja e.
konjunktsioon ) V (või e. disjunktsioon) -
(ei e.
eitus ) => (järeldus e. implikatsioon) == (samasus e.
ekvivalents )
A
& B A V B -A A => B
-------- -------- ---- --------
T
T T T T T V T T T T
T
V V T T V T V T V V
V
V T V T T V T T
V
V V V V V V T V
Kaasaegse
loogika alus:
Gottlob Frege
1879: Kontseptuaalne notatsioon ("Begriffsschrift")
loob
kaasaegse predikaatarvutuse; Isa (Jaan,Mihkel).
Isa(Jaan,Ants).Isa(Ants,Peeter).Iga x, y, z jaoks: Isa(x,y) &
Isa(y,z) => Vanaisa(x,z).Tõesta, et eksisteerivad z, u nii et
Vanaisa(z,u). 1890:
Herman Hollerith: perfokaartidega masin
USA rahvaloenduse andmete töötlemiseks Hollerith’i
firmast tekkis
IBM
Vaakumtoru
1906 Le e Deforest
Georg
Cantor
(1845-1918) hulgateooria rajaja, matemaatika alused lõid kõikuma,
avastas paradokse matemaatikas 1935-1937: artikkel
Turingi
masinast:
universaalsus , mittelahenduvus
1936:
Churchi
lambda -arvutus,
Churchi tees.universaalsus, mittelahenduvus
Konrad Zuse
Programmeeritavate arvutite
pioneer saksamaalt 1936-38: Z1:
puhtmehaaniline
1938: Z2:
rehkendus releedega
1941:
Z3
maailma esimene programmeeritav digitaalarvuti
1944-50:
Z4:
kommertsiaalne
digitaalarvuti
John Vincent Atanasoff 1939-1942: esimene elektronarvuti
Enigma :
alates 1920
aastatest Lorenz SZ 40 and SZ 42 ja eheimfernschreiber:
Saksa lennu ja merevägi
Colossus
Londonis 1943: saksa allveelaevade salakirja dekodeerimiseks,Alan
Turing . Lorenz-sakslaste krüpteerimismasin
Howard Aiken
IBM’i elektriline (releed)
digitaalne arvuti MARK I 1939-1944
Viis
esimest operatiivset digiarvutit:
Zuse 1941 mai, Atanasoff–Berry Computer
Summer 1941, Colossus
1934/1944, Harvard Mark I – IBM 1944, ENIAC 1944
1947
– William Shockley,
Walter Brattain, John Bardeen Bell Telephone
Laboratories-st leiutasid
point-contact transistor võimendi1949
– Maurice
Wilkes – EDSAC – esimene praktiline programm, mille
tehnoloogia põhines vaakumtorudel
1950
– ERA – esimene avalikult esitletud arvuti
1951
– UNIVAC I – esimene arvuti, mis võitis avalikkuse tähelepanu
1962
võidab esimest korda programm inimest kabemängus.
1952
–
Heinz Nixdorf asutas Nixdorf Computer
corp . Saksamaal hiljem 1990
ühines Siemensiga
1953
– esimene elektrooniline arvuti 701
1954
– Texas
Instruments teatab
silikoon transistorite
tootmisest Logic
Theorist is a computer
program written in 1955 and 1956 by
Allen Newell, Herbert
Simon and J. C.
Shaw .Newell, Simon and Shaw
went on to
construct the General
Problem
Solver , or GPS. The
first version of GPS ran in 1957
1955
– William Shockley leiutab Shockley pooljuhi
1956
– IBM leiutab esimese kõvaketta RAMAC 305 5 MB
1956
valmib esimene transistorpõhine arvuti
1957
– Fortran ( Formula Translator)1960
– IBM avab masstootmishoone; AT&T esimene avalikult müüdav
modem ;
COBOL
–üks vanimatest programmeerimiskeetestl
Grace Hopper;
LISP
– vanuselt teine programmeerimiskeel Fortrani järel
-John McCarthy;
1960
esimene arvuti PDP-1, maailma esimene arvutimäng
Space War 1963;
Hiir , Douglas Engelbart ;
ASCII
– American Standard
Code for Information Interchange
1964
Gordon Moore -Moore seadus;
1968 Moore, Noyce and Grove
left Fairchild ja lõid Intel Corp.
1968-1997 Moore
Inteli president Moore
seadus:
“Each new
chip contains roughly twice as much capacity as its
predecessor , and is
released within 18-24 months of the
previous chip.”
1964 BASIC
- John Kemeny and
Thomas Kurtz
1967
IBM esimene
floppy ketas ; 1967
Seymour Papert lõi
LOGO arvutikeele
lastele;
1968
Engelbart demonstreerib süsteemi, kus on klaviatuur,
numbriklahvid, hiir ja ekraan
1969
AT&T Bell Laboratories Kenneth
Thompson & Dennis Ritchie
loovad
UNIX -i
PDP-7le; 1969 Intel
4004
microprotsessor
CPU
In
1967 MacHACK VI
became the first program to beat a human (
rate 1510)
at a
competition , at the Massachussets State Championship
1971 esimene 4 bitine 4004 microprotsessor
1971
– ARPANET !!!
Interneti eelkäija
1971
- IBM alustas grupiga System/r, mis kujunes
SQL-ks1972
– Ralph
Baer „Computer Space“(1970);
Nolan tegi uue firma
ATARI;
„
Pong “
– esimene edukas videomäng; (1977 – ATARI siseneb koduarvutite
maailma); Colossal
Cave tekstipõhine seiklusmäng Will Growheri
poolt; Ray Tomlinson loob
e- maili
programmi ARPANET-i tekib @;
1972
5 1/4 inch diskettes first appear.
1972
2 tähtast programmeerimise konsepti esitletakse:
Objektorienteeritud Smalltalk idee Alan Kay XEROX,PARC Loogiline
programmeerimine Prolog Alain Colmerauer; Hewlett-
Packard tutvustab programmeeritavat
kalkulaatorit 1973 Bob Metcalfe leiutab
EthernetiC
arenes 1969-1973
Thompson, Ritchie, Kerrighan
1978
ilmus raamat „The C Programming
Language “
1975
–
Bill Gates & Paul Allen teevad uue BASICu MITS-le; Bill Gates
& Paul Allen asutavad „
Micro- Soft “-i;
Asutatakse Zilog
1976
01.04
Wozniak ja
Jobs asutavad
Apple Computer Company;
1977
Commodore PET(Personal
Electronic Transactor) ilmub , see on üks esimestest
personaal-arvutitest, tuli täies tükis ja oli koheselt kasutatav;
APPLE II, esimene värvigraafikaga koos mänguga „Breakout“;
1979
Daniel Bricklin ja Robert Frankston teevad
Visicalc-
79-80
USENET-
varajane „veeb“:tekstiuudised See on
hiiglaslik kogus
uudisgruppe, tekstid liiguvad masinast masinasse
Symbolics founded 1980. Created special hardware for
running LISP
programs (mostly AI)
efficiently .The
whole system written in LISP.
Another Lisp
machine company created at the
same time: LMI LISP
machine died
even faster
than Symbolics.
1981
Adam Osborne – Esimene kaasaskantav arvuti OSBORNE I kaalus u. 11
Kg(„24 pounds) kasutas Z80 maksis 1,790$;
Apollo arvuti esimene
tööjaam
Motorola 68000 põhjal; Silicon Graphics samuti Motorola
68000 põhjal, müüdi terminalideks; IBM
5150 personaalarvuti (PC);
CGA
graafikakaart 640x200
resolutsioon 16 värvi;
Microsoft osta
DOS-i
Seattle Computer Producs-lt ja MS-DOS nimi tuleb;
Novell Data
Systems
laseb välja
Novel Data Systems
Management computeri – see
annab võimaluse võrgus jagada kõvaketast;Ashton
Tate laseb välja
dBase
II
– varajane andmebaasi programm; 1982 loodi firma
SUN
Microsystems(SUN=
Stanford University
Network )
1977
Relational Software Inc. (RSI - currently
Oracle Corporation )
established: Ellison and Miner
1978
Oracle V1; 1980 Oracle V2; 1982 Oracle V3 released, Oracle became the
first DBMS to run on mainframes, minicomputers and PC's. Code was
written in C
1983
AT&T tutvustab Unix System V; AT&T Bell
Labs disainib
C++1984
esitleb Steve Jobs Apple Macintosh
GNU
projekt
Richard Stallman(EI OLE UNIX) – tahtis anda
operatsioonisüsteemile vabadust; MIT X-
windows system
1985
C++ tõusis domineerivaks OOP-ks; 1987 GCC – põhiline C
kompilaator UNIX-le, Stallmani poolt tehtud FSF(Free Software
Foundation) GCC(algselt GNU C Compiler) on GNU Compiler
Collection ,
Kompileerib: ;C++;Objective C; Fortran;
Java ; Ada;Pascal
1988
Jobs asutab NeXT-i ;Pixari „Tin Toy“ esimene arvutipõhine
multifilm ; Pixar on Jobsi poolt asutatud; Robert Morris ussitas
viirusega ARPANET-i
1989
Intel 80486
prose koos i860 RISC coprosega ;Motorola 68040; Maxis
SimCity uus mängude
valdkond (
simulatsioon ); AOL – American Online
network Apple II-le ja Macintoshile, hiljem 93 Microsoft, Commodore
64-le pakkus mängude,
uudiste , chattimise, e-maili võimalusi läbi
sissehelistava modemi(WWW ja HTML PUUDUVAD!!)
1989
progemise keel
Python
– Guido van Rossum; 1989-1990 FIDONET EESTIS; Andres Suitsu ja
Tarmo Soodla 89 detsembri lõpus
OPUS nimeline P.O.Box-;. 1990
WORLD WIDE WEB
SÜNNIB HyperText Markup Language – Tim
Berners -Lee; URL –
Uniform Resource Locator; HTTP – HyperText
Transfer Protocol ; 1990
Tampere tehnikaülikoolist laenuks saadud moodemi Robotics Courier
V.32 abil panid Küberneerika
Instituudi teadurid Aleksander
Shmundak, Mari Kõpp ja
Leonid Tomberg käima regulaarse ühenduse
oma instituudi ja soome UNIXI-kasutajate seltsi (FUUG) masina vahel.
Küberneetika
Instituudi arvuti helistas iga poole tunni tagant Soome
arvutisse ja
saatis edasi ning võttis vastu
vahepeal saabunud e-
teated (põhiliselt e-posti).
1991
Linus Torvalds
Linux 1991
GSM võrgu algus
1992
jaanuar esimene GSM
operaator Radiolinja Ab
1992Eesti Lipmaa organiseerib kahe
kalli sateliidiotseliini TCP/IP jaoks
rajamist. Märtsis pannakse Eestis käima tõeline
internet - Andres
Bauman, Jaak Lippmaa ning Toomas
Kadarpik . Eestis hakkas toimima .ee
1993
Esimene avalik
populaarne brauser NCSA Mosaic
v1.0 ( NCSA=National Center for Supercomputing Applivations) 1994 –
NCSA WWW- meeskonnast tekib
Netscape James
Clark asutab Mosaic
Communications, hiljem nimetatakse ümber Netscape-ks;Mosaic
Communications laseb välja Netscape Navigatori 1.0i;
Asutajad : Clark
ja Andeerssen GNU/Linux versioon 1.0 &
freeware BSD-s;Linus
Torvaldis laseb välja 1.0 Linux Kerneli BSD-s & Linux erinevad
asjad, et luua UNIX-eid
PHP development began in 1994 when the Danish/Greenlandic programmer
Rasmus Lerdorf initially created a set of
Perl scripts he called
"Personal Home Page
Tools " to maintain his personal
homepage..
1994Michael
Widenius and David Axmark start
work on the
MySQL
database.
05.10.1995
ilmub Eesti Päevalehe online number –
Tanel Tammet,
Marek Strandberg, Ott Köstner, Kalle Muuli.
01.12.1995
Postimees netis
1995Esimene
täispikk multifilm 3d animatsioonidega Toy story; Sun tuleb välja
portable Java
keelega:James Gosling, Mike Sheridan,and
Patrick Naughton
1995
Alta
Vista esimene interneti otsingumootor
1996
Esimesed interneti pangad – Forekspank, Hoiupank,
Hansapank kahtleb
tänu Jüri Mõisale
1997
Arvutimale võidab-
Deep Blue !!!
1997
alustab
Google
–
Larry Page ja Sergey Brin
1998
Netscape muutub Mozillaks
1998
ilmub Red Hat Linux 5.2
1999
RIM laseb välja
Blackberry ; Napster – looja Shawn Fanning
2000
Microsoft tutvustab
C#;
Trek Technology and IBM began selling the first USB
flash drives
commercially; Kazaa and FastTrack P2P systems were originally created
and
developed by Estonian programmers from BlueMoon Interactive (Ahti
Heinla, Priit Kasesalu ning Jaan Tallinn); Wikipedia;
iPod ;
microsoftil valmib XBOX
2003
Apple avab iTunes poe;
Skype muutub kõigile kättesaadavaks
2004
sotsialiseerumise aasta: MySpace,
Orkut , Mark
Zuckerberg Thefacebook,
mis hilem muutus
Facebook ; piltide
jagamise koht
Flickr , Gmail,
Ubuntu , Firefox
2005
Google maps, youtube,
eBay ostab Skype, Microsoftilt XBOX360
Ecki
xComputerKäsusüsteem
sarnaneb väga esimeste päris-mikroprotsesoritega. Lihtsama
arusaadavuse tõttu kasutab kahebaidiseid mälupesi (16
bitti ), mitte
ühebaidiseid, nagu harilik arvuti. Mälu on 1024 pesa (1 K), seega 2
Kbaiti. Aadressi jaoks kasutusel 10 bitti. Esimestel koduarvutitel
oli ka 4-16 Kbaiti (umbes sama hulk mälu)
Olulist:
protsessori sees on väike hulk spetsiaal-mälupesi (registrid)
Tehteid saab teha ainult nende registrite vahel. Ei ole näiteks
võimalik liita otse kahte mälus olevat arvu: enne
tuleb
nad registritesse kopeerida, siis seal liita, siis
tulemusregistrist
(nn akumulaator) mäll kirjutada. Koha, kust mälust
loetakse/kirjutatakse näitab ADDR
register . Koha, kust lugeda
järgmine käsk, näitab PC (program counter) register. Kaks tsuklit
uksteise sees:Valimine tsukkel suurendab igal ringil PC-d (program
counterit), st igal ringil voetakse taidetav
kask jargmisest
malupesast. Sisemine tsukkel toimub iga kasu sees. Sisemise tsukli
jooksul taidetakse kasu sisemisi
pisi -
samme . Uks pisisamm vastab
mingile juhtmele voolu peale andmisele, mispeale kaivitub vastav
loogika-ahel protessoris ja selle tulemus salvestatakse monda
registrisse.Masina taktsagedus on see sagedus, kui tihti pisi-samme
taidetakse. Iga jargmise pisi-sammu alustamise jaoks on masinas kell,
mis annab kindla sagedusega impulsse. Pisisammu number saadakse nende
impulsside kokkulugemisega. The X and Y registers hold two
sixteen-bit
binary numbers that are used as input by the ALU. The AC
register is the accumulator. It is the CPU's "
working memory"
for its calculations.
The
FLAG register stores the "
carry -out" bit produced when the
ALU
adds two binary numbers.The ADDR register specifies a
location in
main memory.
The
PC register is the program counter.
The
PC specifies the location in memory that holds the next instruction
to be executed.
The
IR is the instruction register. When the CPU fetches a
program
instruction from main memory, this is where it
puts it.
The
COUNT register
counts off the steps in a fetch-and-execute cycle. It
takes the CPU
several steps to fetch and execute an instruction.
Hierarhia pistikutest progekeelteniEsimene:
programmeerimismeetod: kaablid ja
pistikud Teine:
von Neumanni
arhitektuur , programm malus
binaarkoodina:01011101
01001011 01010101 11010101 10101001 ....Lihtsam kirjutada hexas, ntx
4A FC 09 B2 ....
Kolmas:
Esmane progekeel:
assembler . Uks masinakask: tuupiliselt uks rida
assembleri-programmi
Neljas:
Harilik progekeel ehk nn korgkeel (fortran, basic, c, java,python jne
jne).Harilikud valemid, if-then-
else jne, a la x=2*y+sin(y);
Kõrgkeeled
on erineva abstraktsusastmega:
Masinalähedane
ja ebamugav: Fortran, C (portaabel
assembler)
Abstraktsem
ja mugavam: Lisp, Ada, ML, Java, Python,
Peale
programmeerimiskeelte on veel hulk muid keeli: Päringukeeled
(SQL, RDQL, ....)
Kujunduskeeled
(HTML, PS, ...)
Spetsifitseerimiskeeled
(loogikakeeled, UML,)
On
olemas kaks põhivarianti keeles X
programmi
täitmiseks.
Kompileerimine:
masinkoodis programm nimega kompilaator teisendab keeles X programmi
masinkoodfailiks Y. Seejärel täidetakse saadud masinkoodis programm
Y. Näide: C.
Interpreteerimine:
masinkoodis programm nimega interpretaator loeb sisse X keeles faili
ja asub seda ridarealt täitma.Näide:vana BASIC
Just-in-time
compilaator(TSI) – JavaKeelte erisused : kolm põhiasja
Süntaks
(kuidas kirjutatakse näiteks if .. then .. else ühes või teises
keeles)
Semantika
ehk tähendus (mida õigesti kirjutatud rogramm
tegelikult
siis teeb)
Teegid
(libraries) (millised valmis programmijupid on selle keele jaoks
kergesti kättesaadavad või kohe kaasa pandud)
Keeled:
näited lisavõimalustest eri keeltesKiired
bitioperatsioonid,
otsepöördumine mälu kallale: C
Keerulisemad andmetüübid:
listid, hash
tabelid jne: Lisp, Scheme,Python
Erikonstruktsioonid
stringitöötluseks:
Perl, PHP
Objektid:
C++, Java, C#, Python, Lisp
Moodulid
(enamasti
ühendatud objektidega): C++, Java, C#
Veatöötluse
konstruktsioonid
(
exceptions ): Python, Java, C#
Prahikoristus:
kasutamata andmed
visatakse välja (Java, Python,Lisp, ...)
Sisse-ehitatud
tugi
paralleelprogrammide jaoks: Java, C#
Reaalaja-erivahendid:
Ada
“Templates”
(programm tulemuse sees): PHP, JSP,
Pyml Uute
programmide konstrueerimine
töö käigus: Lisp, Scheme
Loogikareeglid:
Prolog
“ laisk ”
viis funktsioone
arvutada: Miranda,
Hope , Haskell Pattern matching (viis funktsioone
defineerida): ML, Haskell
OS-ide
tüüpide puuUNIX
–kommerts(
Solaris , AIX, HPUX, ..).MacOS X, iOS, (WebOS); vabavara
(Linux, FreeBSD,
NetBSD ,Android)
¬UNIX
–Microsoft (Vista, Windows 7, Windows Phone);
¬MicroSoft
(Vanad
mobiilid :symbian,
Palm OS)
UNIXi
filosoofia
väike on ilus iga utiliit/teenus täidab ainult ühte
funktsiooni komponentide ehitus ja opsüsteemi vahendid
võimaldavad kerget ja selge liidesega kombineerimist
keerulisemad teenused pannakse kokku lihtsamatest tulemuseks on
alternatiivsete lahenduste võimalus ja süsteemide mitmekihiline
ehitus kõik on fail
failid,
kataloogi,
seadmed on ligipääsetavad sarnase liidesega
minimaalselt baasmõisteid, mis on võimalikult universaalsed
Arvuti
mälus olevatel protsessidel on kolm põhiolekut:
running,
runnable, blocked Operatsioonisüsteemi
tuuma funktsioonid ressursside
haldamine (mälu, protsessor, seadmed) protsesside haldamine
võrguliides ja võrguprotokollid turvalisuse garanteerimine
Operatsioonisüsteemi
muud funktsioonid kasutajate
andmebaas tarkvarahaldus kettaressursside haldus
monitooring Algoritmilised
(programeerimiskeeled)
C,
C++, Basic, COBOL, Java, Lisp, assembler ....
Kirjelduskeeled
(spetsifitseerimiskeeled)
HTML,
RDF, XML, SQL, ...
Korraga
mõlemat: loogika
Praktiline
süntees:
algoritmilised
keeled manipuleerivad kirjelduskeele abil antavate objektidega,
algoritmilise keele abil töödeldakse kirjeldusi näited:
Javascript ja HTML., C ja SQL, ....
Universaalne,
välja arvatud tippkiirust nõudvad või
operatsioonisüsteemi-
rakendused : Java
Maksimaalset
kiirust nõudvad rakendused,
süsteemprogrammeerimine:
C, C++
Windowsi
rakenduste programmeerimine: C#, VisualBasic, C,Java, ...
Brauseri
programmeerimine: Javascript, (Flash, Java)
Serveri
programmeerimine: PHP, Python, Java, Perl, Ruby, C, ..
Spetsiifilised rakendused: vastavalt vajadusele
Versioonikontroll
(CVS, subversion, git jne)
IP protokoll on
kokkulepe, et kuidas infot saata ja sellest aru saada tuleb. IP
protokoll lubab saata ainult väikeseid tekstijuppe. Iga
tekstijupi ette pannakse
lisainfo (päis ehk header), mis ütleb, et:
kuhu see tekst siis saata tuleb (IP aadress) kust tekst tuli
(
saatja IP aadress) Hulga lisainfot ka veel; * TCP/IP pere
tööhobune RFC 791
Garanteerib
marsruutimise, st minemise õiges suunas Mitteusaldusväärne -
ei taga kohalejõudmist Kui sisendpuhver on täis, siis
ignoreerib Ei loo kanalit iga datagrammi käsitletakse
sõltumatult
IP
aadress 4 baiti (32bitti)
Kaks põhi-protokolli, mis kasutavad IP-d.
UDP
(
user datagram protocol). Ei kontrollita, kas info jõudis pärale.
TCP
(transfer
control protocol). Toimub kontroll.
Pordid
on kanalid, mille kaudu arvuti suhtleb interneti ja teiste arvutitega
OSI
mudeli kihid
Liides
(interface) Sama süsteemi eri kihtide suhtlusviis omavahel
Protokoll
(protocol) Eri süsteemide
samade kihtide suhtlusviis omavahel
Interneti rakenduste oma
protokollid ,tüüpiliselt eraldi
Rakendusprogrammides (HTTP,SMTP,FTP,DNS,NFS) “Interneti”põhiosa,
reeglina opsüsteemi sisse ehitatud (TCP,UDP,IP), Kohtvõrk,moodemvms,
tüüpiliselt opsüsteemi laetavate kaardidraiveritega (Ethernet,
SLIP )
HTTP
on
omaette protokoll, mida kasutatakse
veebilehtede ,
piltide, tekstifailide, zip failide jne jne saatmiseks veebiserveri
ja brauseri vahel
HTTP
ei ole ehitatud “biti või baidi” tasemel, vaid teksti ridade
kaupa: päis, tühi rida, tekstiread
Rekursiivne
– millegi
kordamine viitega
iseendale või enesesarnaselt foo calls foo: * int
foo(int x)
Salesman travel -
6 linna puhul 5*4*3*2*1=120 erinevat teed
(N-1)! Reaalarvude hulk
on suurem (võimsam) kui positiivsete täisarvude hulk. Reaalarvude
hulk on suurem (võimsam) kui täisarvude hulk.
N:
0 1 -1 2 -2 3 -3 4 -4 …
Z:
0 1 2 3 4 5 6 7 8 … Tegelikult
on murdarvud vs pos täisarvud üksküheses vastavuses
Cantori teoreem ütleb üldisemalt, et mingi hulga H kõigi alamhulkade hulk
on suurema võimsusega kui see hulk H.
GNU
ideoloogia:
vabadus: primaarne on
tarkvara vabadus, sekundaarne tasuta
kättesaadavus ausus: ausam on kasutada vabavara kui
piraatkopeerida
teadmiste
vabadus: teadmised, tarkvara tahab olla vaba,on loomu poolest vaba -
teadmiste ja tarkvara kopeerimine
laiendab ühiskonna majanduslikku
võimsust, kaotajaid (rumalamaks jääjaid) pole
raha
saab teenida ka tarkvara toetades ja installeerides ja levitades
tellitud täiustusi ja modifikatsioone ehitades ehitades sellist
vabavara, mida klient soovib motivatsioon senistes kogustes
tarkvara luua väheneb?
vastuargument : programmeerimine on põnev
vastuargument: ehk polegi meil nii palju kallilt makstud programmiste
vaja? vastuargument: vabanenud programmeerija-te kaadersaab teha
uusi,
senisest keerulisemat softi, mille jaoks seni aega ega
ressurssi ei jätkunud
fact 3
==>
3 * fact (3 - 1) - ==> 3 * fact 2 ==> 3 * (2 * fact (2 - 1))
==>
3 * (2 * fact 1) ==> 3 * (2 * (1 * fact (1 - 1))) ==> 3 * (2 *
(1 * fact 0)) ==> 3 * (2 * (1 * 1)) ==> 6
Sun
Sparc’i assembler_sumto:
mov
%o0,%g3
mov
0, %o0
cmp
%o0,%g3
bg
L3
mov
0, %g2
add
%o0,%g2,%o0
L5: add %g2,1 ,%g2
cmp
%g2,%g3
ble,a
L5
add
%o0,%g2,%o0
L3: retl
nop
MIPS -I
(SGI spinoff) assemblerissumto:
li
$3, 0
li
$2, 0
blt
$4, $0, L3
L5: addu $3, $3, $2
addu
$2, $2, 1
ble
$2, $4, L5
L3:
move $2, $3
Jr
$31
Intel
386, 486, Pentium _sumto:
pushl
%ebp
movl
%esp,%ebp
movl
8(%ebp),%ecx
xorl
%eax,%eax
xorl
%edx,%edx
cmpl
%ecx,%eax
.
align 2
L5: addl %edx,%eax
incl %edx
cmpl
%ecx,%edx
L3: eave
ret
FORTRANINTEGER FUNCTI0N sumto(n)
isum
= 0
DO
i 10 = 0,n
isum
= isum + i
10
CONTINUE sumto
= isum
RETURN
END
COBOLPROCEDURE
SUMTO USING N,
Answer .
Begin .
PERFORM VARYING LoopCount FROM 0 BY 1
UNTIL LoopCount
GREATER THAN N
MULTIPLY
Answer BY LoopCount GIVING Answer.
END-PERFORM.
EXIT
PROGRAM
LISP(defun
sumto (n)
(if
(= 0 n)
0
(+
n (sumto (- n 1))) ))
C
(ja C++ ja Java ja C#)int
sumto(int n) {
int
i,sum = 0;
for(i=0;
i 10 x) #t #f) )
(define
(every? fn lst)
(if
(
pair ? lst)
(if
(fn (car lst))
(every?
fn (cdr lst))
#f)
#t))
(every?
good ? ‘(10 40 50 2 100))
Kõik kommentaarid