το ιστολόγιο ενός Κύριου των Υπολογιστών και της Πληροφορικής ;-)

Άδεια χρήσης περιεχομένου

Creative Commons Licence
Το περιεχόμενο του ιστολογίου παρέχεται με άδεια χρήσης Creative Commons Attribution-ShareAlike 4.0 International License ...

Εμφάνιση αναρτήσεων με ετικέτα Αρχές της επιστήμης της πληροφορικής. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα Αρχές της επιστήμης της πληροφορικής. Εμφάνιση όλων των αναρτήσεων

Δευτέρα 9 Σεπτεμβρίου 2024

Τρεις δεκαετίες τώρα και το "The Cathedral and the Bazaar" συνεχίζει να αποτελεί πηγή έμπνευσης


Τρεις δεκαετίες τώρα και το "The Cathedral and the Bazaar" συνεχίζει να αποτελεί πηγή έμπνευσης.

Πριν από τριάντα (περίπου) χρόνια, κατά τη διάρκεια ενός Linux-Congress στη Βαβαρία, ένας αμερικανός προγραμματιστής ονόματι Eric Raymond  παρουσίασε την πρώτη έκδοση ενός κειμένου (working-paper) με τίτλο: "The Cathedral and the Bazaar" (μετάφραση: ο Καθεδρικός Ναός και το Παζάρι).



Κατά τον ίδιο, το κείμενο του, που μελετούσε κάποιες παράξενες, νέες προγραμματιστικές πρακτικές
δεν περιελάμβανε κάποια ιδιαίτερη ανακάλυψη.
Η παρουσίαση του όμως "γκρέμισε" το κτήριο.
Το γεγονός ότι η έγινε αποδεκτή (η παρουσίαση) με τόσο μεγάλο ενδιαφέρον και ενθουσιασμό από ένα κοινό στο οποίο ελάχιστοι είχαν την Αγγλική ως μητρική τους γλώσσα ήταν η επιβεβαίωση ότι ήμουν μπροστά σε κάτι πολύ σημαντικό
δήλωσε ο Raymond, ένα χρόνο αργότερα, όταν το working-paper μετατράπηκε σε βιβλίο.

Σχεδόν δύο δεκαετίες μετά από εκείνη την απογευματινή παρουσίαση στη Βαβαρία και το " The Cathedral and the Bazaar" συνεχίζει να αποτελεί πηγή έμπνευσης.

Το κείμενο αναλύει και συγκρίνει δύο διαφορετικά μοντέλα ανάπτυξης Ελεύθερου Λογισμικού / Λογισμικού Ανοιχτού Κώδικα:
  • το μοντέλο του "Καθεδρικού Ναού", στο οποίο ο πηγαίος κώδικας μιας εφαρμογής γίνεται διαθέσιμος με κάθε διανομή νέας έκδοσης της εφαρμογής αυτής, αλλά ο κώδικας που αναπτύσσεται μεταξύ των διανομών περιορίζεται αποκλειστικά μέσα σε μία ομάδα συγκεκριμένων προγραμματιστών. Χαρακτηριστικά παραδείγματα αυτού του μοντέλου ανάπτυξης είναι τα GNU Emacs και GCC.
  • το μοντέλο του "Παζαριού", στο οποίο ο κώδικας αναπτύσσεται στο διαδίκτυο, σε κοινή θέα. Ο Raymond πιστώνει στον Linus Torvalds, εμπνευστή του Linux kernel project, την ανακάλυψη αυτού του μοντέλου ανάπτυξης κώδικα, ενώ παρουσιάζει και τη δική του συνεισφορά σε αυτό το μοντέλο, όπως προέκυψε από την εμπλοκή του στο Fetchmail project.
Η κεντρική θέση του Raymond στο κείμενο (την οποία βαφτίζει "νόμο του Linus") είναι:
αν έχεις αρκετά μάτια στη διάθεση σου τα bugs (προγραμματιστικά λάθη) αποδεικνύονται πολύ λίγα...
Το κείμενο μπορείτε να το βρείτε εδώ (σε διάφορες γλώσσες) ή εδώ (στην Ελληνική).

Καλή ανάγνωση ;-)

Και με την ευκαιρία μπορείτε να παρακολουθήσετε ένα ντοκιμαντέρ που παρουσιάζει την εικοσάχρονη (τότε) πορεία του GNU, Linux, Open Source. Περισσότερα για το ντοκιμαντέρ στο imdb (κλικ εδώ).



