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

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

Μια πρακτική εισαγωγή
Μετάφραση: Γεωργακόπουλος Γεώργιος Φρ. Ιωάννης Παπαδόγγονας

Για να διαβάσετε τον πρόλογο της ελληνικής έκδοσης πατήστε εδώ.

Για να διαβάσετε το 1ο κεφάλαιο του βιβλίου πατήστε εδώ.

Για να διαβάσετε το 1ο κεφάλαιο του βιβλίου πατήστε εδώ.

Λεξικό βασικών όρων

Έντυπο 38,00 26,60 Προσθήκη στο καλάθι

Oι προπτυχιακοί φοιτητές επιστήμης υπολογιστών και οι μηχανικοί υπολογιστών έχουν κατά κανόνα πρακτικό προσανατολισμό: μελετούν την υπολογιστική επειδή αγαπούν τον προγραμματισμό και έχουν καλές επιδόσεις σε αυτόν. Το βιβλίο απευθύνεται κατά κύριο λόγο σε αυτόν τον πυρήνα σπουδαστών. Το επίπεδο παρουσίασης δεν απαιτεί καμία γνώση αρχιτεκτονικής υπολογιστών, λειτουργικών συστημάτων, τυπικών γλωσσών και θεωρίας αυτομάτων, μαθηματικής λογικής ή επαγωγικών τεχνικών απόδειξης. Το κυρίως ζητούμενο από ένα μάθημα που πραγματεύεται τις έννοιες των γλωσσών προγραμματισμού είναι να βοηθήσει τον φοιτητή να κατανοήσει τις γλώσσες προγραμματισμού σε ένα ασυνήθιστο επίπεδο αφαίρεσης. Για να επιτευχθεί αυτός ο στόχος, το βιβλίο περιλαμβάνει πολλές ασκήσεις και παραδείγματα «πραγματικού» προγραμματισμού, ώστε να ενθαρρύνει τους σπουδαστές των οποίων το ενδιαφέρον για τον προγραμματισμό είναι πρωτίστως πρακτικού χαρακτήρα. Δεν προϋποθέτει υψηλή μαθηματική ωριμότητα εκ μέρους του αναγνώστη. Είναι σχεδιασμένο ώστε να καθοδηγήσει τους σπουδαστές να επεξεργαστούν νοητικά τις αφηρημένες έννοιες των γλωσσών προγραμματισμού, με αφετηρία απλές ασκήσεις προγραμματισμού. Τα κεφάλαια του βιβλίου χωρίζονται σε δύο κατηγορίες: πρακτικού και φιλοσοφικού χαρακτήρα. Τα πρώτα είναι αυτοτελή «αλφαβητάρια» για τρεις γλώσσες προγραμματισμού διαφορετικών οικογενειών: ML, Java και Prolog. Τα φιλοσοφικού χαρακτήρα κεφάλαια παρουσιάζουν τη θεωρητική πλευρά: τις θεμελιώδεις αρχές των γλωσσών προγραμματισμού. Τα κεφάλαια αυτά εναλλάσσονται με τα κεφάλαια πρακτικού χαρακτήρα, σε μια αλληλουχία που διευκολύνει την παρουσίαση των θεωρητικών ζητημάτων, έτσι ώστε η σύνδεσή τους με την προγραμματιστική πρακτική να είναι όσο το δυνατόν εμφανέστερη.

ΠΕΡΙΕΧΟΜΕΝΑ

Πρόλογος στην ελληνική έκδοση
Πρόλογος
Ευχαριστίες

KΕΦΑΛΑΙΟ 1: Γλώσσες προγραμματισμού   1
1.1.  Εισαγωγή 1
1.2.  Η εκπληκτική ποικιλία 2
Προστακτικές γλώσσες 2
Συναρτησιακές γλώσσες 3
Λογικοκεντρικές γλώσσες 3
Οντοστρεφείς γλώσσες 4
1.3.  Οι παράξενες αντιμαχίες 5
1.4.  Η αξιοπερίεργη εξέλιξη 7
1.5.  Οι πολλαπλές διασυνδέσεις 7
1.6.  Σύντομο σχόλιο για τις Διεπαφές για Προγραμματισμό Εφαρμογών 9
1.7.  Ανακεφαλαίωση 9

KΕΦΑΛΑΙΟ 2:  Ο ορισμός των συντακτικών κανόνων 11
2.1.  Εισαγωγή 11  2.2.  Ενδεικτική γραμματική για την αγγλική γλώσσα 11
2.3.  Ενδεικτική γραμματική για μια γλώσσα προγραμματισμού 13
2.4.  Ορισμός μιας γραμματικής: η μορφή ΒΝ 14
2.5.  Η σχεδίαση μιας γραμματικής 16
2.6.  Η λεκτική και η φραστική δομή μιας γλώσσας 18
2.7.  Άλλες μορφές γραμματικής 20
2.8. Ανακεφαλαίωση 24
Ασκήσεις 25
Βιβλιογραφία 26

