Πρόλογος 13. Κεφάλαιο 1: Εισαγωγή 19. Κεφάλαιο 2: Αριθμητικά συστήματα 37. Κεφάλαιο 3: Αποθήκευση δεδομένων 61



Σχετικά έγγραφα
Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος

Εισαγωγή στην Επιστήμη της Πληροφορικής και των Υπολογιστών


Περιεχόμενα. 2 Αριθμητικά συστήματα

Εισαγωγή στην Επιστήμη των Η/Υ και Προγραμματισμός. Πρώτο Μάθημα - Εισαγωγικό

Εισαγωγή στην Επιστήµη της Πληροφορικής και των Υπολογιστών

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Δρ.

ΠΛΗΡΟΦΟΡΙΚΗ: ΥΠΟΛΟΓΙΣΤΕΣ & ΤΕΧΝΟΛΟΓΙΕΣ ΔΙΑΔΙΚΤΥΟΥ

Εισαγωγή στην επιστήμη των υπολογιστών

Χειµερινό εξάµηνο

κεφάλαιο Βασικές Έννοιες Επιστήμη των Υπολογιστών

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 1 : Εισαγωγή στην επιστήμη των υπολογιστών. Δρ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΙΟΙΚΗΣΗΣ ΤΜΗΜΑ ΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ. Δρ. Κωνσταντίνος Κούτσικος - Δρ. Ιάσων Κουφοδόντης

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές

Σύντοµη Ιστορία της Πληροφορικής

Εισαγωγή στην Επιστήµη των Η/Υ

Εισαγωγή στην Επιστήµη των Η/Υ

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ Της ΠΛΗΡΟΦΟΡΙΚΗΣ. Εισαγωγή

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο :

ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ Β ΛΥΚΕΙΟΥ ΜΑΘΗΜΑ: ΤΕΧΝΟΛΟΓΙΑ ΕΠΙΚΟΙΝΩΝΙΩΝ ΕΡΓΑΣΙΑ Α ΤΕΤΡΑΜΗΝΟΥ ΤΟΥ ΜΑΘΗΤΗ ΠΑΠΑΝΙΚΟΛΑΟΥ ΓΙΩΡΓΟΥ

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

ΙΣΤΟΡΙΚΗ ΕΞΕΛΙΞΗ ΥΠΟΛΟΓΙΣΤΩΝ

Το υλικό του υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

ΠΑΣΠ Πανεπιστημίου Πειραιά Τμήμα Διεθνών και Ευρωπαϊκών Σπουδών

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών

ΑΕΠΠ Ερωτήσεις θεωρίας

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 2ο Αναπαράσταση Δεδομένων

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

Δομή Ηλεκτρονικού υπολογιστή

Μαλούτα Θεανώ Σελίδα 1

Εισαγωγή στον Προγ/μό Υπολογιστών. Διάλεξη 0

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Τεχνολογία Πολυμέσων. Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Εκπαιδευτική Τεχνολογία - Πολυμέσα. Ελένη Περιστέρη, Msc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Πληροφορική Ι (Θεωρία)

Βασικές Έννοιες Πληροφορικής

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

215 Μηχανικών Η/Υ και Πληροφορικής Πάτρας

Εισαγωγή στην Πληροφορική. Ανδρέας Παπασαλούρος

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Τμήμα Λογιστικής. 1 Στέργιος Παλαμάς

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Τετάρτη 5-12/11/2014. ΣΗΜΕΙΩΣΕΙΣ 3 ου και 4 ου ΜΑΘΗΜΑΤΟΣ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΡΧΙΤΕΚΤΟΝΙΚΗ Η/Υ Α ΕΞΑΜΗΝΟ

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΠΕΡΙΕΧΟΜΕΝΑ 1 ΚΕΦΑΛΑΙΟ ΟΙ ΥΠΟΛΟΓΙΣΤΕΣ ΑΠΟ ΤΗΝ ΑΡΧΑΙΟΤΗΤΑ ΜΕΧΡΙ ΣΗΜΕΡΑ Ιστορική αναδρομή Υπολογιστικές μηχανές

ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΟ ΕΝΙΑΙΟ ΛΥΚΕΙΟ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Πληροφορική και Υπολογιστές

Προγραμματισμός Η/Υ. Αλγόριθμοι. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

219 Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Θεσσαλονίκης

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Επιµέλεια Θοδωρής Πιερράτος

Ιόνιο Πανεπιστήμιο Τμήμα Τεχνών Ήχου και Εικόνας. Ακαδημαϊκό Έτος

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

2. Αλγόριθμοι, δομές δεδομένων και πολυπλοκότητα

Εισαγωγή στην Επιστήμη των Υπολογιστών

Διαχείριση Πολιτισμικών Δεδομένων

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 1 ο

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

Πληροφορική 2. Δομές δεδομένων και αρχείων

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

ΕΝΟΤΗΤΑ 9 ΠΡΟΣΘΕΣΗ ΜΕΧΡΙ ΤΟ 100 ΜΟΤΙΒΑ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΥ 3 ΚΑΙ 4

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Πρόταση για Ανασχηματισμό του Προγράμματος Προπτυχιακών Σπουδών της ΣΗΜΜΥ

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Λιβανός Γιώργος Εξάμηνο 2017Β

Πληροφορική 2. Τεχνολογία Λογισμικού

Δυαδικό Σύστημα Αρίθμησης

ΗΜΜΥ 100 Εισαγωγή στην Τεχνολογία

ΕΙΣΑΓΩΓΗ στους Η/Υ. Δρ. Β Σγαρδώνη. Τμήμα Τεχνολογίας Αεροσκαφών ΤΕΙ ΣΤΕΡΕΑΣ ΕΛΛΑΔΑΣ. Χειμερινό Εξάμηνο

ΣΗΜΕΙΩΣΕΙΣ ΓΡΑΦΙΣΤΙΚΗ ΜΕ Η/Υ 1. Του Αποστόλου Παπαποστόλου Επίκουρου Καθηγητή του ΤΕΙ Αθήνας

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Κεφάλαιο 4: Λογισμικό Συστήματος

Υπολογιστές από το 16 ο 19 ο αιώνα

Transcript:

Περιεχόμενα Πρόλογος 13 Κεφάλαιο 1: Εισαγωγή 19 1.1 Το μοντέλο Turing...20 1.2 Το μοντέλο von Neumann...22 1.3 Τα συστατικά στοιχεία των υπολογιστών...24 1.4 Ιστορικό...27 1.5 Κοινωνικά και ηθικά ζητήματα...29 1.6 Η επιστήμη των υπολογιστών ως επαγγελματικός κλάδος...31 1.7 Διάρθρωση του βιβλίου... 31 1.8 Συνοδευτικό υλικό κεφαλαίου...32 1.9 Πρακτική εξάσκηση...33 Κεφάλαιο 2: Αριθμητικά συστήματα 37 2.1 Εισαγωγή...38 2.2 Θεσιακά αριθμητικά συστήματα...38 2.3 Μη θεσιακά αριθμητικά συστήματα...52 2.4 Συνοδευτικό υλικό κεφαλαίου...53 2.5 Πρακτική εξάσκηση...55 Κεφάλαιο 3: Αποθήκευση δεδομένων 61 3.1 Τύποι δεδομένων...62 3.2 Αποθήκευση αριθμών... 64 3.3 Αποθήκευση κειμένου... 82

6 Περιεχόμενα 3.4 Αποθήκευση ήχου...83 3.5 Αποθήκευση εικόνων...85 3.6 Αποθήκευση βίντεο...88 3.7 Συνοδευτικό υλικό κεφαλαίου...88 3.8 Πρακτική εξάσκηση...90 Κεφάλαιο 4: Πράξεις με δεδομένα 99 4.1 Λογικές πράξεις...100 4.2 Πράξεις μετατόπισης... 105 4.3 Αριθμητικές πράξεις...108 4.4 Συνοδευτικό υλικό κεφαλαίου...117 4.5 Πρακτική εξάσκηση... 119 Κεφάλαιο 5: Οργάνωση υπολογιστών 125 5.1 Εισαγωγή...126 5.2 Κεντρική μονάδα επεξεργασίας...126 5.3 Κύρια μνήμη...128 5.4 Υποσύστημα εισόδου/εξόδου...132 5.5 Διασύνδεση υποσυστημάτων...138 5.6 Εκτέλεση προγραμμάτων...144 5.7 Διαφορετικές αρχιτεκτονικές...147 5.8 Ενας απλός υπολογιστής...151 5.9 Συνοδευτικό υλικό κεφαλαίου...160 5.1 Πρακτική εξάσκηση... 163 Κεφάλαιο 6: Δίκτυα υπολογιστών και το Διαδίκτυο 169 6.1 Εισαγωγή...170 6.2 Το επίπεδο εφαρμογής...178 6.3 Το επίπεδο μεταφοράς...193 6.4 Το επίπεδο δικτύου...197 6.5 Το επίπεδο συνδέσμου δεδομένων...203 6.6 Το φυσικό επίπεδο...211 6.7 Μέσα μετάδοσης...214 6.8 Συνοδευτικό υλικό κεφαλαίου...217 6.9 Πρακτική εξάσκηση... 219

Περιεχόμενα 7 Κεφάλαιο 7: Λειτουργικά συστήματα 225 7.1 Εισαγωγή...226 7.2 Εξέλιξη...227 7.3 Συστατικά στοιχεία...229 7.4 Μια ανασκόπηση των λειτουργικών συστημάτων...241 7.5 Συνοδευτικό υλικό κεφαλαίου...245 7.6 Πρακτική εξάσκηση... 247 Κεφάλαιο 8: Αλγόριθμοι 253 8.1 Έννοια...254 8.2 Τρεις δομές...257 8.3 Αναπαράσταση αλγορίθμων...258 8.4 Ένας πιο αυστηρός ορισμός...262 8.5 Βασικοί αλγόριθμοι...263 8.6 Υποαλγόριθμοι...271 8.7 Αναδρομή...272 8.8 Συνοδευτικό υλικό κεφαλαίου...274 8.9 Πρακτική εξάσκηση... 275 Κεφάλαιο 9: Γλώσσες προγραμματισμού 281 9.1 Εξέλιξη...282 9.2 Μετάφραση...284 9.3 Προγραμματιστικά υποδείγματα...286 9.4 Κοινές έννοιες...294 9.5 Συνοδευτικό υλικό κεφαλαίου...304 9.6 Πρακτική εξάσκηση... 307 Κεφάλαιο 10: Τεχνολογία λογισμικού 311 10.1 Ο κύκλος ζωής λογισμικού...312 10.2 Η φάση της ανάλυσης... 313 10.3 Η φάση του σχεδιασμού...317 10.4 Η φάση της υλοποίησης...318 10.5 Η φάση του ελέγχου...321 10.6 Τεκμηρίωση...323 10.7 Συνοδευτικό υλικό κεφαλαίου...324 10.8 Πρακτική εξάσκηση...326