Το κείμενο βασίστηκε στο άρθρο του Bryan Behrenshausen (κλικ εδώ) καθώς και στην wikipedia



Τρίτη 8 Μαρτίου 2022

Hedy Lamarr: Η πληροφορικός του μήνα


Η Hedy Lamarr εκτός από μια λαμπερή ηθοποιός ήταν και μια σπουδαία εφευρέτρια, την οποία ονομάζουν «η μητέρα του Wi-Fi και άλλων ασύρματων επικοινωνιών όπως το GPS και τα Bluetooth».

Η εφεύρεσή της δεν βοήθησε απλά την ανάπτυξη του wi-fi, έκανε κάτι πιο πολύπλοκο. Η πατέντα της αποτέλεσε τον πρόδρομο για την δημιουργία ασύρματων στρατιωτικών (crypto) δικτύων για ασφαλή (από υποκλοπές και παρεμβολές) μεταφορά δεδομένων.

Η ιδέα της για την εναλλαγή 88 διαφορετικών συχνοτήτων εμπνεύστηκε από τον αριθμό των πλήκτρων του πιάνου. Και αυτό το οφείλει στη μητέρα της, η οποία ήταν πιανίστρια.

Η Hedy Lamarr ήταν μια Αμερικανίδα ηθοποιός Αυστριακής καταγωγής και εφευρέτρια η οποία πρωτοπόρησε στην τεχνολογία (spread-spectrum communication) που κάποια στιγμή θα δημιουργούσε την βάση για τα σημερινά συστήματα επικοινωνίας όπως το WiFi- GPS και τα Bluetooth.

Ως μια από τις πιο όμορφες γυναίκες της εποχής της, έπαιξε σε διάφορες ταινίες όπως τις «Samson και  Delilah» και «White Cargo» ενώ ο κόσμος έως και σήμερα δεν γνωρίζει για τις εφευρέσεις της!

Το πραγματικό όνομα της Hedy Lamarr ήταν Hedwig Eva Kiesler. Γεννήθηκε στις 9 Νοεμβρίου του 1914 στην Βιέννη της Αυστρίας και άνηκε σε μια πλούσια οικογένεια Εβραίων. 

Η Lamarr ως μοναχοπαίδι, έλαβε πολύ προσοχή από τον πατέρα της ο οποίος ήταν ένας άνθρωπος με περιέργεια και διαρκή αναζήτηση. Επίσης ήταν αυτός που κατάφερε να εμπνεύσει την Lamarr ώστε να βλέπει τον κόσμο με ένα ανοιχτό μυαλό. Ο πατέρας της την πήγαινε συχνά για περπάτημα, όπου μεταξύ άλλων συζητούσαν για τον τρόπο λειτουργίας από διάφορες μηχανές, όπως τυπογραφικές μηχανές ή διάφορα αυτοκίνητα. 

Αυτές οι συζητήσεις ήταν που καθόρισαν την σκέψη της Lamarr και έτσι όταν ήταν μόλις πέντε χρονών αποσυναρμολόγησε και επανασυναρμολόγησε το μουσικό κουτί της για να μάθει πως αυτό λειτουργούσε. Η μητέρα της ήταν πιανίστρια η οποία την μύησε στο κόσμο της τέχνης βάζοντάς την σε διάφορα μαθήματα μπαλέτου και πιάνου από μικρή ηλικία.

Σε ηλικία 16 ετών την ανακάλυψε ο σκηνοθέτης Max Reinhardt. Η Lamarr σπούδασε υποκριτική στο Βερολίνο και έπαιξε τον πρώτο της μικρό ρόλο, το 1930, σε μια γερμανική ταινία «Money on the street». Τέλος το 1932 η Lamarr έλαβε μεγάλη δημοσιότητα ως ηθοποιός για τον ρόλο της στην ταινία « Έκσταση».

Ο Αυστριακός έμπορας πολεμοφοδίων, Fritz Mandl, έγινε ένας από τους μεγάλους θαυμαστές της Lamarr όταν την είδε στο θέατρο Sissy. Το 1933, η Lamarr και ο Mandl παντρεύτηκαν αλλά ο γάμος τους δεν κράτησε για πολύ. Η Lamarr είχε δηλώσει για το γάμο της: «Ήξερα από πολύ νωρίς ότι δεν θα μπορώ να είμαι ηθοποιός όσο ήμουν η γυναίκα του…. ο Mandl ήταν ο απόλυτος κυρίαρχος στον γάμο μας και εγώ ένιωθα σαν μια κούκλα, ένα αντικείμενο τέχνης το οποίο έπρεπε να φυλαχτεί και να φυλακιστεί χωρίς να έχει δικό του μυαλό και ζωή.»

