Ηλεκτρονικοί Αριθμοϋπολογιστές...

Με αφορμή τον θάνατο του Dennis Ritchie, μιλήσαμε εδώ για παλιές μηχανές με ονόματα όπως PDP-11 και GE-645 (i).

Σήμερα θα δούμε άλλη μια τέτοια μηχανή, λίγο πιο παλιά απο αυτές που προγραμμάτιζε ο Dennis Ritchie, την IBM-650! Θα μας μιλήσει για αυτή, ο κύριος Νικόλαος Αποστολάτος ο οποίος ήταν μαθηματικός και επιστημονικός βοηθός στο πολυτεχνείο του Μονάχου το 1961! Η εργασία του, μια σύντομη εισαγωγή στον προγραμματισμό των ηλεκτρονικών υπολογιστών, δημοσιεύτηκε στο Τεχνικά Χρονικά, στο τεύχος Μαρτίου - Απριλίου 1961 και ήρθε στα χέρια μου μετά απο ένα μεγάλο ταξίδι.


Μέσα σε 4 περίπου σελίδες ο κ. Αποστολάτος παρουσιάζει μια γενική εισαγωγή στον προγραμματισμό και ένα συγκεκριμένο (και ίσως γνώριμο :-) ) παράδειγμα επάνω στον IBM-650.

Το άρθρο είναι....παλιό. Είναι τόσο παλιό που τα σύμβολα του δεκαεξαδικού δεν είναι αυτά που έχεις συνηθίσει (ii) :-). Παρ' όλη όμως την ηλικία του άρθρου, η τελευταία παράγραφος της εισαγωγής περιγράφει με απλά και απίστευτα ακριβή λόγια το τι θα ακολουθήσει στα επόμενα 50 χρόνια. Διαφορετική ορολογία και σίγουρα διαφορετική τεχνολογία αλλά η αρχή παραμένει ίδια:

" Ο χειρισμός της μηχανής είναι θέμα απλό και μπορεί κανείς να τον μάθει σύντομα. Εκείνο το οποίο δημιουργεί δυσκολίες είναι η κατάρτιση του προγράμματος. Γι' αυτό, αμέσως μόλις χρησιμοποιηθεί ένα πρόγραμμα δεν πρέπει να καταστρέφεται επειδή μπορεί να χρησιμοποιηθεί και πάλι με νέα δεδομένα. Ο προγραμματιστής έχει στην διάθεση του μια βιβλιοθήκη προγραμμάτων τα οποία ή έχει μόνος κατασκευάσει ή τα έχει δανειστεί απο άλλους προγραμματιστές με τους οποίους οφείλει να συνεργάζεται. Όποτε λοιπόν θελήσει [ο προγραμματιστής] να κατασκευάσει κάποιο πρόγραμμα, καταφεύγει στην βιβλιοθήκη όπου πιθανώς μπορεί να βρεί το ζητούμενο πρόγραμμα. Πολλές φορές είναι δυνατόν να κατασκευαστεί ένα πρόγραμμα συναρμολογόντας άλλα επι μέρους προγράμματα"

Σε αυτό το άρθρο, εκτός απο τον IBM-650 αναφέρεται και ένας άλλος δεινόσαυρος, ο ILLIAC! Οι υπολογιστές ILLIAC χρηματοδοτήθηκαν και κατασκευάστηκαν απο το πανεπιστήμιο του Illinois στην Αμερική και ήταν απο τους πρώτους υπολογιστές εκτός του στρατού. Παρ' όλα αυτά δεν ήταν μια νέα σχεδίαση αλλά ήταν βασισμένος σε μια έκθεση που είχε συντάξει κάποιος κύριος John Von Neuman για τον διάδοχο του (πολύ δημοφιλούς ίσως) υπολογιστή ENIAC που θα ονομαζόταν EDVAC (iii). Ο κ. Αποστολάτος όμως δεν μας λέει ποιόν ακριβώς ILLIAC εννοεί αφού απλά αναφέρει:

"Ένα άλλο συνηθισμένο σύστημα είναι το δεκαεξαδικό στο οποίο χρησιμοποιούμε τα δέκα βασικά σύμβολα του δεκαδικού και έξι νέα (όπως κάνουμε στον Illiac του πανεπιστημίου του Illinois)".