KΕΦΑΛΑΙΟ 3:  Σύνταξη και σημασιολογία: το σημείο συνάντησης 27
3.1.  Εισαγωγή 27
3.2.  Τελεστές 28
3.3.  Προτεραιότητα 29
3.4.  Προσεταιριστικότητα 32
3.5.  Άλλες πολυσημίες 35
3.6.  Στρυφνές γραμματικές 37
3.7.  Συντακτικά δένδρα και η μορφή EBN των γραμματικών 38
3.8.  Αφηρημένα συντακτικά δένδρα 39
3.9.  Ανακεφαλαίωση 40
Ασκήσεις 40
Βιβλιογραφία 41

KΕΦΑΛΑΙΟ 4:  Γλωσσικά συστήματα 43
4.1.  Εισαγωγή 43
4.2.  Η τυπική ακολουθία εργασιών 43
4.3.  Παραλλαγές της τυπικής ακολουθίας 49
4.4.  Συναπτικά στάδια 57
4.5.  Αποσφαλματωτές 59
4.6.  Εκτελεστική υποστήριξη 60
4.7.  Ανακεφαλαίωση 61
Ασκήσεις 62

KΕΦΑΛΑΙΟ 5:  Πρώτη επαφή με τη γλώσσα ML 67
5.1.  Eισαγωγή 67
5.2.  Πρώτα βήματα με το γλωσσικό σύστημα ML 67
5.3.  Σταθερές 69
5.4.  Τελεστές 70
5.5.  Υποθετικές εκφράσεις 73
5.6.  Τυπομετατροπή και εφαρμογή συναρτήσεων 73
5.7.  Ορισμός μεταβλητών 75
5.8.  Ρακοσυλλογή 76
5.9.  Πλειάδες και κατάλογοι 77
5.10.  Ορισμοί συναρτήσεων  81
5.11.  Τύποι και επισημείωση τύπων 85
5.12.  Ανακεφαλαίωση 86
Ασκήσεις 87
Βιβλιογραφία 89

KΕΦΑΛΑΙΟ 6:  Τύποι 91
6.1.  Εισαγωγή 91
6.2.  Μια ζούγκλα από τύπους  92
6.3.  Η χρήση των τύπων 103
6.4.  Ανακεφαλαίωση 107
Ασκήσεις 108

KΕΦΑΛΑΙΟ 7:  Δεύτερη επαφή με τη γλώσσα ML 109
7.1.  Εισαγωγή 109
7.2.  Γνωστά μας μορφότυπα 109
7.3.  Άλλα παραδείγματα απλών μορφοτύπων 110
7.4.  Σύνθετα μορφότυπα 111
7.5.  Σύνοψη των μορφοτύπων ML μέχρι στιγμής 112
7.6.  Εναλλακτικά μορφότυπα για συναρτήσεις 113
7.7.  Το μορφοτυπικό ύφος γραφής προγραμμάτων 114
7.8.  Τοπικοί ορισμοί μεταβλητών 116
7.9.  Ένθετοι ορισμοί συναρτήσεων 120
7.10.  Ανακεφαλαίωση 122
Ασκήσεις 122

KΕΦΑΛΑΙΟ 8:  Πολυμορφισμός 125
8.1.  Εισαγωγή 125
8.2.  Υπερφόρτιση 125
8.3.  Μετασκευή παραμέτρων 128
8.4.  Παραμετρικός πολυμορφισμός 131
8.5.  Υποτυπικός πολυμορφισμός 133
8.6.  Ανακεφαλαίωση 135
Ασκήσεις 137
Βιβλιογραφία 139

KΕΦΑΛΑΙΟ 9:  Τρίτη επαφή με τη γλώσσα ML 141
9.1.  Εισαγωγή 141
9.2.  Μορφότυπα ? η συνέχεια 141
9.3.  Τιμές συναρτήσεων και ανώνυμες συναρτήσεις 143
9.4.  Υψηλοτάξιες συναρτήσεις και επαλληλία παραμέτρων 146
9.5.  Προκαθορισμένες υψηλοτάξιες συναρτήσεις 148
9.6.  Ανακεφαλαίωση 153
Ασκήσεις  153