8 Περιεχόμενα Κεφάλαιο 11: Δομές δεδομένων 329 11.1 Συστοιχίες...330 11.2 Εγγραφές...336 11.3 Συνδεδεμένες λίστες...339 11.4 Συνοδευτικό υλικό κεφαλαίου...350 11.5 Πρακτική εξάσκηση...351 Κεφάλαιο 12: Αφηρημένοι τύποι δεδομένων 355 12.1 Γενική περιγραφή...356 12.2 Στοίβες...358 12.3 Ουρές...364 12.4 Γενικές γραμμικές λίστες... 369 12.5 Δένδρα...374 12.6 Γράφοι...381 12.7 Συνοδευτικό υλικό κεφαλαίου...382 12.8 Πρακτική εξάσκηση...384 Κεφάλαιο 13: Δομές αρχείων 389 13.1 Εισαγωγή...390 13.2 Ακολουθιακά αρχεία...390 13.3 Ευρετηριασμένα αρχεία...393 13.4 Κατακερματισμένα αρχεία...395 13.5 Κατάλογοι...399 13.6 Αρχεία κειμένου και δυαδικά αρχεία...401 13.7 Συνοδευτικό υλικό κεφαλαίου...402 13.8 Πρακτική εξάσκηση...404 Κεφάλαιο 14: Βάσεις δεδομένων 409 14.1 Εισαγωγή...410 14.2 Αρχιτεκτονική βάσεων δεδομένων...412 14.3 Μοντέλα βάσεων δεδομένων...413 14.4 Το σχεσιακό μοντέλο βάσεων δεδομένων...414 14.5 Λειτουργίες σε σχέσεις...415 14.6 Σχεδιασμός βάσεων δεδομένων...421 14.7 Αλλα μοντέλα βάσεων δεδομένων...425 14.8 Συνοδευτικό υλικό κεφαλαίου...426 14.9 Πρακτική εξάσκηση...428

Περιεχόμενα 9 Κεφάλαιο 15: Συμπίεση δεδομένων 433 15.1 Εισαγωγή...434 15.2 Μη απωλεστική συμπίεση...434 15.3 Απωλεστική συμπίεση...442 15.4 Συνοδευτικό υλικό κεφαλαίου...448 15.5 Πρακτική εξάσκηση...449 Κεφάλαιο 16: Ασφάλεια 453 16.1 Εισαγωγή...454 16.2 Εμπιστευτικότητα...458 16.3 Αλλες πτυχές της ασφάλειας...471 16.4 Τείχη προστασίας...485 16.5 Συνοδευτικό υλικό κεφαλαίου...488 16.6 Πρακτική εξάσκηση...490 Κεφάλαιο 17: Θεωρία υπολογισμού 497 17.1 Εισαγωγή...498 17.2 Απλή Γλώσσα...498 17.3 Η μηχανή Turing...501 17.4 Αριθμοί Gödel...508 17.5 Το πρόβλημα του τερματισμού...509 17.6 Η πολυπλοκότητα των προβλημάτων...512 17.7 Συνοδευτικό υλικό κεφαλαίου...513 17.8 Πρακτική εξάσκηση...515 Κεφάλαιο 18: Τεχνητή νοημοσύνη 519 18.1 Εισαγωγή...520 18.2 Αναπαράσταση γνώσης...521 18.3 Έμπειρα συστήματα...531 18.4 Αντίληψη...533 18.5 Αναζήτηση...539 18.6 Νευρωνικά δίκτυα...544 18.7 Συνοδευτικό υλικό κεφαλαίου...546 18.8 Πρακτική εξάσκηση...548

10 Περιεχόμενα Παράρτημα Α: Κώδικας Unicode 553 A.1 Επίπεδα...554 A.2 ASCII...555 Παράρτημα Β: Ενοποιημένη Γλώσσα Μοντελοποίησης 559 B.1 Η προβολή χρήστη...560 B.2 Η προβολή δομής...561 B.3 Η προβολή συμπεριφοράς...562 B.4 Η προβολή υλοποίησης...569 Παράρτημα Γ: Ψευδοκώδικας 571 Γ.1 Συστατικά στοιχεία...571 Παράρτημα Δ: Διαγράμματα δομής 575 Δ.1 Σύμβολα διαγραμμάτων δομής...575 Δ.2 Ανάγνωση διαγραμμάτων δομής...577 Δ.3 Κανόνες διαγραμμάτων δομής...578 Παράρτημα Ε: Άλγεβρα Boole και λογικά κυκλώματα 579 Ε.1 Αλγεβρα Boole...579 Ε.2 Λογικά κυκλώματα... 589 Παράρτημα ΣΤ: Παραδείγματα προγραμμάτων σε C, C++ και Java 597 ΣΤ.1 Προγράμματα σε γλώσσα C...597 ΣΤ.2 Προγράμματα σε γλώσσα C++...600 ΣΤ.3 Προγράμματα σε Java... 603 Παράρτημα Ζ: Σύνοψη μαθηματικών εννοιών 607 Ζ.1 Εκθέτης και λογάριθμος...607 Ζ.2 Αριθμητική υπολοίπων...611 Ζ.3 Διακριτός μετασχηματισμός συνημιτόνου...615

Περιεχόμενα 11 Παράρτημα Η: Εντοπισμός και διόρθωση σφαλμάτων 617 Η.1 Εισαγωγή...617 Η.2 Κωδικοποίηση τμήματος...619 Η.3 Γραμμικοί κώδικες τμημάτος...622 Η.4 Κυκλικοί κώδικες...625 Η.5 Άθροισμα ελέγχου...628 Παράρτημα Θ: Απαντήσεις στις Ερωτήσεις Γνώσεων 633 Ακρώνυμα 637 Αγγλο-ελληνικό λεξικό όρων 641 Γλωσσάρι 657 Ευρετήριο 693

Στους Satara και Shane

Πρόλογος Οι υπολογιστές παίζουν σημαντικό ρόλο στην καθημερινή ζωή μας, και αυτό θα εξακολουθεί να ισχύει και στο μέλλον. Η επιστήμη των υπολογιστών (computer science) είναι ένας νέος τομέας που εξελίσσεται και προοδεύει. Τα δίκτυα υπολογιστών συνδέουν ανθρώπους σε απομακρυσμένα σημεία του πλανήτη. Η εικονική πραγματικότητα επιτρέπει τη δημιουργία τριδιάστατων εικόνων που εντυπωσιάζουν τους θεατές. Η επιτυχής εξερεύνηση του διαστήματος οφείλεται κατά ένα μέρος στους υπολογιστές. Μην ξεχνάτε και τα ειδικά εφέ που δημιουργούνται μέσω υπολογιστών με τα οποία έχει αλλάξει η βιομηχανία του κινηματογράφου. Τέλος, οι υπολογιστές παίζουν σημαντικό ρόλο στη γενετική έρευνα. Σε ποιους απευθύνεται αυτό το βιβλίο Το βιβλίο αυτό απευθύνεται τόσο στα μέλη της ακαδημαϊκής κοινότητας όσο και σε επαγγελματίες. Όσοι επαγγελματίες ενδιαφέρονται για τα ζητήματα που πραγματεύεται μπορούν να το χρησιμοποιήσουν ως οδηγό μελέτης. Ως εγχειρίδιο, το βιβλίο μπορεί να χρησιμοποιηθεί σε σειρές πανεπιστημιακών μαθημάτων διάρκειας ενός ακαδημαϊκού εξαμήνου ή ακόμα και ενός μέρους του εξαμήνου. Έχει σχεδιαστεί ως εγχειρίδιο εισαγωγής στην επιστήμη των υπολογιστών. Έχει καταρτιστεί σύμφωνα με τις συστάσεις της Ένωσης Υπολογιστικού Εξοπλισμού (Association of Computing Machinery, ACM). Καλύπτει σε μεγάλο εύρος όλους τους τομείς της επιστήμης των υπολογιστών. Εξάλλου, το βιβλίο, είτε κατά ένα μέρος του είτε ολόκληρο, μπορεί να χρησιμοποιηθεί και σε άλλους επιστημονικούς κλάδους στους οποίους οι φοιτητές χρειάζονται εποπτική προσέγγιση των ζητημάτων που πραγματεύεται η επιστήμη των υπολογιστών. Αλλαγές στην τρίτη έκδοση Σε αυτή την έκδοση προχωρήσαμε σε διάφορες αλλαγές. Αναθεώρηση κεφαλαίων και παραρτημάτων Έγινε πλήρης αναθεώρηση δύο κεφαλαίων και ενός παραρτήματος προκειμένου να εξυπηρετήσουν καλύτερα τον εκπαιδευτικό προσανατολισμό του βιβλίου.

14 Πρόλογος Κεφάλαιο 6: Δίκτυα υπολογιστών και το Διαδίκτυο Το Κεφάλαιο 6 αναθεωρήθηκε με μια αναλυτική προσέγγιση, η οποία είναι πιο κατάλληλη για τους φοιτητές που έρχονται σε επαφή με το συγκεκριμένο αντικείμενο για πρώτη φορά. Κεφάλαιο 16: Ασφάλεια Κατά κανόνα, όταν οι φοιτητές γνωρίζουν για πρώτη φορά την έννοια της ασφάλειας και των σχετικών ζητημάτων, αντιμετωπίζουν δυσκολίες στην κατανόηση. Γι αυτό λοιπόν, το κεφάλαιο αυτό αναθεωρήθηκε προκειμένου να γίνει πιο κατανοητό για τον αναγνώστη. Παράρτημα ΣΤ: Παραδείγματα προγραμμάτων Στην αναθεώρηση του συγκεκριμένου παραρτήματος συμπεριλήφθηκαν ορισμένα απλά προγράμματα σε τρεις γλώσσες προγραμματισμού (C, C++, και Java). Μικρότερες αλλαγές σε άλλα κεφάλαια Έγιναν ορισμένες αλλαγές μικρότερης έκτασης στη μορφή και τα περιεχόμενα κάποιων κεφαλαίων, με βάση τα σχόλια και τις παρατηρήσεις από τους ειδικούς αναθεωρητές που διάβασαν το βιβλίο. Επίσης, σε κάποια κεφάλαια προστέθηκαν αναφορές και σε ορισμένες νέες τεχνολογίες. Δομή του βιβλίου Το βιβλίο αποτελείται από δεκαοκτώ κεφάλαια και εννέα παραρτήματα. Κεφάλαια Τα κεφάλαια είναι δομημένα έτσι ώστε να παρέχουν όλες τις απαραίτητες θεμελιώδεις γνώσεις. Ωστόσο, όπως προαναφέρθηκε, δεν είναι απαραίτητα όλα τα κεφάλαια για κάθε αναγνώστη στον οποίο απευθύνεται το βιβλίο. Ο διδάσκων καθηγητής μπορεί να αποφασίσει ο ίδιος ποια κεφάλαια θα επιλέξει να παραδώσει. Θα αναφέρουμε μερικές κατευθυντήριες οδηγίες στη συνέχεια. Παραρτήματα Σκοπός των παραρτημάτων είναι να αποτελέσουν μια πηγή γρήγορης αναφοράς και να παρέχουν μια εποπτική ανασκόπηση της ύλης η οποία είναι απαραίτητη για την πλήρη κατανόηση των εννοιών που πραγματεύεται το βιβλίο. Στο βιβλίο υπάρχουν εννέα παραρτήματα που μπορούν να χρησιμοποιήσουν οι φοιτητές τόσο ως πηγές αναφοράς όσο και για τους σκοπούς της μελέτης τους. Ακρώνυμα Το βιβλίο περιλαμβάνει μια λίστα με ακρώνυμα που διευκολύνει την εύρεση του όρου στον οποίο αντιστοιχεί κάθε ακρώνυμο. Γλωσσάρι Το βιβλίο περιλαμβάνει εκτενές γλωσσάρι που διευκολύνει τον φοιτητή να εξοικειωθεί με τους όρους που χρησιμοποιούνται στο βιβλίο. Εκπαιδευτικός προσανατολισμός Πολλά από τα εκπαιδευτικά στοιχεία του βιβλίου έχουν επιλεγεί έτσι ώστε να διευκολύνουν αποφασιστικά τους φοιτητές στην κατανόηση της διδακτέας ύλης.

