1 ΕΠΛ 031: Εισαγωγή στον προγραµµατισµό (FORTRAN) Γιώργος Χρυσάνθου Πληροφορική και Υπολογιστές Αρχη πριν 50 χρονια Υπολογιστες ειναι παντου Παρα παρα πολλες εφαρµογες Γιατί; Αυτοµατοποιηση Απλοποιηση Αποτελεσµατικοτητα Κοστος epl-031 1 epl-031 2 (Ψηφιακοί)Υπολογιστές Ποτε? ~1940 ΕΝΙΑC ηλεκτρονικοι (electronic), διακριτικοι (discrete) 0 ή 1 Γιατι? στρατιωτικούς σκοπους (υπολογισµους ατοµικη βοµβα) απογραφη πληθυσµου (τελειωνε µετα τον εποµενο) 1960: εκατο υπολογιστες καθενας στοιχιζε δεκαδες εκατοµµυρια λιρες 2001: δισεκατοµµυρια υπολογιστες πλειστα στοιχιζουν µερικες 100δες λιρες epl-031 3 ENIAC 1946 epl-031 4 Προγραµµατισµός 1960: γλωσσα µηχανης ή συµβολική γλωσσα. Ραγδαία Αναπτυξη Υποδοµής Λογισµικού Μεταγλωτιστες, Λειτουργικά Συστήµατα 2001: γλωσσες ψηλου/χαµηλου επιπεδου, templates, visual, agents (coming) epl-031 5 0x4010b8 <main>: push %ebp 0x4010b9 <main+1>: mov %esp,%ebp 0x4010bb <main+3>: sub $0x10,%esp 0x4010be <main+6>: call 0x401280 0x4010c3 <main+11>: push $0x401080 0x4010c8 <main+16>: call 0x401290 0x4010cd <main+21>: add $0x4,%esp 0x4010d0 <main+24>: lea 0xfffffff4(%ebp),%eax 0x4010d3 <main+27>: push %eax 0x4010d4 <main+28>: lea 0xfffffff8(%ebp),%eax 0x4010d7 <main+31>: push %eax 0x4010d8 <main+32>: lea 0xfffffffc(%ebp),%eax 0x4010db <main+35>: push %eax 0x4010dc <main+36>: push $0x4010ae 0x4010e1 <main+41>: call 0x401288 0x4010e6 <main+46>: add $0x10,%esp 0x4010e9 <main+49>: xor %eax,%eax 0x4010eb <main+51>: jmp 0x4010f0 0x4010ed <main+53>: lea 0x0(%esi),%esi 0x4010f0 <main+56>: mov %ebp,%esp 0x4010f2 <main+58>: pop %ebp epl-031 6 0x4010f3 <main+59>: ret
2 PROGRAM HELLO CHARACTER *10 NAME PRINT *, Enter your name and press return READ *, NAME PRINT *, Hello NAME STOP END epl-031 7 2001: Κοινωνία Πληροφορικής Επανασταση Πληροφορικης: ιαδικτυο τροµερη διευκολυνση στην προσβαση πληροφοριων Φασµα Αγορας Υπολογιστων (low to high end) mobile, palmtop, embedded, personal computer(pc) ψηλης αποδοσης PCs, workstations servers (συχνα µε πολλους υπολογιστες <32) multiprocessors (32 µε 200) supercomputers, massively parallel (>1000) epl-031 8 Palmtop/Notebook Πρoσωπικός Υπολογιστής(Sony) Casio Palmtop Apple Notebook epl-031 9 epl-031 10 SuperComputers 1990-2000 2001: Κοινωνία Πληροφορικής Cray T3-E 2048 nodes CM-5 1024 nodes epl-031 11 Εφαρµογες Hλεκτρονικο εµποριο (e-commerce) Προσβαση, Φυλαξη και Επεξεργασια εδοµενων...εκατοµµυρια δεδοµενα/συναλλαγες (text ~10 15 bytes) Προσοµoιωση/Simulations σχεδιασµος, λειτουργικοτητα, αποδοση, crash simulation (αεροπλανα, αυτοκινητα, υπολογιστες, εργα, αποστολες) Εξυπνα Συστηµατα: αυτοκινητα, ηλεκτρονικες συσκευες Αναψυχη: παιγνιδια, virtual reality, οπτικοακουστικα epl-031 12
3 Ενάς Υπολογιστής Αποτελειται απο: Σιδερικά ;) Υλικο (hardware) οθονη, πληκτρολογιο, ποντικι, µνηµη, επεξεργαστη, modem, ethernet card, εκτυπωτες, δισκακι, σκληρος, CD, scanner Προγραµµατα/Λογισµικο (software) λειτουργικο συστηµα, µεταγλωτιστης, επεξεργασιας δεδοµενων (κειµενο, αριθµων, εικονας, ηχου) παιγνιδια (tetris) Βασική οµή Hardware Πληκτρολογιο Ποντικι Εισοδος input Επεξεργασια processing Πρωτευουσα Μνηµη Επεξεργαστης CD, δισκος (hard, floppy), modem Εξοδος output Προσβαση σε ευτερευουσα Μνηµη, ικτυο, ιαδυκτυο Οθονη Εκτυπωτης epl-031 13 epl-031 14 Είσοδος/Εξόδος Χρησιµοποιειται για την εισαγωγη/εξαγωγη δεδοµενων απο/στον χρηστη Εισοδος επεξεργασια κειµενου (προγραµµακτλ) δεδοµενα σε προγραµµα Εξοδος κατασταση προγραµµατος αποτελεσµα προγραµµατος Μνήµη Αποθηκευσης/Ανακτηση πληροφοριων προγραµµατα και δεδοµενα Αποτελείται από ένα σύνολο κυψελίδων memory cells Καθε κυψελιδα εχει µοναδικη διευθυνση και περιεχοµενο (διαταγες ή δεδοµενα) epl-031 15 epl-031 16 Μνήµη ιεύθυνση Περιεχόµενα 0 1 2... 1021 1022 1023 εοds 123 err12 15.er3 0.,d% yiasou epl-031 17 Μνήµη Μοναδες µετρησης µνηµης bit-b 0 ή 1 byte -B 8 bits 10010010 2 92 h word 4 bytes 80ffaf45 h doubleword 2 words ή 8 bytes KiloByte-KB 2 10 ή 1024 bytes MegaByte-MB 2 20 bytes GigaByte-GB 2 30 bytes TeraByte-TB 2 40 bytes epl-031 18
4 Ιεραρχία Μνήµης µεγαλη Μεγεθος, Ταχυτητα, Κοστος µικρη χαµηλη ψηλη χαµηλο ψηλο Cache 16KB-64KB (SRAM) 2nd Level Cache 256KB-2ΜΒ(SRAM) Main Memory 32ΜΒ-1GB (DRAM) Secondary Memory1GB-100GB (hard,cd) epl-031 19 Ταξινοµήσεις Μνήµης Ισος χρονος προσβασης σε ολες τις κυψελιδες? ναι, µνηµη τυχαια προσβασης (Random Access Memory- RAM), π.χ. πρωτευουσα µνηµη οχι, π.χ. δευτερευουσα µνηµη hard disk Τυπος Αναγνωσης µονο αναγνωσης (Read Only Memory-ROM) αναγνωσης και αποθηκευσης (τυπικα RAM) epl-031 20 Ταξινοµήσεις Μνήµης ιαρκεια Αποθηκευσης µονιµη (non-volatile): µνήµη µόνο ανάγνωσης (ROM), CD- ROM, hard disk (µνηµη αναγνωσης και αποθηκευσης) προσκαιρη (volatile): τυπικα RAM π.χ. cache, main memory (µνηµη αναγνωσης και αποθηκευσης) Τεχνολογια: CMOS (ROM, RAM, SRAM, DRAM), Magnetic Disk (hard, floppy), Laser/Optical (CD-ROM) Ιστορική καινοτοµία της Μνηµης Εννοια Αποθηκευµένου Προγράµµατος (Stored Program Concept) (~1940): Οι εντολές που αποτελούν το πρόγραµµα αποθηκεύονται στην πρωτεύουσα µνήµη πριν την εκτέλεση του προγράµµατος Προηγουµενως ειχαµε µηχανες που ετρεχαν µονο ενα προγραµµα (calculator ΟΧΙ computer) Υπολογιστές Γενικής Χρήσεως (General Purpose Computers) epl-031 21 epl-031 22 (Μικρο)Επεξεργαστης Κεντρικη Μοναδα Επεξεργασιας microprocessor, up/µp, central processing unit, CPU Συντονίζει/αποφασίζει όλες τις λειτουργίες του υπολογιστή εκτελώντας αριθµητικές και λογικές πράξεις σε δεδοµένα. Αποτελειται απο Μοναδα Ελεγχου (Control Unit), Αριθµητικη Μοναδα (ALU) και Kαταχωρητες (Registers) epl-031 23 ίκτυο και ιαδίκτυο Τοπικο ικτυο (Local Area Network) υπολογιστες, disks, εκτυπωτες, scanners (π.χ. πακυ) ιαδικτυο (Wide Area Network) ενωνει τοπικα δικτυα (internet) Κρισιµες Παραµετροι: Ταχυτητα ενωσης (latency) και Πληροφοριες/δευτερολεπτο (bandwidth) epl-031 24
5 Λογισµικό Υπολογιστή Πρόγραµµα είναι ένα σύνολο εντολών γραµµένα σε γλώσσα που κατανοήται από τον υπολογιστή Υπολογιστης χωρις προγραµµαείναι λιγα γραµµαρια αχρηστων Επίπεδα Λογισµικού Λογισµικό Εφαρµογών ( Application Software) Γλώσσες Υπολογιστή (Computer Languages) Λειτουργικό Σύστηµα (Operating System) Υλικό (Hardware) epl-031 25 epl-031 26 Λειτουργικό Σύστηµα(OS) Γλωσσες Προγραµµατισµου Ελεγχει τη διεπαφή (interface) του χρηστη µε το hardware του υπολογιστη ιαχειριζεται την κατανοµη των πορων (resources) του υπολογιστη - π.χ. µνηµη, cpu, I/O Π.χ. unix, vms, ms-dos, windows, windows-nt epl-031 27 Καθε λογισµικο ειναι γραµµενο σε καποια γλωσσα προγραµµατισµου Basic, Lisp, Pascal, FORTRAN, COBOL, PL1, ADA, Prolog, C, C++, Java, Assembly, Machine Laguage Ορισµος Γλωσσας: Σύνταξη (syntax): Κανόνες γραµµατικής της γλώσσας. Σηµασιολογία (semantics): Τι σηµαίνουν οι προτάσεις της γλώσσας epl-031 28 Ταξινοµήση Γλωσσών Προγρ. Γλώσσα Χαµηλου Επιπέδου (low-level language) Κατανοητή µόνο από δεδοµένη κεντρική µονάδα επεξεργασίας (διαφορετικες αρχιτεκτονικες) Γλώσσα Μηχανής (machine language). Γλώσσα δυαδικών εντολών Συµβολική Γλώσσα (assembly language). Χρήση µνηµονικών κωδικών που αντιστοιχούν σε εντολές της γλώσσας µηχανής (δυσκολο-διαβαστη) Πιο γρηγορη (πιο λιγο overhead) epl-031 29 0x4010b8 <main>: push %ebp 0x4010b9 <main+1>: mov %esp,%ebp 0x4010bb <main+3>: sub $0x10,%esp 0x4010be <main+6>: call 0x401280 0x4010c3 <main+11>: push $0x401080 0x4010c8 <main+16>: call 0x401290 0x4010cd <main+21>: add $0x4,%esp 0x4010d0 <main+24>: lea 0xfffffff4(%ebp),%eax 0x4010d3 <main+27>: push %eax 0x4010d4 <main+28>: lea 0xfffffff8(%ebp),%eax 0x4010d7 <main+31>: push %eax 0x4010d8 <main+32>: lea 0xfffffffc(%ebp),%eax 0x4010db <main+35>: push %eax 0x4010dc <main+36>: push $0x4010ae 0x4010e1 <main+41>: call 0x401288 0x4010e6 <main+46>: add $0x10,%esp 0x4010e9 <main+49>: xor %eax,%eax 0x4010eb <main+51>: jmp 0x4010f0 0x4010ed <main+53>: lea 0x0(%esi),%esi 0x4010f0 <main+56>: mov %ebp,%esp 0x4010f2 <main+58>: pop %ebp epl-031 30 0x4010f3 <main+59>: ret
6 Ταξινοµήση Γλωσσών Προγρ. Γλώσσα Υψηλού Επιπέδου (high-level language) ανεξάρτητη υπολογιστή συνδυάζει αγγλικές λέξεις και συµβατούς µαθηµατικούς συµβολισµούς (ευκολο-διαβαστη) προσανατολισµένη στην επίλυση συγκεκριµενου τοµεα προβληµάτων, π.χ. FORTRAN µηχανικη και µαθηµατικα, COBOL data processing και business Καµµια HLL γλωσσα καλη για ολες τις εφαρµογες PROGRAM HELLO CHARACTER *10 NAME PRINT *, Enter your name and press return READ *, NAME PRINT *, Hello NAME STOP END epl-031 31 epl-031 32 Μεταγλωτιστής (compiler) Λογισµικό το οποίο µεταφράζει πρόγραµµα υψηλού επιπέδου γλώσσα σε γλώσσα µηχανής Βασιζεται στην συνταξη και σηµασιολογια της γλωσσας Αλλοι µεταφραστες: ιερµηνεας (interpreter) basic και java(πιο αργος) Assembler µετατρεπει συµβολικη γλωσσα σε γλωσσα µηχανης Compilation Πηγαίος κώδικαs Μεταγλωττιστής Κώδικας αντικει- µένου foo.for gff foo.o Source code object code epl-031 33 epl-031 34 Περίληψη Κοινωνια Πληροφοριας Hardware Εισοδος/Εξοδος Μνηµη Μικροεπεξεργαστης ικτυο/ ιαδικτυο Software Λειτουργικο Συστηµα Γλωσσες Προγραµµατισµου Μεταγλωτιστης epl-031 35 Εποµενο Αντικειµενο Πως γραφουµε προγραµµατα Εισαγωγη στην FORTRAN epl-031 36