itsissejuhatus

Uploaded from authorPOINTLite
Views:
 
Category: Entertainment
     
 

Presentation Description

No description available.

Comments

Presentation Transcript

Slide1: 

Sissejuhatus informaatikasse

Riistvara ja tarkvara: 

Riistvara ja tarkvara Riistvara Füüsilised, käegakatsutavad osad. Näited: klaviatuur, monitor, integraalskeemid jms Tarkvara Programmid ja andmed Programm on jada instruktsioone

Algoritm ja programm: 

Algoritm ja programm 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.

Analoog- ja digitaalsüsteem: 

Analoog- ja digitaalsüsteem 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 Ühelt teisele: digitaliseerimine

Arvuti ehitus: 

Arvuti ehitus Põhiprotsessor - teeb pea kogu töö Põhimälu - hoiab aktiivses kasutuses olevaid programme ja andmeid Välismälu - pikaajaliseks säilitamiseks (kõvaketas, flopid jne) Välisseadmed - monitor, klaviatuur jne

Põhiprotsessor (CPU) ja mälu: 

Põhiprotsessor (CPU) ja mälu

CPU ja muud seadmed: 

CPU ja muud seadmed

Univ. of Virginia What Is (and Isn’t) a Computer: 

Univ. of Virginia What Is (and Isn’t) a Computer 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 Many Kinds of Computers: 

The Many Kinds of Computers The three major comparisons of computers are: Electronic computers versus Mechanical computers General-purpose versus Special-purpose computers Digital versus Analog computers

Univ. of Virginia The Many Kinds of Computers: 

Univ. of Virginia The Many Kinds of Computers Electronic Computers Constructed from transistors that use electricity to function. Mechanical Computers Do not use electricity to function. Constructed of a combination of gears, levers and springs.

Univ. of Virginia The Many Kinds of Computers: 

Univ. of Virginia The Many Kinds of Computers General-purpose Computers Were not manufactured to do any one thing. Changeable to do any task. Special-purpose Computers Manufactured to do a predetermined task or set of tasks.

Univ. of Virginia The General-Purpose Digital Computer: 

Univ. of Virginia The General-Purpose Digital Computer The General-Purpose Digital Computer Accepts information of many kinds. Changes it in a way that is controlled by humans. Presents results in a way usable by humans.

Univ. of Virginia What Is Information?: 

Univ. of Virginia What Is Information? The five types of information that are the only types the computer commonly manipulates: Visual (pictures) Numeric (numbers) Character (text) Audio (sound) Instructions (programs)

Univ. of Virginia What Is Information?: 

Univ. of Virginia What Is Information? Before the computer can use any type of information, it must be stored in the computer’s memory. Problem: How is information stored within the computer? Information is stored in numerical form within the computer Modern computers work in a system of numbers called binary numbers

Univ. of Virginia What Is Information?: 

Univ. of Virginia What Is Information? Binary numbers: Similar to familiar decimal system. Uses only two symbols: 0 and 1. The choice of using binary numbers is dictated by cost and reliability. Binary circuits: Electronic circuits are cheapest and most reliable if they only assume two states or conditions. These binary circuits have only two states, ON or OFF.

Univ. of Virginia Representing Symbols and Text: 

Univ. of Virginia Representing Symbols and Text Each letter and symbol in a text document must be translated into a binary number for storage in the computer. Standardized means of storing these codes: ASCII (American Standard Code for Information Interchange) EBCDIC (Extended Binary Coded Decimal Interchange Code) UNICODE (Extended ASCII)

Univ. of Virginia Representing Pictures: 

Univ. of Virginia Representing Pictures Pictures must be translated into a binary format for storage in the computer. The picture is broken down into small elements. These elements are called Pixels (Picture Elements). Digitizer: A device that converts a picture into a binary format for storage in the computer. Examples of digitizers: scanner, digital camera.

Univ. of Virginia Representing Pictures: 

Univ. of Virginia Representing Pictures Gray-Scale: Each pixel contains a value representing some shade of gray. The more shades of gray possible, the more memory will be needed. 4 shades of gray needs 2 bits per pixel: 00, 01, 10, 11 8 shades of gray needs 3 bits per pixel: 000, 001, 010, 011, 100, 101, 110, 111 64 shades of gray needs 6 bits per pixel: 000000, 000001, … 111110, 111111

Univ. of Virginia Storage of Binary Information: 

Univ. of Virginia Storage of Binary Information Capacity

Instructions as Numbers: 

Instructions as Numbers Fact: Declarative: statement of being. Imparts knowledge. Instruction: Imperative: demands action. Controls information or activity.

Instructions as Numbers: 

Instructions as Numbers Instructions: Must be stored within the computer before use. Must be stored in binary form. A set of binary instructions is called a program.

The Stored-program Computer: 

The Stored-program Computer Program: A collection of instructions for the computer to perform one by one. Machine Language: The language of the computing machine. All instructions must be in the form of binary numbers (binary code).

The Stored-program Computer: 

The Stored-program Computer Stored-program Computer: Also known as the von Neumann-type computer. Has memory - a place to keep both: instructions (ie program) and the needed information (ie data) needed for computation by the computer.

Programs and Algorithms: 

Programs and Algorithms Algorithm: A step-by-step process used to solve a problem. The general solution to the problem. Usually implemented by a program. Problem: Cause the ROBOT to walk to the wall it is initially facing and then stop with its arms lowered and facing against the wall. Assume the ROBOT is not initially facing an open doorway. Remember: We have NO IDEA how big the room is! We CAN’T just tell it to STEP X-number of times! The algorithm has a general solution. (Solves the problem in all situations.)

Programs and Algorithms: 

Programs and Algorithms Loop - A sequence of instructions which is repeated one or more times when a program is executed. Infinite loop - A set of instructions which causes the program to repeat the same commands over and over with no possible way of stopping.

Arvud: 

Arvud Arvud kontidel: periood 20,000 - 30,000 aastat tagasi Cro-Magnon inimese ilmumine Babüloonia: positsiooniline 60-süsteem 1900 kuni 1800 BC Maiade arvusüsteem Null: Babüloonia 300 BC India 600 AD Abakus: Babüloonia 1,000 BC kuni 500 BC,

Loogika olemus: 

Loogika olemus Loogika on teadus mõtlemise alustest. Arvutid on mõtlemise masinad. Loogika ja arvutamine on väga tihedalt seotud. Loogika uurib mõtlemise paratamatuid aspekte ehk seda, mis üldse teeb mõtlemisest mõtlemise ehk õige mõtlemise. Mõeldav ja mittemõeldav: ``kui kõik inimesed on surelikud ja kui mina olen inimene, siis ma olen surelik''. ``kui kõik inimesed on surelikud ja kui mina olen inimene, siis ma ei ole surelik''. Vastaspoolused: Puhta loogika eesmärk on olla õige kõigis võimalikes maailmades, mitte ainult selles veider-segases vaevarikkas maailmas, kuhu juhus meid on heitnud. Loogik peab eneses alal hoidma teatud annuse jumalikkust: ta ei tohi alanduda selleni, et teha järeldusi enese ümber nähtust. B.Russell, ``Sissejuhatus matemaatilisse filosoofiasse''. Kui loogika oleks olemas isegi juhul, kui maailma ei oleks, siis kuidas saab loogika olemas olla olukorras, kus maailm on olemas? L.Wittgenstein, ``Tractatus Logico-Philosophicus''

Loogika aine: 

Loogika aine Fundamentaalseid mõtlemismeetodeid: Deduktsioon Induktsioon Matemaatika sissetulek: muutujad Lausemuutujad: ``kui A ja B, siis A'' ``ei ole tõsi, et A ja mitte A'’ ``kui A-st järeldub B, ning A on tõsi, siis ka B on tõsi'' Omadused: ``Kui kõigil asjadel on omadus P, siis on olemas asi, millel on omadus P'' ??? ``Kui on olemas asi, millel on omadus P, siis on kõigil asjadel omadus P''

Loogika teke: 

Loogika teke Parmenides (5 sajand e.m.a.) : kasutas pikki loogilisi põhjendusi. Zenon Eleast (5 sajand e.m.a.) - apooriad/paradoksid Sofistid - Sokrates (470-399 e.m.a) - Platon (428/427 - 348/347 e.m.a): Aristoteles: väidete struktuur kui iseseisev uurimisobjekt

Loogika teke: Aristoteles: 

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: iga anarhist on süsteemi vastane. 2. eeldus: mõned poliitikud on anarhistid. järeldus: mõned poliitikud on süsteemi vastased. 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.

Aristotelese “kategoorilised väited”: 

Aristotelese “kategoorilised väited” ``Iga b on a''. ``Mitte ükski b pole a''. ``Mõni b on a''. ``Mõni b ei ole a'' 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: lausearvutus: 