Πρόλογος 15 Οπτική προσέγγιση Το βιβλίο πραγματεύεται εξαιρετικά εξειδικευμένα τεχνικά ζητήματα χωρίς να παραθέτει σύνθετους μαθηματικούς τύπους, αλλά χρησιμοποιώντας ισοβαρώς κείμενο και εικόνες. Οι 400 και πλέον εικόνες που συνοδεύουν το κείμενο της θεωρίας βοηθούν στην κατανόηση της διδακτέας ύλης με οπτικό, παραστατικό, και διαισθητικό τρόπο. Οι εικόνες είναι ιδιαίτερα σημαντικές στην ερμηνεία των σχέσεων μεταξύ των επιμέρους στοιχείων που συνθέτουν το σύνολο κάθε έννοιας. Για πολλούς φοιτητές, έχει αποδειχθεί ότι είναι πιο εύκολο να κατανοήσουν αυτές τις έννοιες με παραστατικό παρά με λεκτικό τρόπο. Βασικά σημεία Στο κείμενο της θεωρίας υπάρχουν έγχρωμα πλαίσια στα οποία επαναλαμβάνουμε τις πιο σημαντικές έννοιες, για να επιστήσουμε την προσοχή στον αναγνώστη και να τον βοηθήσουμε να ανατρέχει γρήγορα σε αυτές. Παραδείγματα και εφαρμογές Όπου έχει κριθεί απαραίτητο, υπάρχουν παραδείγματα τα οποία εξηγούν τις έννοιες που παρατίθενται στη θεωρία. Αλγόριθμοι Στο κείμενο της θεωρίας υπάρχουν δεκάδες αλγόριθμοι προκειμένου οι σπουδαστές να εξοικειωθούν με την επίλυση προβλημάτων και τον προγραμματισμό. UML Σε ολόκληρο το βιβλίο χρησιμοποιούμε διαγράμματα UML για να βοηθήσουμε τους σπουδαστές να εξοικειωθούν με αυτό το εργαλείο, το οποίο τείνει να καθιερωθεί ως πρότυπο στον κλάδο της επιστήμης των υπολογιστών. Υλικό στο τέλος των κεφαλαίων Στο τέλος κάθε κεφαλαίου υπάρχουν οι εξής ενότητες ύλης: Προτεινόμενα βιβλία Σε αυτή την ενότητα παρατίθεται μια συνοπτική λίστα με βιβλιογραφικές αναφορές που σχετίζονται με το θέμα του κεφαλαίου. Μπορείτε να χρησιμοποιήσετε αυτές τις αναφορές για να εντοπίσετε τα αντίστοιχα εγχειρίδια. Βασικοί όροι Σε αυτή την ενότητα παρατίθεται μια λίστα με τους νέους όρους που παρουσιάζονται σε κάθε κεφάλαιο. Οι ορισμοί αυτών των όρων περιλαμβάνονται στο γλωσσάρι. Περίληψη Στο τέλος κάθε κεφαλαίου υπάρχει μια ενότητα που αναφέρει συνοπτικά τη διδακτέα ύλη για την οποία έγινε λόγος στο κεφάλαιο. Στη σύνοψη γίνεται μια σύνθεση και συνολική παρουσίαση όλων των σημαντικών εννοιών. Πρακτική εξάσκηση Σε κάθε κεφάλαιο υπάρχει μια ενότητα πρακτικής εξάσκησης, σχεδιασμένη έτσι ώστε να ενισχύσει τις σημαντικές έννοιες και να παροτρύνει τους φοιτητές να τις δουν στην πράξη. Αποτελείται από τρία μέρη: Τις Ερωτήσεις γνώσεων, τις Ερωτήσεις επανάληψης, και τα Προβλήματα.

16 Πρόλογος Ερωτήσεις γνώσεων Οι Ερωτήσεις γνώσεων δείχνουν άμεσα τον βαθμό στον οποίο έχουν γίνει κατανοητές οι έννοιες. Μέσα από αυτές, οι φοιτητές μπορούν να διαπιστώσουν κατά πόσο έχουν κατανοήσει τις έννοιες της διδακτέας ύλης ελέγχοντας αν έχουν απαντήσει σωστά στο Παράρτημα Θ: Απαντήσεις στις Ερωτήσεις γνώσεων. Ερωτήσεις επανάληψης Σε αυτή την ενότητα υπάρχουν απλές ερωτήσεις σχετικά με τις έννοιες που πραγματεύεται το βιβλίο. Στην τοποθεσία Ιστού του βιβλίου, οι φοιτητές θα βρουν τις σωστές απαντήσεις για τις ερωτήσεις με μονή αρίθμηση προκειμένου να διορθώσουν τις δικές τους απαντήσεις. Προβλήματα Σε αυτή την ενότητα περιλαμβάνονται προβλήματα αυξημένης δυσκολίας τα οποία απαιτούν βαθύτερη κατανόηση της διδακτέας ύλης κάθε κεφαλαίου. Συνιστούμε ανεπιφύλακτα στους φοιτητές να προσπαθήσουν να λύσουν όλα τα προβλήματα. Στην τοποθεσία Ιστού του βιβλίου, οι φοιτητές θα βρουν τις σωστές απαντήσεις για τα προβλήματα με μονή αρίθμηση προκειμένου να διορθώσουν τις δικές τους απαντήσεις. Πόροι για τον διδάσκοντα Το βιβλίο περιλαμβάνει πλήρεις πόρους για τους διδάσκοντες του μαθήματος. Περιλαμβάνουν: Παρουσιάσεις σε PowerPoint Στον διδάσκοντα παρέχεται ένα ολοκληρωμένο σύνολο αρχείων παρουσιάσεων PowerPoint για τις ανάγκες της παράδοσης του μαθήματος. Λύσεις για τις ερωτήσεις και τα προβλήματα πρακτικής εξάσκησης Στην τοποθεσία Ιστού του βιβλίου, οι διδάσκοντες μπορούν να βρουν τις λύσεις για όλες τις ερωτήσεις και τα προβλήματα πρακτικής εξάσκησης. Πόροι για τους φοιτητές Στην τοποθεσία Ιστού του βιβλίου υπάρχουν επίσης πόροι και για τους φοιτητές. Σε αυτούς περιλαμβάνονται: Λύσεις για τις ερωτήσεις και τα προβλήματα πρακτικής εξάσκησης με μονή αρίθμηση Στην τοποθεσία Ιστού του βιβλίου, οι φοιτητές μπορούν να βρουν τις λύσεις για τις ερωτήσεις και τα προβλήματα πρακτικής εξάσκησης με μονή αρίθμηση. Πώς μπορείτε να χρησιμοποιήσετε το βιβλίο Τα κεφάλαια του βιβλίου έχουν οργανωθεί με τέτοιον τρόπο ώστε να παρέχουν εξαιρετική ευελιξία. Εμείς, από τη μεριά μας, προτείνουμε τα εξής: Η ύλη των Κεφαλαίων 1-8 είναι απόλυτα απαραίτητη για την κατανόηση των υπόλοιπων κεφαλαίων του βιβλίου. Η ύλη των Κεφαλαίων 9-14 είναι προαιρετική και μπορεί να διδαχθεί εφόσον υπάρχει χρόνος. Ειδάλλως, μπορεί κάλλιστα να παραλειφθεί. Η παράδοση της ύλης των Κεφαλαίων 15-18 είναι στη διακριτική ευχέρεια του διδάσκοντα και εξαρτάται και από τα μαθήματα εξειδίκευσης που επιλέγουν οι φοιτητές.

Ευχαριστίες Πρόλογος 17 Προφανώς, για να δημιουργηθεί ένα βιβλίο τέτοιας εμβέλειας, χρειάζεται υποστήριξη από πολλούς ανθρώπους. Ειδικοί αναθεωρητές Θα ήθελα να ευχαριστήσω τους ειδικούς ομότιμους αναθεωρητές για τη συνεισφορά τους στην κατάρτιση αυτού του βιβλίου. Με την αναθεώρηση του βιβλίου ασχολήθηκαν: Sam Ssemugabi, UNISA Ronald Chikati, Botswana Accountancy College Alex Dandadzi, University of Limpopo Tom Verhoeff, Eindhoven University of Technology Stefan Gruner, University of Pretoria Harin Sellahwea, University of Buckingham John Newman, University of Wales Steve Maybank, Birbeck College Mario Kolberg, University of Stirling Colin Price, University of Worcester Boris Cogan, London Metropolitan University Thomas Mandl, University of Hildesheim Daphne Becker, University of South Africa Lubna Fekry Abdulhai και Osama Abulnaja, King Abdulaziz University Katie Atkinson, University of Liverpool. Το προσωπικό του εκδοτικού οίκου Θα ήθελα επίσης να εκφράσω τις ευχαριστίες μου στο προσωπικό του εκδοτικού οίκου: Andrew Ashwin Annabel Ainscow Jennifer Grene Alison Burt Behrouz A. Forouzan Λος Άντζελες, Καλιφόρνια Ιανουάριος 2014

