COMPUTERVAARDIGHEDEN EN PROGRAMMEREN 2 e les Prof. Dr. Frank De Proft 05 oktober 2004 Eerste les : Inleiding - voorwoord Doelstellingen - eindtermen van de cursus Praktische organisatie Evaluatie 1
Tweede les : Inleiding Computerwetenschappen vs. computervaardigheden - Algoritmen Enkele basisbegrippen» Hardware HOOFDSTUK 1 : COMPUTERVAARDIGHEDEN 2
1.1. Inleiding Toename belang van ICT in natuurwetenschappen Gebruik : (ICT : Informatie- en communicatietechnologie)» Modelisatie en simulatie ( Theorie )» Verwerking van data ( experiment )» Apparaataansturing ( techniek )» Terugvinden van gegevens Computer : Oxford English Dictionary : 1. One who computes; a calculation, reckoner ; spec. a person employed to make calculations in an observatory, in surveying, etc 2. A calculating-machine; esp.. an automatic electronic device for performing mathematical or logical operations Midden 20e eeuw :» Elektronische machine» programmeerbaar» uitvoeren van vooraf gedefinieerde sequentie van berekeningen Praktische definitie : Een computer is een apparaat dat data aanneemt in een welbepaalde vorm, deze data verwerkt en ze omzet in informatie die meer bruikbaar is dan de originele data Generaties van computertechnologie : Periode Definiërende technologie Generatie 0 1642-1945 Mechanische apparaten Generatie 1 1945-1954 Vacuumbuizen Generatie 2 1954-1963 Transistoren Generatie 3 1963-1973 Geintegreerde schakelingen Generatie 4 1973-1985 "Very large scale integration (VLSI) Generatie 5 1985-??? Parallele processing en netwerken 3
Generatie 0 : Mechanische computers (1642-1945) Eerste werkende rekenmachine : Wilhelm Schickard : 1623 Blaise Pascal : 1642 : mechanische calculator» getallen tot 8 cijfers» optellen en aftrekken 30 jaar later : Gottfried Wilhelm von Leibniz : uitbreiding ontwerp Pascal Programmeerbare machine s : Joseph-Marie Jacquard : 1804 : Automatic loom» weefpatroon : ponskaarten» eenzelfde weefgetouw : programmeren patronen Charles Babbage : ponskaarten : difference engine (1821) krachtigere machine : analytical engine : general purpose programmeerbaar Herman Hollerith : 1890 : tabuleren en sorteren kiesgegevens» 1880 : 7 jaar 1890 : 6 weken» Tabulating machine company (1886) International Business Machines (IBM) 4
Jaren 1930-1940 : elektromagnetische relays 1944 : Howard Aiken : Mark I computer (Universiteit van Harvard)» toepassing sommige ideëen Babbage» optellen, aftrekken, vermenigvuldigen, delen, goniometrische functies» opslag 72 getallen in geheugen» twee getallen : - optellen : 1/10 s - vermenigvuldigen : 6 s - delen : 12 s (snelheid : 100) Generatie 1 : Vacuumbuizen (1945-1954) COLOSSUS (1943) :WOII : kraken Duitse Enigma code ENIAC (Electronic Numerical Inegrator And Computer) : 1946 (Universiteit van Pennsylvania) 5000 optellingen/s (Pentium 150 Mhz : 300.000.000) 5
de von Neumann architectuur (begin jaren 1950) : Radicaal nieuw ontwerp computer stored program computer Instructies gecodeerd naast data Basis voor praktisch alle moderne computersystemen Generatie 2 : Transistoren (1954-1963) Vacuumbuizen transistoren snellere, kleinere machines lagere kostprijs» kleiner» goedkoper» betrouwbaarder Eerste hogere programmeertalen :» FORTRAN : 1957 (FORmula TRANslation)» LISP : 1959 (LISt Processor)» COBOL : 1960 (COmmon Business Oriented Language) Generatie 3 : Geïntegreerde schakelingen (1963-1973) Onderling verbinden van transistoren geïntegreerde schakelingen (Integrated Circuits of IC chip) Transistoren + verbindingen : metalen patronen op silicium plaatje Reductie grootte + kostprijs Toename aantal transistoren per chip 6
1965 : Gordon Moore (Intel Corporation) : # transistoren op chip : verdubbeling elke 12 tot 18 maanden (Wet van Moore) Jaren 1970 : Large Scale Integration (LSI) 1971 : Intel : microprocessor» Eerste microprocessor : Intel 4004 : > 2300 transistoren» 3 jaar later : Intel 8080 : 6000 transistoren» Opvolgers : Intel 8086 en 8088 : PC s (jaren 70) ontwikkeling van besturingssystemen : niet-technische gebruikers Programmeertalen :» Pascal (1971 : Niklaus Wirth)» C (1972 : Dennis Ritchie) : ontwikkeling UNIX + andere besturingssystemen in jaren 70 en 80 Generatie 4 : Very Large Scale Integration (1973-1985) Integratie op zeer grote schaal 10 2 10 3 10 6 transistoren/ic chip vb. Microprocessoren van de Intel familie Jaar Intel Processor Aantal transistoren 2000 Pentium 4 42.000.000 1999 Pentium III 9.500.000 1997 Pentium II 7.500.000 1993 Pentium 3.100.000 1989 80486 1.200.000 1985 80386 275.000 1982 80268 134.000 1978 8088 29.000 1974 8080 6.000 1972 8008 3.500 1971 4004 2.300 7
Revolutie van de Personal Computer Grafische user interfaces (GUI) Groei van de software industrie Computers toegankelijk voor niet-gespecialiseerde gebruikers Nieuwe programmeertalen + Object georiënteerde programmeertalen» Eerste object georiënteerde taal : Smalltalk (1980 : Alan Kay)» C++ (1985 : Bjarne Stroustrup) : object georiënteerde uitbreiding C» Java (1995 : Sun Microsystems) C++, Java : ontwikkeling commerciële software Generatie 5 : Parallele verwerking & netwerken (1985-?) Zeer snelle ontwikkelingen Concept van generaties : voorbijgestreefd? Parallele verwerking Uitbouw van computernetwerken 8
1.2. Computervaardigheden vs. computerwetenschappen - Algoritmen Computervaardigheden computerwetenschappen Computervaardigheden : gebruik :» computers» software Computerwetenschappen :» specificatie» ontwerp» opbouw software + computersystemen» testen Terugkerende thema s in computerwetenschappen : Hardware (fysische componenten van computers) Computerwetenschappen Software (programma s die draaien op computers) Theorie (mogelijkheden en beperkingen van computers begrijpen) Veel voorkomende misconceptie : computerwetenschappen = studie van computers Computer science is no more about computers than astronomy is about telescopes, biology is about microscopes, or chemistry is about beakers and test tubes. Science is not about tools. It is about how we use them and what we find out when we do. (M. Fellows en I. Parberry, Computing Research News) 9
2 definities computerwetenschappen 1. N. Gibbs en A. Tucker : computerwetenschappen : studie van algoritmen» formele en wiskundige eigenschappen» verwezelijking op het gebied van hardware en linguistiek» hun toepassingen 2. C. A. R. Hoare (Essays of Computer Science) : Having surveyed the relationships of computer science with other disciplines, it remains to answer the basic questions: What is the central core of the subject? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread which gathers these disparate branches into a single discipline? My answer to these questions is simple it is the art of programming a computer. It is the art of designing efficient and elegant methods of getting a computer to solve problems, theoretical or practical, small or large, simple or complex. It is the art of translating this design into an effective and accurate computer program. Computerwetenschappen : central rol : algoritme stap voor stap sequentie voor uitvoeren taak 4 stappen : 1. Begrijp het probleem 2. Stel een plan op 3. Voer het plan uit 4. Analyseer de oplossing Voorbeeld 1 : Probleem : Vind de oudste persoon in een kamer vol mensen 10
Twee algoritmes : Algoritme 1 : 1. Zet alle mensen op een rij 2. Vraag aan de eerste persoon in de rij om zijn of haar naam en geboortedatum te geven. Noteer deze informatie. 3. Voor elke daaropvolgende persoon in de rij : a. Vraag naam en geboortedatum b. Als de geboortedatum vroeger valt dan diegene op je papier, doorkruis de oude informatie en schrijf de naam en de geboortedatum van deze persoon op. 4. Wanneer je aan het einde van de rij komt, dan zal de naam en de geboortedatum van de oudste persoon op je papier staan. Voorbeeld : Kris 4/8/1982 Jan 12/9/1982 Greet 7/10/1980 Bart 31/1/1981 Anne 9/9/1987 Piet 25/5/1984 Karel 6/2/1980 Anja 25/5/1981 Kris 4/8/1982 Kris 4/8/1982 Kris 4/8/1982 Kris 4/8/1982 Kris 4/8/1982 Kris 4/8/1982 Kris 4/8/1982 Kris 4/8/1982 Greet 7/10/1980 Greet 7/10/1980 Greet 7/10/1980 Greet 7/10/1980 Greet 7/10/1980 Greet 7/10/1980 Karel 6/2/1980 Karel 6/2/1980 11
Eenvoudig algoritme werkt voor eender welke groep Algoritme 2 : 1. Zet alle mensen op een rij 2. Zolang als er meer dan één persoon in de rij staat, laat je a. de mensen per twee gaan staan. Als er een oneven aantal mensen zijn blijft er iemand zonder partner en blijft die staan. b. Laat elk koppel hun geboortedatum vergelijken. c. Laat de jongste van elk koppel de rij verlaten. 3. Wanneer er nog één persoon in de rij overblijft is dat de oudste persoon. RONDE 1 Kris 4/8/1982 Jan 12/9/1982 Greet 7/10/1980 Bart 31/1/1981 Anne 9/9/1987 Piet 25/5/1984 Karel 6/2/1980 Anja 25/5/1981 RONDE 2 Kris 4/8/1982 Greet 7/10/1980 Piet 25/5/1984 Karel 6/2/1980 RONDE 3 Greet 7/10/1980 Karel 6/2/1980 KLAAR! Karel 6/2/1980 12
1 Probleem : verschillende algoritmen Beste algoritme?» vaak geen eenduidig antwoord» afhankelijk prioriteiten gebruiker - tijd - absoluut zeker correcte oplossing Algoritme 1 : bevraging van elke persoon vergelijking antwoord met datum op papier tijd nodig om oudste persoon te vinden ~ # personen in rij Voorbeeld : Stel 5 seconden om verjaardag te vragen en te vergelijken : 100 personen 5 100 = 500 s 2 200 personen 5 200 = 1000 s 2 O(N) algoritme Algoritme 2 :» uitvoeringstijd ~ probleemgrootte (N : # mensen)» Big-Oh notatie verschillende vergelijkingen simultaan : tijdswinst uitsluiten 1/2 mensen na 1 vergelijking tijd nodig om oudste persoon te vinden ~ tijd personen in rij herleiden tot 1 13
8 personen : 3 stappen : 8 4 2 1 16 personen : 4 stappen : 16 8 4 2 1 N personen log 2 ( N ) stappen O(log N) algoritme : N log 2 (N) 100 7 200 8 400 9 800 10 1.600 11...... 10.000 14 20.000 15 40.000 16...... 1.000.000 20 Performantieverschil tussen 2 algoritmen : Opnieuw : 5 seconden/handeling O(N) O(log N) 200 personen 5 200 = 1000 s 200 personen 5 8 = 40 s 1000 personen 5 1000 = 5000 s 1000 personen 5 10 = 50 s + toename verschil performantie met N! 14
Voorbeeld 2 : Probleem : Vind de grootste gemene deler van twee gehele getallen Algoritme van Euclides 1. Ken aan M en N de waarde van het respectievelijke grootste en kleinste getal toe. 2. Deel M door N en noemt de rest R. 3. Als R verschillend is van 0, ken dan de waarde van N aan M t oe en de waarde van R aan N en ga terug naar stap 2. Indien R echter gelijk was aan 0, dan is de grootste gemene deler de huidige waarde van N. Grootste gemene deler (GGD) van 24 en 15? 1. M = 24 N = 15 2. 24/15 = 1, Rest = 9 3. M = 15 N = 9 2. 15/9 = 1, Rest = 6 3. M = 9 N = 6 2. 9/6 = 1, Rest = 3 3. M = 6 N = 3 2. 6/3 = 2, Rest = 0 GGD = 3 15
1.3. Enkele basisbegrippen Basisbegrippen en -concepten van computers computers : wat, hoe opgebouwd, wat doen ze? meestal : Personal Computer (PC) of Desktop Computer vb. supercomputers Computer : informatie :» ontvangen» opslaan» verwerken Hardware : fysische componenten Software : programma s 1.3.1. Hardware von Neumann architectuur : 3 essentiële componenten De CPU haalt data en instructies uit het geheugen De CPU ontvangt data en instructies van het toetsenbord, muis,... Geheugen Bus Centrale verwerkingseenheid Bus (CPU) Input/Output apparaten (I/O) De CPU voert berekeningen uit, slaat resultaten en instructies uit het geheugen op De CPU voert berekeningen uit, stuurt resultaten naar het scherm, luidsprekers, printer,... 16
stored program computer verschillende programma s tegelijkertijd in geheugen verschillende taken tegelijkertijd 1.3.1.1. De centrale verwerkingseenheid ( Central Processing Unit of CPU) Hart van de computer controle van de interne werking meest complexe onderdeel van de computer vb. Intel Pentium 4 : 24 miljoen individuele componenten Voorbeelden meest gebruikte CPU s : Intel Pentium 4, AMD Athlon, Motorola Power PC G4 2 belangrijke taken CPU : 1. Ophalen programmainstructies uit centrale geheugen 2. Uitvoeren van instructies sequentie van zeer eenvoudige instructies :» optellen van twee getallen» copiëren van getallen naar andere locatie snelle uitvoering CPU snelheid : aantal klokslagen centrale klok per tijdseenheid (Mhz, Ghz) vb. 3.2 Ghz Pentium 4 vs. 2.2 Ghz Celeron 17
1.3.1.2. Het geheugen opslag van programma s en gegevens (data) computers : digitale apparaten eenheden van data : twee mogelijke waarden (binary digits of bits) Bits : bouwstenen digitale geheugen : 0 of 1 Combinatie van bits :» 2 : 4 verschillende patronen : 00, 01, 10 en 11» 3 : 8 verschillende patronen : 000, 001, 010, 011, 100, 101, 110 en 111» N : 2 N verschillende patronen Bitpatronen : 1 bit 2 waarden 0 1 2 bits 4 waarden 00 01 10 11 3 bits 8 waarden 000 001 010 011 100 101 110 111 4 bits 16 waarden 0000 0001 0010 0011 0100 0101 0111 1000 1001 1011 1100 1101 1111 5 bits 32 waarden 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010... 6 bits 64 waarden 000000 000001 000010 000011 000100 000101 000110 000111 001000... 7 bits 128 waarden 0000000 0000001 0000010 0000011 0000100 0000101 0000110... 8 bits 256 waarden 00000000 00000001 00000010 00000011 00000100 00000101 00000110... 9 bits 512 waarden 000000000 000000001 000000010 000000011 000000100 000000101... 10 bits 1024 waarden 0000000000 0000000001 0000000010 0000000011 0000000100 0000000101... Capaciteit van geheugen : bytes (8 bits) 1 byte : 2 8 = 256 mogelijke waarden :» 1 kilobyte 1000 bytes» 1 megabyte 1.000.000 bytes» 1 gigabyte 1.000.000.000 bytes» 1 terabyte 1.000.000.000.000 bytes 18
Veel gebruikte eenheden voor data opslag : byte kilobyte (KB) 8 bits 2 10 bytes = 1.024 bytes (= 8.192 bits) megabyte (MB) 2 20 bytes = 1.048.576 bytes (= 8.388.608 bits) gigabyte (GB) terabyte (GB) 2 30 bytes = 1.073.741.824 bytes (= 8.589.934.592 bits) 2 40 bytes = 1.099.511.627.776 bytes (= 8.796.093.022.208 bits) 1 byte : elk karakter op toetsenbord 1 kilobyte : typisch 1 getypte pagina 1 gigabyte : typisch 1 kleine bibliotheek 1 megabyte : typisch 2 of 3 boeken 1 terabyte : typisch 1 zeer grote bibliotheek von Neumann architectuur : geheugen = 1 component moderne computers : combinatie van geheugentypes karakteristieke» performantie» kostprijs snelste geheugen met snelste transfer bits van en naar CPU : aan of afwezigheid van stroom over draad (0 of 1)» Cache» RAM : Random Access Memory = centrale geheugen (primaire geheugen) Cache geheugen :» gewoonlijk op CPU» hoge snelheidsconnecties 19
RAM geheugen :» aparte chips» lagere snelheidsconnecties» data minder snel aangeroepen door CPU» goedkoper afwegen kostprijs vs. performantie ROM (Read-only Memory) geheugen :» inhoud : permanent» enkel lezen» inhoud verdwijnt niet als stroom uitvalt» stockage van permanente programma s (opstarten computer, ) Centrale geheugen :» relatief duur» data kan snel door de CPU worden aangesproken» vluchtig : constante stroom van elektriciteit nodig» uitzetten computer : gegevens weg Secundaire geheugen : permanente opslag van gegevens 20
Harde schijf :» metalen plaatje : bits : gemagnetiseerde en niet-gemagnetiseerde plaatsen» schijfje draait onder sensor : dectectie gemagnetiseerde plaasen & interpretatie als bits» aanzienlijk trager dan RAM geheugen» goedkoper» behoud van data zonder stroom» permanente opslag grote hoeveelheden data (gigabyte) : transfer naar centrale geheugen indien nodig Floppy disks, CD s : goedkoop draagbaar secundair geheugen Floppy disk :» kleinere, draagbare versie harde schijf CD (Compact Disk) :» opslag 1.44 MB (3.5 inch plastic schijfje)» metalen schijfje : data : patronen op reflecterend oppervlak» ongeveer 700 MB» CD-ROM technologie : branden patronen op oppervlak schijf met laser : niet overschrijfbaar» CD-RW (CD-Rewriteable) technologie : patronen in fotogevoelige coating op disk oppervlak : data overschrijfbaar» snelheid : vb. CD-RW 48x/24x/48x (150 KB/s) 21
DVD (nu Digital Versatile Disc, vroeger Digital Video Disc) :» opslag via welbepaald compressieformaat» single-sided, single layer : 4.7 GB» double layer : 8.5 GB» double-sided, single layer : 9.4 GB» double-sided, double layer : 17 GB Derde les : Enkele basisbegrippen» software» internet en het web Hoofdstuk 2 : Weergave van gegevens 22