Stoikud: lausearvutus 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. Kui esimene, siis teine; esimene; järelikult teine. ((A  Kui esimene, siis teine; mitte teine; järelikult mitte esimene.  Mitte korraga esimene ja teine; esimene; järelikult mitte teine. 

Leonardo da Vinci: 

Leonardo da Vinci ca 1500 Kalkulaatori joonis: Hiljem ehitatud katseeksemplar

17 sajand: sümbolkeeled matemaatikas: 

17 sajand: sümbolkeeled matemaatikas Analoogilisi sümbolkeeli püüti luua loogika jaoks. Kõik püüdlused ebaõnnestusid (kuni 19 sjandi lõpuni!) Filosoofia: nominalistide ja realistide dihhotoomia

Schickard & Pascal: 

Schickard & Pascal Schickard 1625: väitis ehitanud olema liitva, lahutava, korrutava, jagava masina Kristlik filosoof Blaise Pascal 1640: aritmeetiline masin: ainult liitis ja lahutas Ehitas ca 50 tükki

Leibniz: 

Leibniz Saksa filosoof1646-1716 Leibnizi arvuti(1671) liitis, lahutas, korrutas, jagas

Kirjutusmasin: 

Kirjutusmasin Inglise patent, Henry Mill, 1714, ei ehitatud Sholes’ klaviatuur ca 1874: Dvoraki klaviatuur ca 1936

Perfokaardid: 

Perfokaardid ca 1800, Jacquard IBM-i perfokaart:

Charles Babbage: 

Charles Babbage 1822: Difference Engine, jäi pooleli Idee: Analytical Engine esimene programmeerija: Ada Lovelace

Telegraaf: 

Telegraaf Morse 1837: elektritelegraaf Wheatstone 1857: perfolint Arvutite perfolint: 1902-1910: teleprinter

George Boole, de Morgan: 

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

Lausearvutuse alused: 

Lausearvutuse alused Loogikatehted on funktsioonid tõeväärtustel T ja V. 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

Lausearvutuse alused: 

Lausearvutuse alused Elementaartehetest saab kokku panna suvalisi avaldisi, mis realiseerivad tõeväärtusfunktsioone (- (A & B)) => (B V C) ---------------------------- V T T T T T T T T T V V T V T T T V V T T T T T T V V V T V T T V T T T T T T V T T V V V V V V T V V T T T T V T V V V V V V V 2 1 4 3

Kaasaegse loogika alus: Gottlob Frege: 

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). Frege filosoofina: logitsist

Loogika mitmekesisus : 

Loogika mitmekesisus Lauservutus Predikaatarvutus Induktsioon jms Teist järku pred. Kõrgemat järku pred. Abstraktsus Väljendusvahendid Minimaalne Intuitsionistlik Klassikaline Modaalne Lineaarne Lahenduvad Ühesuunaliselt lahenduvad Mittemonotoonne Klassikaline predikaatarvutus: Frege

Hollerith’i perfokaardid: 

Hollerith’i perfokaardid 1890: Herman Hollerith: perfokaartidega masin USA rahvaloenduse andmete töötlemiseks Hollerith’i firmast tekkis IBM

Hulgateooria: Georg Cantor: 

Hulgateooria: Georg Cantor Elas 1845-1918 Hulgateooria rajaja Paradokside avastamine matemaatikas Matemaatika alused korraga ebakindlad

Russell & Whitehead: 

Russell & Whitehead 1910-1913: massiivne loogikatraktaat Principia Mathematica Paradoksid -> tüüpide teeoria Filosoofilised vaated: logitsism

Formalism; Hilbert: 

Formalism; Hilbert Loogik ja matemaatik: 1862-1943 Filosoofilistelt vaadetelt formalist “Hilberti programm” matemaatikale kindlate aluste rajamiseks: Matemaatika alused tuleb esitada loogika keeles, range aksiomaatikana. Tuleb tõestada, et nimetatud aksiomaatika ei ole vastuoluline

Intuitsionism: Brouwer & Heyting: 

Intuitsionism: Brouwer & Heyting Ei aktsepteeri näiteks: A v -A - -A <=> A ((A 

Formaalne süsteem: 

Formaalne süsteem Tarski ja Carnap Süntaks Tuletamisreeglite süsteem Semantika

Täielikkus ja mittetäielikkus: 

Täielikkus ja mittetäielikkus Kurt Gödel (1906-1978) 1930: loogika baaskeel predikaatarvutus on täielik 1931: formaalne aritmeetika ei ole täielik, seda ei saagi lõpliku formaalse süsteemiga kirjeldada

Turingi masin & Churchi lambda-arvutus: 

Turingi masin & Churchi lambda-arvutus 1935-1937: artikkel Turingi masinast: universaalsus, mittelahenduvus 1936: Churchi lambda-arvutus, Churchi tees. universaalsus, mittelahenduvus

Vannevar Bush: 

Vannevar Bush MIT: 1930-1935-1937: Differential Analyzer dif. võrrandite lahendamiseks

Ludwig Wittgenstein: 

Ludwig Wittgenstein 1889-1951 Analüütilise filosoofia juhtkuju Innustas loogilise positivismi ja Viini ringi teket: Mõtestatud tekst koosneb kas (a) loogika ja matemaatika formaalsetest väidetest või (b) konkreetsete teadusharude fakte esitavatest lausetest. Igasugusel fakti esitaval väitel on sisu ainult siis, kui on võimalik öelda, kuidas selle väite kehtivust kontrollida.

Claude Shannon: 

Claude Shannon MIT, 1938, Shannon’i magistritöö sidus: Boole algebra Elektrilülitid ja -skeemid Bitid ja info kodeerimise Info otsimise algoritmid

Atanasoff’i arvuti: 

Atanasoff’i arvuti John Vincent Atanasoff 1939-1942: esimene elektronarvuti?

Zuse arvuti: 

Zuse arvuti Konrad Zuse 1941-1944: Z3, Z4 Releedega digitaalarvuti

Colossus vs Geheimfernschreiber : 

Colossus vs Geheimfernschreiber Londonis 1943: saksa allveelaevade salakirja dekodeerimiseks Ideoloogia ja matemaatika töötas välja Alan Turing, kes varem juhtis lihtsama ENIGMA dekodeerimist

Mark I: 

Mark I Howard Aiken IBM’i elektriline (releed) digitaalne arvuti MARK I 1939-1944

1945 : 

1945 Konrad Zuse began work on Plankalkul (plan Calculus). The first algorithmic programming language, with an aim of creating the theoretical preconditions for the formulation of problems of a general nature.

1946: 

1946 In February, the public got its first glimpse of the ENIAC, a machine built by John Mauchly and J. Presper Eckert that improved by 1,000 times on the speed of its contemporaries.

Kordamine: raadiolambi tööpõhimõte: 

Kordamine: raadiolambi tööpõhimõte    

Transistori tööpõhimõte: 

Transistori tööpõhimõte    

1949: 

1949 Maurice Wilkes assembled the EDSAC, the first practical stored-program computer, at Cambridge University.   TECHNOLOGY: vacuum tubes MEMORY: 1K words, 17 bits, mercury delay line SPEED: 714 operations per second

1950: 

1950       Engineering Research Associates of Minneapolis built the ERA 1101, the first commercially produced computer; the company's first customer was the U.S. Navy.

1951: 

1951       The UNIVAC I delivered to the U.S. Census Bureau was the first commercial computer to attract widespread public attention.

Early AI programs: checkers, chess (in Britain): 

Early AI programs: checkers, chess (in Britain) Strachey wrote a checkers program for the Ferranti Mark I at Manchester (with Turing's encouragement and utilising the latter's recently completed Programmers' Handbook for the Ferranti computer). By the summer of 1952 this program could, Strachey reported, "play a complete game of Draughts at a reasonable speed". Prinz's chess program, also written for the Ferranti Mark I, first ran in November 1951. It was for solving simple problems of the mate-in-two variety. The program would examine every possible move until a solution was found. On average several thousand moves had to be examined in the course of solving a problem, and the program was considerably slower than a human player. Turing started to program his Turochamp chess-player on the Ferranti Mark I but never completed the task. Unlike Prinz's program, the Turochamp could play a complete game and operated not by exhaustive search but under the guidance of rule-of-thumb principles devised by Turing.

1953: 

1953     IBM shipped its first electronic computer, the 701.

1955: 

1955 William Shockley founds Shockley Semiconductor in Palo Alto, California

1957…: 

1957…   A new language, FORTRAN (short for formula translator), enabled a computer to perform a repetitive task from a single set of instructions by using loops.

1958: 

1958 At Texas Instruments, Jack St. Clair Kilby comes up with the idea of creating a monolithic device (integrated circuit) on a single piece of silicon. Later (in 2000) Kilby receives Nobel price in physics Jack Kilby completes building the first integrated circuit, containing five components on a piece of germanium half an inch long and thinner than a toothpick.

1960: 

1960 A team drawn from several computer manufacturers and the Pentagon developed COBOL, Common Business Oriented Language. Project leader: Grace Hopper. LISP made its debut as the first computer language designed for writing artificial intelligence programs. Inventor: John McCarthy.

Moore’s law: 

Moore’s law Moore’s Law (1965) Circuits per chip = 2 (year-1975) / 1.5 “Each new chip contains roughly twice as much capacity as its predecessor, and is released within 18-24 months of the previous chip.”

1965: 

1965 Digital Equipment Corp. introduced the PDP-8, the first commercially successful minicomputer.

1967…: 

1967… IBM builds the first floppy disk.

…1967: 

…1967 Seymour Papert designed LOGO as a computer language for children.

1969: 

1969 Gary Starkweather, at Xerox's research facility in Webster, New York, demonstrates using a laser beam with the xerography process to create a laser printer.

State of the art: software and hardware: 

State of the art: software and hardware In 1967 MacHACK VI became the first program to beat a human (rate 1510) at a competition, at the Massachussets State Championship. In 1968 International Master David Levy made a $3,000 bet that no chess computer would beat him in 10 years. He won his bet. The original bet was with John McCarthy, a distinguished researcher in Artificial Intelligence Processors at 1968 were solded together from a large number of single transistors and a number of small chips containing relatively small amounts of transistors each

Recollect: Birth of Intel and AMD: 

Recollect: Birth of Intel and AMD 55: Shockley Semiconductor (Shockley was one of the inventors of transistor, Nobel price in 56) 57: Fairchild Semiconductors (group of 8 Shockley engineers) 68: Intel 69: AMD (Noyce (integr. circuit constructor) & (Sanders + 7 others) Moore) 58-59: Texas Instruments announces integrated circuits (Kilby) 59: Fairchild announces integrated circuits (Noyce) 69: AMD founded

First microprocessor: Intel 4004: 

First microprocessor: Intel 4004 1969 The first microprocessor – CPU 1971 The first commercial 4-bit microprocessor 4004: -2,300 transistors -10 µm features -10 mm2 die -108 kHz kHz

…1970: 

…1970 Relational database software: theory and first research groups In 1970 an IBM researcher named Ted Codd published the first article on relational databases.

1971…: 

1971… Computer-to-computer Communication expanded when the Department of Defense established four nodes on the ARPANET: the University of California-Santa Barbara and UCLA, SRI International, and the University of Utah.

1972: 

1972     Two important programming concepts introduced: The first object-oriented language Smalltalk developed at XEROX PARC, bsaed on ideas by Alana Kay. The first logic programming language Prolog developed by Alan Colmerauer at University of Marseilles

…1973: 

…1973 Bob Metcalfe invents the Ethernet connectivity system.

Altair: 

Altair Altair was one of the first successfully sold personal computer kits for do-it-yourself computing fans. No monitor, no keyboard Keyboard and cassette drive can be added Oscilloscope can be attached to be used as a display

…1974: 

…1974     Brian Kernighan and Dennis Ritchie develop the C programming language.

…1974: Alto: 

…1974: Alto Xerox releases the Alto computer. A personal computer to be used for research First serious machine to feature a modern user interface: windows, mouse, etc invented by Engelbart in 1964 Great influence on Macintosh Great influence on Microsoft

1975: 

1975 Bill Gates and Paul Allen license their newly written BASIC to MITS, their first customer. This is the first computer language program written for a personal computer. The Xerox PARC-developed Gypsy word-processing system is first field-tested by end-users. Gypsy is one of the first word processors termed "WYSIWYG", meaning what you see is what you get. Gypsy runs on the PARC-developed Alto personal computer.

1977-1980 : Home computers: 

1977-1980 : Home computers   Apple, Commodore, Radio Shack, Microsoft, more microprocessors, VisiCalc, Sinclair

1977: 

1977 The Commodore PET (Personal Electronic Transactor) -- the first of several personal computers released in 1977 -- came fully assembled and was straightforward to operate.

1977: 

1977 The Apple II became an instant success when released in 1977 with its printed circuit motherboard, switching power supply, keyboard, case assembly, manual, game paddles, A/C powercord, and cassette tape with the computer game "Breakout.“

1979: 

1979 Harvard MBA candidate Daniel Bricklin and programmer Robert Frankston developed VisiCalc, the program that made a business machine of the personal computer, for the Apple II.

79-80: USENET : varane “web” : tekstiuudised: 

79-80: USENET : varane “web” : tekstiuudised USENET on hiiglaslik kogus uudisgruppe. Tekstid liiguvad masinast masinasse. USENET: Unix Users Network founded late 1979. Info liikus algselt: UUCP protolli abil (Unix to Unix communications protocol, enamasti moodemi abil sissehelistamisega). Miks 1791: released V7 Unix with UUCP. Two Duke University grad students in North Carolina, Tom Truscott and Jim Ellis, thought of hooking computers together to exchange information with the Unix community. Steve Bellovin, a grad student at the University of North Carolina, put together the first version of the news software using shell scripts and installed it on the first two sites: "unc" and "duke." At the beginning of 1980 the network consisted of those two sites and "phs" (another machine at Duke), and was described at the January Usenix conference. 1986 murrang: Network News Transfer Protocol (NNTP) . Uudised liiguvad TCP/IP (interneti) kaudu.

1981: 

1981   MAIN HIGHLIGHTS   IBM introduced its PC, igniting a fast growth of the personal computer market The MS-DOS, or Microsoft Disk Operating System, the basic software for the newly released IBM PC, established a long partnership between IBM and Microsoft, which Bill Gates and Paul Allen had founded only six years earlier Apollo and Silicon Graphics: first workstation companies

1981: big portable: 

1981: big portable Adam Osborne completed the first portable computer, the Osborne I, which weighed 24 pounds and cost $1,795. Used Z80 (NOT IBM-PC clone (yet)!)  

1981: Silicon Graphics: 

1981: Silicon Graphics College professor James Clark found Silicon Graphics, Incorporated. The 1000 and 1200 computers used a Motorola 68000 microprocessor with 8 Mhz and were sold as diskless systems intended for use as a terminal.

1981: IBM PC: 

1981: IBM PC IBM announces the IBM 5150 PC Personal Computer, in New York. IBM announces the CGA graphics card for the PC, giving 640x200 resolution with 16 colors.

1981: Microsoft as a main IBM PC software provider: 

1981: Microsoft as a main IBM PC software provider The MS-DOS, or Microsoft Disk Operating System, the basic software for the newly released IBM PC, established a long partnership between IBM and Microsoft, which Bill Gates and Paul Allen had founded only six years earlier Microsoft buys all rights to DOS from Seattle Computer Products, and the name MS-DOS is adopted.

1982: 

1982  MAIN HIGHLIGHTS   Sun Microsystems founded: most influential workstation company so far Mitch Kapor developed Lotus 1-2-3, writing the software directly into the video system of the IBM PC. The use of computer-generated graphics in movies took a step forward with Disney's release of "Tron“.

1983 main highlights: 

1983 main highlights Apple introduced its Lisa. The first personal computer with a graphical user interface, its development was central in the move to such systems for personal computers. Compaq Computer Corp. introduced first PC clone that used the same software as the IBM PC. Oracle got its name (renamed from “Relational Software”) Unix system V version, C++ language, Turbo Pascal, MS Word The Musical Instrument Digital Interface was introduced at the first North American Music Manufacturers show in Los Angeles.

1983: 

1983 Bjorne Stroustrup creates the C++ extension to the C programming language.

1984 main highlights: 

1984 main highlights Apple Computer launched the Macintosh, the first successful mouse-driven computer with a graphic user interface, with a single $1.5 million commercial during the 1984 Super Bowl. The 3 1/2-inch "microfloppy" diskette GNU project launched

1984: 

1984 Hewlett-Packard introduces the LaserJet laser printer, featuring 300dpi resolution, for US$3,600.

1984: 

1984 Richard Stallman launches the GNU Project, to develop the free operating system GNU (anacronym for ``GNU's Not Unix''), and thereby give computer users the freedom that most of them have lost. GNU is free software: everyone is free to copy it and redistribute it, as well as to make changes either large or small.

1987: 

1987 Side note: CISC vs RISC processor architectures CISC: complex instruction set computer (Intel, motorola 68000 series, ..) A large number of instructions, most are relatively slow RISC: reduced instruction set computer (PowerPC, Sparc, ....) A small number of instructions, all are very fast In practice, CISC and RISC ideas converge in newer processors

1987: GCC, the main C compiler nowadays: 

1987: GCC, the main C compiler nowadays Ported to a very large number of processors Compiles: C, C++, Objective C, Fortran, Java, Ada, (Pascal)

Ülevaade: suured saagad (1980-)1990-2003: 

Ülevaade: suured saagad (1980-)1990-2003 Riistvara: Spetsiaalprotsessorid: sünd ja surm. Üks eranditest: 3D graafikaprotsessorid 1996... IBM PC, Apple Macintosh, Sun workstations & servers Pihuarvutid: Apple Newton, Palm. MS Pocket PC opsüsteem. Tarkvara: Microsoft muutub IBM PC domineerivaks tarkvara-arendajaks Microsoft ja IBM tülli: Windows NT vs OS/2 SQL andmebaasikeel ja andmebaasirakendused mainstreamis Gnu / Linux ja vabavara-liikumine. Linux, Apache jms. Internet massidesse: html ja brauser Varasem uudistesüsteem (80-datel: USENET). Internet ülikoolides. 1990 Tim-Berners lee leiutab HTML-i ja kaasaegse brauseri Netscape viib brauseri massidesse. WWW muudab interneti mainstream-tehnoloogiaks. Microsoft haarab Netscape brauseriosa, Netscape käivitab Mozilla vabavara-projekti Börsimull: USA börsid liiguvad 90 aastate algusest tempokalt üles 1990 aastate lõpul lähevad interneti- ja tarkvarafirmade aktsiad ülikalliks 2001 aastal murrang: börs langeb kiiresti kuni 2002 sügis: sel hetkel tehnoloogiaaktsiad 96 tasemel, Dow Jones (klassikaliste suurfirmade aktsiad) 97 aasta tasemel.

1989-90: Rahvusvaheline võrguots Eestis: FIDONET: 

1989-90: Rahvusvaheline võrguots Eestis: FIDONET 1989 detsembri lõpus panid Andrus Suitsu ja Tarmo Soodla käima Opus-e nimelise P.O.Box-i. 1990 aasta kevadel lülitus Eesti FIDONET Soome kaudu ülemaailmsesse FIDO-võrku, ning sama aasta sügiseks oli Eestis juba sedavõrd palju FIDONET-i huvilisi, et Eesti sai omaette FidoNeti regiooni staatuse (R49). Mosaic v1.0 is released.

1990: HTML, http and the browser are born: 

1990: HTML, http and the browser are born The World Wide Web was born when Tim Berners-Lee, a researcher at CERN, the high-energy physics laboratory in Geneva, developed HyperText Markup Language. HTML, as it is commonly known, allowed the Internet to expand into the World Wide Web, using specifications he developed such as URL (uniform resource locator) and HTTP (hypertext transfer protocol). Berners-Lee based the World Wide Web on Enquire, a hypertext system he had developed for himself, with the aim of allowing people to work together by combining their knowledge in a global web of hypertext documents. With this idea in mind, Berners-Lee designed both the first World Wide Web server and browser -- available to the general public in 1991. First web server address: info.cern.ch Berners-Lee founded the W3 Consortium, which coordinates World Wide Web development. www.w3c.org

1991: 

1991 Linus Torvalds, a student at the University of Helsinki in Finland, starts working as a hobby on Linux. Linus had an interest in Minix, a small UNIX system created by Tannenbaum, and decided to develop a system that exceeded the Minix standards. He began his work in 1991 when he released version 0.02 Linus used both Minix and Gnu for his work: essentially, Linux is a Minix-inspired kernel for Gnu.

1993: 

1993 Apple Computer introduces the Newton MessagePad 100 personal digital assistant at Macworld Expo,

1993: Berners-Lee süsteemi edasiarendus NCSA-s: 

1993: Berners-Lee süsteemi edasiarendus NCSA-s First publicly available popular browser, free to download, runs on several UNIX workstations: NCSA Mosaic v1.0 is released. Mosaic v1.0 is released.

1994: GNU/Linux version 1.0 and freeware BSD-s: 

1994: GNU/Linux version 1.0 and freeware BSD-s A freeware version of UNIX BSD branch: 4.4 BSD Lite at Berkeley Linus Torvalds releases version 1.0 of the Linux Kernel. NB! Freeware BSD-s and Linux are completely separate projects to create freeware UNIX-es

1995: Windows 95: 

1995: Windows 95 Microsoft releases Windows 95. More than 20,000 retail stores offer copies for sale. Windows 95 sports a GUI interface somewhat similar to Apple Macintosh. Microsoft prepares for support calls, with 1600 people staffing tech support lines. 1 million copies of the new and upgrade versions are sold through retail channels within the first 4 days. One month after the release of Windows 95, an estimated 7 million copies have been sold to end-users. Microsoft releases Microsoft Internet Explorer 1.0. Microsoft introduces Microsoft Office 95.

1998: Netscape down, Mozilla born: 

1998: Netscape down, Mozilla born Netscape makes source code for Netscape Communicator 5.0 browser available for free download on the Internet Free Mozilla browser project started.

1999-2003: olulised asjad viimasel viiel aastal: 

1999-2003: olulised asjad viimasel viiel aastal Vabavara (GNU/Linux, Apache jne) muutus serverarvutitel (mitte laua-arvutitel) mainstream-tehnoloogiaks. GNU/Linux on olulisem, kui muud UNIX-id. Samas ei ole muutunud desktopil Windowsile tõsiseks konkurendiks. 3D graafikaprotsessorid muutuvad oluliseks standard-kaubaartikliks. Apple läks üle UNIXi-põhisele opsüsteemile (OS X). Microsoft konvergeeris Windows 95/98/ME ja NT/2000: Windows XP HTML-i piiratus tõi kaasa rõhuasetuse XML-põhistele tehnoloogiatele. Peer-to-peer (P2P) tehnoloogial põhinevad failivahetuse-süsteemid ((Napster), (Morpheus), Kazaa, eDonkey, jne) tekkisid ja muutusid ülipopulaarseks Instant messengerid muutuvad populaarseks Lähiperspektiiv: võrguteenused (XML saidid ja tarkvara XML-i teisendamiseks). Pikem perspektiiv: semantilise webi-põhised tehnoloogiad.

Olulisi põhimõtteid “abstraktsioonide” osas: 

Olulisi põhimõtteid “abstraktsioonide” osas Kõrgkeeled, komponendid, võrguvärk jms on vajalik ainult selleks, et arendaja saaks rakendusi kiiremini teha. Arendaja mõtleb “abstraktsioonide” tasemel, aga lõpuks töötab kõik ikkagi transistoridel. Abstraktsioonid nö “tilguvad läbi”: iga abstraktsiooni juures on vaja põhimõtteliselt aru saada, kuidas töötab alumine, vähem abstraktne tase. Alati on vahel vaja midagi allpool teha!!! Loe juurde: The law of leaky abstractions: http://www.joelonsoftware.com/articles/LeakyAbstractions.html

Komponendid: 

Komponendid Peamine idee: transistorid kui “katkestusmootoriga” lülitid C = (A and -B) Väikestest komponentidest ehitatakse suuremaid, millest omakorda veel suuremaid. Komponendid on kui mustad kastid: teame nende väljundit vastava sisendi korral, aga enamasti mitte nende tehnilist sisu. Sisend A: vool sees: 1 vool väljas: 0 Väljund C: vool sees: 1 vool väljas: 0 Lüliti B: vool sees, 1: katkesta vool väljas, 0: ühenda

Komponendid (Eck): 

Komponendid (Eck) (A and C) or (B and (not C))

Komponendid (Eck): 

Komponendid (Eck) (A and (not B)) or (B and (not A))

Mälu: 

Mälu Tagasiside Lülitatav tagasiside: triger

Ühebitine mälukiip: 

Ühebitine mälukiip Kaks sisend- ja üks väljundjuhe

Ecki xComputer: 

Ecki xComputer Arvuti põhiosade (protsessor + mälu) simulatsioon väikese Java programmiga. Kä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)

... Registrid ...: 

... Registrid ... The ADDR register specifies a location in main memory. The CPU often needs to read values from memory or write values to memory. Only one location in memory is accessible at any given time. The ADDR register specifies that location. So, for example, if the CPU needs to read the value in location 375, it must first store 375 into the ADDR register. (If you turn on the "Autoscroll" checkbox beneath the memory display, then the memory will automatically be scrolled to the location indicated by the ADDR register every time the value in that register changes.) The PC register is the program counter. The CPU executes a program by fetching instructions one-by-one from memory and executing them. (This is called the fetch-and-execute cycle.) 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 IR holds that instruction while it is being executed.

... Registrid ...: 

... Registrid ... 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. When COUNT is 1, it does step 1; when COUNT is 2, it does step 2; and so forth. The last step is always to reset COUNT to 0, to get ready to start the next fetch-and-execute cycle. This is easier to understand after you see it in action. Remember that as the COUNT register counts 0, 1, 2,..., just one machine language program is being executed

Hierarhia pistikutest assemblerini : 

Hierarhia pistikutest assemblerini Esimene programmeerimismeetod: kaablid ja pistikud Teine: von Neumanni arhitektuur, programm mälus binaarkoodina: 010111010100101 101010101001 110101011010100 101010010100 111010100101001 110101111010 101010100101001 110011010101 110101001010010 101001000111 101001011101010 110101001001 (arvude liitmine 0…n)

Fortran vs LISP: summeeri arve 0…n: 

Fortran vs LISP: summeeri arve 0…n FORTRAN INTEGER FUNCTI0N sumto(n) isum = 0 DO i 10 = 0,n isum = isum + i 10 CONTINUE sumto = isum RETURN END LISP (defun sumto (n) (if (= 0 n) 0 (+ n (sumto (­ n 1))) ))

Kõrgkeeled: 

Kõrgkeeled Automatiseerivad ja lihtustavad hulga “harilikke” protseduure, mida assembleris programmeerides vaja Ei anna assembleriga analoogilist kontrolli masina üle Kõrgkeeled on erineva abstraktsusastmega: Masinalähedane ja ebamugav: Fortran, C (portaabel assembler) Abstraktsem ja mugavam: Lisp, Ada, ML, Java, ….

Kuidas keeles X kirjutatud programmi täidetakse?: 

Kuidas keeles X kirjutatud programmi täidetakse? Pea silmas, et: arvuti suudab täita ainult masinkoodis programme. On olemas kaks põhivarianti keeles X programmi täitmiseks. Interpreteerimine: masinkoodis programm nimega interpretaator loeb sisse X keeles faili ja asub seda rida-realt täitma. Näide: vana BASIC. Kompileerimine: masinkoodis programm nimega kompilaator teisendab keeles X programmi masinkoodfailiks Y. Seejärel täidetakse saadud masinkoodis programm Y. Näide: C.

Kuidas keeles X kirjutatud programmi täidetakse?: 

Kuidas keeles X kirjutatud programmi täidetakse? Kompromissvariante: Kompilaator kompileerib X faili vahekoodiks Y, seejärel interpreteeritakse vahekoodi Y (Python, Java). Interpretaator interpreteerib vahekoodi Y, kuid kompileerib töö ajal osa Y-st masinkoodiks, mida seejärel täidab (Java) , nn just-in-time compilation ehk JIT.

Keelte erisused: kolm põhiasja: 

Keelte 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 programm tegelikult siis teeb) Teegid (libraries) (millised valmisprogrammijupid on selle keele jaoks kergesti kättesaadavad või kohe kaasa pandud)

Miks opsüsteem?: 

Miks opsüsteem? Opsüsteemi põhieesmärgid: Pakkuda programmeerijale valmistehtud standardtükke. Võimaldada kasutajal arvutis ühtemoodi ja harjumuspäraselt tegutseda, sõltumatult sellest, mis programmid tal arvutis on. Miks opsüsteem? Arvutit saaks programmeerida ka ilma opsüsteemita. Sel juhul: oleks iga programmi tegemine palju raskem kui opsüsteemi olemasolu korral. kasutajate jaoks näeks eri programmid väga eri moodi välja.

Mida opsüsteem enamasti teeb?: 

Mida opsüsteem enamasti teeb? Oskab kettalt programme lugeda ja neid käima panna. Oskab programme seisma panna (lõplikult või ainult väikese pausi jaoks) Oskab kettale faile ja katalooge kirjutada ja sealt neid lugeda. Oskab välisseadmetega (printer, monitor, klaviatuur jne jne) suhelda. Oskab võrguga suhelda. jne Kui opsüsteemi ei oleks, peaks iga programm kõiki neid asju ise teha oskama!

Naked machine: 

Naked machine What is there in the naked machine (unclothed by an OS)? CPU (registers, opcodes), Memory (may be several chunks), Devices (mapped to memory locations, able to transfer data to and from memory).

Operatsioonisüsteemide arengulugu: 

Operatsioonisüsteemide arengulugu Arvutid ilma OS-ita Batch processing süsteemid Multiprotsessing ja terminalid - UNIX Personaalarvutid - IBM, Xerox, Apple, DOS, Windows

Operatsioonisüsteemide omadused: 

Operatsioonisüsteemide omadused Funktsionaalsus Protsesside haldamine Mälu haldamine Failisüsteemid Võrguprotokollid Kasutajate haldamine

Interrupts: 

Interrupts The interrupt handler must save the machine state, do some processing, then call the process scheduler and dispatcher. When an interrupt occurs 1.the processor hardware makes a quick copy of the program counter and CPU registers 2.the hardware switches to kernel mode and jumps to the interrupt service routine 3.the ISR is usually very short. It may inform a device driver that it received the interrupt; it may just increment some clock counters. 4.next the ISR calls the scheduler, which decides which process to run 5.the scheduler calls the dispatcher, and new process (or maybe the same process) resumes where it left off An important goal of the OS is to hide interrupts from the user---and from user-level processes.

Processes have their own memory areas: 

Processes have their own memory areas

Processes wait and run – when chance comes: 

Processes wait and run – when chance comes

Linux & FreeBSD võrdlus: 

Linux & FreeBSD võrdlus Linux Hajutatud arendus Erinevad väljaanded Kaasaegsem Laiem riistvara toetus SysV tüveline Kasutajasõbralikum FreeBSD Tuumikmeeskond Üks väljaanne korraga Stabiilsem Väiksem riistvara toetus BSD tüveline Tehniliselt terviklikum

Tarkvarasüsteemide harilik arhitektuur: 

Tarkvarasüsteemide harilik arhitektuur

Tarkvarapakettide komponendid: 1: 

Tarkvarapakettide komponendid: 1 Tarkvarapaketid ehitatakse reeglina mitmesuguste komponentide kokkupaneku teel. Neid komponente võib klassifitseerida järgmisel viisil: Terviklikud lõppkasutaja-rakendusprogrammid (tekstitöötlus, raamatupidamise tarkvara, malemängu programmid jms), mida tihti, kuid mitte alati, saab juhtida ja mõne teise tarkvarapaketiga programmiliselt siduda. Näiteks Microsoft Office rakendused (Word, Excel jne) on seotavad ja programmeeritavad Microsofti arenduspaketi VisualBasic abil. Nende rakendusprogrammide sidumisel oma tarkvarapaketiga tuleb arvestada, et paketi kasutajal peavad kasutatavad programmid olema ostetud ja arvutisse installeeritud. Sagedamini kasutatakse seda skeemi operatsioonisüsteemi Windows puhul. Analoogiliselt on paljude rakenduspakettide osaks mõni andmebaasisüsteem, näiteks Oracle, Sybase vms, kusjuures vahel on võimalik ühte andmebaasisüsteemi teise samatüübilise vastu välja vahetada.osseisus.

Tarkvarapakettide komponendid: 3: 

Tarkvarapakettide komponendid: 3 Konkreetseid, piiratud funktsioone (graafika joonistamine ekraanile, aritmeetika, failide lugemine ja kirjutamine, internetiühenduse käivitamine mingile aadressile jms) realiseerivad väikesed komponendid ja nende komplektid, nn teegid. Selliseid komponente levitatakse enamasti komplektis kompilaatorite ja muude tarkvara-arendusvahenditega ning nad on enamasti kasutatavad ainult selle konkreetse programmeerimiskeele ja arendusvahendi koosseisus. komplektis kompilaatorite ja muude tarkvara-arendusvahenditega ning nad on enamasti kasutatavad ainult selle konkreetse programmeerimiskeele

Suletud ja avatud süsteemid: 

Suletud ja avatud süsteemid Laias laastus võib IT-tootepered jaotada kahe erisuunalise lähenemise vahel: Personaalsed, suletud süsteemid Tarkvara on esmajoones ette nähtud kasutaja oma arvuti ja kõvakettaga töötamiseks, teiste arvutite sidumine ja teiste firmade toodete sidumine on võimalik, kuid raskendatud. Sellise lähenemise peamine baasplatvorm on Windows’i operatsioonisüsteem. Tähtsaim osa süsteemist on reeglina personaalarvuti, mitte server. Windows toetab küll arvutite omavahelist sidumist ning ühiskasutusega servereid (Windows NT baasil), kuid seab neile mitmeid piiranguid. (brauseri) kaudu, mis võib omakorda käivitada Java-keelse programmi. Lähenemist esindab kõige puhtamal kujul Sun, kes soovib Microsofti turupositsiooni nõrgendada. Sun’iga on otseselt liitunud AOL ja Netscape, tihedalt toetavad Oracle ning IBM. Sarnast lähenemist toetab ka laienev vabavara-liikumine, mille põhiplatvorm on tasuta ja avaliku koodiga operatsioonisüsteem Linux.

Suletud ja avatud süsteemid : 

Suletud ja avatud süsteemid Võrku seotud, avatud süsteemid. Võimalikult paljud tarkvarakomponendid töötavad mitme kasutaja jaoks ette nähtud, võrku seotud serverarvutites. Üksikkasutaja jaoks on nad sisuliselt teenused. Primaarne on arvutite ja tarkvara lihtne võrku sidumine ja ühendatavus muude tarkvarakomponentidega. Sellise lähenemise peamine baasplatvorm on serveril asuv Unixi operatsioonisüsteem, kus töötavad andmebaasid ja suured infootsimise-rakendused. Lõppkasutaja personaalarvuti suhtleb võrgu kaudu (enamasti internet) serveriga. Lõppkasutaja arvutis võib olla mistahes operatsioonisüsteem. Sageli suhtleb kasutaja süsteemiga hariliku internetilehitseja (brauseri) kaudu, mis võib omakorda käivitada Java-keelse programmi.

Teegid: 

Teegid Vaade 3: rakendusteegid Enamik keeli EI SISALDA STANDARDSEID TEEKE või need teegid on äärmiselt piiratud Näide: ANSI C. ANSI C teek sisaldab stringtöötlust, failitöötlust, trükkimist, veel paari analoogilist kategooriat. Reeglina on võimsad rakendusteegid (graafika, aknad, hiir, võrguühendused, paralleelprotsessid jne ...) ebastandardsed, piiratud teatud riistvara ja opsüsteemiga (Windows 95, Windows NT, X windows, Linux, ...) Pea ainus erand: Java

Arendusvahendid: 

Arendusvahendid Programmeerimiskeeled, kompilaator Reeglina tuleb tarkvara loomiseks osata spetsiaalsetes programmeerimiskeeltes programme kirjutada, mis on jõukohane ainult erihariduse ja piisavate praktiliste kogemustega spetsialistidele. Maailmas on kasutusel tuhandeid programmeerimiskeeli, kuid laiemalt on levinud ehk kümme keelt. Mingis programmeerimiskeeles kirjutatud programmid teisendatakse arvutil töötavaks programmiks nn kompilaatori abil.

Arendusvahendid: 

Arendusvahendid Teek Enamik kaasaegseid programmeerimiskeeli on kihilised, sisaldades väikest ja suhteliselt lihtsat tuuma ning suurt hulka väikesi tarkvarakomponente (nn teeke) mitmete standardülesannete jaoks.

Võrgurakendused: klient-server arhitektuurid: 

Võrgurakendused: klient-server arhitektuurid Kahekihiline Kolmekihiline N-kihiline

Võrgutarkvara praegune arhitektuur: 

Võrgutarkvara praegune arhitektuur Protokollid Baasprotokollid IP TCP HTTP CGI Laotusprotokollid HTML - hypertext markup language CSS - cascading style sheets DOM - document object model XML - extended markup language Edasiarendatud, hajusobjektide protokollid RMI CORBA DCOM JINI XML-RPC SOAP Rakendused

Võrgutarkvara pregune arhitektuur: 

Võrgutarkvara pregune arhitektuur Rakendusplatvormid Serveripoolsed Skriptikeeled koos teekidega: Perl, Python, Javascript, VBScript Servletid: Java Andmebaasid Rakendusserverid Kliendipoolsed Skriptikeeled: Javascript, VBScript, Appletid jms: Java, Flash Rakendused: Java, ActiveX

Võrgurakendused: baasterminoloogia: 

Võrgurakendused: baasterminoloogia Praegune kasutusõiguslik jaotus Internet Intranet Extranet Ligipääs lahtine eraldatud piiratud avalik Kasutajad avalikkus organisatsiooni organisatsiooni liikmed partnerid Info üldine privaatne valitud jagamine

Võrgurakendused: miks?: 

A) Üksikisiku vajadused: Ligipääs oma dokumentidele ja materjalidele ja programmidele kust tahes, millal tahes: oma laua taga, teisest asutusest, kodust, reisil: dokumendid, märkmed kalender kontaktide andmebaas pangakonto e-post harjumuspärane tarkvara Võrgurakendused: miks?

Võrgurakendused: miks?: 

B) Grupitöö ja juhtimisvajadused: Hajutatud grupitöö: ligipääs töörühma ühistele dokumentidele ja materjalidele kust tahes, millal tahes ühine kalender, ajaplaneerimine, grupidiskussioon reaalajas grupil töösolevad dokumendid ja andmebaasid Ligipääsettevõtte dokumentidele ja andmebaasidele vastavalt õigustele, kust tahes, millal tahes: raamatupidamine firma pangakonto firma andmebaasid töötajate raportid ja dokumendid Võrgurakendused: miks?

Võrgurakendused: miks?: 

C) Automaatsed talletamis-, seostamis- ja infohankevajadused: Automaatne arhiveerimine ja mugavate arhiiviotsingute võimaldamine Erinevates osakondades ja ettevõtetes olevate eriostarbeliste andmebaaside andmete ühendamine, ühispäringute sooritamine Info automaatne ja poolautomaatne otsimine võrgust Võrgurakendused: miks?