Η Lamarr την περίοδο αυτού του γάμου, ήταν πολύ δυστυχισμένη μιας και της επιβάλλονταν να φέρεται ως οικοδέσποινα και να χαμογελάει υπό εντολή, στους φίλους του Mandl και στους σκανδαλώδεις επιχειρηματικούς συνεργάτες του, όπου κάποιοι από αυτούς σχετίζονταν με  τους Ναζί. Αφού «δραπέτευσε»  από την φυλακή του Mandl, η Lamarr πήγε στο Λονδίνο «παίρνοντας» μαζί της τις γνώσεις που κέρδισε από τις συζητήσεις για τον πολεμικό οπλισμό που είχε κάνει στα δείπνα με τους φίλους του Mandl.

 Καθώς ήταν στο Λονδίνο η τύχη της Lamarr αλλάξε τελείως όταν γνωρίστηκε με στον Louis B. Mayer, άνθρωπο των κινηματογραφικών στούντιο MGM. Με αυτή την συνάντηση εξασφάλισε το «εισιτήριο» της για το Hollywood όπου κατάφερε να εκθαμβώσει το αμερικάνικο κοινό με την χάρη της, την ομορφιά και την προφορά της.

Στο Hollywood η Lamarr γνώρισε διάφορα άτομα όπου ένα από αυτά ήταν ο επιχειρηματίας και πιλότος Howard Hughes.

Η Lamarr στις συναντήσεις της με τον Howard Hughes κυρίως συζητούσαν για τις εφευρέσεις. Το επιστημονικό μυαλό της Lamarr, είχε «καταπιεστεί» πολύ από το Hollywood και οι συζητήσεις με τον Hughes την βοήθησαν να «βρει» ξανά τον εφευρέτη που είχε μέσα της. Ο Hughes της έδωσε κάποια εργαλεία για να χρησιμοποιήσει στον ελεύθερο χρόνο της στα καμαρίνια.

 Παρόλο που η Lamarr είχε ένα μικρό εργαστήριο στο σπίτι της, τα εργαλεία που της έδωσε ο Hughes την βοήθησαν στο να ασχοληθεί περισσότερο με την εφευρετική της πλευρά κατά την διάρκεια των διαλειμμάτων από τις κινηματογραφικές σκηνές. Ο Hughes πρότεινε στη Lamarr να επισκεφθούν τα εργοστάσια που κατασκεύαζε τα αεροπλάνα. Εκεί της έδειξε πως φτιάχνονταν τα αεροπλάνα και τη γνώρισε στους επιστήμονες και μηχανικούς που ήταν πίσω από αυτές τις κατασκευές.

Ο Hughes ήθελε να φτιάξει πιο γρήγορα αεροπλάνα προκειμένου αυτά να πουληθούν στο στρατό των Η.Π.Α. και η Lamarr αμέσως σκέφθηκε ότι μπορούσε να βοηθήσει σε αυτό.

 Η Lamarr αγόρασε ένα βιβλίο με ψάρια και ένα βιβλίο με πουλιά και ερεύνησε τα πιο γρήγορα ψάρια και πτηνά από κάθε είδος όπου και συνδύασε τα πτερύγια από τα πιο γρήγορα ψάρια και τα φτερά των πιο γρήγορων πτηνών για να σχεδιάσει ένα νέο σχέδιο φτερών για τα αεροπλάνα του Hughes. Καθώς του έδειξε το σχέδιο ο Hughes είπε στην Lamarr το εξής «είσαι ιδιοφυΐα».

Η Lamarr ήταν όντως μια ιδιοφυΐα και σε κάποια δήλωσή της είχε πει το εξής: «το να βελτιώνω πράγματα μου έρχεται στο μυαλό με φυσικό τρόπο».

Η Lamarr προσπάθησε να εφεύρει ένα φανάρι ρύθμισης κυκλοφορίας και μια ταμπλέτα που όταν την έριχνες στο νερό, διασπόνταν και προσομοίωνε την γεύση της κόκα κόλα. Παρόλα ταύτα οι πιο σημαντικές τις εφευρέσεις κατασκευάστηκαν καθώς οι Ηνωμένες πολιτείες της Αμερικής εξοπλίζονταν για να ενταχθούν στον Β’ Παγκόσμιο Πόλεμο.