ΚΕΦΑΛΑΙΟ 1 Εισαγωγή Σήμερα, η φράση επιστήμη των υπολογιστών έχει αποκτήσει ευρύτατο νόημα. Ωστόσο, στο βιβλίο αυτό ορίζουμε τη φράση ως «θέματα που σχετίζονται με τον ηλεκτρονικό υπολογιστή». Σε αυτό το εισαγωγικό κεφάλαιο προσπαθούμε καταρχήν να διαπιστώσουμε τι είναι ένας υπολογιστής, και μετά ασχολούμαστε με άλλα θέματα που συσχετίζονται άμεσα με τους υπολογιστές. Πρώτα θα εξετάσουμε το μοντέλο Turing ως μαθηματικό και φιλοσοφικό ορισμό του υπολογισμού. Έ- πειτα θα δείξουμε πώς οι σύγχρονοι υπολογιστές βασίζονται στο μοντέλο von eumann. Και θα ολοκληρώσουμε το κεφάλαιο με ένα σύντομο ιστορικό αυτής της επαναστατικής συσκευής: του υπολογιστή. Στόχοι του κεφαλαίου Μετά την ολοκλήρωση αυτού του κεφαλαίου, ο σπουδαστής θα είναι σε θέση: Να διατυπώνει τον ορισμό για το μοντέλο Turing ενός υπολογιστή. Να διατυπώνει τον ορισμό για το μοντέλο von Neumann ενός υπολογιστή. Να περιγράφει τα τρία συστατικά στοιχεία ενός υπολογιστή: το υλικό, τα δεδομένα, και το λογισμικό. Να αναφέρει θέματα που σχετίζονται με το υλικό του υπολογιστή. Να αναφέρει θέματα που σχετίζονται με τα δεδομένα. Να αναφέρει θέματα που σχετίζονται με το λογισμικό. Να περιγράφει κοινωνικά και ηθικά ζητήματα που σχετίζονται με τη χρήση υπολογιστών. Να αναφέρει ένα σύντομο ιστορικό της εξέλιξης των υπολογιστών.

20 Εισαγωγή 1.1 ΤΟ ΜΟΝΤΕΛΟ TURING Η ιδέα μιας καθολικής υπολογιστικής συσκευής διατυπώθηκε για πρώτη φορά από τον Alan Turing το 1937. Ο Turing πρότεινε ότι όλοι οι υπολογισμοί μπορούσαν να εκτελεστούν από μια ειδική μηχανή, η οποία πλέον ονομάζεται μηχανή Turing. Παρόλο που ο Turing παρουσίασε μια μαθηματική περιγραφή μιας τέτοιας μηχανής, αυτό που τον ενδιέφερε περισσότερο ήταν ο φιλοσοφικός ορισμός του υπολογισμού παρά η δημιουργία της μηχανής αυτής καθαυτής. Το μοντέλο του βασίστηκε στις ενέργειες που εκτελούν οι άνθρωποι όταν ασχολούνται με υπολογισμούς, οι οποίες προσαρμόστηκαν σε ένα μοντέλο για την υλοποίηση μιας υπολογιστικής μηχανής που πραγματικά άλλαξε τον κόσμο. 1.1.1 Επεξεργαστές δεδομένων Πριν περιγράψουμε το μοντέλο Turing, ας ορίσουμε τον υπολογιστή ως επεξεργαστή δεδομένων. Σύμφωνα με αυτόν τον ορισμό, ο υπολογιστής λειτουργεί σαν ένα μαύρο κουτί που δέχεται δεδομένα εισόδου, τα επεξεργάζεται, και παράγει τα δεδομένα εξόδου (Εικόνα 1.1). Παρόλο που αυτό το μοντέλο μπορεί να ορίσει τον τρόπο λειτουργίας ενός σύγχρονου υπολογιστή, είναι πάρα πολύ γενικό. Σύμφωνα με αυτό το μοντέλο, υπολογιστής είναι και μια αριθμομηχανή τσέπης (το οποίο, με την κυριολεκτική σημασία, είναι σωστό). Εικόνα 1.1 Μια υπολογιστική μηχανή γενικού σκοπού Ένα άλλο πρόβλημα με αυτό το μοντέλο είναι ότι δεν προσδιορίζει το είδος της επεξεργασίας, ή το αν είναι δυνατό να υπάρχουν περισσότεροι από ένας τύποι επεξεργασίας. Με άλλα λόγια, δεν είναι σαφές πόσα είδη ή σύνολα λειτουργιών μπορεί να εκτελεί ένα μηχάνημα που βασίζεται σε αυτό το μοντέλο. Πρόκειται για ένα εξειδικευμένο μηχάνημα ή για ένα μηχάνημα γενικής χρήσης; Αυτό το μοντέλο θα μπορούσε να αναπαραστήσει έναν εξειδικευμένο υπολογιστή (ή επεξεργαστή) που έχει σχεδιαστεί για να κάνει μια συγκεκριμένη εργασία, όπως ο έλεγχος της θερμοκρασίας ενός κτηρίου ή ο έλεγχος της ροής καυσίμων σε ένα αυτοκίνητο. Ωστόσο, οι υπολογιστές, όπως χρησιμοποιούνται σήμερα, είναι μηχανές γενικής χρήσης. Μπορούν να κάνουν πολλές διαφορετικές εργασίες. Αυτό σημαίνει ότι πρέπει να αλλάξουμε το μοντέλο Turing ώστε να ανταποκρίνεται στους πραγματικούς υπολογιστές της εποχής μας. 1.1.2 Προγραμματιζόμενοι επεξεργαστές δεδομένων Το μοντέλο Turing είναι ένα καλύτερο μοντέλο για έναν υπολογιστή γενικής χρήσης. Το μοντέλο αυτό προσθέτει ένα επιπλέον στοιχείο στη συγκεκριμένη υπολογιστική μηχανή: το πρόγραμμα. Το πρόγραμμα είναι ένα σύνολο οδηγιών ή, ισοδύναμα, εντολών που υποδεικνύουν στον υπολογιστή τι να κάνει με τα δεδομένα. Στην Εικόνα 1.2 παρουσιάζεται το μοντέλο Turing. Στο μοντέλο Turing, τα δεδομένα εξόδου (output data) εξαρτώνται από τον συνδυασμό δύο παραγόντων: από τα δεδομένα εισόδου (input data) και από το πρόγραμμα. Αν αλλάξουμε το πρόγραμμα, τότε με τα ίδια δεδομένα εισόδου μπορούμε να παραγάγουμε διαφορετικές εξόδους. Παρόμοια, αν αλλάξουμε τα δεδομένα εισόδου, με το ίδιο πρόγραμμα μπορούμε να παραγάγουμε διαφορετικές εξόδους. Τέλος, αν χρησιμοποιήσουμε τα ίδια δεδομένα εισόδου και το ίδιο πρόγραμμα, η έξοδος θα πρέπει επίσης να είναι η ίδια. Ας εξετάσουμε τις τρεις αυτές περιπτώσεις.

1.1 Το μοντέλο Turing 21 Εικόνα 1.2 δεδομένων Ένας υπολογιστής που βασίζεται στο μοντέλο Turing: προγραμματιζόμενος επεξεργαστής Πρόγραμμα Ίδιο πρόγραμμα, διαφορετικά δεδομένα εισόδου Στην Εικόνα 1.3 παρουσιάζεται το ίδιο πρόγραμμα ταξινόμησης με διαφορετικά δεδομένα εισόδου. Παρόλο που χρησιμοποιείται το ίδιο πρόγραμμα, οι έξοδοι διαφέρουν επειδή τα δεδομένα εισόδου που υπέστησαν επεξεργασία είναι διαφορετικά. Εικόνα 1.3 Ίδιο πρόγραμμα, διαφορετικά δεδομένα Ταξινόμηση Ταξινόμηση Ίδια δεδομένα εισόδου, διαφορετικά προγράμματα Στην Εικόνα 1.4 της επόμενης σελίδας παρουσιάζονται τα ίδια δεδομένα εισόδου με διαφορετικά προγράμματα. Με κάθε πρόγραμμα, ο υπολογιστής εκτελεί διαφορετικές ενέργειες στα δεδομένα εισόδου. Έτσι, το πρώτο πρόγραμμα ταξινομεί τα δεδομένα, το δεύτερο τα αθροίζει, και το τρίτο εντοπίζει τον μικρότερο αριθμό. Ίδια δεδομένα εισόδου, ίδιο πρόγραμμα Είναι προφανές ότι όταν είναι ίδια τόσο τα δεδομένα εισόδου όσο και το πρόγραμμα, έχουμε το ίδιο αποτέλεσμα. Με άλλα λόγια, όταν το ίδιο πρόγραμμα εκτελείται με τα ίδια δεδομένα εισόδου, η έξοδος θα είναι η ίδια. 1.1.3 Η καθολική μηχανή Turing Η πρώτη περιγραφή ενός σύγχρονου υπολογιστή, δηλαδή ενός μηχανήματος το οποίο μπορεί να εκτελέσει οποιονδήποτε υπολογισμό αν χρησιμοποιηθεί το κατάλληλο πρόγραμμα, ήταν η καθολική μηχανή Turing. Μάλιστα, μπορεί να αποδειχθεί ότι τόσο ένας πανίσχυρος υπολογιστής όσο και μια καθολική μηχανή Turing μπορούν να εκτελέσουν τους ίδιους υπολογισμούς. Το μόνο που χρειάζεται είναι να παράσχουμε τα δεδομένα και το πρόγραμμα δηλαδή, τον τρόπο εκτέλεσης του υπολογισμού σε κάθε μηχάνημα. Στην πραγματικότητα, η καθολική μηχανή Turing έχει τη δυνατότητα να υπολογίσει οτιδήποτε μπορεί να υπολογιστεί.

22 Εισαγωγή Εικόνα 1.4 Ίδια δεδομένα, διαφορετικά προγράμματα Ταξινόμηση Άθροισμα Εύρεση μικρότερου 1.2 ΤΟ ΜΟΝΤΕΛΟ VON NEUMANN Οι υπολογιστές που βασίζονται στην καθολική μηχανή Turing αποθηκεύουν δεδομένα στη μνήμη τους. Γύρω στο 1944-1945, ο John von Neumann πρότεινε ότι, αφού τόσο τα προγράμματα όσο και τα δεδομένα είναι το ίδιο πράγμα σε επίπεδο λογικής, τα προγράμματα θα πρέπει επίσης να αποθηκεύονται στη μνήμη του υπολογιστή. 1.2.1 Τέσσερα υποσυστήματα Οι υπολογιστές που βασίζονται στο μοντέλο von Neumann αποτελούνται από τέσσερα υποσυστήματα: μνήμη, αριθμητική και λογική μονάδα, μονάδα ελέγχου, και είσοδος/έξοδος (Εικόνα 1.5). Εικόνα 1.5 Το μοντέλο von Neumann Είσοδος/Έξοδος Αριθμητική και λογική μονάδα Μνήμη Μονάδα ελέγχου