Võrgutarkvara praegune arhitektuur: 

Võrgutarkvara praegune arhitektuur Protokollid Baasprotokollid IP TCP HTTP CGI Laotusprotokollid (kujundamine, tekstist tükkide kättesaamine jms) HTML - hypertext markup language CSS - cascading style sheets DOM - document object model Levinud infovahetus-protokoll XML - extended markup language Edasiarendatud, hajusobjektide protokollid RMI CORBA JINI XML-RPC SOAP Rakendused

Võrgurakendused: baasterminoloogia: 

Võrgurakendused: baasterminoloogia Praegune kasutusõiguslik jaotus Internet Intranet Extranet Ligipääs lahtine eraldatud piiratud avalik Kasutajad avalikkus organisatsiooni organisatsiooni liikmed partnerid Info üldine privaatne valitud jagamine

DOM - Document Object Model: lühike sissejuhatus: 

DOM - Document Object Model: lühike sissejuhatus <html><head><title>My homepage</head> <body bgcolor=#ffffff> <center> <img src="home.gif" name="pic1" width=200 height=100> </center><p> <form name="myForm">Name: <input type="text" name="name" value=""><br>e-Mail: <input type="text" name="email" value=""><br><br> <input type="button" value="Push me" name="myButton" onClick="alert('Yo')"> </form><p> <center><img src="ruler.gif" name="pic4" width=300 height=15><p> <a href="http://rummelplatz.uni-mannheim.de/~skoch/"> My homepage</a></center> </body></html>

