Aritmeetiline
masin- 1640
,
ainult
liitis ja lahutas, Kristlik
filosoof Blaise Pascal Leibnizi
arvuti – 1671, Saksa filosoof
Leibniz, arvuti: liitis, lahutas, korrutas, jagas
Elektritelegraaf
-
Morse 1837
Loogika (lausearvutuse) alused 1847-1854
Perfolint
-
Wheatstone 1857
Frege loob kaasaegse predikaatarvutuse - 1879 Herman Hollerith perfokaartidega masin USA rahvaloenduse andmete
töötlemiseks – 1890, sellest firmast tekkis IBM
Vaakumtoru
- 1906, Lee Deforest
Artikkel
Turingi masinast:
universaalsus , mittelahenduvus – 1935-1937
Churchi lambda -arvutus, Churchi tees. - 1936,universaalsus,
mittelahenduvus
Z1
– 1936 , Konrad
Zuse mehhaaniline arvuti
MARK I
– 1939-1944, Harvardi elektriline(
releedega ) digitaalne arvuti
ABC
computer – 1939-1942 ,
Atanasoff-
Berry esimene elektronarvuti
Esimene transistor - 1947
EDSAC
– 1949, esimene praktiline
stored -
program arvuti,
programmid olid aukudega peberiribadel
ERA 1101 – 1950
ESIMENE
KOMMERTS -TOOTMISES ARVUTI, hoidis bitte magneetilises
trumlis, lõpuks suutsid kuni 4000 sõna hoida
UNIVAC
I – 1951
Esimene kommerts-tootmises arvutis, mis äratas suurt tähelepanu, 46
masinat müüdi, 1 million dollarit tükk, Remington
Rand tootis Prinz´s chess program -1951
Stratchey
checkers program – 1952
IBM saadab välja oma esimese elektroonilise arvuti – 1953, nimi:
(IBM) 701
Texas Instruments alustab silikon-transistoride
kommerts-tootmist –
1954
Shockley Semiconductor – 1955 asutati
Arthur Samuel – 1955, õpetas Stratchey programmi põhjal tehtud
programmi ise õppima, 1962 võitis see programm Connecticuti
tšempionit ühe korra ja siis sai 6 korda järjest pähe.
IBM
toodab/arendab esimese kõvaketta – 1956, 5MB mälu
FORTRAN
– 1957, IBM
Fairchild Semiconductors – 1957, moodustati 8-sa
inseneri poolt, kes
lahkusid Shockley´st
Integreeritud
vooluring – 1958, Kilby Texas Instruments´ist
Integreeritud
vooluring –
1959 ,
Robert Noyce Fairchild´ist konstrueeris, Fairchild
Semiconductor kuulutab integreeritud vooluringi nn ainuavastamise
SAGE
– 1958, Külm sõda, USA ja
Kanada pool-
automaatne õhutõrje
süsteem, mitmed radari jaamad omavahel ühenduses (Semi –
Automatic
Ground Environment)
Esimene
kommerts modem - 1960, AT&T
COBOL
– 1960, Common Business Oriented Language
LISP
– 1960, Esimene AI programiseks mõeldud keel
Esimene
kommerts integreeritud vooluring – 1961, Fairchild Semi
Spacewar
– 1961, esimene arvutimäng PDP-1 le
Ivan
Sutherlandi Sketchpad – 1962,
graafika süsteem
Arvuti
hiire patent – 1963,
Douglas Engelbart
ASCII
– 1963, American Standard
Code for Information Interchange
Moore ´i
seadus – 1964,
iga pooleteise aasta tagant transistorite arv kahekordistub/chippide
võimsus kahekordistub
BASIC
– 1964, Beginners All-
purpose Symbolic Instruction Code,
PDP-8
– 1965, esimene kommertsiaalselt edukas miniarvuti, Digital
Equipment Corp Esimene
Floppy disk – 1967, IBM
Douglas
Englebarti demo –
1968, esitletakse arvuti
hiirt , hüperteksti kasutamist, kahe
osapoole suhtlust võrgus
audio ja visuaalne
INTEL´i
asutamine – 1968,
Moore, Noyce ja Grove,
hargnes pm Fairchild Semist
AMD
asutamine – 1969,
Sanders ja 7 teist. Hargnes Fairchild semist
UNIX -i
OS – 1969, Kenneth
Thompson ja Dennis Ritchie, AT&T Bell
Labs INTEL-i
4004 mikroprose –
1971 , esimene 4-
bitine prose
ARPANET
– 1971
Magnavox
Odyssey - 1972, esimene kodu video mäng
Colossal
Cave – 1972, tekstipõhine seiklusmäng
Smalltalk
– 1972, esimene objekt-orjenteeritud
progra keel
Prolog
– 1972, esimene loogika progra keel
HP
programmeeritav kalkulaator – 1972
Ethernet
– 1973,
Bob Metcalf leiutab selle ühendussüsteemi
Altair
– Esimene do-it-yourself edukas arvuti,
klaviatuuri ja monitori ei
olnud
Alto
– 1974 , by Xerox, aknad, hiir,
klaviatuur , monitor jne suur
mõju Microsoftile ja Macile
C keel
– arendati 69-73, Ritchie, Kernigan
Micro- soft
– 1975 asutati Alleni ja
Gates -i poolt,
sidekriips hiljem
eemaldati
Apple I – 1976 Wozniak ja Steve
Jobs Apple
computer company –
1976,, Woz ja Jobs, 1. aprillil
Apple
II – 1977 , suur hitt
Motorola 68000 – 1979, kasutab 68000 transistorit
USENET
– 1979-80 , Unix Users
Network 32-bit
mikroprose - 1981
SUN
Microsystems – 1982
Compaq computer corp – 1982
Oracle Corp – 1983
C++
- 1983 Bell labs
Apple
Macintosh – 1984
GNU project – 1984
Richard Stallman
GCC
– 1987, GNU Complier
Collection , UNIX-ite jaoks
Python
– 1989
FIDONET
– 1990, rahvusvaheline võrguots Eestis
HTML
– 1990, Tim-
Berners Lee
WWW
– 1990 , Tim-Berners Lee – lõi W3 Konsortiumi
LINUXI
arenduse algus - 1991
Päris
netiotsad TCP/IP Eestis – 1992
Debian
- 1993
PHP
keel – 1994, Personal Homepage
Tools nimelisest skriptide
setist sai nime
Linus
Torvalds annab välja Linux kerneli 1.0 –
1994
Mosaic
, later Netscape – 1994,
Andresseen
Eest,
esimene leht Päevaleht netis – 1995
Windows 95 – 1995 ofc
Pixari
Toy Story – 1995, esimene täispikk 3D
anime Borland Delphi keel – 1995 , Borland International
Java
– 1995 , SUN
AltaVista
– 1995 , esimene edukas ja võimas otsingumootor
Palm Pilot – 1995, U.S. Robotics
Eesti
internetipangad – 1996
Deep Blue võidab Garri Kasparovit males – 1997
GOOGLE
– 1998
Mozilla sünd – 1998
Microsoft kõige väärtuslikum firma – 1998
Blackberry
– 1999
Napster
– 1999, Torrenti eelkäija praktiliselt
C# -
2000, Microsoft
USB Flash drive-ide müümine – 2000
Wikipedia,
BitTorrent, XBOX, iPod – 2001
Interneti mulli lõhkemine – 2002
Steam,
Skype , iTunes pood – 2003
Myspace,
Orkut, Facebook , Flickr – 2004
Ubuntu
– 2004, Linuxi distro
Gmail
– 2004, Google
Google
maps, YouTube, Xbox 360 – 2005
Skype
ostetakse eBay poolt – 2005
FORTRAN
– 1957, IBM
COBOL
– 1960, Common Business Oriented Language
LISP
– 1960, Esimene AI programiseks mõeldud keel
BASIC
– 1964, Beginners All-purpose Symbolic Instruction Code
Smalltalk
– 1972, esimene objekt-orjenteeritud progra keel
Prolog
– 1972, esimene loogika progra keel
C keel
– arendati 69-73, Ritchie, Kernigan
C++
- 1983 Bell labs
Python
– 1989
PHP
keel – 1994, Personal Homepage Tools nimelisest skriptide
setist sai nime
MySQL
database - 1994
Borland
Delphi keel – 1995 , Borland International
Java
– 1995 , SUN
Apache web server - 1995
C#
- 2000, Microsoft
RDF
– Kirjelduskeel
HTML
- Teksti paigutamise / lehe kujundamise keel
CSS
- Eriti täpset teksti paigutust ja kujundust võimaldav keel HTML-i
täienduseks
Javascript - Brauseri programmeerimiskeel: javascripti programmid töötavad
otse brauseris: muudavad htmli, css-i, võtavad ühendust serveriga
jne jne
AJAX
tähistab: HTML+CSS+Javascript+async. Queries
Georg
Cantor - Hulgateooria rajaja
CISC
–
complex instruction set computer
RISC
– reduced instruction set computer
URL
–
Uniform Resource Locator
HTTP
– Hypertext Transfer
Protocol AOL –
America Online, aol-i alguses ei olnud http-d ega www-d
MS-DOS
– Microsoft Disc
Operating System 1981
ARM
processor - Advanced Risc
Machine processor
ACL
-
Access Control List ACL on nimekiri pääsuõiguste kirjetest (
ACE
- Access Control
Entry -
ACE koosneb: kasutaja, grupi või arvuti nimest, pääsuõiguste
loetoelust )
Silicon Valley - Nime saanud algselt
silikoon -kiipide tootjate järgi
Whole Earth Cataog – USA hipikultuuri/vastuliikumise
kataloog , kus
müüdi igast tooteid(kataloog ise ei müünud otseselt midagi, vaid
andis müüjate info toodete kõrval)
Transistor
- kolme
või enama väljaviiguga pooljuhtseadeldis, mida kasutatakse
elektrisignaalide tekitamiseks, võimendamiseks, muundamiseks ja
lülitamiseks. Transistori abil saab ühe elektrisignaali abil
juhtida ehk tüürida teist elektrisignaali.
(
http://www.youtube.com/watch?v=ZaBLiciesOU )
Esimene
veebileht: info.cern.ch
MIDA
OP SÜSTEEM OSKAB?1)Oskab
kettalt programme lugeda ja neid käima panna
2)Oskab programme seisma panna
3)Oskab anda programmidele parasjagu aega ja mälu
4)Oskab programme vajadusel korraks peatada ja taaskäivitada
5)Oskab kettale faile ja katalooge kirjutada ja sealt neid lugeda
6)Oskab välisseadmetega suhelda
7)Oskab võrguga suhelda
8)Oskab intelligentselt mälu ja cache´iga tegeleda
9)Oskab suhelda graafikakaardiga
OSX
ja iOS – kommerts UNIX-idLINUX-i
distrod ( LINUX ise on ainult kernel)
Sisaldavad:
1)Pre-compiled
kernel,
libraries and tools,
ready to
install from
image 2)A
set of ready-made and packaged software (editors, browsers,
desktop software) in the initial installation
package 3)
An
easy and configurable set of tools to install more software
4)
A large set of pre-configured software packages the installation
tool
will pull from the net and install
Important core distros:Debian:
.deb packages, focus on fully free software , Ubuntu
based on Debian
RedHat:
largest commercial Linux provider, .rpm packages
Slackware:
one of the earliest, focus on stability and simplicity
Gentoo:
software installed by
building from source
Arch:
minimalist, geared towards expert hackers
Paralleelprotsessid
on illusioon . Tegelikult pannakse 1 programm kinni ja siis
antakse aega teisele ja siis pannakse see kinni ja antakse aega
uuesti esimesele.
Protsessidevaheline
suhtlus:1)Võrk
2)Torud
(
Pipe ) - 1 kirjutab teine loeb
3)Jagatud
mälu – kõik saavad lugeda ja kirjutada
Framework -id:Microsoft
.NET
Java
Spring
Ruby on Rails
PHP
Zend framework
Python
Django
GNU
ideoloogia:vabadus:
primaarne on
tarkvara vabadus,
sekundaarne tasuta kättesaadavus
(free as in free
speech , not as in free beer)
ausus:
ausam on kasutada
vabavara kui piraatkopeerida
teadmiste
vabadus: teadmised ja tarkvara on loomu poolest vabad - 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 programmeerijate
kaader saab teha uusi,
senisest keerulisemat softi, mille jaoks seni aega ega ressurssi ei jätkunud
INTERNET PROTOCOL (IP) IP aadress on 32-bitine arvIP
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
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
UDP
ja TCP: UDP
(
user datagram protocol). Ei kontrollita, kas info jõudis
pärale.
Iga
rakenduse väljund tekitab uue datagrammi
Ei
taga usaldatavust
Datagrammi
ehitus:
lähte-
ja sihtport (kumbki kaks
baiti )
datagrammi
pikkus (kaks baiti)
kontrollsumma
(kaks baiti, pole kohustuslik)
andmeosa
(varieeruva pikkusega hulk baite)
UDP
paketi maksimaalpikkus on seega 64 kilobaiti.
Kontrollsumma
vea puhul unustatakse datagramm
Rakendused:
DNS, NFS, TFTP
TCP
(transmission control protocol). Toimub kontroll.
Ühendusorienteeritud
Usaldatav
Voo
tüüpi
Jagab voo segmentideks
Saates
käivitab taimeri ja ootab kinnitust
Kinnitab
saadud
segmendid
Kontrollsumma
päisest ja andmetest
Korrastab
segmentide järjestuse
Unustab
dublikaadid
Kontrollib
voo mahtu
Pordid Masinas
elab korraga palju programme ja igaüks tahab saada/saata
oma
pakette. Millisele programmile konkreetne
pakett saata?
Programmidele
antakse kasutamiseks nummerdatud TCP või UDP
port
(need ei ole füüsilised pistikud!)
Klient
- server mudel(Interneti jaoks)Üldine
algoritm :
server
ootab mingil üldteada pordil ühenduskutseid
klient
reserveerib dünaamilise pordi
klient
saadab serverile ühenduskutse (koos oma pordinumbriga)
server
vastab kliendile tema pordinumbril
Itereeriv
server:
Ei
võta vastu uut
kutset enne eelneva töötlemist
Paralleelne
server:
Käivitab
iga kutse jaoks eraldi serveri ajutise pordinumbriga selle
ühenduse
jaoks.
Seega
on mitme ajas lähestikuse kutse järel masinas käimas mitu
“koopiat”
ehk protsessi või threadi ühest serverist
Kasutajatele
paistab, et need “koopiad” käivad korraga, tegelikult
hoolitseb
selle “kooskäimise simulatsiooni” eest opsüsteem.
HTTP
on omaette protokoll, mida kasutatakse
veebilehtede , piltide,
tekstifailide,
zip failide jne jne saatmiseks veebiserveri ja brauseri vahel.
DNS: Domain Name Server
Ülesanne:
kui programmile on antud masina nimi, millega ühendust
võtta
(näiteks www.ttu.ee), siis tuleb kõigepealt leida sellenimelise
masina
IP aadress.
DNS
serverid : serverid, mis sisaldavad “nimiIP aadress”
tabeleid ja
vastavad
päringutele “anna selle nime IP aadress”:
XML
tähendab - eXtensible Markup LanguageStruktureeritud
teksti esitamise formaat
XML
standard ütleb, kuidas teksti struktuuri märgistada.
Saab
kasutada andmete esitamiseks tekstina
JSON
- Javascript Object Notation Andmete
esitamise formaat tekstina
Javascripti
programmeerimiskeele „native“ andmestruktuur
Väga
lihtne ja mugav kasutada
Kaasajal brauserirakendustes
eelistatum kui XML
XHTML :
Praktiliselt
seesama, mis HTML (samad tagid jne)
Tagid
peavad olema väikeste tähtedega
Peab
olema korrektses XML süntaksis (tagi suletud jne)
Paar
XML-i lisaknihvi ka (namespaced jne)
Recursion A
subroutine is said to be recursive if it calls itself, either
directly or
indirectly.
That is, the subroutine is used in its own
definition .
Important
to
check that recursion terminates. Code should
contain :
One
or more base
cases (no recursion involved!)
One
or more recursive cases. Arguments of the recursive call must
be
“simpler” according to some
measure .
NB!
The “simplicity” measure may be arbitrarily complex.
Imperatiivsed
keeled sobivad samm-
sammult , kindlas järjekorras
täidetavate
algoritmide esitamiseks. Programmid kujutavad endast
arvutile
antavate käskude jada.
Tuntumad imperatiivsed keeled on C,
Basic,
Pascal, Java, objektorienteeritud keeled ja assemblerkeeled.
Imperatiivsete
keelte peamiseks
eeliseks on arvuti tegevuse täpse
kontrollimise
ja suunamise võimaldamine, mis enamasti tagab
maksimaalse
töökiiruse.
Miinusteks
on programmeerimise suur töömahukus -
lahenduskäigu
kõik detailid tuleb süsteemile esitada - ning suured
raskused
programmide analüüsimisel, näiteks optimeerimise,
verifitseerimise
või paralleliseerimise tarvis.
Deklaratiivsed
keeled sobivad
algoritmi esitamiseks käskude jadast
abstraktsemal
viisil.
Programmeerija ei pruugi alati kõiki algoritmi detaile
kirja
panna, vaid võib esitada otsitava lahenduse kirjelduse , ning juba
programmi
täitmise käigus otsustab süsteem automaatselt, mis viisil
täpselt
seda lahendust otsida.
Deklaratiivseteks keelteks võib lugeda loogilise programmeerimise
keeled
(näiteks
Prolog) ja mitmed
funktsionaalsed keeled (näiteks
Haskell ).
Teoorias kasutatav lambda-arvutus on puhtalt
funktsionaalse deklaratiivse keele näide.
Deklaratiivsed
keeled võimaldavad enamikku programme kiiremini ja
mugavamalt
kirjutada, kui imperatiivsed keeled - programmeerija ei pea
kõigi
detailide eest hoolt kandma. Tunduvalt lihtsam on ka programmide
analüüs,
näiteks programmi automaatsel kohandamisel paralleelarvutile,
kus
programmi täitmise juures töötab samaaegselt hulk protsessoreid.
Peamiseks
miinuseks on programmide väiksem töökiirus - deklaratiivne
programm
ei pruugi küll alati
aeglasem olla, kui
imperatiivne , kuid on
seda
harilikult siiski. Põhjuseks on siin keele automaattranslaatori
väiksem
intelligentsus kogenud programmeerijaga võrreldes.
Deklaratiivsed
keeled jaotatakse
Funktsionaalse
programmeerimise keelteks (näide: Haskell),
kus
lahendus kirjeldatakse funktsioonide kogu abil - ka viimast saab
tegelikult
käsitleda kui teatud tüüpi loogikasüsteemi.
Loogilise
programmeerimise keelteks (näide: Prolog), kus
otsitavat
lahendust kirjeldatakse loogika keeles
Funktsionaalsete
keelte idee on programmide kirjutamine
(matemaatiliste)
funktsioonide defineerimise teel, määramata seejuures
täpselt
ära, mis strateegia järgi funktsiooni resultaati tuleb arvutada.
Funktsioonile
võib anda argumendiks teisi funktsioone ja funktsiooni
arvutamise
resultaadiks võib samuti olla funktsioon.
NB! Funktsionaalne programmeerimine on ajalooliselt esimene
deklaratiivse
programmeerimise viis, ning enamik
kaasaegseid programmeerimiskeeli
-- C, Pascal, Ada jne -- on funktsionaalse
programmeerimise
meetoditest mõjustatud.
Puhtas funktsionaalses keeles -- Haskell,
Hope , Miranda, FP -- ei ole
programmeerijal
peale funktsioonide defineerimise ja sisseehitatud
baasfunktsioonide
(aritmeetika, loendid jms) mingeid lisavahendeid --
kõik
kõrvalefektid on keelatud.
Puhas
funktsionaalne keel ei luba muutujatele väärtusi omistada. Ainus
efekt,
mis funktsiooni rakendamine argumentidele annab, on resultaadi
leidmine.
Kombineeritud funktsionaalsed keeled - ML, Lisp,
Scheme -
kombineerivad
puhaste funktsionaalsete keelte mehhanisme
imperatiivsete
mehhanismidega.
Lambda- arvutuse
teooria tegeleb arvutatavuse ja arvutatavate
funktsioonide
uurimisega, kasutades selleks lambda-arvutuse keelt kui
universaalset
programmeerimiskeelt.
Churchi
tees väidab, et iga algoritmi saab lambda-arvutuse keeles kirja
panna.
On võimalik näidata, et lambda-arvutus, nagu ka Prolog, C ja
Basic
on üks paljudest universaalsetest programmeerimiskeeltest.
Konkreetselt
on lambda-arvutuse keel ja teooria funktsionaalsete
programmeerimiskeelte
aluseks.
Loogika
progra keel PrologProlog-i
põhi-idee on nõuda otsitava lahenduse kirjeldamist esimest
järku
predikaatarvutuse keeles,
kusjuures Prolog-i süsteem sisaldab
teatud
tüüpi automaatset teoreemitõestajat, mis on võimeline lahendust
automaatselt
otsima ja
tuletama .
Some
properties of an AlgorithmKindlasti:
Deterministic: Given the
same input, it produces the same output.
Finite:
It can be
described in a finite number of steps
Definite :
Each
step has a
clearly defined
meaning .
Soovitavalt:
Correct :
It produces correct answers
Time
Bounded: It eventually stops
Fast :
it not only stops, but stops quickly
Tegeldakse
keerukusega peamiselt kahes mõttes:
Kiirus
ehk aeg (time): kui kiiresti algoritm peatub, kui kiireid
algoritme
on
mingite ülesannete jaoks olemas?
Mälukasutus
ehk ruum (space): kui palju mälu algoritm kasutab, kui
väikese
mälukasutusega algoritme on mingite ülesannete jaoks
olemas?
Vaadatakse
eraldi:
Algoritmide
keerukust (nii aja kui ruumi mõttes)
Ülesannete
lahendamise keerukust: kas mingi probleemide ehk ülesannete
klassi jaoks on olemas algoritmi keerukusega vähem kui mingi f?
Algoritmi
kiirus antakse tüüpiliselt funktsioonina ülesande
suurusest .
kiirus
= F(n), kus n on ülesande suurus ja F on “lahendamise
kiiruse
funktsioon”
ülesande jaoks suurusega n.
Easy
to
verify answers. Difficult to
find answers.
Easy
---> polynomial time
Difficult
--> not polynomial time.
NP: Class of problems for which it is easy to verify the answers but
exponential
or factorial number of combinations to check.
Travelling
salesman problem is in NP.
Nobody has
managed to prove (yet) that
there are no polynomial
algorithms
for P.
Open question: does NP = P ?
Lahenduvus:Selgub ,
et iga täpselt formuleeritud probleemi jaoks ei leidugi
lahendavat
algoritmi!
Uuritakse,
millistele ülesannetele on algoritme, millistele ei
Uuritakse,
mis ülesande lahendamine taandub teisele ülesandele
Uuritakse
lahendumist, poollahendumist, kreatiivseid hulki jne jne
Uuritakse
lõpmatuse struktuuri, mis on kirjeldamatult keeruline
Uuritakse
lahendumise struktuuri, mis on kirjeldamatult keeruline
Uuritakse
loogikaklasside lahendumise taandumist muudele ülesannetele
Kuidas
lahendamatust näidata (plaan):
Näitame,
et algoritme on sama palju, kui täisarve (lihtne)
Näitame,
et probleeme on vähemalt sama palju, kui reaalarve
(veidi
keerulisem)
Näitame,
et reaalarve on lõpmatult rohkem kui täisarve (Cantori
üks
teoreeme)
Cantori teoreem ütleb üldisemalt, et mingi hulga H kõigi alamhulkade
hulk
on suurema võimsusega kui see hulk H.Poollahenduvus Olgu
ülesandeks tuvastada, kas täisarv X kuulub mingisse lõpmatusse
täisarvude
alamhulka H.
Mõne
H jaoks on ülesanne lahenduv: näiteks, kui H on paarisarvude
hulk,
kui H on algarvude hulk jne,
Mõne
H jaoks ülesanne ei ole lahenduv: näiteks, kui H on arvude hulk,
millele
vastavad programmid peatuvad.
Poollahenduvus
tähendab, et kui X juhuslikult kuulub hulka H, siis me
saame
seda
algoritmiga alati näidata. Kui ei kuulu H-i, siis ei saa alati.
Strong
AI:“if
a machine approaches or supersedes human
intelligence,
if it can do
typically human tasks, if it can
apply a wide range of background
knowledge and has
some
degree of self-consciousness”
Weak AI:“the
use of software to study or accomplish specific
problem
solving or reasoning tasks that do not
encompass
(or in some cases, are
completely outside
of)
the
full range of human cognitive abilities. “
Tehisintellekti -uuringud
on andnud hulgaliselt algoritme ja
meetodeid ja
programmeerimiskeeli,
mida rakendatakse praktikas mitte-tehisintellekti-
ülesannete
jaoks. Näiteks:
Paljud
otsimisalgoritmid
Paljud
optimeerimisalgoritmid
Formaalsete
keelte süntaksianalüüs (kõigis kompilaatorites)
Funktsionaalsed
ja
loogilised programmeerimiskeeled
Objekt-orienteeritud
programmeerimine
Lausearvutuse
valemite ja analoogiliste ülesannete efektiivne lahendamine
TURINGI
TEST:Mõistata,
kas chati-ekraani taga on inimene või programm?
Turing:
Kui
katsetajad ei suuda ära arvata (st ära-arvamise sagedus on 50% ja
50% eksitakse), siis on jutlev masin päriselt
intelligentne .
Algoritm
on täpne samm-sammuline, kuid mitte tingimata formaalne
juhend
millegi tegemiseks. Näited:
Toiduretsept.
Juhend
ruutvõrrandi lahendamiseks.
Algoritmiline
probleem - probleem, mille lahenduse saab kirja panna
täidetavate
juhendite loeteluna.
Programm
on formaalses, üheselt mõistetavas keeles kirja pandud
algoritm. Arvutid suudavad täita ainult programme.
A
set of binary instructions is called a program.A
collection of instructions for the computer to perform one by one is
a program.Analoogsüsteem andmeid
salvestatakse (peegeldatakse)
proportsionaalselt Näit:
termomeeter, vinüülplaat, foto
Digitaalsüsteem
(
pidevad )
andmed lõhutakse üksikuteks tükkideks, mis
salvestatakse
eraldi
Näit:
CD,
arvutiprogramm , kiri tähtede ja bittidena
A
computer is a
device which takes data in one form, uses it, and
produces
a different form of information which is related to (but not
the
same as) the
original data.
The five types of information that the computer commonly manipulates:
Visual
(pictures)
Numeric
(
numbers )
Character
(text)
Audio
(
sound )
Instructions
(programs)
Standardized
means of storing binary code in a computer:
ASCII
(American Standard Code for
Information
Interchange)
EBCDIC
(
Extended Binary Coded
Decimal
Interchange Code)
UNICODE
(Extended ASCII)LOOGIKA
TEKE( Aristoteles ):Süllogismide
näited:
1.
eeldus: iga koer on imetaja.
2.
eeldus: mõned neljajalgsed on koerad.
järeldus:
mõned neljajalgsed on imetajad.
1.
eeldus: kõik luiged on valged
2.
eeldus: mõni lind on luik.
järeldus:
mõni lind on valge.
Tuletuse
struktuuri võib seega esitada muutujate x,y ja z abil ning
tuletus on
õige sõltumata fraasidest, millega neid muutujaid
asendada :
1.
eeldus: iga x on y.
2.
eeldus: mõni z on x.
järeldus:
mõni z on y.
Süllogism
on väitlus, kus mingitest etteantud väidetest (eeldustest)
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.
Charles
Babbage 1822:
Difference Engine, jäi
pooleli Idee:
Analytical Engine
esimene
programmeerija:
Ada Lovelace George Boole , de Morgan Loogika
(lausearvutuse) alused 1847-1854
Matemaatilise
algebra ideede kasutamine loogika jaoks:
Loogika
algebra:
1A
= A, 0A = 0, A+0 = A, A+1 = 1
A+B
= B+A, AB = BA, AA = A
Kaasaegse
loogika alus:
Gottlob Frege
1879:
Kontseptuaalne notatsioon ("Begriffsschrift")
loob
kaasaegse predikaatarvutuse:Näide:
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)
“
Hilberti
programm” matemaatikale kindlate aluste rajamiseks: Matemaatika
alused tuleb esitada loogika keeles, range
aksiomaatikana.
Tuleb
tõestada, et nimetatud aksiomaatika ei ole vastuoluline , st
temast
ei ole võimalik tuletada korraga mingit väidet A ja sellesama
väite
eitust -AClaude Shannon MIT,
1938, Shannon’i magistritöö sidus:
Boole
algebra
Elektrilülitid
ja -
skeemid Bitid
ja info
kodeerimine Info
otsimise
algoritmid Tarkvarasüsteemid
ehitatakse
reeglina mitmesuguste komponentide kokkupaneku, s.t.
kokkuprogrammeerimise teel, või teisiti öeldes: komponente
kasutades. Neid komponente võib klassifitseerida - näiteks -
järgmisel viisil:
Terviklikud
lõppkasutaja-
rakendusprogrammid Suured
“valmiskomponendid“, näiteks andmebaasimootorid
Raamistikud
ehk frameworks
Teegid
ehk libraries
Priorities
for software development
Three
main consumers of time and effort:
Understanding the business processes and
needs .
Understanding
the exact contents of existing data.
Writing
code.
The
second component - understanding existing data -
is
growing and will keep growing for foreseeable future.
Why?
We
do have AI already: society is a large
animal with an intelligence of
its own.
People
- society is
just like
cells
- animalNetBEUI
NetBIOS
Extended User
Interface Asendab
kohtvõrgu
liikluses TCP+IP
*Optimiseeritud
väikeste kohtvõrkude jaoks
*Kiire
*Hea
veakindlus
*Pole
marsruuditav
*Palju
liiklust üldaadressile
NetBIOS
NetBIOS
(Network Basic Input/Output System)
Võimaldab
seansi ja datagrammi tüüpi ühendust
Pakub
nimeteenust
Masina
nimi kuni 15 tähte, hierarhiata
Meetodid
nime teisendamiseks IP aadressiks:
küsib
WINS serverilt (nimede ja IP aadrsside
andmebaas )
Küsimine
üldlevi aadressil
LMHOSTS
ja HOSTS fail
DNS
päring
Semantic
web: projekt
Eesmärk:
pakkuda andmete esitamise keeli ja luua standardeid, mille abil
kirjeldada asju (internetis)
Soovitav tulemus: saab teha tarkvara, mille abil datat saab kergesti ühest
programmist teise saata, nii et info ja mõte kaduma ei lähe.
Esmajoones vaja:
objektide
kirjeldamise keel
mõistete
omavaheliste seoste ja reeglite keel
Üldiselt
järgmist tüüpi tegevused, nende sageduse kaupa eesti IT
firmade
osas (levinult vähemlevinule):
Standardsete
arvutite ja tarkvara müük ja
korrashoid (a la autosalong)
Arvutite
kokkupanek tükkidest, müük ja korrashoid (a la ehitus ja hoonete
hooldus ,
valve,
remont jne)
Standardse tarkvara kasutamise õpetamine ja korrashoid (a la autokool)
Keerulise
standardtarkvara installeerimine, sättimine ja kasutamise
õpetamine
(tüüpiliselt majandustarkvara)
Erinevate
standardtarkvara tükkide kokkupanemine, tüüpiliselt omakirjutatud
programmide
abil (
integratsioon )
Uue
tarkvara tegemine vastavalt kliendi tellimusele
Uue
tarkvara tegemine laiemaks müügiks
Alan
Turingi morfogeneesi teooria 1951
Planeerimiseks
projektis Spolski
soovitab : EXCEL
The
Foundations of the GPL
Nobody
should be restricted by the software they use. There are
four freedoms that every user should have:
- the freedom to use the software for any purpose,
- the freedom to change the software to suit your needs,
- the freedom to share the software with your friends and neighbors, and
- the freedom to share the changes you make.
Kõik kommentaarid