Όμως, απο τη χρονολογία του άρθρου (1961), πιθανότατα εννοεί τον ILLIAC-1 ο οποίος φαίνεται να έχει και παρόμοιο τύπο μνήμης (μαγνητικό τύμπανο) με τον IBM-650.

International Business Machines....Όνομα και πράγμα!
Η φωτογραφία δεν προέρχεται απο την προσωπική μου συλλογή (!) αλλά απο το άρθρο του κ. Αποστολάτου.


Ο IBM-650, όπως φαίνεται και στη φωτογραφία του άρθρου, αποτελείται μόλις απο 3 ντουλάπες (!). Σύμφωνα με το σχετικό άρθρο της Wikipedia, αυτές είναι: Στα αριστερά η κεντρική υπολογιστική μονάδα, στα δεξιά η μονάδα εισόδου-εξόδου που ουσιαστικά αποτελείται απο ένα μηχάνημα που τρυπάει και διαβάζει κάρτες (!) και στο πίσω μέρος του, η μεγαλύτερη ντουλάπα απο όλες.....το τροφοδοτικό!

Τα μηχανήματα εκείνης της εποχής χρησιμοποιούνταν για να λύνουν κυρίως μαθηματικά προβλήματα είτε αυτά ήταν του στρατού (τροχιές βλημάτων, πυραύλων, παιχνίδια πολέμου, κλπ), είτε ακαδημαϊκά (γενική έρευνα) είτε ιδιωτικών επιχειρήσεων και του κράτους (προβλήματα βελτιστοποίησης, καταμέτρησης, αρχειοθέτησης, λογιστηρίου, κλπ). Κάτι επεξεργασίες εικόνας και video, παιχνίδια, γραφικά, κουλτούρα, lifestyle, e-Απ'Όλα, i-Περισσότερα ήρθαν πολύ αργότερα (μόλις εχθές...σε γεωλογικό χρόνο (!)). Γι' αυτό το λόγο η ανάλυση περιλαμβάνει μόλις 4 βήματα: 1) Μαθηματική διατύπωση, 2) Aριθμητική μέθοδο, 3) Aλγόριθμο και 4) Yπολογιστικές εντολές.

Οι υπολογιστικές εντολές, είναι ακριβώς αυτό.....υπολογιστικές εντολές, ακριβώς όπως θα τις καταλάβαινε ένα μηχάνημα. Παρ' όλο που ο κ. Αποστολάτος, υπονοεί οτι οι εντολές που χρησιμοποιεί ο IBM-650 προέρχονται απο μια γλώσσα γενικού προγραμματισμού, στην πράξη μάλλον εννοεί κάποια γλώσσα μηχανής με ένα γενικό ρεπερτόριο που είχε αναπτυχθεί στα εργαστήρια της Bell και σε εκείνο το σημείο κάνει το εξής καταπληκτικό σχόλιο:

"Πολλές προσπάθειες έχουν γίνει για την εξέυρεση ενός ενιαίου τρόπου προγραμματισμού ο οποίος να ισχύει για όλες τις μηχανές Βλέπε, A.J Perlis, K. Samelson, Report on the algorithmic  language ALGOL, Num. Math.1 (1959) S. 41-60".

Οι προσπάθειες....συνεχίζονται!

Ο προγραμματιστής σε αυτή τη περίπτωση λοιπόν είναι και μεταγλωττιστής ή αλλιώς compiler, ο οποίος μεταγλωτίζει τις προτάσεις απο την φυσική γλώσσα ("Θέσε τη μεταβλητή Α ίση με το μηδέν") στη γλώσσα της μηχανής ("0 400 201 203"). Υπάρχει μια διάκριση εδώ. Οι γλώσσες προγραμματισμού που επιτρέπουν σε ένα προγραμματιστή να εκφράσει ένα πρόγραμμα με όσο το δυνατόν πιο "φυσική" γλώσσα κατατάσονται στις "υψηλού επιπέδου" ενώ οι γλώσσες που αναγκάζουν τον προγραμματιστή να εκφράσει ένα πρόγραμμα όσο το δυνατόν πιο κοντά στη μορφή που θα το επεξεργαστεί η μηχανή κατατάσονται στις "χαμηλού επιπέδου". Προφανώς η γλώσσα που χρησιμοποιείται εδώ είναι ήδη "χαμηλού επιπέδου"....Εκτός και αν υπάρχει το επόμενο επίπεδο όπου ανοίγουμε τη ντουλάπα και βραχυκυκλώνουμε ακροδέκετες στις λυχνίες ή μαγνητίζουμε το τύμπανο όπως "προγραμμάτιζαν" παλιά τις λατέρνες!