DOM - Document Object Model: lühike sissejuhatus: 

DOM - Document Object Model: lühike sissejuhatus

DOM - Document Object Model: lühike sissejuhatus: 

DOM - Document Object Model: lühike sissejuhatus

Klient ja server: XML - extensible markup language: 

Klient ja server: XML - extensible markup language High-end: SGML - võimas, keerukas Low-end: HTML - nõrk, lihtne Vaja praktilist vahepealset versiooni Vajadus mitte piirduda fikseeritud hulga tag’idega, vaid OMA tag’e kasutusele võtta Vajadus töötada koos CSS-iga Vajadus universaalse andmevahetus- ja esitusformaadi jaoks

Kuidas XML-i kasutatakse: 

Kuidas XML-i kasutatakse XML on kokkulepitud, standardne süntaks. XML tagidel ei ole sisulist tähendust. XML süntaksit kasutatakse paljude erinevate konkreetsete, tähendust omavate tagidega keelte tegemiseks

Recursion: 

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. Bad kind - infinite loop: a car is a car, int fact(int x) { return fact(x) } Recursion can often be used to solve complex problems by reducing them to simpler problems of the same type. Good kind – loop is (hopefully) terminated: An "ancestor" is either a parent or an ancestor of a parent. int fact (int x) { if (x <= 0) return 1; else return x * fact(x-1); }