1.2 Το μοντέλο von Neumann 23 Μνήμη Η μνήμη (memory) είναι η περιοχή αποθήκευσης. Σε αυτήν αποθηκεύονται τα προγράμματα και τα δεδομένα κατά την επεξεργασία. Στη συνέχεια του κεφαλαίου θα εξηγήσουμε τον λόγο για τον οποίο πρέπει να αποθηκεύονται σε αυτήν και τα προγράμματα. Αριθμητική και λογική μονάδα Η αριθμητική και λογική μονάδα (arithmetic logic unit, ALU), ή ΑΛΜ για συντομία, είναι το τμήμα του υπολογιστή στο οποίο εκτελούνται οι υπολογισμοί και οι λογικές πράξεις. Για να λειτουργεί ως επεξεργαστής δεδομένων ένας υπολογιστής, πρέπει να είναι σε θέση να εκτελεί αριθμητικές πράξεις σε δεδομένα (όπως η πρόσθεση των αριθμών μιας λίστας). Επίσης, θα πρέπει να μπορεί να εκτελεί λογικές πράξεις στα δεδομένα, όπως θα δούμε στο Κεφάλαιο 4. Μονάδα ελέγχου Η μονάδα ελέγχου (control unit) ελέγχει τις λειτουργίες της μνήμης, της ΑΛΜ, και του υποσυστήματος εισόδου/εξόδου. Είσοδος/έξοδος Το υποσύστημα εισόδου δέχεται δεδομένα εισόδου και το πρόγραμμα από έξω από τον υπολογιστή, ενώ το υποσύστημα εξόδου στέλνει πάλι προς τα έξω το αποτέλεσμα της επεξεργασίας. Ο ορισμός του υποσυστήματος εισόδου/εξόδου είναι πολύ ευρύς: Περιλαμβάνει επίσης τις δευτερεύουσες συσκευές αποθήκευσης, όπως δίσκους ή ταινίες, στις οποίες αποθηκεύονται δεδομένα και προγράμματα για επεξεργασία. Όταν σε έναν δίσκο αποθηκεύονται δεδομένα που προέρχονται από επεξεργασία, τότε αυτός θεωρείται συσκευή εξόδου, ενώ όταν ο δίσκος χρησιμοποιείται για την ανάγνωση δεδομένων, τότε θεωρείται συσκευή εισόδου. 1.2.2 Η έννοια του αποθηκευμένου προγράμματος Το μοντέλο von Neumann ορίζει ότι το πρόγραμμα πρέπει να αποθηκεύεται στη μνήμη. Αυτό είναι κάτι εντελώς διαφορετικό από την αρχιτεκτονική των πρώτων υπολογιστών, σύμφωνα με την οποία στη μνήμη αποθηκεύονταν μόνο τα δεδομένα: Το πρόγραμμα για μια εργασία υλοποιούνταν με τον χειρισμό ενός συνόλου διακοπτών ή με την αλλαγή του συστήματος καλωδίωσης. Η μνήμη των σύγχρονων υπολογιστών φιλοξενεί τόσο το πρόγραμμα όσο και τα αντίστοιχα δεδομένα του. Αυτό σημαίνει ότι τόσο τα δεδομένα όσο και τα προγράμματα πρέπει να είναι της ίδιας μορφής, επειδή αποθηκεύονται στη μνήμη. Για την ακρίβεια, αποθηκεύονται στη μνήμη ως δυαδικά σχήματα (binary patterns), δηλαδή ακολουθίες από 0 και 1. 1.2.3 Ακολουθιακή εκτέλεση εντολών Κάθε πρόγραμμα στο μοντέλο von Neumann αποτελείται από έναν πεπερασμένο αριθμό εντολών. Στο μοντέλο αυτό, η μονάδα ελέγχου ανακαλεί μια εντολή από τη μνήμη, την ερμηνεύει, και κατόπιν την εκτελεί. Δηλαδή, οι εντολές εκτελούνται η μία μετά την άλλη. Βέβαια, κάποια εντολή μπορεί να ζητήσει από τη μονάδα ελέγχου να εκτελέσει μια προηγούμενη ή μια επόμενη εντολή, αλλά αυτό δεν σημαίνει ότι οι εντολές δεν εκτελούνται σειριακά. Η δυνατότητα ακολουθιακής εκτέλεσης ενός προγράμματος ήταν η βασική προϋπόθεση ενός υπολογιστή που βασιζόταν στο μοντέλο von Neumann. Οι σύγχρονοι υπολογιστές εκτελούν προγράμματα με την πιο αποδοτική σειρά.

24 Εισαγωγή 1.3 ΤΑ ΣΥΣΤΑΤΙΚΑ ΣΤΟΙΧΕΙΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Κάθε υπολογιστής αποτελείται από τρία συστατικά στοιχεία: το υλικό (hardware), τα δεδομένα (data), και το λογισμικό (software). 1.3.1 Υλικό των υπολογιστών Σύμφωνα με το μοντέλο von Neumann, το υλικό των σύγχρονων υπολογιστών αποτελείται από τέσσερα συστατικά στοιχεία, παρόλο που μπορεί να υπάρχουν διαφορετικοί τύποι μνήμης, υποσυστημάτων εισόδου/εξόδου, κ.λπ. Θα αναφερθούμε πιο αναλυτικά στο υλικό των υπολογιστών στο Κεφάλαιο 5. 1.3.2 Δεδομένα Το μοντέλο von Neumann ορίζει με σαφήνεια έναν υπολογιστή ως μηχανή επεξεργασίας δεδομένων η οποία δέχεται τα δεδομένα εισόδου, τα επεξεργάζεται, και εξάγει το αποτέλεσμα. Αποθήκευση δεδομένων Το μοντέλο von Neumann δεν καθορίζει τον τρόπο με τον οποίο πρέπει να αποθηκεύονται τα δεδομένα σε έναν υπολογιστή. Αν ο υπολογιστής είναι ηλεκτρονική συσκευή, ο καλύτερος τρόπος για την αποθήκευση των δεδομένων είναι με τη μορφή ηλεκτρικών σημάτων, και πιο συγκεκριμένα με την παρουσία ή την απουσία τους. Αυτό σημαίνει ότι ένας υπολογιστής μπορεί να αποθηκεύει δεδομένα σε μία από δύο δυνατές καταστάσεις. Προφανώς, τα δεδομένα που χρησιμοποιούμε στην καθημερινή μας ζωή δεν βρίσκονται μόνο σε μία από δύο δυνατές καταστάσεις. Για παράδειγμα, το αριθμητικό μας σύστημα χρησιμοποιεί ψηφία που μπορούν να πάρουν μία από δέκα δυνατές καταστάσεις (από 0 έως 9). Δεν μπορούμε να αποθηκεύσουμε τέτοιου είδους πληροφορίες σε έναν υπολογιστή, τουλάχιστον προς το παρόν. Αυτές πρέπει πρώτα να μετατραπούν σε κάποιο άλλο σύστημα με δύο μόνο καταστάσεις (0 και 1). Επίσης, πρέπει να υπάρχει δυνατότητα επεξεργασίας και άλλων τύπων δεδομένων (κειμένου, εικόνων, ήχου, βίντεο). Και αυτού του είδους τα δεδομένα δεν μπορούν να αποθηκευτούν σε έναν υπολογιστή απευθείας, αλλά είναι απαραίτητο να μετατραπούν πρώτα στην κατάλληλη μορφή (σειρές από 0 και 1). Στο Κεφάλαιο 3 θα δούμε με ποιον τρόπο αποθηκεύονται οι διάφοροι τύποι δεδομένων ως δυαδικά σχήματα, δηλαδή ως ακολουθίες από 0 και 1. Στο Κεφάλαιο 4 θα δείξουμε πώς γίνεται ο χειρισμός των δεδομένων, ως δυαδικών σχημάτων, στο εσωτερικό του υπολογιστή. Οργάνωση δεδομένων Παρόλο που στο εσωτερικό του υπολογιστή τα δεδομένα πρέπει να αποθηκεύονται μόνο σε μία μορφή (ως δυαδικά σχήματα), τα δεδομένα έξω από τον υπολογιστή έχουν πολλές μορφές. Επιπλέον, οι υπολογιστές (και η έννοια της επεξεργασίας δεδομένων) έχουν δημιουργήσει ένα νέο πεδίο μελέτης, γνωστό με τον όρο οργάνωση δεδομένων, το οποίο απαντά στην εξής ερώτηση: Πώς μπορούμε να οργανώσουμε τα δεδομένα μας σε διαφορετικές οντότητες και μορφές πριν τα αποθηκεύσουμε στον υπολογιστή; Στις μέρες μας τα δεδομένα δεν αντιμετωπίζονται ως ενιαίες ακολουθίες πληροφοριών. Αντίθετα, οργανώνονται σε μικρές μονάδες, οι μικρές μονάδες οργανώνονται σε μεγαλύτερες μονάδες, κ.ο.κ. Στα Κεφάλαια 11 έως 14 θα εξετάσουμε τα δεδομένα από αυτή την οπτική γωνία.

1.3 Τα συστατικά στοιχεία των υπολογιστών 25 1.3.3 Λογισμικό των υπολογιστών Το βασικό χαρακτηριστικό των μοντέλων Turing και von Neumann είναι η έννοια του προγράμματος. Παρόλο που στους πρώτους υπολογιστές τα προγράμματα δεν αποθηκεύονταν στη μνήμη του υπολογιστή, εντούτοις υπήρχε η έννοια των προγραμμάτων. Ο προγραμματισμός σε αυτούς τους πρώτους υπολογιστές γινόταν με την αλλαγή των συστημάτων καλωδίωσης ή το κλείσιμο και το άνοιγμα ενός συνόλου διακοπτών. Δηλαδή, ο προγραμματισμός ήταν μια εργασία που γινόταν από έναν χειριστή ή μηχανικό πριν ξεκινήσει η πραγματική επεξεργασία των δεδομένων. Τα προγράμματα πρέπει να αποθηκεύονται Στο μοντέλο von Neumann τα προγράμματα αποθηκεύονται στη μνήμη του υπολογιστή. Η μνήμη δηλαδή δεν είναι απαραίτητη μόνο για την αποθήκευση δεδομένων, αλλά και για την αποθήκευση των προγραμμάτων (Εικόνα 1.6). Εικόνα 1.6 Πρόγραμμα και δεδομένα στη μνήμη Πρόγραμμα Δεδομένα Μια ακολουθία εντολών Άλλη μια απαίτηση του μοντέλου είναι ότι το πρόγραμμα πρέπει να έχει τη μορφή μιας ακολουθίας εντολών. Κάθε εντολή χειρίζεται ένα ή περισσότερα στοιχεία δεδομένων. Έτσι, μια εντολή μπορεί να αλλάξει το αποτέλεσμα μιας προηγούμενης εντολής. Για παράδειγμα, στην Εικόνα 1.7 μπορείτε να δείτε ένα πρόγραμμα που δέχεται δύο αριθμούς, τους προσθέτει, και τυπώνει το αποτέλεσμα. Το πρόγραμμα αποτελείται από τέσσερις ξεχωριστές εντολές. Εικόνα 1.7 Πρόγραμμα που αποτελείται από εντολές Κάποιος μπορεί να αναρωτηθεί γιατί ένα πρόγραμμα πρέπει να αποτελείται από εντολές. Η απάντηση είναι η δυνατότητα επαναχρησιμοποίησης. Οι σύγχρονοι υπολογιστές πραγματοποιούν ε- κατομμύρια εργασίες. Αν κάθε πρόγραμμα για μια εργασία αποτελούσε ανεξάρτητη οντότητα χωρίς κοινά στοιχεία με τα άλλα προγράμματα, ο προγραμματισμός θα ήταν δυσχερής. Τα μοντέλα Turing και von Neumann κάνουν τον προγραμματισμό ευκολότερο καθορίζοντας τις διάφορες