Το 1940 η Lamarr συνάντησε τον George Antheil σε ένα βραδινό πάρτι. O Antheil ήταν ένας ιδιόρρυθμος χαρακτήρας ενώ ταυτόχρονα ήταν ένα πολύ έξυπνο άτομο. Γνωστός για την συγγραφή του και τις πειραματικές του μουσικές συνθέσεις, είχε και ο ίδιος το ακριβώς το ίδιο εφευρετικό πνεύμα με την Lamarr. Αυτή και ο Antheil συζητούσαν για διάφορα θέματα αλλά κυρίως τους ανησυχούσε ο επικείμενος πόλεμος. Ο Antheil θυμόνταν από εκείνες τις συζητήσεις το εξής: «Η Hedy είχε πει ότι δεν ένοιωθε καθόλου άνετα με το να κάθεται εδώ και να βγάζει χρήματα στο Hollywood ενώ ένας πόλεμος είναι έτοιμος να ξεσπάσει». Μετά τον γάμο της με τον Mandl είχε γνώσεις για πολεμοφόδια και διάφορα όπλα που θα ήταν πολύ χρήσιμες. Οπότε έτσι η Lamarr και ο Antheil ξεκίνησαν να πειραματίζονται σε ιδέες για το πως θα μπορούσαν να φτιάξουν κάτι για να βοηθήσουν στο να νικηθούν οι δυνάμεις του άξονα.

Οι δυο τους βρήκανε ένα ασυνήθιστο σύστημα επικοινωνίας το οποίο χρησιμοποιούνταν με σκοπό το να καθοδηγούνται οι τορπίλες στους στόχους τους κατά την διάρκεια του πολέμου. Το σύστημα αυτό περιλάμβανε την χρήση «εναλλαγής συχνοτήτων» μεταξύ ραδιοκυμάτων έχοντας πομπό και δέκτη οι οποίοι αναπηδούσαν συνεχώς σε νέες συχνότητες, για την ακρίβεια σε 88, όσες και τα πλήκτρα του πιάνου. Με αυτό το σύστημα αποτρέπονταν η διακοπή των ραδιοκυμάτων ενώ παράλληλα επέτρεπε στην τορπίλη να βρει τον προκαθορισμένο στόχο της.

Μετά την δημιουργία του συστήματος η Lamarr και ο Antheil ψάχνανε για να κατοχυρώσουν την εφεύρεσή τους. Τον Αύγουστο του 1942 έλαβαν το δίπλωμα ευρεσιτεχνίας (U.S. 2,292,387) για την εφεύρεσή τους, όμως το Αμερικανικό Ναυτικό αποφάσισε να μην υποστηρίξει την πρακτική εφαρμογή αυτού του συστήματος επικοινωνίας.

Η απόρριψη αυτή οδήγησε την Lamarr να υποστηρίξει τις προσπάθειες πολέμου με άλλο τρόπο, εκμεταλλευόμενη τη διασημότητα της ως ηθοποιός, πουλούσε πολεμικά ομόλογα (war bonds) για την οικονομική ενίσχυση του πολέμου.

Εντωμεταξύ τα λεφτά που πήρε η Lamarr από την κατοχύρωση της εφεύρεσης της άρχισαν να τελειώνουν με γοργούς ρυθμούς. Καθώς συνέχιζε να μαζεύει χρήματα από τη συμμετοχή της σε ταινίες μέχρι το 1958, η εφευρετικές της ικανότητες δεν είχε ακόμη επιβραβευθεί. Αυτό συνέβη για πρώτη φορά μετά από 29 χρόνια.

Έτσι, το 1997 η Lamarr βραβεύτηκε μαζί με τον Antheil από την εταιρία Electronic Frontier Foundation με το βραβείο πρωτοπορίας.

H Lamarr ήταν επίσης η πρώτη γυναίκα που έλαβε το βραβείο Invention Convention’s Bulbie Gnass Spirit of Achievement Award. 

Παρόλο που πέθανε το 2000, μόλις το 2014 η Lamarr «εντάχθηκε» στο Διεθνές πανθέων των Εφευρετών για την εξέλιξη της τεχνολογίας αναπήδησης της συχνότητας (frequency hopping technology).

Αυτό το επίτευγμα της «οδήγησε» την Lamarr στο να την ονομάζουν ως «η μητέρα του Wi-Fi και άλλων ασύρματων επικοινωνιών όπως το GPS και τα Bluetooth».

Αναδημοσίευση από την ιστοσελίδα "Ελληνικό Μουσείο Πληροφορικής"  https://www.facebook.com/EllinikoMouseioPliroforikis/ 