Recursive functions: main principles: 

Recursive functions: main principles 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.

Recursive functions: main principles: 

Recursive functions: main principles Recursion has same power as iteration: Every recursive function can be written using while or for loops instead Every function using while and/or for loops can be written using recursion instead However: some programming tasks are much easier to write using recursion some programming tasks are much easier to write using iteration

Tail recursion: directly convertible to iteration: 

Tail recursion: directly convertible to iteration Tail recursion: recursive call is the last thing the function does. Tail recursive functions are typically much faster when written iteratively (unless we have a very good optimising compiler)

Deklaratiivne vs imperatiivne : 

Deklaratiivne vs imperatiivne 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 programmideanalüüsimisel, näiteks optimeerimise, verifitseerimise või paralleliseerimise tarvis.

Deklaratiivsed vs imperatiivsed keeled: 

Deklaratiivsed vs imperatiivsed keeled 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.

Plussid ja miinused: 

Plussid ja miinused 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.

Funktsionaalsed ja loogilised keeled: 

Funktsionaalsed ja loogilised keeled 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

Funktsionaalne programmeerimine: 

Funktsionaalne programmeerimine Funktsionaalsete keelte idee on programmide kirjutamine (matemaatiliste) funktsioonide defineerimise teel, määramata seejuures täpselt ära, mis strateegia järgi funktsiooni resultaati tuleb arvutada.