26 Εισαγωγή εντολές που μπορούν να χρησιμοποιηθούν στους υπολογιστές. Έτσι, ο προγραμματιστής μπορεί να συνδυάσει αυτές τις εντολές για να κατασκευάσει όσα προγράμματα είναι απαραίτητα. Κάθε πρόγραμμα μπορεί να είναι ένας διαφορετικός συνδυασμός διαφορετικών εντολών. Αλγόριθμοι Η προηγούμενη απαίτηση κατέστησε τον προγραμματισμό δυνατό, αλλά ανέδειξε μια άλλη διάσταση στη χρήση ενός υπολογιστή. Ο προγραμματιστής δεν αρκεί μόνο να γνωρίζει την εργασία που κάνει κάθε εντολή, αλλά και τον τρόπο με τον οποίο πρέπει να συνδυάσει αυτές τις εντολές για να πραγματοποιήσει μια συγκεκριμένη εργασία. Αν δούμε το θέμα από μια διαφορετική σκοπιά, ο προγραμματιστής πρέπει πρώτα να λύσει το πρόβλημα βήμα προς βήμα και μετά να προσπαθήσει να βρει την κατάλληλη εντολή (ή σειρά από εντολές) για την επίλυση του προβλήματος. Αυτή η βήμα προς βήμα επίλυση ονομάζεται αλγόριθμος (algorithm). Στους αλγορίθμους, οι οποίοι παίζουν πολύ σημαντικό ρόλο στην επιστήμη των υπολογιστών, θα αναφερθούμε στο Κεφάλαιο 8. Γλώσσες Στην απαρχή της εποχής των υπολογιστών υπήρχε μόνο μία γλώσσα προγραμματισμού, η γλώσσα μηχανής (machine language). Για την επίλυση προβλημάτων, οι προγραμματιστές έγραφαν εντολές (χρησιμοποιώντας δυαδικά σχήματα). Ωστόσο, καθώς τα προγράμματα γίνονταν όλο και μεγαλύτερα, η συγγραφή τους με τη χρήση αυτών των σχημάτων εξελίχθηκε σε πολύ επίπονη διαδικασία. Οι επιστήμονες των υπολογιστών είχαν τότε την ιδέα να χρησιμοποιήσουν σύμβολα για την αναπαράσταση των δυαδικών σχημάτων, ακριβώς όπως οι άνθρωποι χρησιμοποιούν σύμβολα (λέξεις) για να επικοινωνούν στην καθημερινή τους ζωή. Φυσικά, όμως, τα σύμβολα που θα χρησιμοποιούνταν στους υπολογιστές έπρεπε να είναι διαφορετικά από αυτά που χρησιμοποιούνται στην καθημερινή ζωή. Έτσι γεννήθηκε η έννοια της γλώσσας προγραμματισμού (computer language). Μια φυσική γλώσσα (π.χ., τα Ελληνικά) είναι πλούσια και έχει πολλούς κανόνες που καθορίζουν τον σωστό συνδυασμό των λέξεων, ενώ, από την άλλη, μια γλώσσα υπολογιστή διαθέτει πιο περιορισμένο πλήθος συμβόλων και επίσης περιορισμένο αριθμό λέξεων. Θα μελετήσουμε τις γλώσσες προγραμματισμού στο Κεφάλαιο 9. Τεχνολογία λογισμικού Κάτι που δεν ορίζεται στο μοντέλο von Neumann είναι η τεχνολογία λογισμικού (software engineering), δηλαδή η επιστήμη του σχεδιασμού και της συγγραφής δομημένων προγραμμάτων. Σήμερα, το να γράψει κάποιος ένα πρόγραμμα που πραγματοποιεί μια εργασία δεν είναι αρκετό: Το πρόγραμμα πρέπει να ακολουθεί αυστηρές αρχές και κανόνες. Θα συζητήσουμε αυτές τις αρχές, γενικότερα γνωστές ως τεχνολογία λογισμικού, στο Κεφάλαιο 10. Λειτουργικά συστήματα Με το πέρασμα του χρόνου οι επιστήμονες των υπολογιστών αντιλήφθηκαν ότι υπήρχε μια ομάδα εντολών οι οποίες ήταν κοινές σε όλα τα προγράμματα. Για παράδειγμα, οι εντολές που υποδεικνύουν σε έναν υπολογιστή από πού να λάβει δεδομένα και πού να στείλει δεδομένα είναι α- παραίτητες σχεδόν σε κάθε πρόγραμμα. Είναι λοιπόν πιο αποδοτικό οι εντολές αυτές να γραφούν μόνο μία φορά και να χρησιμοποιούνται από όλα τα προγράμματα. Έτσι αναδείχθηκε η έννοια του λειτουργικού συστήματος (operating system). Το λειτουργικό σύστημα αρχικά ενεργούσε ως διαχειριστής για τη διευκόλυνση της πρόσβασης ενός προγράμματος στα συστατικά στοιχεία του υπολογιστή. Στις μέρες μας, τα λειτουργικά συστήματα κάνουν πολύ περισσότερα πράγματα. Θα δούμε περισσότερα σχετικά με αυτά στο Κεφάλαιο 7.

1.4 Ιστορικό 27 1.4 ΙΣΤΟΡΙΚΟ Σε αυτή την ενότητα θα δούμε ένα σύντομο ιστορικό των υπολογιστών. Το ιστορικό αυτό χωρίζεται σε τρεις περιόδους 1.4.1 Μηχανικές υπολογιστικές μηχανές (πριν από το 1930) Κατά τη διάρκεια αυτής της περιόδου εφευρέθηκαν πολλές υπολογιστικές μηχανές, οι οποίες ό- μως είχαν ελάχιστη σχέση με τη σύγχρονη έννοια του όρου «υπολογιστής». Τον 17ο αιώνα, ο Blaise Pascal, Γάλλος μαθηματικός και φιλόσοφος, εφηύρε την Πασκαλίν (Pascaline), μια μηχανική αριθμομηχανή η οποία μπορούσε να εκτελέσει τις πράξεις της πρόσθεσης και της αφαίρεσης. Τον 20ο αιώνα, ο Niklaus Wirth δημιούργησε μια δομημένη γλώσσα προγραμματισμού, την οποία ονόμασε Pascal προς τιμήν του εφευρέτη της πρώτης μηχανικής αριθμομηχανής. Στα τέλη του 17ου αιώνα, ο Γερμανός μαθηματικός Gottfried Leibnitz εφηύρε μια πιο σύνθετη μηχανική αριθμομηχανή, η οποία μπορούσε να εκτελέσει όχι μόνο πρόσθεση και αφαίρεση, αλλά επίσης τις πράξεις του πολλαπλασιασμού και της διαίρεσης. Η μηχανή ονομάστηκε «Τροχός του Leibnitz». Η πρώτη μηχανή που χρησιμοποίησε την ιδέα της αποθήκευσης και του προγραμματισμού ήταν ο Αργαλειός του Jacquard, ο οποίος δημιουργήθηκε από τον Joseph-Marie Jacquard στις αρχές του 19ου αιώνα. Ο Αργαλειός χρησιμοποιούσε διάτρητες κάρτες (σαν αποθηκευμένα προγράμματα) για να ελέγχει την ανύψωση των στημονιών στην κατασκευή υφαντών. Το 1823, ο Charles Babbage κατασκεύασε τη Διαφορική Μηχανή του, η οποία μπορούσε να κάνει κάτι περισσότερο από απλές αριθμητικές πράξεις μπορούσε να λύσει και πολυωνυμικές εξισώσεις. Αργότερα εφηύρε μια άλλη μηχανή, την Αναλυτική Μηχανή, η οποία, ως έναν βαθμό, παραλληλίζεται με την έννοια του σύγχρονου υπολογιστή. Η μηχανή αυτή είχε τέσσερα συστατικά μέρη: έναν μηχανισμό (σύγχρονη ΑΛΜ), έναν αποθηκευτικό χώρο (μνήμη), έναν χειριστή (μονάδα ελέγχου), και έξοδο (είσοδος/έξοδος). Το 1890, ο Herman Hollerith, ο οποίος εργαζόταν στην Απογραφική Υπηρεσία των Η.Π.Α., σχεδίασε και κατασκεύασε μια προγραμματιζόμενη μηχανή η οποία μπορούσε αυτόματα να διαβάζει, να απαριθμεί, και να ταξινομεί δεδομένα που ήταν αποθηκευμένα σε διάτρητες κάρτες. 1.4.2 Η εμφάνιση των ηλεκτρονικών υπολογιστών (1930-1950) Από το 1930 έως το 1950 κατασκευάστηκαν πολλοί υπολογιστές από επιστήμονες οι οποίοι θα μπορούσαν να θεωρηθούν οι πρωτοπόροι της βιομηχανίας των ηλεκτρονικών υπολογιστών. Οι πρώτοι ηλεκτρονικοί υπολογιστές Οι πρώτοι υπολογιστές αυτής της περιόδου δεν αποθήκευαν τα προγράμματά τους στη μνήμη όλοι προγραμματίζονταν εξωτερικά. Από αυτή την περίοδο αξίζει να αναφέρουμε πέντε υπολογιστές: Ο πρώτος υπολογιστής ειδικής χρήσης που κωδικοποιούσε τις πληροφορίες με ηλεκτρικό τρόπο δημιουργήθηκε από τον John V. Atanasoff και τον βοηθό του Clifford Berry το 1939. Ονομάστηκε ABC (Atanasoff Berry Computer), και είχε σχεδιαστεί ειδικά για να λύνει συστήματα γραμμικών εξισώσεων. Την ίδια εποχή, ο Γερμανός μαθηματικός Konrad Zuse σχεδίασε ένα μηχάνημα γενικής χρήσης που ονομάστηκε Z1.