KΕΦΑΛΑΙΟ 10: Εμβέλεια 157
10.1.  Εισαγωγή 157
10.2.  Ορισμοί και εμβέλεια 158
10.3.  Εμβελειοθέτηση μέσω παραγράφων 160
10.4.  Εμβελειοθέτηση με επώνυμους ονοματοχώρους 163
10.5.  Εμβελειοθέτηση με πρωταρχικούς ονοματοχώρους 167
10.6.  Δυναμική εμβελειοθέτηση 169
10.7.  Λίγα σχόλια για την τμηματική μετάφραση 171
10.8.  Ανακεφαλαίωση 172
Ασκήσεις 173
Βιβλιογραφία 175

KΕΦΑΛΑΙΟ 11:  Τέταρτη επαφή με τη γλώσσα ML 177
11.1.  Εισαγωγή 177
11.2.  Απαριθμήματα 177
11.3.  Τιμοκατασκευαστές με παραμέτρους 179
11.4.  Τυποκατασκευαστές με παραμέτρους 181
11.5.  Αναδρομικοί τυποκατασκευαστές 183
11.6.  Ανακεφαλαίωση και αποχαιρετισμός στην ML 188
Ασκήσεις 190
Βιβλιογραφία 191

KΕΦΑΛΑΙΟ 12:  Οι θέσεις μνήμης για τις μεταβλητές  193
12.1.  Εισαγωγή 193
12.2.  Ενεργοειδικές μεταβλητές 193
12.3.  Δελτία ενεργοποίησης 196
12.4.  Στατική δέσμευση των δελτίων ενεργοποίησης 197
12.5.  Στοίβες και δυναμική δέσμευση των δελτίων ενεργοποίησης 198
12.6.  Χειρισμός ένθετων ορισμών συναρτήσεων 205
12.7.  Οι συναρτήσεις ως παράμετροι 210
12.8.  Μακρόβιες συναρτήσεις 213
12.9.  Ανακεφαλαίωση 215
Ασκήσεις 216

KΕΦΑΛΑΙΟ 13:  Πρώτη επαφή με τη γλώσσα Java 219
13.1.  Eισαγωγή 219
13.2.  Με τις οντότητες κατά νου 220
13.3.  Απλές εκφράσεις και εντολές 222
13.4.  Ορισμοί κλάσεων 238
13.5.  Παραπομπές και δείκτες 243
13.6.  Πρώτη επαφή με ένα γλωσσικό σύστημα Java 245
13.7.  Ανακεφαλαίωση 248
Ασκήσεις 248
Βιβλιογραφία 251

KΕΦΑΛΑΙΟ 14:  Διαχείριση μνήμης 253
14.1.  Εισαγωγή 253
14.2.  Ένα μοντέλο μνήμης με χρήση συστοιχιών της Java  253
14.3.  Στοίβες 256
14.4.  Σωροί 260
14.5.  Τρέχουσες σωροπαραπομπές 274
14.6.  Ανακεφαλαίωση 284
Ασκήσεις 284
Βιβλιογραφία 287

KΕΦΑΛΑΙΟ 15:  Δεύτερη επαφή με τη γλώσσα Java 289
15.1.  Εισαγωγή 289
15.2.  Η υλοποίηση διεπαφών 289
15.3.  Επέκταση κλάσεων  295
15.4.  Επέκταση και υλοποίηση 301
15.5.  Πολλαπλή κληρονόμηση και υποκατάστατά της 302
15.6.  Αρχέτυπα και υποκατάστατά τους 304
15.7.  Ανακεφαλαίωση 308
Ασκήσεις 308

KΕΦΑΛΑΙΟ 16:  Οντοστρέφεια 317
16.1.  Εισαγωγή 317
16.2.  Οντοστρεφής προγραμματισμός 318
16.3.  Οντοστρεφείς γλώσσες – απάνθισμα χαρακτηριστικών 326
16.4.  Ανακεφαλαίωση 333
Ασκήσεις  334
Βιβλιογραφία 337

KΕΦΑΛΑΙΟ 17:  Τρίτη επαφή με τη γλώσσα Java  339
17.1.  Εισαγωγή 339
17.2.  Εκπέμψιμες οντότητες 340
17.3.  Παραλαβή εξαιρέσεων 342
17.4.  Εκπομπή εξαιρέσεων 348
17.5.  Ελεγκτέες εξαιρέσεις 351
17.6.  Διαχείριση σφαλμάτων 354
17.7.  Και «τελικά» 365
17.8.  Ανακεφαλαίωση και αποχαιρετισμός στην Java 367
Ασκήσεις 368
Βιβλιογραφία 379

KΕΦΑΛΑΙΟ 18: Παράμετροι 381
18.1.  Εισαγωγή 381
18.2.  Αντιστοιχία 382
18.3.  Τιμοδοτική διαβίβαση 383
18.4.  Τιμοληπτική διαβίβαση 386
18.5.  Δοσοληπτική διαβίβαση 389
18.6.  Παραπεμπτική διαβίβαση 391
18.7.  Διαβίβαση μέσω ανάπτυξης μακροεντολής 396
18.8.  Ονομαστική διαβίβαση 399
18.9.  Οικονομική (ονομαστική) διαβίβαση 401
18.10.  Ζητήματα προδιαγραφών 403
18.11.  Ανακεφαλαίωση 404
Ασκήσεις 405