Puhtad ja ebapuhtad keeled: 

Puhtad ja ebapuhtad keeled Funktsionaalseid keeli saab jämedalt jagada kahte liiki: puhtad ja ebapuhtad. Puhtas 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. Ebapuhtad funktsionaalsed keeled - ML, Lisp, Scheme - kombineerivad puhaste funktsionaalsete keelte mehhanisme imperatiivsete mehhanismidega.

Annonüümsed funktsioonid: 

Annonüümsed funktsioonid üks harilikumaid praktikas kasutatavaid funktsioonide kirjapaneku viise on selline: f(x) = x*x + 1 Funktsioon esitatakse, andes talle samas nime, konkreetses näites f. Lambda-arvutuses esitatakse funktsioone, vastupidi, kui anonüümseid, nimeta terme. äsjatoodud näide on lambda-kirjaviisis  x. x*x + 1 Lambda-sümboli  järele kirjutatakse funktsiooni formaalseks parameetriks olev muutuja, seejärel punkt ja funktsiooni keha.

Lambda-arvutus: 

Lambda-arvutus Mitme formaalse parameetriga funktsioone esitatakse mitme üksteise sees oleva üheparameetrilise funktsioonina:  x.  y. x*x+y*y.

Näide: 

Näide Funktsiooni rakendamiseks kirjutatakse traditsioonilise $f(3)$ asemel ( x. x*x+1) 3 -- viimase väärtuseks on 10. Analoogiliselt annab (( x.  y. x*x+y*y) 2) 3 väärtuseks 13. Lambda-termi rakendamisel asendatakse seotud muutuja termi kehas termile antud argumendiga. (( f. f(f 2)) ( x. x*x+1)) annab ( x. x*x+1) (( x. x*x+1) 2) annab ( x. x*x+1) (2*2+1) annab ( x. x*x+1) 5 annab 5*5+1 annab 26. Resultaat seejuures asenduste tegemise järjekorrast ei sõltu.

Loogiline programmeerimine: Prolog: 

Loogiline programmeerimine: Prolog Prolog on esimene -- ja siiani väga populaarne -- loogilise programmeerimise keel. Prolog-i põhi-idee on nõuda otsitava lahenduse kirjeldamist esimest järku predikaatarvutuse keeles.

Näide: 

Näide Vaatleme esimese näitena sugulussidemete andmebaasi, konkreetselt niisugust Prolog-i programmi: isa(jaan,peeter). isa(jaan,martin). isa(martin,veiko). isa(riivo,leo). ema(leena,leo). vanaisa(X,Z) :- isa(X,Y), isa(Y,Z). vanaisa(X,Z) :- isa(X,Y), ema(Y,Z).

Päringud: 

Päringud Päringule, kas isa(riivo,martin) on antud andmebaasist tuletatav, vastab otsingumootor eitavalt ?- isa(riivo,martin). no Lahendust otsib Prologi mootor järgmiselt: kõik andmebaasis olevad laused vaadatakse järjest läbi ning püütakse iga lause esimest literaali päringu-literaaliga unifitseerida. Kui see ei õnnestu, vastatakse päringule eitavalt. Päringule, kas isa(riivo,leo) on antud andmebaasist tuletatav, vastab otsingumootor jaatavalt: ?- isa(riivo,leo). yes

Loendi element?: 

Loendi element? Kirjutame programmi member , mis kontrollib, kas esimene argument kuulub teiseks argumendiks olevasse loendisse: member(X,[X|Z]). member(X,[Y|Z]) :- member(X,Z). ?- member(10,[20,30,10,40]). Yes

Loengu ülevaade: 

Loengu ülevaade Keerukus: kui ruttu ülesannet lahendada saab? Probleem Põhi-ideed Põhimõisted Näited Lahenduvus: kas üldse ülesannet lahendada saab? Probleem Põhi-ideed Põhimõisted Näited

Algorithms : 

Algorithms Some properties of an Algorithm Kindlasti: 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 Verifitseerimine, testimine Lahenduvus Keerukus

Keerukus uurimisvaldkonnana : 

Keerukus uurimisvaldkonnana Keerukus on suur arvutiteaduse uurimisvaldkond. Ingliskeelne harilik nimi: complexity theory 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?

The Fibonacci numbers : 

The Fibonacci numbers An example of the sort of basic question we study in this class is, how much time would this algorithm take? How should we measure time? To get a rough approximation of this, we try measuring in terms of lines of code.

The Fibonacci numbers : 

The Fibonacci numbers Each call to fib returns either one or two lines. If n <= 2, we only execute one line (the if/return). if n = 3, execute 2 for fib(2), plus one each for fib(1) and fib(0): 4 In general, any recursive algorithm such as this one gives us a recurrence relation: the time for any routine is the time within the routine itself, plus the time for the recursive calls. This gives in a very easy mechanical way an equation like the one above, which we can then solve to find a formula for the time. In this case, the recurrence relation is very similar to the definition of the Fibonacci numbers.

The Fibonacci numbers : 

The Fibonacci numbers With some work, we can solve the equation, at least in terms of F(n): We think of the recursion as forming a tree. We draw one node, the root of the tree, for the first call then any time the routine calls itself, we draw another child in the tree. F(5) / \ F(4) F(3) / \ / \ F(3) F(2) F(2) F(1) / \ F(2) F(1) The four internal nodes of this tree for fib(5) take two lines each, while the five leaves take one line, so the total number of lines executed in all the recursive calls is 13. Kaks rida programmi Üks rida programmi

The Fibonacci numbers: Dynamic programming : 

The Fibonacci numbers: Dynamic programming One idea: the reason we're slow is we keep recomputing the same subproblems over and over again. Instead let's solve each subproblem once and then look up the solution later when we need it instead of repeatedly recomputing it. Algorithm 2: int fib(int n) { int f[n+1]; f[1] = f[2] = 1; for (int i = 3; i <= n; i++) f[i] = f[i-1] + f[i-2]; return f[n]; }

The Fibonacci numbers: Dynamic programming : 

The Fibonacci numbers: Dynamic programming This is an iterative algorithm (one that uses loops instead of recursion) so we analyze it a little differently than we would a recursive algorithm. Basically, we just have to compute for each line, how many times that line is executed, by looking at which loops it's in and how many times each loop is executed. Three lines are executed always. The first line in the loop is executed n-1 times (except for n=1) The second line in loop executed n-2 times (except for n=1) so: time(n) = n-1 + n-2 + 3 = 2*n (except time(1)=4). As an example for n=45 it takes 90 steps: roughly 10 million times faster than the other program.

Travelling salesman problem : 

Travelling salesman problem Difficult to solve. No polynomial time algorithm known. Only exponential time algorithms known. However, if given a tour, one can verify if the cost is less than X. Why difficult: in case there are N cities to visit, there are factorial(N) possible routes: (if N=6, then: 5*4*3*2*1 routes to check) 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: 

Lahenduvus Teame, et iga probleemi jaoks ei leidu kiiret algoritmi. Kas aga iga probleemi jaoks on üldse olemas algoritmi, mis seda lahendab? Selgub, et iga täpselt formuleeritud probleemi jaoks ei leidugi lahendavat algoritmi! Vähe sellest: kui võtta “juhuslik” probleem, siis tõenäosus, et lahendav algoritm leidub, on lõpmatult väike!

Cantori teoreem: sissejuhatus: 

Cantori teoreem: sissejuhatus Mida tähendab väide: “hulk A on sama suur (võimas) kui hulk B”? Seda, et hulga A kõik elemendid saab seda üksühesesse vastavusse hulga B elementidega: Hulk B Hulk A

Cantori teoreem: sissejuhatus: 

Cantori teoreem: sissejuhatus Kuidas seada üksühesesse vastavusse kahe lõpmatu hulga N ja Z elemendid? N: ... -4 -3 -2 -1 0 1 2 3 4 ... Z: 0 1 2 3 4 ... N oleks justkui suurem kui Z?

Cantori teoreem: sissejuhatus: 

Cantori teoreem: sissejuhatus Kuidas seada üksühesesse vastavusse kahe lõpmatu hulga N ja Z elemendid? N: ... -4 -3 -2 -1 0 1 2 3 4 ... Z: 0 1 2 3 4 ... Seame vastavusse hoopis niimoodi: N: 0 1 -1 2 -2 3 -3 4 -4 … Z: 0 1 2 3 4 5 6 7 8 … Kuna N ja Z saab üksühesesse vastavusse seada, siis on nad sama suured (sama võimsad)!

Cantori teoreem: sissejuhatus: 

Cantori teoreem: sissejuhatus Murdarve oleks justkui lõpmatult rohkem, kui positiivseid täisarve?? Samuti vale! Tegelikult on murdarvud vs pos täisarvud üksküheses vastavuses: Murru kordajad J a g a j a d

Cantori teoreem: detailselt läbi tehes 10: 

Cantori teoreem: detailselt läbi tehes 10 Kokkuvõttes: Meie arv 0. 2 4 4 0 .... ei saa olla selles tabelis Kui meil oleks tabel kuidagi teisiti tehtud (arvud teises järjekorras) siis: kui me jälle teeksime diagonaali järgi oma uue arvu, siis seda arvu ikka tabelis ei ole. Meie uus arv kahtlemata on reaalarv. Seega ei sisalda ükski 1-st väiksemate reaalarvude tabel kõiki reaalarve! Mis see siis tähendab: Kõiki reaalarve ei saagi tabelisse panna Iga tabeli N-s rida vastab täisarvule N Reaalarvude hulk on suurem (võimsam) kui täisarvude hulk

Cantori teoreemi edasine jätk: 