28 Εισαγωγή Τη δεκαετία του 1930, το Ναυτικό των ΗΠΑ και η IBM χρηματοδότησαν από κοινού ένα έργο στο Πανεπιστήμιο του Harvard κάτω από την καθοδήγηση του Howard Aiken. Σκοπός αυτού του έργου ήταν η κατασκευή ενός τεράστιου υπολογιστή με όνομα Mark I. Αυτός ο υπολογιστής χρησιμοποιούσε τόσο ηλεκτρικά όσο και μηχανικά στοιχεία. Στην Αγγλία, ο Alan Turing εφηύρε έναν υπολογιστή που πήρε το όνομα Colossus, ο οποίος είχε σχεδιαστεί για να σπάσει τον κώδικα «Αίνιγμα» των Γερμανών. Ο πρώτος πλήρως ηλεκτρονικός υπολογιστής γενικής χρήσης κατασκευάστηκε από τον John Mauchly και τον J. Presper Eckert και ονομάστηκε ENIAC (Electronic Numerical Integrator and Calculator). Ολοκληρώθηκε το 1946. Χρησιμοποιούσε 18.000 λυχνίες κενού, είχε μήκος 30 μέτρα και ύψος 3, και ζύγιζε 30 τόνους. Υπολογιστές βασισμένοι στο μοντέλο von Neumann Οι πέντε προαναφερθέντες υπολογιστές χρησιμοποιούσαν τη μνήμη μόνο για την αποθήκευση δεδομένων, και προγραμματίζονταν εξωτερικά με καλώδια ή διακόπτες. Ο John von Neumann πρότεινε την ιδέα ότι η μνήμη πρέπει να χρησιμοποιείται για την αποθήκευση τόσο του προγράμματος όσο και των δεδομένων. Με αυτόν τον τρόπο, κάθε φορά που ο υπολογιστής χρησιμοποιείται για μια νέα εργασία το μόνο που πρέπει να αλλάζει είναι το πρόγραμμα, και δεν είναι απαραίτητη η νέα καλωδίωση της μηχανής ή το άναμμα και το σβήσιμο εκατοντάδων διακοπτών. Ο πρώτος υπολογιστής που βασιζόταν στην ιδέα του von Neumann κατασκευάστηκε το 1950 στο Πανεπιστήμιο της Pennsylvania, και ονομάστηκε EDVAC. Την ίδια εποχή, ένας παρόμοιος υπολογιστής με όνομα EDSAC κατασκευάστηκε στο Πανεπιστήμιο του Cambridge της Αγγλίας από τον Maurice Wilkes. 1.4.3 Γενιές των υπολογιστών (1950-σήμερα) Οι υπολογιστές μετά το 1950 ακολουθούν λίγο-πολύ το μοντέλο von Neumann. Τα μηχανήματα γίνονται γρηγορότερα, μικρότερα, και φθηνότερα, αλλά η αρχή παραμένει σχεδόν η ίδια. Οι ιστορικοί διαιρούν αυτή την περίοδο σε γενιές, με κάθε γενιά να χαρακτηρίζεται από κάποια σημαντική αλλαγή στο υλικό ή το λογισμικό (αλλά όχι και στο μοντέλο). Πρώτη γενιά Η πρώτη γενιά (περίπου μεταξύ 1950 και 1959) χαρακτηρίζεται από την εμφάνιση των εμπορικών υπολογιστών. Κατά τη διάρκεια αυτής της περιόδου οι υπολογιστές χρησιμοποιούνταν μόνο από επαγγελματίες. Ήταν κλειδωμένοι σε δωμάτια στα οποία είχαν πρόσβαση μόνο ο χειριστής και εξειδικευμένο προσωπικό. Οι υπολογιστές ήταν ογκώδεις και χρησιμοποιούσαν ως ηλεκτρονικούς διακόπτες λυχνίες κενού. Εκείνη την εποχή, υπολογιστές διέθεταν μόνο οι μεγάλοι οργανισμοί. Δεύτερη γενιά Οι υπολογιστές της δεύτερης γενιάς (περίπου μεταξύ 1959 και 1965) χρησιμοποιούσαν τρανζίστορ αντί για λυχνίες κενού. Αυτό είχε ως αποτέλεσμα τη μείωση του μεγέθους των υπολογιστών, καθώς επίσης και του κόστους τους, και τους έκανε προσιτούς σε μικρές και μικρομεσαίες επιχειρήσεις. Δημιουργήθηκαν δύο γλώσσες προγραμματισμού υψηλού επιπέδου, η FORTRAN και η COBOL (δείτε το Κεφάλαιο 9), γεγονός που διευκόλυνε τον προγραμματισμό. Αυτές οι δύο γλώσσες διαχώρισαν την προγραμματιστική εργασία από τον χειρισμό του υπολογιστή. Έτσι, έ- νας πολιτικός μηχανικός μπορούσε πλέον να γράψει ένα πρόγραμμα FORTRAN για να λύσει κάποιο πρόβλημα χωρίς να χρειάζεται να γνωρίζει τις λεπτομέρειες της αρχιτεκτονικής των υπολογιστών σε επίπεδο ηλεκτρονικής δομής.

1.5 Κοινωνικά και ηθικά ζητήματα 29 Τρίτη γενιά Η ανακάλυψη του ολοκληρωμένου κυκλώματος (τρανζίστορ, καλωδίωση, και άλλα στοιχεία σε ένα ενιαίο τσιπ) μείωσε το κόστος και το μέγεθος των υπολογιστών ακόμα περισσότερο. Στην αγορά εμφανίστηκαν μίνι-υπολογιστές. Άρχισαν να γίνονται διαθέσιμα τυποποιημένα προγράμματα, γνωστά ως πακέτα λογισμικού (software). Έτσι, μια μικρή επιχείρηση μπορούσε να αγοράσει το πακέτο που χρειαζόταν (π.χ., μια λογιστική εφαρμογή) αντί να γράψει το δικό της πρόγραμμα. Γεννήθηκε μια νέα βιομηχανία, η βιομηχανία του λογισμικού. Αυτή η γενιά οριοθετείται περίπου μεταξύ 1965 και 1975. Τέταρτη γενιά Η τέταρτη γενιά (περίπου μεταξύ 1975 και 1985) χαρακτηρίστηκε από την εμφάνιση των μικροϋπολογιστών. O πρώτος επιτραπέζιος υπολογιστής (ο Altair 8800) έγινε διαθέσιμος το 1975. Οι τεχνολογικές εξελίξεις στην ηλεκτρονική βιομηχανία κατέστησαν δυνατή την τοποθέτηση ολόκληρων υποσυστημάτων υπολογιστών σε μία και μοναδική κάρτα κυκλωμάτων. Τη γενιά αυτή εμφανίστηκαν και τα δίκτυα υπολογιστών (δείτε το Κεφάλαιο 6). Πέμπτη γενιά Αυτή η γενιά που βρίσκεται σε εξέλιξη ξεκίνησε το 1985. Κατά τη διάρκειά της έκαναν την εμφάνισή τους οι φορητοί υπολογιστές (laptop computers) και οι υπολογιστές χειρός (palmtop computers), έγιναν βελτιώσεις στα δευτερεύοντα μέσα αποθήκευσης (CD-ROM, DVD, κ.λπ.), εμφανίστηκαν τα πολυμέσα (multimedia), καθώς και το φαινόμενο της εικονικής πραγματικότητας (virtual reality). 1.5 ΚΟΙΝΩΝΙΚΑ ΚΑΙ ΗΘΙΚΑ ΖΗΤΗΜΑΤΑ Η επιστήμη των υπολογιστών έχει δημιουργήσει ορισμένα δευτερογενή ζητήματα, τα πιο προφανή από τα οποία είναι τα κοινωνικά και τα ηθικά. 1.5.1 Κοινωνικά ζητήματα Οι υπολογιστές έχουν εγείρει ορισμένα ζητήματα, τα οποία θα παρουσιάσουμε στη συνέχεια. Εξάρτηση Η επιστήμη των υπολογιστών έχει αλλάξει αναμφισβήτητα την κοινωνία στην οποία ζούμε. Σύμφωνα με πρόσφατες έρευνες, περισσότερα από τα μισά νοικοκυριά στις ΗΠΑ χρησιμοποιούν υ- πολογιστή για να προσπελάζουν το Διαδίκτυο. Μήπως αυτό σημαίνει ότι μια κοινωνία στην ο- ποία η πλειονότητα των ανθρώπων έχει πρόσβαση σε υπολογιστές θεωρείται καλύτερη κοινωνία; Ορισμένοι πιστεύουν ότι η χρήση υπολογιστών είναι αναπόφευκτη για όλους: Η ζωή είναι πιο δύσκολη χωρίς αυτούς, ενώ άλλοι πιστεύουν ότι οι υπολογιστές έχουν δημιουργήσει ένα είδος εξάρτησης η οποία, όπως και κάθε άλλη εξάρτηση, δυσκολεύει τις ζωές των ανθρώπων. Κοινωνική δικαιοσύνη Η κοινωνική δικαιοσύνη είναι άλλο ένα ζήτημα που συζητιέται συχνά. Όσοι εγείρουν αυτό το ζήτημα υποστηρίζουν ότι η χρήση υπολογιστών στο σπίτι είναι μια πολυτέλεια την οποία δεν μπορούν να απολαμβάνουν όλοι οι άνθρωποι. Το κόστος ενός υπολογιστή, των περιφερειακών συσκευών του, και της μηνιαίας συνδρομής για πρόσβαση στο Διαδίκτυο αποτελεί επιβάρυνση για τους ανθρώπους με χαμηλό εισόδημα. Αυτό σημαίνει ότι τα οφέλη των υπολογιστών τα απολαμβάνουν μόνο οι άνθρωποι με μεσαία ή υψηλά εισοδήματα, ενώ τα στερούνται όσοι έχουν χα-