KΕΦΑΛΑΙΟ 19:  Πρώτη επαφή με τη γλώσσα Prolog 407
19.1.  Εισαγωγή 407
19.2.  Οι δομικοί λίθοι: οι όροι της Prolog 408
19.3.  Πρώτα βήματα με ένα γλωσσικό σύστημα Prolog 410
19.4.  Κανόνες 415
19.5.  Οι δύο όψεις της Prolog 418
19.6.  Ένα μικρό σχόλιο για την ερμηνεία των όρων 420
19.7.  Τελεστές 421
19.8.  Κατάλογοι 423
19.9.  Αρνήσεις και αποτυχίες 431
19.10.  Το είδος των εργασιών για τις οποίες προσφέρεται η Prolog 433
19.11.  Ανακεφαλαίωση 436
Ασκήσεις 436
Βιβλιογραφία 439

KΕΦΑΛΑΙΟ 20:  Δεύτερη επαφή με τη γλώσσα Prolog 441
20.1.  Εισαγωγή 441
20.2.  Ενοποίηση 441
20.3.  Μια διαδικαστική θεώρηση 445
20.4.  Μια υλοποιητική θεώρηση 449
20.5.  Μια αφηρημένη θεώρηση – τα αποδεικτικά δένδρα 454
20.6.  Η πιο ανάλαφρη όψη της Prolog 460
20.7.  Ανακεφαλαίωση 471
Ασκήσεις 472

KΕΦΑΛΑΙΟ 21:  Κοστολόγηση 475
21.1.  Εισαγωγή 475
21.2.  Κοστολόγηση πράξεων σε καταλόγους 476
21.3.  Κοστολόγηση της κλήσης συναρτήσεων 481
21.4.  Κοστολόγηση της αναζήτησης στην Prolog 488
21.5.  Κοστολόγηση πράξεων σε συστοιχίες 490
21.6.  Εφήμερες αρχές κοστολόγησης  496
21.7.  Ανακεφαλαίωση 498
Ασκήσεις 499

KΕΦΑΛΑΙΟ 22:   Τρίτη επαφή με τη γλώσσα Prolog  503
22.1.  Εισαγωγή 503
22.2.  Αριθμητικοί υπολογισμοί 503
22.3.  Διερεύνηση προβληματοχώρου 510
22.4.  Ανακεφαλαίωση και αποχαιρετισμός στην Prolog 522
Ασκήσεις 523
Βιβλιογραφία 524

KΕΦΑΛΑΙΟ 23:   Τυπική σημασιολογία 527
23.1.  Εισαγωγή 527
23.2.  Γλώσσα Micro-1 527
23.3.  Γλώσσα Micro-2: η προσθήκη μεταβλητών 533
23.4.  Γλώσσα Micro-3: η προσθήκη συναρτήσεων 538
23.5.  Άλλα είδη τυπικής σημασιολογίας 546
23.6.  Ανακεφαλαίωση 550
Ασκήσεις 551
Βιβλιογραφία 554

KΕΦΑΛΑΙΟ 24:  Η ιστορία των γλωσσών προγραμματισμού 555
24.1.  Εισαγωγή 555
24.2.  Η προϊστορία του προγραμματισμού 555
24.3.  Πρώιμες γλώσσες προγραμματισμού 559
24.4.  Οι γλώσσες που εξετάσαμε σε αυτό το βιβλίο 575
24.5.  Ανακεφαλαίωση 581
Βιβλιογραφία 582

Επίλογος 585
Ευρετήριο 587
Γλωσσάριο 601

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

  • Μετάφραση
    Γεωργακόπουλος Γεώργιος Φρ.
    Ιωάννης Παπαδόγγονας
  • Επιστημονική επιμέλεια
    Γεωργακόπουλος Γεώργιος Φρ.
    Ιωάννης Παπαδόγγονας
  • Επιμέλεια έκδοσης
    Ιωάννης Παπαδόγγονας
  • ISBN
    978-960-524-282-4
  • Κωδικός στον Εύδοξο
    246
  • A' έκδοση
    2009
  • Τρέχουσα έκδοση
    2009
  • Τίτλος πρωτότυπου
    "Modern Programming Languages. A Practical Introduction", Franklin, Beedle & Associates Inc., 2003
  • Τεχνικά χαρακτηριστικά
    640 17 24 σκληρόδετο
  • Τιμή καταλόγου
    38,00