Cantori teoreemi edasine jätk Pane tähele, et: Iga kahendsüsteemis reaalarv 0 ja 1 vahel vastab ühele täisarvude alamhulgale: N-nda biti positsioon ütleb, kas arv N on seal hulgas või ei. Näiteks: Paarisarvude hulgale vastab: 101010101010101010.... Kõigi arvude hulgale vastab: 11111111111111111.... Algarvude hulgale vastab: 01010101000101.... Cantori teoreem ütleb üldisemalt, et mingi hulga H kõigi alamhulkade hulk on suurema võimsusega kui see hulk H. Tekivad lõpmatud ahelad üha suurema võimsusega hulkadest: Täisarvude hulk N1  N1 alamhulkade hulk N2  N2 alamhulkade hulk N3  jne jne ....

Is there a solution?: 

Is there a solution? If you can solve the halting problem, you can solve Golbach’s conjecture: Every even number greater than 2 can be represented as a sum of two primes. Golbach’s conjecture is an unsolved problem in mathematics What does this tell you about the halting problem? What should you do? One possibility: try to show that the halting problem is not solvable.

Proof: start: 

Proof: start Assume that it is possible to write a program to solve the Halting Problem. Denote this program by HaltAnswerer(prog,inputs). HaltAnswerer(prog,inputs) will return yes if prog will halt on inputs and no otherwise. A program is just a string of characters E.g. your Java program is just a long string of characters An input can also be considered as just a string of characters So HaltAnswerer is effectively just working on two strings

Kuulus näide matemaatikast: 

Kuulus näide matemaatikast In 1900, mathematician David Hilbert identified 23 mathematical problems and posed them as a challenge for the coming century. The tenth problem asks for an algorithm to test whether a polynomial has an integral root Apparently, Hilbert assumed that such an algorithm must exist. This problem is unsolvable (Matijasevic 1970)

Poollahenduvus: 

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. Peatumisprobleemi puhul: paneme X-le vastava programmi käima ja kui ta peatub, siis loomulikult teame, et ta kuulub hulka H Kui ta aga ei peatu, siis meil ei ole kindlat viisi aru saada, et ta ei kuulu hulka H. Peatumisprobleem on poollahenduv. On olemas ülesandeid, mis ei ole ka mitte poollahenduvad.

Lahenduvus: muud: 

Lahenduvus: muud Vanad “vist ekslikud” oletused: Mathematics is consistent. Roughly this means that we cannot prove a statement and its opposite; we cannot prove something horrible like 1=2. Mathematics is complete. Roughly this means that every true mathematical assertion can be proven i.e. every mathematical assertion can either be proven or disproven. Mathematics is decidable. This means that for every type of mathematical problem there is an algorithm that, in theory at least, can be mechanically followed to give a solution. We say “in theory” because following the algorithm might take a million years and still be finite

Lahenduvus: muud: 

Lahenduvus: muud Hiljem selgus, et: In 1930, Kurt Godel shocked the world by proving that 1 and 2 cannot both be true Either you can prove false statements or there are true statements that are not provable. Most people believe that mathematics is incomplete rather than mathematics is inconsistent Turing was one of the people who showed that (3) is false by his work on Turing machines and the halting problem

Taust ja põhimõtted: eesmärgid : 

Taust ja põhimõtted: eesmärgid Erinevad eesmärgid, üldiselt konkreetsele: Tehisintellektinduse “suur eesmärk” on päriselt intelligentse masina ehitamine: riistvara + tarkvara Tehisintellektinduse “filosoofiline eesmärk” on saada paremini aru mõistuse (sh inimese ja loomade) funktsioneerimise põhimõtetest üldse. Tehisintellektinduse “praktiline eesmärk” on teha programme, mis oskaksid lahendada keerulisi ülesandeid, mille jaoks siiani on inimesi vaja.

Taust ja põhimõtted: arvutatavusest : 

Taust ja põhimõtted: arvutatavusest Meenutame, et paljude ülesannete jaoks ei saa olla lahendavat algoritmi. See kehtib nii: arvuti jaoks inimese jaoks Aga: Inimene “saab lahendada” mistahes ülesande, kuna ta teeb vahel vigu. Arvuti saab ka “lahendada” mistahes ülesande, kui programmis kasutada juhuslike arvude generaatorit ja panna programm vahel vigu tegema.

Filosoofia ja praktika Turingi testi ümber : 

Filosoofia ja praktika Turingi testi ümber Palju erinevaid vastuväiteid, et testi ärategemine ei tähenda veel “päris” intellekti. Ükski vastuväide ei ole ümberlükatav. Tegelikkuses ei suuda praegu keegi teha programmi, mis suudaks Turingi testi edukalt läbi teha: sellest ollakse VÄGA KAUGEL. Praegu “edukalt” intellekti simuleerivad Turingi testi programmid on kas: hullumeelse simulaatorid: katatoonik: ei ütle üldse mitte midagi paranoik: räägib kogu aeg samasugust hirmujuttu poolsegase psühhoanalüütiku simulaatorid (Eliza) jms simulaatorid, mis hoiavad keskustelu VÄGA KITSASTES raamides ja sisuliselt ei saa üldse aru talle öeldud lausetest. Veidi põhjalikuma vestlusega saab alati aru, et simuleerival programmil pole üldist arusaama isegi igapäevasest elust ja asjadest ning ta ei oska probleeme lahendada.

Filosoofia ja praktika Turingi testi ümber : 

Filosoofia ja praktika Turingi testi ümber Tegelikult Turingi testi edukalt tegev programm peaks: Teadma igapäevaelust sama palju, kui keskmine inimene Oskama lahendada ülesandeid Saama aru vestluspartneri soovidest ja teadmistest jne See kõik on VÄGA KEERULINE ja ei ole põhjust arvata, et lihtsakoeline programm sellega kuidagi hakkama saab. Kui programm sellega hakkama saab, siis on ta pööraselt keeruline ja võimas, ja inimesed üldiselt ei saa enam aru, mis ta sees on ja kuidas ta töötab, ja pigem võib arvata, et ta on siis ka päriselt intelligentne.

Mõned argumendid masinmõistuse võimalikkuseks : 

Mõned argumendid masinmõistuse võimalikkuseks Arvutiprotsessorit mikroskoobiga vaadates on näha ränist juhtmerägastikku, mitte mõistust. Aju mikroskoobiga vaadates on näha valkudest neuronite rägastikku, mitte mõistust. Kas inimene suudab teha midagi endast palju võimsamat? Aga, kas ainurakne suudab teha hulkrakset? Kõrgemat looma? Kui mõistuslik programm on teoreetiliselt võimalik, siis võib ta luua ka juhuse läbi, saamata täpselt aru, miks ja kuidas. Religioosne problemaatika: kanoonilised tekstid ei ütle, et mingit uut mõistuslikku eluvormi ei saa luua. Kui oletada, et seda saab teha ainult kõrgem olend, siis võib tal olla seda mugav teha inimeste kaudu. Ei ole mingit põhjust arvata, et inimene poleks masin. Kui oletada, et inimene kasutab ekstrasensiitvseid võimeid ja teda juhib kõrgem olend, siis miks ei võiks ka ränist masin kasutada ekstrasensitiivseid võimeid ja miks ei võiks teda samuti juhtida kõrgem olend?

Teadvuse küsimused : 

Teadvuse küsimused Teadvus on väga pinnaline. Inimene ei ole teadlik rõhuvast enamusest oma ajutegevusest, mõtlemise printsiipidest jne jne. Isegi maletaja ei oska adekvaatselt selgitada, miks on üks käik parem ja kuidas ta käike valib. Teadvus on tihedalt seotud mälu ehitusega. Loomadel ja vastsündinutel ei ole teadvust inimese mõttes. On olemas lõhestunud isikuga inimesi, kellel on mitu sõltumatut teadvust. Mõistust võib ehk vaadata kui riiki, kus sees palju mehhanisme ja tegutsejaid, ning mille presidendiks ehk esindajaks on teadvus, mida võib vajadusel vahetada (a la lõhestunud isikuga inimesed).

Miks on järelduste tegemine “hard AI”? : 

Miks on järelduste tegemine “hard AI”? Sellised süsteemid oskavad teadmisi KASUTADA, st saavad asjadest TEGELIKULT aru. Sellised süsteemid tuleb tulevikus panna IGA intelligentse süsteemi sisse (masintõlge, kujutiste äratundmine, robotid jne), sest siis on too süsteem võimeline asjadest tegelikult aru saama. Ülesandepüstitus uurijatele on konkreetne: siin on faktid, reeglid ja küsimus, kas sinu programm vastab N sekundi jooksul küsimusele õigesti või ei? Masintõlkes näiteks nii pole: ei ole täpset kriteeriumit hindamaks, mis tõlge on parem kui teine ja milline on selgelt vigane.

Ülesannete lahendamine loogikatõestuse abil : 

Ülesannete lahendamine loogikatõestuse abil Ülesanne tuleb loogika keeles formuleerida. Küsimus tuleb ka loogika keeles formuleerida. Tõestaja asub tõestust otsima. Kui anda lõpmatult palju aega ja mälu, siis tõestaja lõpuks ka tõestuse leiab (kui tõestus üldse teoreetiliselt eksisteerib). Keeruliste ülesannete puhul võtaks see lootusetult kaua aega (meenuta keerukusklasse!) Kui tõestust ei ole, siis tõestaja enamasti jääbki seda otsima, teadma, et sellist tõestust ei saa olla. Tõestajate igaastased võistlused CASC: http://www.math.miami.edu/~tptp/CASC/ Gandalf: Tammeti tõestaja, pea iga aasta võitnud mõne CASC kategooria http://www.ttu.ee/it/gandalf/

Ekspertsüsteemid : 

Ekspertsüsteemid Ekspertsüsteem on mõne spetsiifilise valdkonna jaoks kohandatud järelduste tegemise programm (variant teoreemitõestajast) Tihtpeale kasutavad ebaharilikku, spetsiaalselt valdkonnaga sobitatud loogikat. Enamasti sisaldavad paljusid valmiskujul reegleid. Enamasti sisaldavad mugavat kasutajaliidest: kasutaja ei pea loogika keelt oskama.

Intelligentsed agendid: 

Intelligentsed agendid Intelligentne agent on nagu robot ilma füüsiseta: ta on ainult programm, mis suhtleb välismaailmaga standardse programmi kombel: Display Klaviatuur Hiir HTTP ja muud võrguühendused Intelligentne agent peaks ise koguma võrgust infot, talletama kasutaja antud reegleid ja fakte, oskama vastata tema päringutele, tegema ise võrgust otsinguid jne.

Pildi tuvastamine: 