30 Εισαγωγή μηλά εισοδήματα. Από την άλλη, όσοι αντικρούουν αυτή την άποψη υποστηρίζουν ότι το ίδιο ζήτημα είχε προκύψει και κατά την εμφάνιση των άλλων σύγχρονων υπηρεσιών επικοινωνίας, όπως το τηλέφωνο και η τηλεόραση. Οι τελευταίοι θεωρούν λοιπόν ότι, με την εξέλιξη της τεχνολογίας, θα έρθει η ημέρα όπου ο καθένας θα έχει την οικονομική δυνατότητα να αποκτήσει υπολογιστή και πρόσβαση στο Διαδίκτυο. Ψηφιακό χάσμα Η έννοια του ψηφιακού χάσματος καλύπτει και τις δύο έννοιες της εξάρτησης και της κοινωνικής δικαιοσύνης, τις οποίες περιγράψαμε παραπάνω. Σύμφωνα με αυτή την έννοια, η κοινωνία χωρίζεται σε δύο «κάστες»: σε αυτούς που έχουν τη δυνατότητα να συνδέονται με την υπόλοιπη κοινωνία με ηλεκτρονικό τρόπο, και σε αυτούς που δεν την έχουν. Όποιος ανήκει στην πρώτη κατηγορία μπορεί να επικοινωνεί με άλλους ανθρώπους της ίδιας κατηγορίας μέσω ηλεκτρονικού ταχυδρομείου και να χρησιμοποιεί το Διαδίκτυο για τη δουλειά του και για διασκέδαση. Από την άλλη, όσοι ανήκουν στη δεύτερη κατηγορία χρησιμοποιούν το «αργό», συμβατικό ταχυδρομείο και το τηλέφωνο για να επικοινωνούν, ενώ για να παρακολουθήσουν μια ταινία, πρέπει να πάνε στον κινηματογράφο αφού δεν έχουν τη δυνατότητα να την «κατεβάσουν» από κάποιο καλωδιακό δίκτυο. Αν και αυτό το ψηφιακό χάσμα εξαφανίζεται σταδιακά στις βιομηχανικές χώρες, οι ειδικοί πιστεύουν ότι θα εξακολουθεί να υπάρχει για πολύ καιρό ακόμα στις αναπτυσσόμενες χώρες. 1.5.2 Ηθικά ζητήματα Οι υπολογιστές έχουν δημιουργήσει ορισμένα ηθικά ζητήματα, τα οποία θα παρουσιάσουμε στη συνέχεια. Ιδιωτικό απόρρητο Οι υπολογιστές επιτρέπουν σε δύο μέρη να επικοινωνούν με ηλεκτρονικό τρόπο. Ωστόσο, για τη διατήρηση του απορρήτου (ή της ιδιωτικότητας) αυτών των επικοινωνιών απαιτούνται αρκετές ενέργειες. Μάλιστα, το κόστος για τη διασφάλιση του απορρήτου των ηλεκτρονικών επικοινωνιών είναι μεγάλο. Ένας τρόπος διασφάλισης του απορρήτου είναι με την ασφάλεια δικτύων (Κεφάλαιο 16), η οποία όμως απαιτεί προσπάθεια και κοστίζει ακριβά. Πνευματικά δικαιώματα Ένα άλλο ηθικό ζήτημα των κοινωνιών που χρησιμοποιούν υπολογιστές είναι τα πνευματικά δικαιώματα: Σε ποιον ανήκουν τα δεδομένα; Το Διαδίκτυο έχει δημιουργήσει ευκαιρίες για την κοινή χρήση ιδεών, καθώς και ένα επιπλέον ηθικό ζήτημα, τα ηλεκτρονικά πνευματικά δικαιώματα. Ηλεκτρονική εγκληματικότητα Όπως ισχύει για κάθε καινοτομία, οι υπολογιστές και η τεχνολογία πληροφοριών έχουν δημιουργήσει νέους τύπους εγκληματικότητας. Πολλοί χάκερ έχουν καταφέρει να αποκτήσουν πρόσβαση σε πολλούς υπολογιστές σε ολόκληρο τον κόσμο και να κλέψουν πολλά χρήματα. Οι δημιουργοί ιών υπολογιστών έχουν σχεδιάσει νέους ιούς που στέλνονται μέσω του Διαδικτύου και αλλοιώνουν τις πληροφορίες που βρίσκονται αποθηκευμένες σε υπολογιστές. Παρόλο που σήμερα υπάρχουν διαθέσιμα πολλά προγράμματα προστασίας από ιούς (antivirus programs), οι κοινωνίες πληρώνουν ακριβό τίμημα γι αυτόν τον τύπο εγκλημάτων, τα οποία δεν υπήρχαν πριν την έλευση των υπολογιστών και του Διαδικτύου.

1.6 Η επιστήμη των υπολογιστών ως επαγγελματικός κλάδος 31 Η ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΩΣ ΕΠΑΓΓΕΛΜΑΤΙΚΟΣ ΚΛΑΔΟΣ 1.6 Η ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΩΣ ΕΠΑΓΓΕΛΜΑΤΙΚΟΣ ΚΛΑΔΟΣ Με την εφεύρεση των υπολογιστών δημιουργήθηκε και ένας νέος επαγγελματικός και επιστημονικός κλάδος: η επιστήμη των υπολογιστών. Όπως κάθε άλλος κλάδος, η επιστήμη των υπολογιστών χωρίζεται σε αρκετούς επιμέρους τομείς. Αυτοί οι τομείς κατατάσσονται σε δύο μεγάλες κατηγορίες: στους τομείς συστημάτων (system areas) και τους τομείς εφαρμογών (application areas). Οι τομείς συστημάτων καλύπτουν θέματα που σχετίζονται άμεσα με τη δημιουργία υλικού και λογισμικού, όπως η αρχιτεκτονική υπολογιστών, η δικτύωση υπολογιστών, τα ζητήματα ασφαλείας, τα λειτουργικά συστήματα, οι αλγόριθμοι, οι γλώσσες προγραμματισμού, και η τεχνολογία λογισμικού. Οι τομείς εφαρμογών καλύπτουν θέματα που σχετίζονται με τη χρήση των υπολογιστών, όπως οι βάσεις δεδομένων και η τεχνητή νοημοσύνη. Το βιβλίο αυτό καλύπτει σε βάθος ό- λους αυτούς τους τομείς. Μετά την ανάγνωση του βιβλίου, ο αναγνώστης θα έχει αρκετές πληροφορίες ώστε να μπορεί να επιλέξει την ειδικότητα που τον ενδιαφέρει. 1.7 ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΒΙΒΛΙΟΥ Μετά από αυτό το εισαγωγικό κεφάλαιο, το βιβλίο χωρίζεται σε πέντε μέρη. 1.7.1 Μέρος I: Αναπαράσταση δεδομένων και πράξεις Το μέρος αυτό περιλαμβάνει τα Κεφάλαια 2, 3, και 4. Το Κεφάλαιο 2 περιγράφει τα αριθμητικά συστήματα, δηλαδή τον τρόπο αναπαράστασης ποσοτήτων με σύμβολα. Το Κεφάλαιο 3 ασχολείται με τον τρόπο αποθήκευσης διαφόρων ειδών δεδομένων στον υπολογιστή. Στο Κεφάλαιο 4 περιγράφονται ορισμένες βασικές πράξεις με bit. 1.7.2 Μέρος II: Υλικό υπολογιστών Το μέρος αυτό περιλαμβάνει τα Κεφάλαια 5 και 6. Στο Κεφάλαιο 5 δίνεται μια γενική ιδέα του υλικού υπολογιστών, όπου περιγράφονται διαφορετικές διατάξεις υπολογιστών. Στο Κεφάλαιο 6 θα δούμε πώς συνδέονται μεμονωμένοι υπολογιστές ώστε να δημιουργούν δίκτυα και διαδίκτυα υπολογιστών. Πιο συγκεκριμένα, σε αυτό το κεφάλαιο περιγράφονται ορισμένα θέματα που σχετίζονται με το Διαδίκτυο και τις εφαρμογές του. 1.7.3 Μέρος III: Λογισμικό υπολογιστών Το μέρος αυτό περιλαμβάνει τα Κεφάλαια 7, 8, 9, και 10. Στο Κεφάλαιο 7 περιγράφονται τα λειτουργικά συστήματα, δηλαδή το λογισμικό του συστήματος που ελέγχει την πρόσβαση στο υλικό από τους χρήστες είτε πρόκειται για ανθρώπους είτε για προγράμματα. Στο Κεφάλαιο 8 θα δούμε πώς γράφονται αλγόριθμοι για την επίλυση προβλημάτων. Στο Κεφάλαιο 9 γίνεται μια ανασκόπηση στις σύγχρονες γλώσσες προγραμματισμού. Τέλος, το Κεφάλαιο 10 περιγράφει συνοπτικά την τεχνολογία λογισμικού, δηλαδή την προσέγγιση που ακολουθείται στην ανάπτυξη λογισμικού. 1.7.4 Μέρος IV: Οργάνωση και αφαίρεση δεδομένων Το μέρος αυτό συμπληρώνει το Μέρος Ι. Στην επιστήμη των υπολογιστών, τα ατομικά δεδομένα συλλέγονται σε εγγραφές, αρχεία, και βάσεις δεδομένων. Η αφαίρεση δεδομένων (data abstraction) επιτρέπει στον προγραμματιστή να δημιουργεί αφηρημένες αναπαραστάσεις των δεδομένων. Το Μέρος IV περιλαμβάνει τα Κεφάλαια 11, 12, 13, και 14. Στο Κεφάλαιο 11 περιγράφονται οι δομές δεδομένων, δηλαδή η συλλογή δεδομένων του ίδιου ή διαφορετικού τύπου σε μία

32 Εισαγωγή κατηγορία. Το Κεφάλαιο 12 ασχολείται με τους αφηρημένους τύπους δεδομένων. Στο Κεφάλαιο 13 θα δούμε πώς χρησιμοποιούνται διαφορετικές δομές αρχείων για διαφορετικούς σκοπούς. Τέλος, στο Κεφάλαιο 14 περιγράφονται οι βάσεις δεδομένων. 1.7.5 Μέρος V: Προχωρημένα θέματα Το Μέρος V περιέχει προχωρημένα θέματα τα οποία θα συναντήσουν οι φοιτητές της επιστήμης των υπολογιστών στην πορεία των σπουδών τους. Το μέρος αυτό περιλαμβάνει τα Κεφάλαια 15, 16, 17, και 18. Στο Κεφάλαιο 15 περιγράφεται η συμπίεση δεδομένων, η οποία χρησιμοποιείται ευρύτατα στη σύγχρονη επικοινωνία δεδομένων. Το Κεφάλαιο 16 διερευνά ορισμένα θέματα που σχετίζονται με την ασφάλεια, η οποία γίνεται όλο και πιο σημαντική κατά την επικοινωνία μέσω μη ασφαλών καναλιών. Στο Κεφάλαιο 17 περιγράφεται η θεωρία υπολογισμού: τι μπορεί και τι δεν μπορεί να υπολογιστεί. Τέλος, στο Κεφάλαιο 18 παρέχεται ένα γενικό περίγραμμα της τεχνητής νοημοσύνης, ένα θέμα που παρουσιάζει συνεχείς προκλήσεις στον χώρο της επιστήμης των υπολογιστών. 1.8 ΣΥΝΟΔΕΥΤΙΚΟ ΥΛΙΚΟ ΚΕΦΑΛΑΙΟΥ 1.8.1 Προτεινόμενα βιβλία Για περισσότερες λεπτομέρειες σχετικά με τα θέματα που περιγράφονται σε αυτό το κεφάλαιο, σας προτείνουμε τα παρακάτω βιβλία: Schneider, G. M. και Gersting, J. L. Invitation to Computer Science, Boston, MA: Course Technology, 2004 Dale, N. και Lewis, J. Computer Science Illuminated, Sudbury, MA: Jones and Bartlett, 2004 Patt, Y. και Patel, S. Introduction to Computing Systems, New York: McGraw-Hill, 2004 1.8.2 Βασικοί όροι αλγόριθμος 28 αριθμητική και λογική μονάδα (ΑΛΜ) 23 γλώσσες προγραμματισμού 26 δεδομένα εισόδου 20 δεδομένα εξόδου 20 δομημένα προγράμματα 26 εντολή (οδηγία) 23 επεξεργαστής δεδομένων 20 λειτουργικό σύστημα 26 μηχανή Turing 20 μνήμη 23 μονάδα ελέγχου 23 μοντέλο Turing 19 μοντέλο von Neumann 19 ολοκληρωμένο κύκλωμα 29 πρόγραμμα 20 τεχνολογία λογισμικού 26 ψηφιακό χάσμα 30