Πέμπτη 10 Φεβρουαρίου 2022

Go To Statement Considered Harmful by Edsger W. Dijkstra


Μελετώντας υλικό για τη διδακτική του προγραμματισμού "έπεσα" πάνω στο ιστορικό κείμενο/γράμμα του Edsger W. Dijkstra με τίτλο "Go To Statement Considered Harmful" και συνειδητοποίησα ότι

  • από το 1987 που πρωτό-ξεκίνησα πάνω σε έναν Spectrum +2 να παιδεύομαι με την αλγοριθμική έχουν περάσει πραγματικά πολλά χρόνια
  • έχει κυλήσει πραγματικά πολύ νερό στον μύλο της διδακτικής του προγραμματισμού 
  • θα ήταν χρήσιμο να κρατήσω κάπου κάποια ιστορικά κείμενα/αναφορές/εργασίες

Ξεκινάω από το κείμενο του Dijkstra λοιπόν το οποίο αφορούσε στην γλώσσα προγραμματισμού Basic η οποία ήταν (και παραμένει ;-)) μια γλώσσα πολύ ευέλικτη. Αυτό ήταν το βασικό της προτέρημα, αλλά και το μειονέκτημά της: η υπερβολική «ελευθερία» που έδινε στον προγραμματιστή, οδήγησε στα περίφημα προγράμματα «σπαγγέτι», στα οποία ήταν πολύ δύσκολο να δει κανείς τη δομή.

Αυτό το είδος προγραμματισμού οδήγησε τον E. W. Dijsktra στο να γράψει το άρθρο του “Goto considered harmful” – στην πραγματικότητα μια επιστολή μιας σελίδας, που άλλαξέ όμως την πορεία του προγραμματισμού.

