forked from pibook/text
-
Notifications
You must be signed in to change notification settings - Fork 4
/
ch08.txt
186 lines (116 loc) · 57 KB
/
ch08.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# Τεχνολογία
![](kay-software.md){.epigraph}
![](abs-technology.md){.include}
## Τεχνολογικά προϊόντα
Στην τεχνολογία λογισμικού υπάρχουν συνήθως πολλά επίπεδα αφαίρεσης
που κάνουν δύσκολη την διάκριση ανάμεσα σε βασική τεχνολογία και τεχνολογικό προϊόν.
Επίσης, συμβαίνει συχνά κάποια δημοφιλή προϊόντα να δίνουν το όνομα τους σε όλην την κατηγορία,
όπως ακριβώς συμβαίνει σε πολλά καταναλωτικά προϊόντα. Για παράδειγμα,
υπήρχε μια περίοδος που η οδοντόκρεμα λεγόταν kolynos και η χλωρίνη καθαρισμού λεγόταν kleenex.
Αντίστοιχα, ο παγκόσμιος ιστός δεν είναι τεχνολογία,
αλλά ένα δημοφιλές προϊόν της τεχνολογικής κατηγορίας των υπερμέσων.
Το ίδιο ισχύει και για τις δημοφιλείς γλώσσες αντικειμενοστραφούς προγραμματισμού,
όπως είναι η Java, η οποία δημιουργήθηκε για εξυπηρετήσει τις ανάγκες μιας εποχής και κυρίως αυτές μια εταιρείας που λειτουργούσε σε δεδομένο πολιτισμικό πλαίσιο,
οπότε έχει πολλές ιδιότητες διαφορετικές από αυτές της Smalltalk,^[@ingalls2020evolution]
που ήταν η πρώτη γλώσσα του είδους είκοσι χρόνια νωρίτερα. ^[@roszak1986satori]
Η διάκριση ανάμεσα σε τεχνολογία και προϊόν γίνεται ακόμη δυσκολότερη
στην περίπτωση που πολλές διαφορετικές εταιρείες χρησιμοποιούν την ίδια έννοια,
όπως για παράδειγμα τα αρχεία και τις εφαρμογές.
Η συμφωνία χρήσης αρχείων και εφαρμογών σε προϊόντα διαφορετικών εταιρειών
δημιουργεί την ψευδαίσθηση ότι αυτά είναι βασικές τεχνολογίες διάδρασης,
αλλά στην πράξη είναι απλά δημοφιλείς και οικείες συμβάσεις
για χρήστες που δεν θέλουν να κατανοήσουν άλλες κατευθύνσεις της τεχνολογίας διάδρασης.
^[fig:norton-commander]
^[fig:sugar-neighborhood]
![](norton-commander.md){.figure}
![](sugar-neighborhood.md){.figure}
Η κατανόηση της τεχνολογίας απαιτεί αρχικά μια σημειωτική ανάλυση
των βασικών λέξεων που χρησιμοποιούμε,^[@mumford2010technics @ihde2012technics]
γιατί υπάρχουν πολλά προϊόντα τα οποία θεωρούνται τεχνολογίες, αλλά δεν είναι.^[@nelson2010possiplex]
Αν θέλουμε να έχουμε κατανόηση πέρα από τα συμφέροντα των κατασκευαστών και τις εμπορικές συγκυρίες, τότε η ονομασία μιας τεχνολογίας διάδρασης θα πρέπει να σχετίζεται άμεσα με την λειτουργία που πραγματικά κάνει. Για παράδειγμα, το σύστημα SwyftWare σχεδιάστηκε από τον Jef Raskin για να κάνει επεξεργασία κειμένου, που είναι μια από τις πιο δημοφιλείς χρήσεις για τον επιτραπέζιο υπολογισμό.^[@raskin2000humane] Για αυτόν τον σκοπό, από την πλευρά του χρήστη, δεν έχει ούτε λειτουργικό σύστημα, ούτε σύστημα αρχείων, ούτε εφαρμογές, αφού όλα αυτά είναι απλά προϊόντα και όχι βασικές τεχνολογίες που είναι απαραίτητες για να έχουμε μια ποιοτική διάδραση με την επεξεργασία μικρών ή μεγάλων κειμένων και με ότι αυτή συνδέεται, όπως σημειώσεις και αλληλογραφία.
Το σύστημα αρχείων είναι η πιο δημοφιλής περίπτωση προϊόντος που οι περισσότεροι θεωρούν πως είναι τεχνολογία. Στην πραγματικότητα, η θεώρηση ενός συστήματος λογισμικού ως σύνολο αρχείων έγινε δημοφιλής με το σύστημα UNIX. Η σημασία των αρχείων ενδυναμώθηκε στην συνέχεια από την επιφάνεια εργασίας και τα έγγραφα που αναπαραστάθηκαν ως αρχεία. Τόσο το υλικό του συστήματος, όσο και το βασικό επίπεδο λογισμικού δεν έχουν αρχεία, τα οποία είναι ένα κατασκεύασμα που εξυπηρετεί καλά πολλούς σκοπούς, αλλά σίγουρα δεν είναι ο μόνος τρόπος οργάνωσης του λογισμικού. Για παράδειγμα, την ίδια περίοδο που οι μηχανικοί στα Bell Labs κατασκεύασαν το σύστημα αρχείων του UNIX, οι μηχανικοί στο Xerox PARC κατασκεύασαν μια εναλλακτική οργάνωση του λογισμικού που βασίζεται στα αντικείμενα, τα οποία ανταλλάσσουν μηνύματα. Επίσης, η επεξεργασία εγγράφων κειμένου στο SwyftWare δεν είχε αρχεία, όπως αρχεία δεν είχαν οι αρχικές εκδόσεις του λειτουργικού συστήματος iOS για τις κινητές συσκευές της Apple.
Αμέσως μετά τα αρχεία, το λειτουργικό σύστημα και οι εφαρμογές του επιτραπέζιου και κινητού υπολογισμού αποτελούν σημαντικά παραδείγματα προϊόντων, τα οποία όμως δεν είναι βασική τεχνολογία για το λογισμικό διάδρασης. Το λειτουργικό σύστημα παρέχει στον προγραμματιστή και στον απλό χρήση ένα ενιαίο περιβάλλον διάδρασης για πολλές διαφορετικές εφαρμογές. Το λειτουργικό σύστημα είναι μια ιδέα χρήσιμη για πολύ ακριβά μηχανήματα για τα οποία δεν γνωρίζουμε τις πιθανές εφαρμογές τους. Από την πλευρά
του χρήστη, για μια δεδομένη λειτουργία, όπως η επεξεργασία κειμένου, το λογισμικό διάδρασης δεν χρειάζεται να έχει ενδιάμεσα επίπεδα ή αρχιτεκτονικές της πληροφορίας που εξυπηρετούν και άλλους σκοπούς. Ειδικά οι εφαρμογές, όπως τις γνωρίζουμε από τις δημοφιλείς γραφικές διεπαφές σε επιτραπέζια και κινητά συστήματα δημιουργούν ένα περιβάλλον χρήστη με έμφαση στην κατανάλωση παρά στην δημιουργία. Πράγματι, αν μια εφαρμογή δεν έχει μια λειτουργία, τότε ο χρήστης θα πρέπει να αγοράσει κάποια άλλη
εφαρμογή που πιθανόν είναι πολύ παρόμοια με την αρχική. Επίσης, πολλές λειτουργίες παγιδεύονται σε μια εφαρμογή και δεν μπορούν να χρησιμποιηθούν σε άλλη ή να γίνει μια σύνθεση τους με τρόπο που να βολεύει. Για παράδειγμα, η γραμμή εντολών όπως έγινε αρχικά γνωστή με το Unix δεν περιέχει εφαρμογές, αλλά την δυνατότητα διασύνδεσης εντολών για την δημιουργία σύνθετων προγραμμάτων, που μπορούν να κάνουν ότι και μια εφαρμογή, χωρίς να παγιδεύονται σε ένα κλειστό κουτί. Από τις αρχές της δεκαετίας
του 1980, ο Gary Gildall είχε διαπιστώσει ότι ακόμη και όταν υπάρχει ανάγκη για διακριτό λειτουργικό σύστημα και εφαρμογές, αυτά δεν θα πρέπει να φτιάχνονται από τον ίδιο κατασκευαστή, γιατί δημιουργείται σύγκρουση συμφερόντων.^[@computer1993connections]
Η γραφική διεπαφή των δημοφιλών επιτραπέζιων συστημάτων όπως είναι τα Windows, MacOS, GNOME, συνήθως αποτελείται από παράθυρα που αντιπροσωπεύουν εφαρμογές ή έγγραφα, καθώς επίσης και από μενού εργαλείων που εμφανίζονται ως εικονίδια. Όπως ακριβώς είδαμε και στις προηγούμενες περιπτώσεις προϊόντων παραπάνω, αυτή η τόσο δημοφιλής οργάνωση και η σημασιολογία των γραφικών στοιχείων είναι ένα ακόμη δημοφιλές προϊόν, το οποίο οι περισσότεροι θεωρούν ως τεχνολογία χωρίς εναλλακτικές. Πράγματι είναι πολύ δύσκολο να εντοπίσουμε εμπορικές εναλλακτικές καθώς η ευχρηστία αυτού του μοντέλου έχει επικρατήσει για πολλές δεκαετίες και οποιαδήποτε αλλαγή είναι τουλάχιστον τόσο δύσκολη όσο η οδήγηση από την αντίθετη κατεύθυνση. Η ευχρηστία αυτού του μοντέλου διάδρασης μπορεί να ερμηνευτεί τόσο από καθολική επικράτηση του, όσο και από την οικειότητα που έχει δημιουργηθεί, καθώς είναι το πιο απλό στην εκμάθηση, ειδικά για περιστασιακούς χρήστες. Τα εναλλακτικά συστήματα γραφικής διεπαφής που υπάρχουν βασίζονται περισσότερο στις προσαρμογές που θα κάνει ένας προγραμματιστής ή είναι λιγότερο εύχρηστα γιατί απευθύνονται σε συχνούς χρήστες μεγαλύτερης δεξιότητας. Για παράδειγμα τα συστήματα Xerox Cedar και Oberon δημιουργήθηκαν με έμπνευση το Alto, αλλά με χρήση δομημένης γλώσσας προγραμματισμού όπως είναι οι Mesa και η Pascal. Αυτά τα ερευνητικά συστήματα δίνουν κεντρικό ρόλο στα έγγραφα, τα οποία εμφανίζονται στα παράθυρα, ενώ η διάδραση γίνεται με σύνθεση εντολών όπως στο UNIX, οι οποίες επιτρέπουν τους υπερσυνδέσμους ανάμεσα στα έγγραφα καθώς και τον διαμοιρασμό τους με άλλους χρήστες. Ο παγκόσμιος ιστός και τα κοινωνικά δίκτυα είναι τα πιο πρόσφατα παραδείγματα προϊόντων, τα οποία όμως δεν αποτελούν βασικές τεχνολογίες.
Η τεχνολογία του αντικειμενοστραφούς προγραμματισμού έχει γίνει δημοφιλείς με γλώσσες προγραμματισμού όπως η Java και η C++, αλλά αυτές όχι μόνο είναι απλά προϊόντα, αλλά και έχουν συγκεκριμένες ιδιότητες που δεν ταιριάζουν με την αρχική σχεδίαση. Η αρχική σχεδίαση και υλοποίηση του αντικειμενοστραφούς προγραμματισμού από τον Άλαν Κέη ήταν εμπνευσμένη από την περιοχή της βιολογίας, τα κύταρα, και την πολύπλοκη κλίμακα των ζωντανών οργανισμών. Αντί να βασίζεται σε πολύπλοκες δομές δεδομένων, η
Smalltalk βασίζεται σε πολύ απλές δομές που ανταλλάσσουν μηνύματα μεταξύ τους, έτσι ώστε να είναι εφικτή η δημιουργία κλίμακας από απλά δομικά στοιχεία. Για την δημιουργία πολύπλοκων συστημάτων δεν υπάρχει λόγος να έχουμε πολύπλοκες γλώσσες προγραμματισμού, αφού αρκεί να έχουμε ένα συμβολικό σύστημα που ταιριάζει στο πεδίο εφαρμογής. Για τον σκοπό αυτό, τα σύγχρονα συστήματα που βασίζονται στην φιλοσοφία της Smalltalk κατασκευάζονται με την σταδιακή υλοποίηση ενός μεταφραστή που είναι γραμμένος
στην ίδια γλώσσα πρόγραμματισμού με αυτήν που μετατρέπει σε εκτελέσιμο. Με αυτόν τον τρόπο, οι προδιαγραφές του συστήματος είναι καθολικές ανάμεσα σε συστήματα με διαφορετικό υλικό. Τα παραπάνω δεν σημαίνουν ότι υπάρχει κάποια σωστή ή λάθος σχεδίαση, αλλά σίγουρα σημαίνει ότι πολλές τεχνολογικές ετικέτες θα πρέπει να χρησιμοποιούνται με περισσότερες εξηγήσεις σχετικά με το πεδίο ερφαρμογής και τους τυπικούς χρήστες έτσι ώστε να είναι διακριτό το πραγματικό τους νόημα.
Ταυτόχρονα, μπορούμε να εντοπίσουμε καινοτόμα συστήματα, όπως το Superpaint, τα οποία δεν βασίζονται ούτε σε κάποιο λειτουργικό σύστημα ούτε σε κάποια γλώσσα προγραμματισμού. Πράγματι, ένα σύστημα διάδρασης μπορεί να φτιαχτεί για έναν σημαντικό σκοπό, όπως είναι η ψηφιακή επεξεργασία εικόνας, χωρίς την φιλοδοξία να γίνει πλατφόρμα για κάτι άλλο.
## Εξομοίωση και προσομοίωση
![](paper-simulation.md){.figure}
![](magic-cap.md){.figure}
Η εξομοίωση και η προσομοίωση παρέχουν δύο σημαντικούς τρόπους θεώρησης της λειτουργίας του υπολογισμού και των εφαρμογών του. Χρονολογικά, η εξομοίωση είναι προγενέστερη της προσομοίωσης, καθώς περιγράφεται από τον Άλαν Τούρινγκ ως ένα χαρακτηριστικό της γενικής μηχανής υπολογισμού. Η δυνατότητα της εξομοίωσης επιτρέπει σε ένα μηχάνημα να εξομοιώνει την λειτουργία κάποιου άλλου διαφορετικού μηχανήματος.Υπάρχουν πολλές δημοφιλείς μηχανές εξομοίωσης για τους μικροϋπολογιστές και τις παιχνιδομηχανές της δεκαετίας του 1980. Η προσομοίωση αναφέρεται στην δυνατότητα ενός μηχανήματος να υπολογίζει και να οπτικοποιεί την συμπεριφορά συστήματων για τα οποία δεν μπορεί να γνωρίζει ακριβώς την λειτουργία τους, όπως είναι τα πολύπλοκα φυσικά ή βιολογικά φαινόμενα. Για παράδειγμα, οι πρώτοι υπολογιστές χρησιμοποιήθηκαν για τον υπολογισμό της τροχιάς ενός πυραύλου καθώς και για την πρόβλεψη του καιρού, ενώ οι πιο πρόσφατες εφαρμογές της προσομοίωσης περιλαμβάνουν την λειτουργία των βιολογικών κυτάρων καθώς και των μικροσκοπικών σωματιδίων της ύλης.
Οι εφαρμογές της προσομοίωσης είναι από τις πιο πετυχημένες εμπορικά εφαρμογές των υπολογιστών, αλλά αυτή η επιτυχία τους έχει επισκιάσει την συμπληρωματική θεώρηση του υπολογισμού που βρίσκεται στην εξομοίωση. Πράγματι, οι σύγχρονες προσομοιώσεις είναι τόσο εξελιγμένες σε συμπεριφορά που μοιάζουν πολύ με το αντίστοιχο φαινόμενο που προσομοιώνουν. Για παράδειγμα, ένας προσομοιωτής πτήσης, από τον πιο απλό οικιακό, μέχρι τον πιο εξελιγμένο που χρησιμοποιείται για την εκπαίδευση των πιλότων, μοιάζει πάρα πολύ με τον χειρισμό ενός αληθινού αεροσκάφους. H θεώρηση της εξομοίωσης δεν έχει γίνει ακόμη τόσο δημοφιλής όσο η προσομοίωση γιατί είναι πιο δύσκολη και απαιτεί δημιουργικότητα και φαντασία. Η προσομοίωση ενός φυσικού φαινομένου απαιτεί από εμάς την παρατήρηση και την κατανόηση του, αλλά η εξομοίωση ενός νέου μηχανήματος απαιτεί από εμάς να το σχεδιάσουμε και να φανταστούμε κάτι που δεν υπάρχει. Για παράδειγμα, πολλά βιντεοπαιχνίδια, αν και αρχικά ο κλάδος ξεκίνησε επίσης ως προσομοίωση, παρουσιάζουν γραφικά και συμπεριφορές που δεν βασίζονται σε προσομοίωση της πραγματικότητας.
Η δημοφιλία της προσομοίωσης και η δυσκολία που παρουσιάζει η εξομοίωση έχουν οδηγήσει τις περισσότερες εφαρμογές του παραδοσιακού επιτραπέζιου υπολογισμού στην κατεύθυνση της προσομοίωσης του πραγματικού κόσμου. Για παράδειγμα, η γραφική διεπαφή στον επιτραπέζιο υπολογιστή είναι μια προσομοίωση της επιφάνειας εργασίας στον αληθινό χώρο του γραφείου.
^[fig:paper-simulation]
^[fig:magic-cap]
Αντίστοιχα, οι εφαρμογές επεξεργασίας εγγράφων είναι μια προσομοίωση των χάρτινων εγγράφων του αληθινού κόσμου. Στην πραγματικότητα όμως, ο υπολογιστής, με γραφικά ή χωρίς, δεν έχει κανένα περιορισμό για το πως θα είναι μια γραφική διεπαφή ή μια εφαρμογή επεξεργασιάς εγγράφων. Σίγουρα η προσομοίωση του αληθινού κόσμου στον κόσμο του υπολογιστή δημιουργεί μια αρχική αίσθηση ευχρηστίας μέσα από την οικειότητα. Επομένως, για τα μηχανήματα εκείνα που πρέπει να είναι εύχρηστα για ευκαιριακούς χρήστες η προσομοίωση είναι μια χρήσιμη τεχνική, αλλά σίγουρα δεν είναι αντιπροσωπευτική των δυνατοτήτων που θέλουμε να έχουμε αν ο στόχος μας είναι η επαύξηση της ανθρώπινης νοημοσύνης. Επιπλέον, για κάποιες εφαρμογές διάδρασης σε πραγματικό χρόνο, όπως είναι η μουσική και η ζωγραφική, η προσομοίωση τους στον συμβολικό χώρο του υπολογισμού αφαιρεί δυνατότητες που βρίσκονται πέρα από τις γνώσεις μας, αλλά ήταν προσβάσιμες στα αρχικά αναλογικά εργαλεία ήχου και χρώματος.
Η πιο δημοφιλής μορφή και ταυτόχρονα ιδιάζουσα περίπτωση προσομοίωσης συναντάται στον κινητό υπολογισμό της δεκαετίας του 2010, όπου οι συσκευές διάδρασης μικραίνουν σε μέγεθος και προσομοιώνουν τις εφαρμογές του επιτραπέζιου υπολογισμού, αντί να ορίσουν νέα παραδείγματα συμβατά με το κινητό πλαίσιο χρήσης. Για παράδειγμα, τα πρώτα κινητά λειτουργικά συστήματα της Microsoft έχουν γραφικό περιβάλλον με κουμπί εκκίνησης, ενώ όλα τα συστήματα βασίζονται στην ιδέα των εφαρμογών για την οργάνωση του λογισμικού τους. Όπως έχουμε ήδη αναλύσει στην ενότητα των Μορφών, οι εφαρμογές λογισμικού είναι μια πολύ συγκεκριμένη μορφή οργάνωσης του λογισμικού, η οποία ωφελεί κυρίως την κυρίαρχη πλατφόρμα λειτουργικού συστήματος. Με άλλα λόγια, οι κατασκευαστές λογισμικού επέλεξαν, για άλλη μια φορά, να βελτιστοποιήσουν τα συμφέροντα τους, τα οποία παρουσιάζουν στους χρήστες ως οικειότητα και ευχρηστία. Στην πράξη όμως, αυτό που πραγματικά προσφέρουν στους τελικούς χρήστες είναι μια προσομοίωση ενός παραδείγματος του επιτραπέζιου υπολογισμού σε ένα νέο πλαίσιο χρήσης, το οποίο είναι πολύ διαφορετικό. Με αυτόν τον τρόπο, τα κινητά συστήματα είναι μια ακόμη χαμένη ευκαιρία, μετά τα επιτραπέζια, αφού παγιδεύονται στην θεώρηση της προσομοίωσης και δεν εξετάζουν καθόλου την εξομοίωση νέων συστήματων διάδρασης.
![](ed-editor.md){.figure}
![](unix-tmg.md){.figure}
Η περίπτωση των συστημάτων διάδρασης ανοιχτού κώδικα είναι εξίσου ιδιάζουσα με αυτή του κινητού υπολογισμού γιατί προσομοιώνει το γραφικό περιβάλλον εργασίας και τις εφαρμογές των κυρίαρχων συστήματων. Για παράδειγμα, τα πιο δημοφιλή γραφικά περιβάλλοντα με επιφάνεια εργασίας όπως τα Gnome, KDE, είναι αντίγραφα των Windows, MacOS. Ταυτόχρονα, οι αντίστοιχες εφαρμογές γραφείου ανοιχτού κώδικα OpenOffice, LibreOffice είναι επίσης αντίγραφα των αντίστοιχων εφαρμογών Microsoft Office, Apple iWork. Ο ανοιχτός κώδικας σε επίπεδο εφαρμογής και περιβάλλοντος ήταν δεδομένος στο σύστημα Smalltalk του Alto, αλλά οι κατασκευαστές του είχαν κάνει πολλές ακόμη αρχιτεκτονικές επιλογές που αναλύουμε σε άλλα μέρη του κειμένου. Ακόμη και πέρα από τον χώρο της διάδρασης που διαπραγματευόμαστε εδώ, οι κατασκευαστές ανοιχτού λογισμικού φαίνονται παγιδευμένοι στην αναπαραγωγή της υπάρχουσας κατάστασης παρά στην καινοτομία. Πράγματι, ο κατασκευαστής του πυρήνα του Linux επέλεξε στις αρχές τις δεκαετίας του 1990 να φτιάξει μια εκδοχή ενός παραδοσιακού πυρήνα που υπάρχει από τις αρχές του 1970 και ταυτόχρονα να βρει καθολική ανταπόκριση από πολλές διαφορετικές ομάδες χρηστών. Σίγουρα η διάθεση του λογισμικού με ανοιχτού κώδικα έχει περισσότερα πλεονεκτήματα από το ίδιο με κλειστό κώδικα, αλλά αν η αρχιτεκτονική του και η διάδραση του είναι ίδια ακριβώς με αυτή του κλειστού κώδικα, τελικά το κίνημα του ανοιχτού κώδικα καταλήγει να εξυπηρετεί όχι μόνον τον εαυτό του, αλλά κυρίως τα συμφέροντα των κατασκευαστών κλειστού λογισμικού, οι οποίοι μπορούν πλέον να ετεροπροσδιορίζονται ως τεχνολογία. Τελικά αυτό δεν εξυπηρετεί την πραγματική βελτίωση της ποιότητας του λογισμικού διάδρασης, που μπορεί να γίνει μόνο με τους κατάλληλους εξομοιωτές για νέα συστήματα που δεν υπάρχουν, καθώς και με εξομοίωση συστημάτων εισόδου και εξόδου δεδομένων.
^[fig:ed-editor]
^[fig:unix-tmg]
Τόσο τα πρώτα πειραματικά βιντεοπαιχνίδια,
όσο και τα δημοφιλή προϊοντα των επόμενων δεκαετιών
συνήθως βασίζονται στην θεώρηση της προσομοίωσης.
Για παράδειγμα, το βιντεοπαιχνίδι Tennis for two
^[fig:tennis-for-two]
δημιουργήθηκε για έναν αναλογικό υπολογιστή
με οπτικοποίηση στην οθόνη ενός φασματοσκόπιου,
όπου οι δύο παίκτες έπαιζαν τένις σε πρόσοψη.
Μερικά χρόνια αργότερα,
το δημοφιλές βιντεοπαιχνίδι Pong αντιγράφει το Table Tennis for Two
^[fig:magnavox-odyssey]
και χρησιμοποιεί την οπτικοποίηση της κάτοψης. Επίσης,
ένα από τα πρώτα δημοφιλή βιντεοπαιχνίδια την δεκαετία του 1960
σε μίνι-υπολογιστές είναι το Spacewar, στο οποίο οι παίκτες
κάνουν μια αερομαχία στο διάστημα
σε συνθήκες βαρύτητας γύρω από πλανητικό κέντρο.
Αντίστοιχα, την δεκαετία του 1970,
πολλοί προγραμματιστές αποκτούν την πρώτη τους επαφή
με τον υπολογιστή με τον ευρέως διαθέσιμο κώδικα
του βιντεοπαιχνιδιού Lunar Lander, όπου
ο παίκτης προσπαθεί να προσγειώσει ένα διαστημόπλοιο στην σελήνη.
Παρατηρούμε, ότι και στις δύο περιπτώσεις,
εκτός από την προσομοίωση της φυσικής πραγματικότητας,
η θεματολογία των βιντεοπαιχνιδιών είναι έντονα επηρεασμένη
από την τότε πολιτική και πολιτιστική πραγματικότητα
ή από μια αθλητική και παιγνιώδη δραστηριότητα.
Μετά την δεκαετία του 1970 εμφανίζονται,
πολύ δειλά και ως αφαιρετικοί μετασχηματισμοί των προηγούμενων,
τα πρώτα καινοτόμα βιντεοπαιχνίδια,
όπως ήταν τα Breakout και Space Invaders,
αλλά το παράδειγμα της προσομοίωσης παραμένει κυρίαρχο.
![](tennis-for-two.md){.figure}
![](magnavox-odyssey.md){.figure}
Τα βιντεοπαιχνίδια σε κονσόλες και σε μικροϋπολογιστές των δεκαετιών του 1970 και 1980 απέκτησαν μια δεύτερη ζωή μακρυά από το αρχικό υλικό τους με την τεχνολογία της εξομοίωσης μετά το 2000. Η βελτιωμένη επεξεργαστική ισχύς των επιτραπέζιων συστημάτων επέτρεψε την ανάπτυξη εξομοιωτών που μπορούσαν να εκτελέσουν το παλαιότερο λογισμικό σε μια αντίστροφη κίνηση, όπου τα διαθέσιμα συστήματα και η θεώρηση της εξομοίωσης δεν χρησιμοποιούνται για να μας πάνε παρακάτω, αλλά πίσω στον χρόνο. Με αυτόν τον τρόπο, μια νέα γενιά χρηστών χρησιμοποιεί συστήματα που δεν υπάρχουν, ενώ και πολλοί παλιότεροι ζουν στην πράξη τις αναμνήσεις τους. Σίγουρα η εξομοίωση παλιών συστήματων που δεν είναι πλέον ευρέως διαθέσιμα είναι μια άριστη πρακτική για να έχουμε πρόσβαση σε παλαιότερο λογισμικό, ακόμη και για να αναπτύξουμε νέο λογισμικό για αυτό το δυσεύρετο πλέον υλικό. Ταυτόχρονα όμως αυτή η κάπως οπισθοδρομική εφαρμογή της θεώρησης της εξομοίωσης επιβεβαιώνει ότι τόσο οι κατασκευαστές όσο και η χρήστες έχουν μια έμφυτη τάση στην αναπαραγωγή της υπάρχουσας κατάστασης, παρά στην δημιουργία καινοτομίας, ακόμη και όταν έχουν στην διάθεση τους τα κατάλληλα εργαλεία, όπως είναι οι ισχυροί και δικτυωμένοι προσωπικοί υπολογιστές και η τεχνική της εξομοίωσης.
Πέρα από το γραφικό περιβάλλον και τα έγγραφα στον επιτραπέζιο υπολογισμό, η μονοθεματική θεώρηση της προσομοίωσης είναι επίσης το κυρίαρχο παράδειγμα ακόμη και σε καινοτόμα συστήματα διάδρασης, όπως είναι η εικονική πραγματικότητα. Η εικονική πραγματικότητα όπως περιγράφηκε αρχικά από τον Jaron Lanier ήταν μια προσπάθεια εξομοίωσης ενός κόσμου που δεν υπάρχει. Δεν είναι τυχαίο ότι ο δημιουργός και νονός της θεωρεί ατυχές το όνομα εικονική πραγματικότητα, αφού δηλώνει μια προσομοίωση. Πράγματι, στις δικές του πειραματικές εφαρμογές εικονικής πραγματικότητας, ο χαρακτήρας δεν μοιάζει με άνθρωπο, αλλά με χταπόδι, ή με κάποιο άλλο δημιούργημα που δεν υπάρχει. Ταυτόχρονα η οπτικοποίηση και η συμπεριφορά του εικονικού κόσμου δεν προσομοιώνει τον πραγματικό κόσμο της ανθρώπινης εμπειρίας, αλλά έναν κόσμο που δεν υπάρχει. Ο στόχος της εξομοίωσης μιας δυνητικής πραγματικότητας είναι να εμπλουτίσει την ανθρώπινη εμπειρία και να επαυξήσει την ανθρώπινη νοημοσύνη σε ευρύτερα πεδία, όπου δεν υπάρχει απευθείας πρόσβαση μέσα από το φυσικό περιβάλλον.^[@engelbart1962augmenting @lanier2010you] Αντίθετα, οι περισσότερες εφαρμογές εικονικής πραγματικότητας προσπαθούν να προσομοιώσουν την πραγματικότητα όσο πιο πιστά γίνεται, τόσο στην εμφάνιση της με γραφικά, όσο και στην συμπεριφορά του κόσμου και των χαρακτήρων. Αν και τα συστήματα εικονικής πραγματικότητας είχαν μικρή εμβέλεια για πολλές δεκαετίες, αποτελούν άλλη μια σημαντική χαμένη ευκαιρία για την εξερεύνηση της εξομοίωσης ως βασικής θεώρησης κατασκευής νέων διαδραστικών συστημάτων.
![](lisa-bootstrapping.md){.figure}
![](emulators.md){.figure}
Μια ερμηνεία για αυτήν την τάση εξομοίωσης μπορούμε να αντλήσουμε από το γνωστικο πεδίο των μέσων επικοινωνίας. Για παράδειγμα, στο παρελθόν η εισαγωγή της τεχνολογίας της τηλεόρασης θεωρήθηκε μια συνέχεια της τεχνολογίας του ραδιοφώνου. Οπότε, η παραγωγή του περιεχομένου που θα φιλοξενούσε το νέο μέσο θα ήταν μια γραμμική βελτίωση του περιεχομένου που υπήρχε στο ραδιόφωνο. Με αυτό το σκεπτικό δεν ήταν καθόλου περίεργο που η τηλεόραση αρχικά ορίστηκε ως "ραδιόφωνο με εικόνα" και με δεδομένο αυτόν τον σχετικά στενό ορισμό, ήταν επόμενο το περιεχόμενο των εκπομπών τηλεόρασης, τα πρώτα χρόνια, να μην είναι κάτι παραπάνω από μια στατική εικόνα με ήχο.^[@bolter2000remediation] Μια ακόμη ερμηνεία, για την ανάγκη να χρησιμοποιούμε μεταφορές από τον πραγματικό κόσμο, τις οποίες τις προσαρμόζουμε στον ψηφιακό κόσμο των υπολογιστών μπορούμε να αντλήσουμε από το γνωστικό πεδίο της φιλοσοφίας. Πράγματι, είναι ευκολότερο να κατανοήσουμε κάτι νέο αν το χρησιμοποιήσουμε σαν κάτι παλιότερο.^[lakoff2008metaphors]
Όσο εύκολο είναι να περιγράψουμε τα δημοφιλή συστήματα διάδρασης που βασίζονται στην θεώρηση της προσομοίωσης, άλλο τόσο δύσκολο είναι να περιγράψουμε εκείνα που βασίζονται στην εξομοίωση,
^[fig:emulators]
αφού δεν έχουμε κρίσιμη μάζα γνώσης για αυτά.^[@bardini2000bootstrapping] Ένα από τα λίγα γνωστά συστήματα διάδρασης που βασίζονται στην εξομοίωση περιγράφεται από τον Alan Kay στην κατασκευή του Alto. Το λογισμικό για το λειτουργικό υπόδειγμα του Alto που βασίζεται στην περιβάλλον προγραμματισμού Smalltalk κατασκευάστηκε με την εξομοίωση του πάνω σε έναν μίνι-υπολογιστή στις αρχές του 1970 και πολύ πριν οι ερευνητές του Xerox PARC κατασκευάσουν το πραγματικό υλικό του Alto.^[@hiltzik1999dealers] Εκείνος ο μίνι-υπολογιστής δούλευε με τηλέτυπο χωρίς οθόνη γραφικών και ποντίκι ενώ και η γλώσσα προγραμματισμού του ήταν πολύ διαφορετική από την Smalltalk, αλλά αυτά δεν εμπόδισαν τους κατασκευαστές του Alto να φανταστούν ένα διαδραστικό γραφικό περιβάλλον και να το εξομοιώσουν αρχικά πάνω σε ξένο υλικό, πριν τελικά το κατασκευάσουν και στην πραγματικότητα. Παρόμοια τεχνική εξομοίωσης χρησιμοποίησε και ο Bill Atkinson για την κατασκευή του λογισμικού διάδρασης για το Apple Lisa.
^[fig:lisa-bootstrapping]
Για τον σκοπό αυτό, χρησιμοποίησε μια επέκταση του δημοφιλούς εκείνη την εποχή Apple II για να κατασκευάσει σταδιακά με την γλώσσα PASCAL ένα γραφικό περιβάλλον που λίγο διαφέρει από αυτό των σύγχρονων επιτραπέζιων συστημάτων και όλα αυτά ενώ είχε μπροστά του μόνο έναν μικροϋπολογιστή με διάδραση σε γραμμή εντολών και χωρίς ποντίκι και παραθυρικό περιβάλλον. Επομένως, ένα βασικό συστατικό διάδρασης που εμφανίζουν τα συστήματα που έχουν κατεύθυνση την εξομοίωση είναι ότι επιτρέπουν την κατασκευή νέων εργαλείων, που δεν περιορίζονται από εσωτερικές παραδοχές και κανόνες, όπως συνήθως συμβαίνει στα συστήματα προσομοίωσης.
![](nova.md){.figure}
![](altair-teletype.md){.figure}
Αμέσως μετά τους πρωτοπόρους του δημιουργικού μετασχηματισμού του υπολογιστών σε μια νέα μορφή Douglas Engelbart και Ivan Sutherland, οι ερευνητές του Xerox PARC εφάρμοσαν την τεχνική της εξομοίωσης, έτσι ώστε να μπορούν να εργάζονται με το σύστημα που ήθελαν και όχι απλά με αυτό που είχαν διαθέσιμο. Πράγματι, η Xerox μόλις είχε αγοράσει την Scientific Data Systems (SDS) και αγνόησε το αίτημα των ερευνητών του PARC για την αγορά του ανταγωνιστικού DEC PDP, το οποίο ήταν πολύ δημοφιλές ανάμεσα στους συναδέλφους ερευνητές σε άλλους οργανισμούς και στο δίκτυο ερευνητικής συνεργασίας ARPANET. Στην πράξη όμως αυτό δεν ήταν μεγάλο πρόβλημα, αφού με την τεχνική της εξομοίωσης οι ερευνητές του PARC δημιούργησαν το PDP με μικροκώδικα πάνω στο φυσικό μηχάνημα της SDS.
Με τον ίδιο ακριβώς τρόπο, χρησιμοποίησαν το μηχάνημα Data General Nova για να αναπτύξουν το λογισμικό για το Alto, πολύ πριν έχουν στην διάθεση τους το υλικό της αρχική έκδοση του Alto. Παρόμοια ο Niklaus Wirth θα καταφέρει να εκτελέσει και να ενημερώσει είκοσι-πέντε χρόνια μετά την βάση για το αρχικό λογισμικό διάδρασης για το σύστημα Oberon^[@wirth1992project] με την δημιουργία ενός νέου υπολογιστή με την τεχνική των προγραμμάτων για FPGA, δηλαδή υλικό που επιτρέπει την εξομοίωση άλλου υλικού υπολογιστή. Για τους ερευνητές του PARC και τους συνεργάτες τους, η διάδραση με τους υπολογιστές σημαίνει κυρίως την κατασκευή ενός νέου υπολογιστή και του περιβάλλοντος ανάπτυξης που περιλαμβάνει τον μεταγλωτιστή και τον επεξεργαστή κειμένου, τα οποία αρχικά θα πρέπει να εξομοιωθούν στα πρώτα στάδια της ανάπτυξης πάνω σε ένα διαφορετικό από το τελικό φυσικό μηχάνημα. Η επιλογή της εξομοίωσης μπορεί να γίνει αρχιτεκτονική επιλογή, όπως στην περίπτωση της JAVA όπου ο κατασκευαστής φροντίζει για την εκτέλεση μόνο πάνω σε μια εικονική μηχανή και αφήνει την υλοποίηση του κατώτερου επιπέδου στους επιμέρους κατασκευαστές υλικού.
^[fig:nova]
^[fig:altair-teletype]
## Μοντελοποίηση και Αναλογία
![](digital-desk.md){.figure}
![](mit-clearboard.md){.figure}
Η βασική τεχνολογία για την κατασκευή της διάδρασης παραμένει διαχρονικά ο προγραμματισμός ενός υπολογιστή. Ο προγραμματισμός με την σειρά του είναι μια σημαντική αλλά ξεχωριστή περίπτωση διάδρασης με τον υπολογιστή που έχει περάσει από πολλά στάδια και συνεχίζει να εξελίσεται. Οι πρώτοι κεντρικοί υπολογιστές όπως και ο πρώτος μικροϋπολογιστής Altair προγραμματίζονταν με τους φυσικούς διακόπτες, αλλά αυτό ήταν δύσκολο ειδικά για μεγάλα προγράμματα και σετ δεδομένων. Για αυτόν τον λόγο, ο προγραμματισμός των υπολογιστών ξεκίνησε να γίνεται με ασύγχρονο τρόπο μέσω της χρήσης διάτριτων καρτών σε σετ, ή ακόμη καλύτερα με την χρήση διάτρητης χαρτοταινίας. Η εγγραφή και ανάγνωση από διάτρητη χαρτοταινία ήταν πολύ οικονομική και τόσο δημοφιλής για να βρίσκεται ενσωματωμένη ακόμη και πάνω στα νέα μοντέλα συσκευής εισόδου και εξόδου που βασίζονταν στον τηλέτυπο, ο οποίος ήταν για πολλές δεκαετίες ο βασικός τρόπος συγγραφής προγραμμάτων υπολογιστή και επόμενως διάδρασης, αφού το πληκτρολόγιο και η διάτρητη χαρτοταινία ήταν τα συστήματα εισόδου, ενώ η χαρτοταινία πάλι και η εκτύπωση ήταν τα συστήματα εξόδου. Με αυτόν τον τρόπο, φτιάχτηκαν και τα πρώτα συστήματα διάδρασης σε πραγματικό χρόνο, όπως ήταν η LISP και το JOSS, αλλά η πλειοψηφία των συστημάτων λειτουργούσε ασύγχρονα με εργασίες δέσμης. Όλα αυτά τα ηλεκτρομηχανικά συστήματα εισόδου και εξόδου από τον υπολογιστή που βασίζονταν στο χάρτι θα αντικατασταθούν από τις ηλεκτρονικές και αργότερα ψηφιακές οθόνες και το ποντίκι την δεκαετία του 1980, αλλά ο προγραμματισμός του υπολογιστή θα παραμείνει μια διαδικασία που βασίζεται σε γραπτές γλώσσες κειμένου που εισάγονται με το πληκτρολόγιο.
Ανάμεσα στις πολλές τεχνολογίες λογισμικού για την κατασκευή νέων διαδραστικών συστημάτων, οι γλώσσες προγραμματισμού που επιτρέπουν τόσο την ανάπτυξη νέων συστημάτων όσο και την εξέλιξη της ίδιας της γλώσσας έχουν διαχρονική αποτελεσματικότητα, αλλά με μεγάλο κόστος στην εκμάθηση. Για παράδειγμα, η εκφραστική δύναμη της αρχικής γλώσσας Lisp επιτρέπει την συγγραφή του μεταγλωτιστή της στην ίδια την γλώσσα, μια επιλογή που δείχνει προς την κατεύθυνση της συνεχούς βελτίωσης της γλώσσας προγραμματισμού, η οποία δεν είναι πλέον κάτι στατικό. Αυτή η τεχνική χρησιμοποιήθηκε και κατά την δημιουργία του διαδραστικού περιβάλλοντος Smalltalk, η οποία εκτός από γλώσσα πρόγραμματισμού για τον χρήστη επιτρέπει και την μεταβολή του αρχικού συστήματος, δηλαδή και της ίδιας της γλώσσας. Παρόμοια τακτική ακολούθησαν και άλλοι κατασκευαστές για να δημιουργήσουν από την αρχή νέα διαδραστικά συστήματα, όπως είναι τα Lilith, Oberon, τα οποία υλοποιήθηκαν με τις Modula, Oberon, οι οποίες με την σειρά τους δεν ήταν εντελώς νέες αλλά επεκτάσεις της δομημένης και στατικής Pascal, ώστε να είναι συμβατή με το πλαίσιο ανάπτυξης του νέου διαδραστικού συστήματος. Η βασική διαφορά που έχουν αυτά τα συστήματα από το αρχικό Alto και την Smalltalk είναι ότι επιλέγουν μια δομημένη γλώσσα προγραμματισμού με στατικό ορισμό τύπων, παρότι και στις δύο περιπτώσεις αυτά τα συστήματα στόχευαν στο ίδιο κοινό, δηλαδή στην εκπαίδευση. Από αυτές τις προσπάθειες προκύπτει ότι οι ίδιες οι γλώσσες και τα περιβάλλοντα προγραμματισμού δεν είναι ποτέ τεχνολογίες, οι οποίες αναφέρονται κυρίως σε κάποιες σημαντικές ιδιότητες τους. Επίσης, προκύπτει η κατανόηση ότι η δεξιότητα χρήσης ενός ισχυρού και εκφραστικού συστήματος διαδραστικής κατασκευής και δημιουργίας είναι συνήθως αντιστρόφως ανάλογο με την ευκολία εκμάθησης του.
![](terminal-emulator.md){.figure}
![](vnc.md){.figure}
Μια θεμελιώδης τεχνική που διατρέχει την δημιουργία όλων των καινοτόμων τεχνολογιών διάδρασης είναι ότι βασίζονται σε ένα μικρό σύνολο από αρχιτεκτονικές επιλογές περισσότερο ως αναλογία και λιγότερο ως προσομοίωση του πραγματικού κόσμου. Για παράδειγμα, η δημιουργία της Smalltalk και της ανταλλαγής μηνυμάτων ανάμεσα σε αντικείμενα είναι εμπνευσμένη από την λειτουργία του βιολογικού κυτάρου. Όπως δηλαδή ένα κύταρο αλληλεπιδρά δυναμικά και χωρίς κάποιο πλάνο και δομή με διπλανά του κύταρα, έτσι ακριβώς και τα αντικείμενα στην Smalltalk ανταλλάσσουν μηνύματα δημιουργώντας συνδέσμους δυναμικά κατά την εκτέλεση, ακόμη και αν αυτές οι διαδράσεις δεν είχαν αρχικά σχεδιαστεί. Αν και η αρχιτεκτονική για την κατασκευή της Smalltalk βασίζεται στην εξομοίωση, ένα από τα βασικά κίνητρα της δημιουργίας καθώς και ένα από τα πεδία εφαρμογής έχει να κάνει με την προσομοίωση του φυσικού κόσμου, έτσι ώστε οι προγραμματιστές να μπορούν να μελετήσουν την συμπεριφορά πολύπλοκων συστημάτων που θα μοντελοποιήσουν. Βλέπουμε δηλαδή ότι οι κατασκευαστές του Alto και της Smalltalk όχι μόνο δεν είναι αντίθετοι στην προσομοίωση, αλλά είναι πολύ θετικοί, αρκεί όμως αυτό να μην γίνεται εμπόδιο για την διαδικασία κατασκευής η οποία θα πρέπει να βασίζεται στην εξομοίωση ενός νέου καινοτόμου συστήματος.^[@kay1993early] Μια αντίστοιχη αλλά πολύ διαφορετική αναλογία μπορούμε να εντοπίσουμε και στην περίπτωση του UNIX, όπου οι κατασκευαστές χρειάστηκε μαζί με το λειτουργικό σύστημα να δημιουργήσουν και την νέα γλώσσα προγραμματισμού C, η οποία σχεδιάστηκε έτσι ώστε να είναι κατάλληλη για την συνεχή βελτίωση αυτού του λειτουργικού συστήματος και του διαδραστικού κελύφους γραμμής εντολών, το οποίο απευθύνεται αρχικά σε εργαζόμενους τηλεφωνικών οργανισμών που πρέπει να διαχειριστούν δεδομένα σε αρχεία και να ετοιμάσουν τεκμηρίωση για τις τηλεπικοινωνιακές τεχνολογίες. Στην περίπτωση του UNIX, η αναλογία είναι ότι όλα τα δομικά στοιχεία του συστήματος είναι αρχεία, μια αναλογία που έφτασε στην ωρίμανση της με το επόμενο δημιούργημα των ερευνητών στα Bell Labs, το Plan9.
Στις προηγούμενες ενότητες είδαμε τον κεντρικό ρόλο του τηλέτυπου, ο οποίος μετασχηματίστηκε σταδιακά από ένα αυτόνομο τερματικό για την αποστολή μηνυμάτων στην βασική συσκευή διάδρασης για την κατασκευή πολλών καινοτόμων συστήματων όπως τα Sketchpad, NLS, UNIX, Smalltalk, JOSS, CPM, MS-BASIC. Ταυτόχρονα παρατηρούμε ότι ο ρόλος του τηλέτυπου στα ίδια αυτά συστήματα είχε πολύ διαφορετικό βαθμό επιροής στο τελικό τερματικό διάδρασης με τον χρήστη. Για παράδειγμα, η διάδραση στο τελικό σύστημα Sketchpad δεν περιλαμβάνει καθόλου στοιχεία ούτε από το περιβάλλον ανάπτυξης, αλλά ούτε και από τις συσκευές διάδρασης κατά την ανάπτυξη του. Στην πιο σύγχρονη εκδοχή του αυτό το σενάριο παρουσιάζεται στην περίπτωση ανάπτυξης κινητών εφαρμογών σε έναν επιτραπέζιο υπολογιστή, αλλά η διάδραση θα γίνει με διαφορετικά συστήματα εισόδου και εξόδου στο έξυπνο κινητό. Σε ένα ενδιάμεσο επίπεδο συναντάμε το σύστημα NLS καθώς και την Smalltalk όπου το κείμενο και η επεξεργασία του έχουν κεντρικό ρόλο, αλλά αυτό είναι μόνο ένα μικρό υποσύνολο από τις δυνατότητες του γραφικού περιβάλλοντος, αλλά και της συσκευής εισόδου ποντίκι που είναι κάτι νέο. Στο αντίθετο άκρο τα συστήματα JOSS, UNIX, όχι μόνο έχουν τον τηλέτυπο ως βασικό μοντέλο για την διάδραση με τον χρήστη, αλλά ϋοθετούν τον τηλέτυπο και ως συσκευή εισόδου και εξόδου για την διάδραση με τον τελικό χρήστη, όπου έχει κεντρικό ρόλο στο τερματικό γραμμής εντολών. Μια διαφορετική αναλογία αντί για τον τηλέτυπο μπορούμε να εντοπίσουμε στην τεχνολογία του εικονικού τερματικού εικονοστοιχείων VNC, το οποίο επιτρέπει την διάδραση με γραφική διεπαφή με έναν απομακρυσμένο υπολογιστή. Με αυτήν την τεχνολογία η διάδραση σε ένα τερματικό χρήστη ενορχηστρώνεται σε έναν απομακρυσμένο υπολογιστή, ο οποίος με την τεχνική της εξομοίωσης μπορεί να έχει όποια συμπεριφορά μπορούμε να φανταστούμε και να υλοποιήσουμε.
^[fig:terminal-emulator]
^[fig:vnc]
![](extras-ch08.txt){.include}