Το παράδειγμα που διαλέγει ο κ.Αποστολάτος, χρησιμοποιείται μέχρι σήμερα....Να υπολογιστεί η τετραγωνική ρίζα του a > 0 με την μέθοδο των διαδοχικών προσεγγίσεων του Newton σε 6 προσεγγιστικά βήματα. Το πρόγραμμα.....που λύνει το πρόβλημα.....είναι αυτό:

100: 0  400 201 203
101: 4  201 202 301
102: 1  202 301 302
103: 4  302 203 202
104: 0  100 006 101
105: 0  410 202 202

Όπου ο πρώτος αριθμός πρίν την άνω και κάτω τελεία είναι ο αριθμός της γραμμής του προγράμματος.

Κυρίες και κύριοι...Νίκου Αποστολάτου: Ο Προγραμματισμός Των Ηλεκτρονικών Αριθμοϋπολογιστών:



Σημειώσεις:
*) Το Copyright των άρθρων ανήκει στα "Τεχνικά Χρονικά".


i):  Δεν είχα την "τύχη" να δουλέψω σε τέτοια μηχανήματα όμως η τεχνική ιστορία έχει κάποιο ενδιαφέρον (Να εδώ άλλο ένα παράδειγμα). Γνωρίζοντας τη,μπορεί να καταλάβεις καλύτερα τι είναι "καινούριο" και "πρωτότυπο" αλλά και τις ανάγκες που οδήγησαν σε κάποιες λύσεις και το συγκεκριμένο πρόβλημα που προσπαθούσε να λύσει ο δημιουργός τους. Έχω την εντύπωση οτι αυτό ίσως βοηθάει στην κατανόηση και την εκτίμηση τους.


ii): Τα σύμβολα του δεκαεξαδικού συστήματος διεθνώς είναι 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Το δεκαεξαδικό σύστημα είναι πολύ βολικό για να εκφράσεις αριθμούς που χρησιμοποιούνται απο υπολογιστές, η πλειονότητα των οποίων λειτουργούν στο δυαδικό σύστημα και το μικρότερο στοιχείο δεδομένων που μπορούν να καταλάβουν είναι το byte. Ένα byte αποτελείται απο 8 δυαδικά σύμβολα (00001010) ή απλά 2 δεκαεξαδικά σύμβολα (0Α). Περισσότερες λεπτομέρειες, εδώ.


iii) Το όνομα της αρχιτεκτονικής έχει μείνει μέχρι σήμερα σαν Von Neumann παρ' όλο που οι κύριοι υπεύθηνοι για την αρχιτεκτονική του συστήματος ήταν οι κύριοι John Mauchley και Presper Eckert. Εκτός απο το υλικό της Wikipedia για αυτά τα συστήματα, υπάρχει και ένα καταπληκτικό βιβλίο με περισσότερες λεπτομέρειες για τα υπολογιστικά συστήματα εκείνης της εποχής με τον τίτλο Electronic Brains: Stories from the dawn of the computer age του Mike Hally το οποίο διαβάζεται με μια ανάσα!

2 σχόλια:

Spiros A. είπε...

Δυστυχώς πέθανε ο Νικόλαος Αποστολάτος, εδώ και πολλά χρόνια ομοτιμος καθηγητής του Τμήματος Πληροφορικής του ΕΚΠΑ, καθώς και του τμήματος Μαθηματικών.
Η εξόδιος ακολουθία έγινε την Πεμπτη, 29/12/2011 στην
Αγια Παρασκευη.
Κακή χρονιά το 2011 για την επιστήμη.

AA είπε...

Spiros A, καλώς ήρθες και σε ευχαριστώ πολύ για το σχόλιο σου.

Γνωρίζοντας πως ήταν ζωντανός όταν ανακάλυψα το άρθρο και ακόμα και όταν έγραψα για αυτό, νοιώθω λίγο περίεργα που δεν έκανα μια προσπάθεια να τον εντοπίσω. Όλο και καμία ενδιαφέρουσα ιστορία απο εκείνη την εποχή θα είχε να μας πεί :-)

Να είσαι καλά

Δημοσίευση σχολίου

top