Ακολουθεί το κείμενο (το οποίο μπορείτε να το βρείτε και εδώ: http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html

Go To Statement Considered Harmful
Edsger W. Dijkstra


Reprinted from Communications of the ACM, Vol. 11, No. 3, March 1968, pp. 147-148. Copyright © 1968, Association for Computing Machinery, Inc.

This is a digitized copy derived from an ACM copyrighted work. It is not guaranteed to be an accurate copy of the author's original work.


Key Words and Phrases:
go to statement, jump instruction, branch instruction, conditional clause, alternative clause, repetitive clause, program intelligibility, program sequencing
CR Categories:
4.22, 6.23, 5.24

Editor:

For a number of years I have been familiar with the observation that the quality of programmers is a decreasing function of the density of go to statements in the programs they produce. More recently I discovered why the use of the go to statement has such disastrous effects, and I became convinced that the go to statement should be abolished from all "higher level" programming languages (i.e. everything except, perhaps, plain machine code). At that time I did not attach too much importance to this discovery; I now submit my considerations for publication because in very recent discussions in which the subject turned up, I have been urged to do so.

My first remark is that, although the programmer's activity ends when he has constructed a correct program, the process taking place under control of his program is the true subject matter of his activity, for it is this process that has to accomplish the desired effect; it is this process that in its dynamic behavior has to satisfy the desired specifications. Yet, once the program has been made, the "making' of the corresponding process is delegated to the machine.

My second remark is that our intellectual powers are rather geared to master static relations and that our powers to visualize processes evolving in time are relatively poorly developed. For that reason we should do (as wise programmers aware of our limitations) our utmost to shorten the conceptual gap between the static program and the dynamic process, to make the correspondence between the program (spread out in text space) and the process (spread out in time) as trivial as possible.

Let us now consider how we can characterize the progress of a process. (You may think about this question in a very concrete manner: suppose that a process, considered as a time succession of actions, is stopped after an arbitrary action, what data do we have to fix in order that we can redo the process until the very same point?) If the program text is a pure concatenation of, say, assignment statements (for the purpose of this discussion regarded as the descriptions of single actions) it is sufficient to point in the program text to a point between two successive action descriptions. (In the absence of go to statements I can permit myself the syntactic ambiguity in the last three words of the previous sentence: if we parse them as "successive (action descriptions)" we mean successive in text space; if we parse as "(successive action) descriptions" we mean successive in time.) Let us call such a pointer to a suitable place in the text a "textual index."

When we include conditional clauses (if B then A), alternative clauses (if B then Aelse A2), choice clauses as introduced by C. A. R. Hoare (case[i] of (A1, A2,···, An)),or conditional expressions as introduced by J. McCarthy (B1 -> E1, B2 -> E2, ···, Bn -> En), the fact remains that the progress of the process remains characterized by a single textual index.

As soon as we include in our language procedures we must admit that a single textual index is no longer sufficient. In the case that a textual index points to the interior of a procedure body the dynamic progress is only characterized when we also give to which call of the procedure we refer. With the inclusion of procedures we can characterize the progress of the process via a sequence of textual indices, the length of this sequence being equal to the dynamic depth of procedure calling.

Let us now consider repetition clauses (like, while B repeat A or repeat A until B). Logically speaking, such clauses are now superfluous, because we can express repetition with the aid of recursive procedures. For reasons of realism I don't wish to exclude them: on the one hand, repetition clauses can be implemented quite comfortably with present day finite equipment; on the other hand, the reasoning pattern known as "induction" makes us well equipped to retain our intellectual grasp on the processes generated by repetition clauses. With the inclusion of the repetition clauses textual indices are no longer sufficient to describe the dynamic progress of the process. With each entry into a repetition clause, however, we can associate a so-called "dynamic index," inexorably counting the ordinal number of the corresponding current repetition. As repetition clauses (just as procedure calls) may be applied nestedly, we find that now the progress of the process can always be uniquely characterized by a (mixed) sequence of textual and/or dynamic indices.

The main point is that the values of these indices are outside programmer's control; they are generated (either by the write-up of his program or by the dynamic evolution of the process) whether he wishes or not. They provide independent coordinates in which to describe the progress of the process.

Why do we need such independent coordinates? The reason is - and this seems to be inherent to sequential processes - that we can interpret the value of a variable only with respect to the progress of the process. If we wish to count the number, n say, of people in an initially empty room, we can achieve this by increasing n by one whenever we see someone entering the room. In the in-between moment that we have observed someone entering the room but have not yet performed the subsequent increase of n, its value equals the number of people in the room minus one!

The unbridled use of the go to statement has an immediate consequence that it becomes terribly hard to find a meaningful set of coordinates in which to describe the process progress. Usually, people take into account as well the values of some well chosen variables, but this is out of the question because it is relative to the progress that the meaning of these values is to be understood! With the go to statement one can, of course, still describe the progress uniquely by a counter counting the number of actions performed since program start (viz. a kind of normalized clock). The difficulty is that such a coordinate, although unique, is utterly unhelpful. In such a coordinate system it becomes an extremely complicated affair to define all those points of progress where, say, n equals the number of persons in the room minus one!

The go to statement as it stands is just too primitive; it is too much an invitation to make a mess of one's program. One can regard and appreciate the clauses considered as bridling its use. I do not claim that the clauses mentioned are exhaustive in the sense that they will satisfy all needs, but whatever clauses are suggested (e.g. abortion clauses) they should satisfy the requirement that a programmer independent coordinate system can be maintained to describe the process in a helpful and manageable way.

It is hard to end this with a fair acknowledgment. Am I to judge by whom my thinking has been influenced? It is fairly obvious that I am not uninfluenced by Peter Landin and Christopher Strachey. Finally I should like to record (as I remember it quite distinctly) how Heinz Zemanek at the pre-ALGOL meeting in early 1959 in Copenhagen quite explicitly expressed his doubts whether the go to statement should be treated on equal syntactic footing with the assignment statement. To a modest extent I blame myself for not having then drawn the consequences of his remark

The remark about the undesirability of the go to statement is far from new. I remember having read the explicit recommendation to restrict the use of the go to statement to alarm exits, but I have not been able to trace it; presumably, it has been made by C. A. R. Hoare. In [1, Sec. 3.2.1.] Wirth and Hoare together make a remark in the same direction in motivating the case construction: "Like the conditional, it mirrors the dynamic structure of a program more clearly than go to statements and switches, and it eliminates the need for introducing a large number of labels in the program."

In [2] Guiseppe Jacopini seems to have proved the (logical) superfluousness of the go to statement. The exercise to translate an arbitrary flow diagram more or less mechanically into a jump-less one, however, is not to be recommended. Then the resulting flow diagram cannot be expected to be more transparent than the original one.

References:

  1. Wirth, Niklaus, and Hoare C. A. R. A contribution to the development of ALGOL. Comm. ACM 9 (June 1966), 413-432.
  2. BÖhm, Corrado, and Jacopini Guiseppe. Flow diagrams, Turing machines and languages with only two formation rules. Comm. ACM 9 (May 1966), 366-371.

Edsger W. Dijkstra
Technological University
Eindhoven, The Netherlands