Pildi tuvastamine Tehtud suurt progressi sõjatööstuse vajaduste tõttu. Tüüpiline ülesanne: tunda ära kaamerapildist vaenlase tankid: Kasutatakse palju närvivõrkude abil õppimist. Paneme tähele, et: Inimese poolt kogetud pilt on peamiselt tema aju poolt loodud, mitte aga “toores pilt”, mis tuleb silmanärvidest: viimane on väga halva kvaliteediga. Inimese aju on võimeline täiesti iseseisvalt looma visuaalset pilti: Unes Hallutsinatsioonide käigus

Teksti mõistmine ja tõlkimine: 

Teksti mõistmine ja tõlkimine Teksti mõistmine tähendaks selle teisendamist “sisemisteks”, näiteks loogikakeelseteks faktideks ja reegliteks. Teksti tähendus sõltub tohutult kontekstist. Teksti tähenduse teisendamine sisemisteks reegliteks eeldab väga suurte teadmiste olemasolu maailmast ja teksti kirjutajast! Sama probleem on tõlkimise juures: kvaliteetne tõlge eeldab teksti mõistmist. Mittekvaliteetne tõlge on samas lihtne. Vt võrgust “babelfish”.

Veidi ajalugu: 

Veidi ajalugu Teise maailmasõja paiku: Alan Turing tegi valmis maleprogrammi, aga tal ei olnud arvutit selle täitmiseks. Turing täitis programmi ise: paberi ja pliiatsi abil. Mängis paar partiid: iga partii võttis hirmus kaua aega. 1940-1990: Programmid läksid aeglaselt paremaks, arvutid kiiremaks, aga tipp-inim-mängijad olid programmidest kõvasti paremad. 1990-2000: Programmid hakkasid tipp-inim-mängijaid järjepanu võitma CHINOOK – 1994, 8x8 inglise kabe maailmameister Deep Blue – 1997, võitis Garry Kasparovit malematshis LOGISTELLO – 1997, võitis Othello (Reversi) maailmameistrit Takeshi Murakamit Praegune seis: Mitmete mängude (Go, Bridzh, ...) jaoks on inim-mängijad endiselt programmidest hulga paremad

Kuidas maleprogrammi teha?: 

Kuidas maleprogrammi teha? Teeme kõigepealt programmi, mis: loeb seisu teeb seisu järgi mällu tabeli kõigist võimalikest käikudest selles seisus. See ei olegi nii väga keeruline programm Males keerulisem Kabes lihtsam Othello (reversi) veel lihtsam Viis nuppu ritta: väga lihtne Nüüd võib programm tabelist juhusliku käigu valida. Ja juba mängibki! Kuigi kehvasti ....

Laiuti vs sügavuti otsing: 

Laiuti vs sügavuti otsing Kaks võimalust: Otsime puu läbi kiht-kihilt Otsime puu läbi sügavuti, minnes algul vasakul maksimaalse sügavuseni Eelistatakse sügavuti otsingut! Mälu vaja palju vähem Muud eelised ka

Soteerimise nõks otsingu kiirendamiseks: 

Soteerimise nõks otsingu kiirendamiseks Sorteerida variandid seisust X enne otsingut ära: alustada tõenäoliselt paremate käikude proovimisega. Suurendab tohutult alpha-beta efekti! Kuidas sorteerida? Iteratiivne süvenemine. Teeme: algul täisotsingu sügavuseni 2, siis uue täisotsingu sügavuseni 4, siis uue täisotsingu sügavuseni 6, .... jne .... iga kord kasutame eelmise otsingu tulemust sorteerimiseks!

Ettevõtte peamine eesmärk?: 

Ettevõtte peamine eesmärk? On ainult üks eesmärk, mille nimel muud tuleb vajadusel ohverdada: Teenida võimalikult suurt kasumit omanikele. Teenimise viise on üldjuhul kaks: Harilik teenimine: esitada klientidele arveid, ja teha seda nii, et nad arved ära maksaks, hoides samas väljaminekuid madalal. Firma müügilt teenimine: müüa ettevõte või selle osad kalli raha eest maha.

Riigi peamine eesmärk?: 

Riigi peamine eesmärk? On ainult üks eesmärk, mille nimel muud tuleb vajadusel ohverdada: Teenida võimalikult suurt heaolu kodanikele. Kodanikud on riigi aktsionärid: igalühel on üks aktsia. Parlament on riigi “aktsiaseltsi nõukogu” Valitsus on riigi “aktsiaseltsi juhatus” Konkreetselt realiseerub mehhanism järgmiselt: Poliitikute õige eesmärk on teenida poliitilist kapitali (lai tunnustus) Poliitikud suunavad riigiaparaati valitsuse kaudu selliselt, et oma poliitilist kapitali maksimeerida. Riigiaparaadi tegevuse eesmärk on poliitikute tunnustuse kasvatamine

Mistahes firma eesmärgid a la Goldratt: 

Mistahes firma eesmärgid a la Goldratt Kuidas suurendada kasumlikkust? Suurendada tulu, so. müügist tulnud raha Vähendada laoseisu, so. hankimiseks kulunud raha Vähendada tootmiskulusid, so. hankimisest müügini liikumise kulusid

IT- firmad: 

IT- firmad Ü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 Levinumad asjad on levinud, kuna: Vähemlevinud asjad on väga keerulised: leidub vähe inimesi, kes seda efektiivsel viisil teha mõistavad. Levinud asjade turg eesti sees on suurem (a la piimamüük eesti turul)

Strateegia: tüüpilised IT mõjujõud äris: 

Strateegia: tüüpilised IT mõjujõud äris Plussid:mõjujõud: IT aitab rutiinseid töid kiiremini teha ning võimaldab tööjõudu kokku hoida. IT võimaldab pakkuda hoopis uusi tooteid ja teenuseid. IT võimaldab juhtimist efektiivsemaks muuta ning organisatsiooni struktuuri õhendada. IT võimaldab tööd eri paikade vahel hajutada. IT pakub uusi marketingikanaleid, sh ülemaailmseid. Miinused: IT uuemate rakendustehnoloogiatega kursisolek ja kaasaskäimine ei ole alati jõukohane. IT arengut ei saa pikaks ajaks kuigi täpselt ennustada. IT arenedes teravneb ning globaliseerub üldine majanduslik konkurents.

Strateegia: tüüpilised arendusvajaduste allikad: 

Strateegia: tüüpilised arendusvajaduste allikad

IT otsuste kaalu ja vastuvõtmisnivoo vastavus: 

IT otsuste kaalu ja vastuvõtmisnivoo vastavus

Põhiprobleemid tarkvara-arendajate juhtimisel: 

Põhiprobleemid tarkvara-arendajate juhtimisel Efektiivne juht peab valdama tehnoloogiat, et suuta hinnata ajakulusid, tehnoloogia valiku sobivust jne. Arendustöö on loominguline. Vaja on leida kompromiss vaba loomingu ja reeglite ning tähtaegade ning riskimaandamise vahel. Arendajatel on tüüpiliselt väga kõrge enesehinnang: Nad on tihti veendunud, et teavad ise kõige paremini, kuidas midagi teha: vahel õige, vahel üldse mitte. Hindavad oma planeeritavat ajakulu 2-10 korda alla tegelikku. Vaatavad rakendust oma vaatevinklist, mitte kasutaja vaatevinklist (a la kasutaja on niikuinii loll, aga küll ta saab kõigega hakkama, mis ma programmi panen). Sageli suhtlevad halvasti, ei oska hästi inimkeelseid jutte kirjutada ... jne

Kohustuslik IT-juhtimise lugemine: Joel on software: 

Kohustuslik IT-juhtimise lugemine: Joel on software http://www.joelonsoftware.com Kohustuslik lugemine: Esileht: http://www.joelonsoftware.com/ Strateegia: http://www.joelonsoftware.com/articles/fog0000000074.html Funktsionaalsuse spec:Painless Functional Specifications (4 osa) http://www.joelonsoftware.com/articles/fog0000000036.html IT firma töökorraldus: 12 steps http://www.joelonsoftware.com/articles/fog0000000043.html Projekti planeerimine: Painless Software Schedules http://www.joelonsoftware.com/articles/fog0000000245.html

Kohustuslik IT-juhtimise lugemine: Greenspun: 

Kohustuslik IT-juhtimise lugemine: Greenspun http://philip.greenspun.com/ Kohustuslik lugemine: Lihtsalt loe sisukorda: http://philip.greenspun.com/panda/ Future peatükk: http://philip.greenspun.com/panda/future Nali: http://philip.greenspun.com/careers/ Inimesed ja management: http://web.archive.org/web/20020124043651/http://www.arsdigita.com/asj/managing-software-engineers/ ArsDigita ajalugu: http://eveander.com/arsdigita-history

Greenspun, ArsDigita: 

Greenspun, ArsDigita Plan vs reality We shouldn't bring anyone into the company until we have a project for them to work on. In reality, it takes us two or three months to recruit and train someone. Customers want their services up and launched two or three months after they sign a contract. The kindest thing we can do for customers is hire people, train them, and have them waiting for the next project. Investments in capacity have paid enormous dividends.

Näitemetoodika: Extreme programming. Iterations:: 

Näitemetoodika: Extreme programming. Iterations:

Extreme programming rules 1: 

Extreme programming rules 1 Planning User stories are written. Release planning creates the schedule. Make frequent small releases. The Project Velocity is measured. The project is divided into iterations. Iteration planning starts each iteration. Move people around. A stand-up meeting starts each day. Fix XP when it breaks. Designing Simplicity. Choose a system metaphor. Use CRC cards for design sessions. Create spike solutions to reduce risk. No functionality is added early. Refactor whenever and wherever possible.

Extreme programming rules 2: 

Extreme programming rules 2 Coding The customer is always available. Code must be written to agreed standards. Code the unit test first. All production code is pair programmed. Only one pair integrates code at a time. Integrate often. Use collective code ownership. Leave optimization till last. No overtime. Testing All code must have unit tests. All code must pass all unit tests before it can be released. When a bug is found tests are created. Acceptance tests are run often and the score is published.

Lisaks viitasid (ei ole kohustuslikud): 

Lisaks viitasid (ei ole kohustuslikud) http://www.cio.com http://www.extremeprogramming.org/ http://www.sdmagazine.com/ http://www.infogoal.com/pmc/pmchome.htm http://www.adass.org/adass/proceedings/adass99/Software.html Soovitavat kirjandust: Goldratt (alustada ESIMESEST raamatust, siis võtta TEINE, mitte kohe kuskilt lõpust). Efektiivse inimese (seitse?) harjumust Apple Börs: www.thestreet.com ja Cramer radio sealsamas