advertisement

itsissejuhatus

100 %
0 %
advertisement
Information about itsissejuhatus
Entertainment

Published on November 20, 2007

Author: Noemie

Source: authorstream.com

advertisement

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

Add a comment

Related presentations

Related pages

www.lambda.ee

Hier sollte eine Beschreibung angezeigt werden, diese Seite lässt dies jedoch nicht zu.
Read more

Majandusinfosüsteemid - Tartu Ülikooli Pärnu Kolledž

(http://deepthought.ttu.ee/it/itsissejuhatus/-> 15. peatükk „IT äri, IT projektid.”) Kas IKT kasutamine vähendab paberi hulka?
Read more

Majandusinfosüsteemid

(http://deepthought.ttu.ee/it/itsissejuhatus/-> 15. peatükk „IT äri, IT projektid.”) Kas IKT kasutamine vähendab paberi hulka?
Read more

Zencho

http://www.lambda.ee/images/6/61/Itsissejuhatus_xmcssjscriptnaited.zip 6 Vii läbi RSA krüpteerimine Exceli abil. Abivahendid leiad siit:
Read more