Ιστορία του Λογισμικού

Το λογισμικό (software) είναι ένα σύνολο προγραμματισμένων οδηγιών που αποθηκεύονται στη μνήμη των ψηφιακών υπολογιστών αρχιτεκτονικής αποθηκευμένου προγράμματος προς εκτέλεση από τον επεξεργαστή. Η ανάπτυξη του λογισμικού αποτελεί πρόσφατο επίτευγμα στην ανθρώπινη ιστορία και συνιστά τον θεμέλιο λίθο της Εποχής της Πληροφορίας.

Τα προγράμματα που συνέταξε η Άντα Λάβλεϊς για την Αναλυτική μηχανή του Τσαρλς Μπάμπατζ τον 19ο αιώνα θεωρούνται συχνά η απαρχή του κλάδου. Ωστόσο, οι προσπάθειες της μαθηματικού παρέμειναν σε θεωρητικό επίπεδο, καθώς η τεχνολογία της εποχής δεν επέτρεπε την κατασκευή της μηχανής. Ο Άλαν Τιούρινγκ πιστώνεται ως ο πρώτος που διατύπωσε μια ολοκληρωμένη θεωρία για το λογισμικό το 1935, γεγονός που οδήγησε στη δημιουργία των δύο ακαδημαϊκών πεδίων: της Επιστήμης Υπολογιστών και της Μηχανικής Λογισμικού.

Η πρώτη γενιά λογισμικού για τους πρώιμους ψηφιακούς υπολογιστές στα τέλη της δεκαετίας του 1940 περιλάμβανε οδηγίες γραμμένες απευθείας σε δυαδικό κώδικα, συνήθως για μεγάλα συστήματα (mainframes). Αργότερα, η ανάπτυξη των σύγχρονων γλωσσών προγραμματισμού σε συνδυασμό με την εξέλιξη των οικιακών υπολογιστών διεύρυνε δραστικά το πεδίο εφαρμογής του λογισμικού, ξεκινώντας από τη Assembly και προχωρώντας στον συναρτησιακό και τον αντικειμενοστρεφή προγραμματισμό.

 Καταβολές της επιστήμης υπολογιστών 

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

Ωστόσο, αυτές οι συσκευές αποτελούσαν καθαρό υλικό (hardware) και δεν διέθεταν λογισμικό — οι υπολογιστικές τους ικανότητες ήταν άρρηκτα συνδεδεμένες με τη συγκεκριμένη γεωμετρία και τη μηχανολογική τους κατασκευή.

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

Ο πρώτος γνωστός υπολογιστικός αλγόριθμος γράφτηκε από την Άντα Λάβλεϊς τον 19ο αιώνα για την Αναλυτική μηχανή, προκειμένου να μεταφράσει το έργο του Λουίτζι Μενάμπρεα πάνω στους αριθμούς Bernoulli σε μηχανικές οδηγίες. Παρόλα αυτά, η προσπάθεια αυτή παρέμεινε θεωρητική, καθώς το επίπεδο της μηχανικής κατά τη διάρκεια της ζωής των δύο μαθηματικών αποδείχθηκε ανεπαρκές για την κατασκευή της μηχανής.

Η πρώτη σύγχρονη θεωρία λογισμικού προτάθηκε από τον Άλαν Τιούρινγκ το 1935 στο δοκίμιό του On Computable Numbers, with an Application to the Entscheidungsproblem (Περί των υπολογίσιμων αριθμών, με μια εφαρμογή στο πρόβλημα απόφασης).

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

Ωστόσο, πριν από το 1946, το λογισμικό με τη σύγχρονη έννοια — δηλαδή προγράμματα αποθηκευμένα στη μνήμη ψηφιακών υπολογιστών— δεν υπήρχε ακόμη. Οι πρώτες ηλεκτρονικές υπολογιστικές συσκευές απαιτούσαν επανακαλωδίωση (rewiring) για τον «επαναπρογραμματισμό» τους. Ο ENIAC, ένας από τους πρώτους ηλεκτρονικούς υπολογιστές, προγραμματιζόταν σε μεγάλο βαθμό από γυναίκες που προηγουμένως εργάζονταν ως ανθρώπινοι υπολογιστές. Οι μηχανικοί παρείχαν στις προγραμματίστριες τα σχέδια της καλωδίωσης του ENIAC και εκείνες έπρεπε να βρουν πώς να προγραμματίσουν το μηχάνημα. Οι γυναίκες που εργάζονταν ως προγραμματίστριες προετοίμασαν τον ENIAC για την πρώτη του δημόσια παρουσίαση, καλωδιώνοντας τους πίνακες σύνδεσης για τις επιδείξεις. Η Κάθλιν Μπουθ ανέπτυξε τη γλώσσα Assembly το 1950 για να διευκολύνει τον προγραμματισμό των υπολογιστών στο Birkbeck College.

Η Γκρέις Χόπερ υπήρξε μία από τις πρώτες προγραμματίστριες του Harvard Mark I. Αργότερα, δημιούργησε ένα εγχειρίδιο 500 σελίδων για τον υπολογιστή. Στη Χόπερ αποδίδεται συχνά εσφαλμένα η πατρότητα των όρων "bug" και "debugging", όταν βρήκε μια πεταλούδα (moth) στον Mark II, η οποία προκάλεσε δυσλειτουργία· ωστόσο, ο όρος ήταν ήδη σε χρήση όταν ανακάλυψε το έντομο. Η Χόπερ ανέπτυξε τον πρώτο μεταγλωττιστή (compiler) και μετέφερε την ιδέα της από την εργασία της στους υπολογιστές Mark στον UNIVAC τη δεκαετία του 1950. Ανέπτυξε επίσης τη γλώσσα προγραμματισμού FLOW-MATIC για τον προγραμματισμό του UNIVAC. Η Φράνσις Ε. Χόλμπερτον, εργαζόμενη επίσης στον UNIVAC, ανέπτυξε έναν κώδικα, τον C-10, ο οποίος επέτρεπε στους προγραμματιστές να χρησιμοποιούν είσοδο από πληκτρολόγιο, και δημιούργησε τη γεννήτρια ταξινόμησης-συγχώνευσης (Sort-Merge Generator) το 1951. Η Άντελ Μίλντρεντ Κος (Milly Koss) και η Χόπερ δημιούργησαν επίσης τον πρόδρομο μιας γεννήτριας αναφορών (report generator).

 Οι απαρχές του λογισμικού υπολογιστών (1948–1979) 

Στο χειρόγραφό του «Μια Μαθηματική Θεωρία της Επικοινωνίας» (A Mathematical Theory of Communication), ο Κλοντ Σάνον (1916–2001) παρείχε το περίγραμμα για το πώς η δυαδική λογική θα μπορούσε να εφαρμοστεί για τον προγραμματισμό ενός υπολογιστή. Στη συνέχεια, οι πρώτοι προγραμματιστές χρησιμοποίησαν δυαδικό κώδικα για να δώσουν οδηγίες στους υπολογιστές. Ωστόσο, η διαδικασία ήταν εξαιρετικά επίπονη. Οι προγραμματιστές έπρεπε να παρέχουν μεγάλες ακολουθίες δυαδικού κώδικα για να ορίσουν τα δεδομένα προς αποθήκευση. Ο κώδικας και τα δεδομένα φορτώνονταν στους υπολογιστές μέσω κουραστικών μηχανισμών, όπως η εναλλαγή διακοπτών ή η χρήση διατρητικών καρτών. Με αυτές τις μεθόδους, ένα μόνο λάθος μπορούσε να οδηγήσει στην ανάγκη επαναφόρτωσης ολόκληρου του προγράμματος από την αρχή.

Η πρώτη φορά που ένας υπολογιστής αρχιτεκτονικής αποθηκευμένου προγράμματος εκτέλεσε επιτυχώς λογισμικό από την ηλεκτρονική του μνήμη ήταν στις 11 π.μ. της 21ης Ιουνίου 1948, στο Πανεπιστήμιο του Μάντσεστερ, στον υπολογιστή Manchester Baby. Το πρόγραμμα γράφτηκε από τον Τομ Κίλμπερν και υπολόγιζε τον μεγαλύτερο διαιρέτη του ακεραίου = 262.144$. Ξεκινώντας με έναν μεγάλο δοκιμαστικό διαιρέτη, εκτελούσε τη διαίρεση μέσω επαναλαμβανόμενων αφαιρέσεων και έλεγχε αν το υπόλοιπο ήταν μηδέν. Αν όχι, μείωνε τον διαιρέτη κατά ένα και επαναλάμβανε τη διαδικασία. Η Google κυκλοφόρησε ένα αφιέρωμα στον Manchester Baby, χαρακτηρίζοντάς τον ως τη «γέννηση του λογισμικού».

Η FORTRAN αναπτύχθηκε από μια ομάδα με επικεφαλής τον Τζον Μπάκους στην IBM τη δεκαετία του 1950. Ο πρώτος μεταγλωττιστής κυκλοφόρησε το 1957. Η γλώσσα αποδείχθηκε τόσο δημοφιλής για επιστημονικούς και τεχνικούς υπολογισμούς που μέχρι το 1963 όλοι οι μεγάλοι κατασκευαστές είχαν υλοποιήσει ή ανακοινώσει τη FORTRAN για τα συστήματά τους.Jean E. Sammet (1969). Programming Languages: History and Fundamentals, Prentice Hall, Englewood Cliffs, New Jersey.R.W. Bemer (1969). A politico-social history of Algol, Annual Review in Automatic Programming, pp 151-237. Pergamon Press, Oxford.

Η COBOL συνελήφθη ως ιδέα όταν η Μέρι Χόους συγκάλεσε μια συνάντηση (στην οποία συμμετείχε και η Γκρέις Χόπερ) το 1959 για τη δημιουργία μιας κοινής γλώσσας προγραμματισμού για επιχειρηματική χρήση. Η καινοτομία της Χόπερ με την COBOL ήταν η ανάπτυξη ενός νέου συμβολικού τρόπου γραφής, ο οποίος ήταν αυτο-τεκμηριωμένος (self-documenting). Η Μπέτι Χόλμπερτον βοήθησε στην επιμέλεια της γλώσσας, η οποία υποβλήθηκε στο Κυβερνητικό Τυπογραφείο των ΗΠΑ το 1960. Η FORMAC αναπτύχθηκε από τη Τζιν Σάμετ τη δεκαετία του 1960. Το βιβλίο της, Programming Languages: History and Fundamentals (1969), αποτέλεσε έργο με μεγάλη επιρροή στον κλάδο.

 Αποστολή Apollo 
Το Πρόγραμμα Apollo για την προσελήνωση βασίστηκε σε λογισμικό για τον προγραμματισμό των υπολογιστών στις μονάδες προσεδάφισης. Οι υπολογιστές προγραμματίστηκαν με μια γλώσσα ονομαζόμενη "Basic" (χωρίς σχέση με τη γλώσσα BASIC). Το λογισμικό διέθετε επίσης έναν διερμηνέα (interpreter) που αποτελούνταν από μια σειρά ρουτινών και ένα εκτελεστικό πρόγραμμα (παρόμοιο με ένα σύγχρονο λειτουργικό σύστημα), το οποίο καθόριζε ποια προγράμματα θα εκτελούνταν και πότε. Και τα δύο σχεδιάστηκαν από τον Χαλ Λάνινγκ. 

Η Μάργκαρετ Χάμιλτον ήταν επικεφαλής της ομάδας λογισμικού πτήσης των υπολογιστών Apollo. Η Χάμιλτον πίστευε ότι οι λειτουργίες του λογισμικού δεν ήταν απλώς μέρος της μηχανής, αλλά στενά συνδεδεμένες με τους ανθρώπους που το χειρίζονταν. Η ίδια εισήγαγε τον όρο «Μηχανική Λογισμικού» (software engineering) κατά τη διάρκεια της εργασίας της στη NASA, προκειμένου να προσδώσει στο λογισμικό την ίδια νομιμότητα και σεβασμό που απολάμβαναν άλλες μορφές μηχανικής.

Το πραγματικό «λογισμικό» για τους υπολογιστές των αποστολών Apollo αποτελούνταν από καλώδια που ήταν περασμένα μέσα από μαγνητικούς πυρήνες. Εκεί που το καλώδιο περνούσε μέσα από έναν μαγνητικό πυρήνα, αναπαριστούσε το ψηφίο «1», ενώ εκεί που το καλώδιο περνούσε γύρω από τον πυρήνα, αναπαριστούσε το «0». Κάθε πυρήνας αποθήκευε 64 bit πληροφορίας. Η Χάμιλτον και η ομάδα της δημιουργούσαν το λογισμικό ανοίγοντας τρύπες σε διατρητικές κάρτες, οι οποίες στη συνέχεια επεξεργάζονταν σε έναν κεντρικό υπολογιστή Honeywell, όπου το λογισμικό μπορούσε να προσομοιωθεί. Όταν ο κώδικας θεωρούνταν «σταθερός», στελνόταν για πλέξη στους μαγνητικούς πυρήνες στη Raytheon, όπου εργάζονταν γυναίκες γνωστές με το προσωνύμιο «Little Old Ladies» (Μικρές Γριούλες). Το ίδιο το πρόγραμμα ήταν «άφθαρτο» και μπορούσε να αντέξει ακόμη και πλήγματα από κεραυνούς, όπως συνέβη στην αποστολή Απόλλων 12. Η καλωδίωση των υπολογιστών απαιτούσε αρκετές εβδομάδες, κατά τη διάρκεια των οποίων η ανάπτυξη του λογισμικού «πάγωνε».

Κατά τη χρήση των προσομοιωτών για τη δοκιμή του προγραμματισμού, η Χάμιλτον ανακάλυψε τρόπους με τους οποίους ο κώδικας θα μπορούσε να προκαλέσει επικίνδυνα σφάλματα λόγω ανθρώπινου παράγοντα. Η NASA πίστευε ότι οι αστροναύτες δεν θα έκαναν λάθη λόγω της εκπαίδευσής τους. Στη Χάμιλτον δεν επετράπη να εισαγάγει κώδικα για την πρόληψη σφαλμάτων που θα οδηγούσαν σε κατάρρευση του συστήματος, γι' αυτό και πρόσθεσε σχετικές σημειώσεις στην τεκμηρίωση του προγράμματος. Η ιδέα της για προσθήκη κώδικα ελέγχου σφαλμάτων απορρίφθηκε ως «υπερβολική». Ωστόσο, αυτό ακριβώς που είχε προβλέψει η Χάμιλτον συνέβη στην πτήση του Απόλλων 8, όταν ένα ανθρώπινο λάθος προκάλεσε τη διαγραφή όλων των δεδομένων πλοήγησης από τον υπολογιστή.

 Δεσμοποίηση λογισμικού με υλικό και νομικά ζητήματα 
Αργότερα, το λογισμικό πωλούνταν σε πολλαπλούς πελάτες μέσω της «δεσμοποίησης» (bundling) με το υλικό (hardware) από κατασκευαστές εξοπλισμού (OEM), όπως η Data General, η Digital Equipment και η IBM. Όταν ένας πελάτης αγόραζε έναν μίνι υπολογιστή (minicomputer) —τον μικρότερο υπολογιστή στην αγορά εκείνη την εποχή— αυτός δεν διέθετε προεγκατεστημένο λογισμικό, αλλά η εγκατάσταση έπρεπε να γίνει από μηχανικούς του κατασκευαστή.

Αυτή η πρακτική προσέλκυσε την προσοχή των αντιμονοπωλιακών αρχών των ΗΠΑ, οι οποίες το 1969 μήνυσαν την IBM για αθέμιτη «σύνδεση» (tying), ισχυριζόμενες ότι αποτελούσε παραβίαση της αντιμονοπωλιακής νομοθεσίας το γεγονός ότι οι πελάτες που ήθελαν το λογισμικό της έπρεπε επίσης να αγοράσουν ή να μισθώσουν και το υλικό της. Ωστόσο, η υπόθεση αποσύρθηκε από το Υπουργείο Δικαιοσύνης των ΗΠΑ μετά από πολλά χρόνια δικαστικής φθοράς, καθώς κρίθηκε ότι στερούνταν βασιμότητας.

Η Data General αντιμετώπισε επίσης νομικά προβλήματα σχετικά με τη δεσμοποίηση — αν και σε αυτή την περίπτωση επρόκειτο για αστική αγωγή από έναν επίδοξο ανταγωνιστή. Όταν η Data General παρουσίασε τον Data General Nova, μια εταιρεία ονόματι Digidyne ήθελε να χρησιμοποιήσει το λειτουργικό σύστημα RDOS της Data General στον δικό της κλώνο υλικού. Η Data General αρνήθηκε να παραχωρήσει άδεια χρήσης του λογισμικού της. Το Ανώτατο Δικαστήριο των ΗΠΑ δημιούργησε ένα προηγούμενο με την απόφαση Digidyne v. Data General το 1985, και η Data General αναγκάστηκε τελικά να παραχωρήσει την άδεια χρήσης του λειτουργικού συστήματος, καθώς κρίθηκε ότι ο περιορισμός της άδειας μόνο για το υλικό της DG αποτελούσε παράνομη «συμφωνία σύνδεσης» (tying arrangement).

Το 2008, η Psystar Corporation μηνύθηκε από την Apple Inc. για τη διανομή μη εξουσιοδοτημένων κλώνων Macintosh με προεγκατεστημένο το OS X και ανταπάντησε με δική της αγωγή. Ένα από τα επιχειρήματα της ανταγωγής —επικαλούμενο την υπόθεση της Data General— ήταν ότι η Apple κυριαρχεί στην αγορά των υπολογιστών που είναι συμβατοί με το OS X συνδέοντας παράνομα το λειτουργικό σύστημα με τους υπολογιστές της Apple. Ο δικαστής William Alsup απέρριψε αυτό το επιχείρημα, δηλώνοντας, όπως είχε κρίνει το Περιφερειακό Δικαστήριο στην υπόθεση Data General πάνω από 20 χρόνια πριν, ότι η σχετική αγορά δεν ήταν απλώς ένα λειτουργικό σύστημα (Mac OS) αλλά όλα τα λειτουργικά συστήματα για PC, συμπεριλαμβανομένου του Mac OS, σημειώνοντας ότι το Mac OS δεν κατείχε δεσπόζουσα θέση σε αυτή την ευρύτερη αγορά. Η απόφαση του Alsup σημείωσε επίσης ότι το προηγούμενο της Data General, σύμφωνα με το οποίο η σύνδεση προϊόντων που προστατεύονται από πνευματικά δικαιώματα ήταν πάντα παράνομη, είχε έκτοτε «σιωπηρά ανατραπεί» από την ετυμηγορία στην υπόθεση Illinois Tool Works Inc. v. Independent Ink, Inc.

 Τυποποιημένο λογισμικό (Τέλη δεκαετίας 1960–σήμερα) 
Μια βιομηχανία παραγωγής ανεξάρτητου τυποποιημένου λογισμικού (packaged software) —λογισμικού που δεν παρήχθη ως εφάπαξ παραγγελία για έναν μεμονωμένο πελάτη ούτε ήταν «δεσμοποιημένο» με το υλικό του υπολογιστή— άρχισε να αναπτύσσεται στα τέλη της δεκαετίας του 1960.

 Unix (Δεκαετία 1970–σήμερα) 

Το Unix ήταν ένα πρώιμο λειτουργικό σύστημα που έγινε εξαιρετικά δημοφιλές και άσκησε μεγάλη επιρροή, και συνεχίζει να υπάρχει μέχρι σήμερα. Η πιο δημοφιλής παραλλαγή του Unix σήμερα είναι το macOS (προηγουμένως ονομαζόταν OS X και Mac OS X), ενώ το Linux είναι στενά συνδεδεμένο με τη φιλοσοφία του Unix.

 Η άνοδος των Μικροϋπολογιστών 

Τον Ιανουάριο του 1975, η εταιρεία Micro Instrumentation and Telemetry Systems άρχισε να πουλά μέσω ταχυδρομικών παραγγελιών το κιτ του μικροϋπολογιστή Altair 8800. Η Microsoft κυκλοφόρησε το πρώτο της προϊόν, την Altair BASIC, αργότερα το ίδιο έτος και οι χομπίστες άρχισαν να αναπτύσσουν προγράμματα για να τρέχουν σε αυτά τα κιτ. Η Tiny BASIC δημοσιεύτηκε ως κώδικας προς πληκτρολόγηση (type-in program) στο περιοδικό Dr. Dobb's Journal και αναπτύχθηκε συνεργατικά.

Το 1976, ο Peter R. Jennings δημιούργησε το πρόγραμμα Microchess για το κιτ[KIM-1 της MOS Technology. Καθώς η συσκευή δεν διέθετε μονάδα κασέτας, έστελνε τον πηγαίο κώδικα σε ένα μικρό φυλλάδιο στους πελάτες του, οι οποίοι έπρεπε να πληκτρολογήσουν ολόκληρο το πρόγραμμα με το χέρι. Το 1978, η Kathe και ο Dan Spracklen δημοσίευσαν τον κώδικα του προγράμματος Sargon σε ένα περιοδικό υπολογιστών. Ο Jennings αργότερα πέρασε στην πώληση χαρτοταινιών και τελικά κασετών ήχου (compact cassettes) με το πρόγραμμα εγγεγραμμένο σε αυτές.

Η πληκτρολόγηση πηγαίου κώδικα από ένα περιοδικό ήταν μια αργή και άβολη διαδικασία. Ένας και μόνο λάθος πληκτρολογημένος χαρακτήρας —ή χειρότερα, ένας χαρακτήρας που είχε τυπωθεί λάθος στο περιοδικό— μπορούσε να καταστήσει το πρόγραμμα μη λειτουργικό. Παρόλα αυτά, οι χρήστες το έκαναν συστηματικά, καθώς η τεχνολογία οπτικής αναγνώρισης χαρακτήρων (OCR) δεν ήταν ακόμη σε ευρεία χρήση.

Ακόμη και με την εξάπλωση των κασσετών ROM (cartridges) και των κασετών ήχου τη δεκαετία του 1980 για τη διανομή εμπορικού λογισμικού, τα δωρεάν προγράμματα εξακολουθούσαν να τυπώνονται σε περιοδικά, καθώς ήταν φθηνότερο από την επισύναψη φυσικών μέσων αποθήκευσης.

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

Πολύ γρήγορα, το εμπορικό λογισμικό άρχισε να πέφτει θύμα πειρατείας, γεγονός που δυσαρέστησε τους παραγωγούς. Ο Μπιλ Γκέιτς, συνιδρυτής της Microsoft, υπήρξε ένας από τους πρώτους που επέκριναν ηθικά την πειρατεία λογισμικού με την περίφημη Ανοιχτή Επιστολή προς τους Χομπίστες (Open Letter to Hobbyists) το 1976.

 1980–σήμερα 

Πριν από την εμφάνιση των μικροϋπολογιστών, ένα επιτυχημένο πρόγραμμα λογισμικού πουλούσε συνήθως έως και 1.000 μονάδες προς 50.000–60.000 δολάρια η καθεμία. Μέχρι τα μέσα της δεκαετίας του 1980, το λογισμικό για προσωπικούς υπολογιστές πουλούσε χιλιάδες αντίτυπα προς 50–700 δολάρια το καθένα. Εταιρείες όπως η Microsoft, η MicroPro και η Lotus Development είχαν ετήσιες πωλήσεις δεκάδων εκατομμυρίων δολαρίων. Παρομοίως, κυριάρχησαν στην ευρωπαϊκή αγορά με τοπικοποιημένες (localized) εκδόσεις των ήδη επιτυχημένων προϊόντων τους.

Μια καθοριστική στιγμή στην ιστορία της πληροφορικής ήταν η δημοσίευση των προδιαγραφών για τον IBM PC στη δεκαετία του 1980 από τον υπάλληλο της IBM, Philip Don Estridge, η οποία οδήγησε γρήγορα στην κυριαρχία του PC στην παγκόσμια αγορά επιτραπέζιων και αργότερα φορητών υπολογιστών — μια κυριαρχία που συνεχίζεται μέχρι σήμερα. Η Microsoft, μέσω της επιτυχούς διαπραγμάτευσης με την IBM για την ανάπτυξη του πρώτου λειτουργικού συστήματος για τον PC (MS-DOS), επωφελήθηκε τεράστια από την επιτυχία του προσωπικού υπολογιστή τις επόμενες δεκαετίες, μέσω του MS-DOS και του διαδόχου του, των Microsoft Windows.

 Ελεύθερο λογισμικό και λογισμικό ανοιχτού κώδικα 
Το Ελεύθερο Λογισμικό και Λογισμικό ανοικτού κώδικα (ΕΛ/ΛΑΚ) αναφέρεται σε λογισμικό που είναι ελεύθερα διαθέσιμο για χρήση και διανέμεται υπό άδειες που παρέχουν στους χρήστες την ελευθερία πρόσβασης, τροποποίησης και διανομής του πηγαίου κώδικα. Αυτή η προσέγγιση έρχεται σε αντίθεση με το ιδιοταγές (proprietary) λογισμικό, όπου ο πηγαίος κώδικας είναι συνήθως κλειστός και η χρήση περιορίζεται από συμφωνητικά άδειας χρήσης. Το ΕΛ/ΛΑΚ προωθεί τη συνεργασία και τη διαφάνεια, επιτρέποντας σε προγραμματιστές και χρήστες σε όλο τον κόσμο να συμβάλλουν στη βελτίωση του λογισμικού. Δημοφιλή παραδείγματα περιλαμβάνουν το λειτουργικό σύστημα Linux, τον περιηγητή Mozilla Firefox και τη γλώσσα προγραμματισμού Python.

 Πρόσφατες εξελίξεις 

 Καταστήματα εφαρμογών (App stores) 
Οι εφαρμογές για κινητές συσκευές (τηλέφωνα και tablet) επικράτησαν τα τελευταία χρόνια με τον όρο "apps". Η Apple επέλεξε να διοχετεύει τις πωλήσεις εφαρμογών για iPhone και iPad αποκλειστικά μέσω του δικού της App Store, ελέγχοντας έτσι τις εφαρμογές και κρατώντας προμήθεια από κάθε πώληση. Η Apple δεν επιτρέπει εφαρμογές που θα μπορούσαν να χρησιμοποιηθούν για την παράκαμψη του καταστήματός της (π.χ. εικονικές μηχανές Java ή Flash).

Αντίθετα, η πλατφόρμα Android επιτρέπει πολλαπλά καταστήματα εφαρμογών και οι χρήστες μπορούν γενικά να επιλέξουν ποιο θα χρησιμοποιήσουν (αν και το Google Play παραμένει η κυρίαρχη επιλογή).

Αυτό το μοντέλο υιοθετήθηκε αργότερα και για τα λειτουργικά συστήματα επιτραπέζιων υπολογιστών με το GNOME Software (για Linux), το Mac App Store (για macOS) και το Windows Store (για Windows). Όλες αυτές οι πλατφόρμες παραμένουν μη αποκλειστικές: επιτρέπουν την εγκατάσταση εφαρμογών εκτός του επίσημου καταστήματος.

 Τυποποίηση και ακαδημαϊκό πλαίσιο 
Η ανάπτυξη προγραμμάτων σπουδών στην Επιστήμη Υπολογιστών οδήγησε σε σημαντικές βελτιώσεις στη μεθοδολογία ανάπτυξης λογισμικού. Τα βασικά συστατικά αυτών των προγραμμάτων περιλαμβάνουν:

 Δομημένο και αντικειμενοστρεφή προγραμματισμόBooch, Grady (1997). Object-Oriented Analysis and Design with Applications. Addison-Wesley.
 Δομές δεδομένωνPeter Brass. (2008) Advanced Data Structures, Cambridge University Press
 Ανάλυση αλγορίθμωνCormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. & Stein, Clifford. (2001) Introduction to Algorithms, MIT Press and McGraw-Hill.
 Τυπικές γλώσσεςHopcroft, John E. and Jeffrey D. Ullman, (1979) Introduction to Automata Theory, Languages, and Computation και κατασκευή μεταγλωττιστώνAho, Alfred V., Sethi, Ravi, and Ullman, Jeffrey D. (1988). Compilers: Principles, Techniques, and Tools. Addison-Wesley.
 Αλγόριθμους γραφικών υπολογιστήShirley, Peter. (2009) Fundamentals of Computer Graphics 3rd edition
 Ταξινόμηση και αναζήτησηKnuth, Donald. (1998) The Art of Computer Programming: Volume 3: Sorting and Searching
 Αριθμητικές μεθόδουςBaron, Michael. (2006) Probability and Statistics for Computer Scientists
 Τεχνητή νοημοσύνηRussell, Stuart J. και Peter Norvig (2009) Artificial Intelligence: A Modern Approach (3rd Edition) και Μηχανική μάθησηMitchell, Tom. (1997) Machine Learning.

 Πώς το λογισμικό επηρέασε το υλικό 
Καθώς όλο και περισσότερα προγράμματα περνούν στη σφαίρα του υλικολογισμικού (firmware) και το ίδιο το υλικό γίνεται μικρότερο, φθηνότερο και ταχύτερο, όπως προβλέπεται από τον Νόμο του Moore, ένας αυξανόμενος αριθμός υπολογιστικών λειτουργιών που αρχικά εκτελούνταν από λογισμικό, έχουν ενσωματωθεί στο υλικό, όπως για παράδειγμα οι μονάδες επεξεργασίας γραφικών (GPU). (Ωστόσο, η αλλαγή έχει μερικές φορές κινηθεί προς την αντίθετη κατεύθυνση για λόγους κόστους ή άλλους, όπως για παράδειγμα με τα softmodems και τον μικροκώδικα.)

Οι περισσότερες εταιρείες υλικού σήμερα απασχολούν περισσότερους προγραμματιστές λογισμικού παρά σχεδιαστές υλικού, καθώς τα εργαλεία λογισμικού έχουν αυτοματοποιήσει πολλές εργασίες των μηχανικών τυπωμένων κυκλωμάτων (PCB).

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

 Γλώσσες υψηλού επιπέδουAaby, Anthony (2004). Introduction to Programming LanguagesWexelblat, Richard L. History of Programming Languages
 Λειτουργικά συστήματαStallings (2005). Operating Systems, Internals and Design Principles. Pearson
 Λογισμικό δικτύωσης και εφαρμογέςKurose, James; Ross, Keith (2005). Computer Networking: A Top-Down Approach. Pearson.
 Υλικό γραφικών, αλγόριθμοι και εφαρμογές γραφικών
 Λογιστικά φύλλα (Spreadsheets)
 Επεξεργασία κειμένου
 Σχεδίαση με τη βοήθεια υπολογιστή (CAD)Narayan, K. Lalit (2008). Computer Aided Design and Manufacturing. Prentice Hall

 1971–1974 
  1971  1972  1973  1974 ΓλώσσεςΠρογραμματισμού  CDLKRLSUE  CINTERCALPL/MPrologSmalltalkSQL COMALLISMLSpeakeasy-3  BASIC FOURCLUGRASSPROSE ΛειτουργικάΣυστήματα  DEC RSTS-11  Data GeneralRDOS  Σοβιετική ALGOL 68  DEC DOS-11 ΔίκτυαΥπολογιστών    Το Blue Box του Στήβεν Βόζνιακ  Ο Ρόμπερτ Μέτκαλφ αναπτύσσειτο Ethernet   ΓραφικάΥπολογιστών   Αλγόριθμος ορατής επιφάνειαςNewell & Sancha  Catmull & Straberαναπτύσσουν το z-buffer CAD/CAM  Ίδρυση MCS  ADAM  Auto-Draft  Tektronix 4014

 1975–1978 
  1975  1976  1977  1978 ΓλώσσεςΠρογραμματισμού  ABCAltair BASICCS-4ModulaScheme  MesaPlusRatforSSAM76SASSmalltalk-76  BlueBourne ShellCommodore BASICFPIconIDLRedStandard MUMPSYellowIDL  C shellHAL/SMATLABRPG IIISMALLVisiCalcSQL ΛειτουργικάΣυστήματα  CP/M  Cambridge CAP 1BSD  2BSDApple DOS ΔίκτυαΥπολογιστών  Μεταγωγή πακέτουTelenet    ΓραφικάΥπολογιστών  Ίδρυση EDS   Εξομάλυνση (Antialiasing)   ΕπεξεργασίαΚειμένου   Electric Pencil   AppleWriter CAD/CAM  Solid modeling  Η McDonnell Douglasαγοράζει την Unigraphics  Πρόδρομος του CATIA  Οθόνη ψηφιογραφικών γραφικών

 1979–1982 
  1979  1980  1981  1982 ΓλώσσεςΠρογραμματισμού  AWKIcon Modula-2REXXVulcan dBase-II  Ada 80C with classesCBASIC  BBC BASICIBM BASICA  DracoPostScriptSpeakeasy-IV ΛειτουργικάΣυστήματα  Atari DOS  86-DOS  MS-DOS 1Acorn MOS  Commodore DOS ΔίκτυαΥπολογιστών  Usenet  TCP/IP    ΓραφικάΥπολογιστών     Ίδρυση Silicon Graphics ΕπεξεργασίαΚειμένου  Wordstar  WordPerfect για DG Mini  Bank StreetAppleWriter II   WordStar 3.0WordPerfect για DOS ΛογιστικάΦύλλα  VisiCalc   Lotus 1-2-3   CAD/CAM  IGES  VersaCAD  Dassault Systèmes  Ίδρυση Autodesk

 1983–1986 
  1983  1984  1985  1986 ΓλώσσεςΠρογραμματισμού  ABAPAda 83 C++GW-BASICKorn ShellObjective-CoccamTrue BASICTurbo Pascal CLIPPERCommon Lisp Good Old MAD (GOM)OPLRedcodeRPLStandard MLMatlabFramework FRED ParadoxQuickBASICFramework II FRED   CorVisionEiffelGFA BASICInformix-4GLLabVIEWMirandaObject PascalPROMAL ΛειτουργικάΣυστήματα  MS-DOS 2Lisa OfficeSunOS 1  MS-DOS 3System-1 System Software  Windows 1.0Atari TOSAmigaOS  AIX 1 ΔίκτυαΥπολογιστών  Διαχωρισμός ARPANET από MILNET  Novell NetWareΊδρυση Research In Motion  Το NSFNET συνδέει5 υπερυπολογιστές   ΓραφικάΥπολογιστών    Ίδρυση ATI  ΣυνεπεξεργαστήςIntel 82786 ΕπεξεργασίαΚειμένου  Word 1 για DOS  Word 1 για Mac  WordPerfect 4.2για DOS  ΛογιστικάΦύλλα    Excel για Mac  CAD/CAM  Κυκλοφορία AutoCAD1.2, 1.3, 1.4  AutoCAD 2  Bentley SystemsParametric Technology  AutoLISP

 1987–1990 
  1987  1988  1989  1990 ΓλώσσεςΠρογραμματισμού  Ada ISO 8652CleanErlangHyperTalkMathematicaOberonoccam 2PerlSelfTurbo Basic  A+Hamilton C shellObject REXXOctaveRPG/400SPARKSTOS BASICTclMathematicaFramework III FRED  BashLPCModula-3PowerBASICTurbo Pascal OOPVisSimFL  AMOS BASICAMPLEuLispHaskellJObject OberonZ Shell ΛειτουργικάΣυστήματα  Windows 2.0  MS-DOS 4Windows 2.1xOS/2A/UX  EPCO  Windows 3.0 ΔίκτυαΥπολογιστών   Morris worm  Έναρξη τουWorld Wide Web  HTML ΓραφικάΥπολογιστών  JPEG και GIF  Το Tin Toy της Pixarκερδίζει Όσκαρ  AutoDesk 3D Studio  ΕπεξεργασίαΚειμένου  Microsoft Works για DOS  Το PC Magazine αξιολογεί55 πακέτα  WordPerfect 5.1Word for Windows  Microsoft Office για Windows ΛογιστικάΦύλλα  Excel για Windows  Quattro Pro    CAD/CAM  Κυκλοφορία Canvas XAutoCAD 9  CATIA 3AutoCAD 10  Parametric T-Flex  Ίδρυση Visionary Design SystemsAutoCAD 11ACIS 1

 1991–1994 
  1991  1992  1993  1994 ΓλώσσεςΠρογραμματισμού  GNU EOberon-2OzQVisual BasicPythonFramework IV FRED  Turbo PascalDylan  RubyAppleScriptBrainfuckKLuaNewtonScriptRTranscriptSelf ZPL  CLOSANS ForthANSI Common LispClairePikeRAPID ΛειτουργικάΣυστήματα  MS-DOS 5Linux  Windows 3.1x386BSD  MS-DOS 6Newton OSSolaris  AIX 4.0, 4.1 ΔίκτυαΥπολογιστών   Περιηγητής Mosaic  NetWare 4  Netscape Navigator ΓραφικάΥπολογιστών   OpenGL  Ίδρυση Nvidia   ΕπεξεργασίαΚειμένου  Microsoft Works    Η Novell αγοράζει το WordPerfect CAD/CAM  Η EDS αγοράζει τηνUnigraphics  Ενοποίηση CADAM & CATIA  AutoCAD 12  Simple Vector Format

 1995–1998 
  1995  1996  1997  1998 ΓλώσσεςΠρογραμματισμού  Ada 95Adobe ColdFusionDelphiJavaJavaScriptLiveScriptPHPRuby  CurlLassoNetRexxOCamlPerl Data LanguageWebDNA  Component PascalEECMAScriptF-ScriptISLISPPicoRebolSqueakTea  M2001Open Source ErlangPiktPureBasicREALbasicStandard C++UnrealScript ΛειτουργικάΣυστήματα  Windows 95Digital UNIX  Windows NT 4.0Palm OS  InfernoMac OS 7.6Mac OS 8  Windows 98Solaris 7 64-bit ΔίκτυαΥπολογιστών  Διατύπωση πρότασηςγια την Google  MosaicInter@ctive Pager  NetWare 4  Netscape Navigator ΓραφικάΥπολογιστών  Η Pixar μπαίνει στο χρηματιστήριομετά το Toy Story  3Dfx Voodoo  ATI Rage Pro  Voodoo Banshee ΕπεξεργασίαΚειμένου  Word 95 για Windows  Η Corel αγοράζει το WordPerfectαπό τη Novell    CAD/CAM  MicroStation προηγμένηστερεά μοντελοποίηση  Canvas 5  ISO 13567AutoCAD 14 Η Dassault Systèmes αγοράζει ταπροϊόντα της Matra Datavision

 1999–2002 
  1999  2000  2001  2002 ΓλώσσεςΠρογραμματισμού  DGameMaker LanguageHarbourXSLT  ActionScriptC SharpFeriteJoin JavaJoyXLVisual Basic .NET  AspectJGDScript ProcessingRPG IV  GosuIo ΛειτουργικάΣυστήματα  Mac OS X Server 1.0Mac OS 9  Windows 2000Windows MEMac OS X Public Beta  Mac OS X 10.0Mac OS X 10.1Windows XP  Windows XP 64-bit EditionMac OS X 10.2 ΔίκτυαΥπολογιστών  BlackBerry 850   NetWare 4  Netscape Navigator ΓραφικάΥπολογιστών  S3 Savage 4 GeForce 256  Radeon DDR (R100) Nvidia Kyro IIGeForce 3  ΕπεξεργασίαΚειμένου  Η Sun αγοράζει τη Star Division    CAD/CAM  Pro/Engineer 2000  AutoCAD 2000  Η EDS αγοράζει τη SDRC  Unigraphics NXΗ Autodesk αγοράζει τη Revit

 2003–2006 
  2003  2004  2005  2006 ΓλώσσεςΠρογραμματισμού  FactorNemerleScalaSquirrel  Alma-0BooFreeBASICGroovyLittle bSubtext  Ada 2005F#  CobraLinksOptimJWindows PowerShell ΛειτουργικάΣυστήματα  v10.3 Panther Red Hat Enterprise Linux Windows Server 2003   v10.4 TigerUbuntu 5 Windows XP Professional x64 Edition  ΔίκτυαΥπολογιστών  802.11g Apple Safari  GmailΊδρυση Facebook Mozilla Firefox   BlackBerry Pearl 8100

 2007–2010 
  2007  2008  2009  2010 ΓλώσσεςΠρογραμματισμού  ClojureFantomFortressLOLCODEOberon-07Vala  GeniePure  CoffeeScriptGoIdrisParaSail  ChapelRPG Open AccessRust ΛειτουργικάΣυστήματα  Windows Vista v10.5 Leopard Android Windows 7v10.6 Snow LeopardAndroid 1.5 "Cupcake"Android 1.6 "Donut" Android 2.0–2.1 "Eclair"Android 2.2 "Froyo" Android 2.3 "Gingerbread" ΔίκτυαΥπολογιστών   Google Chrome  Chromium  Wi-Fi 802.11n  ΓραφικάΥπολογιστών   Assassin's Creed Up ΠροσομοίωσηΥφάσματος  Η ταινία Avatar κερδίζειΌσκαρ Οπτικών Εφέ ΕπεξεργασίαΚειμένου   Η Oracle αγοράζει τηνOpenOffice από τη Sun  Η Oracle παραχωρεί το OpenOfficeστο Apache Software Foundation  CAD/CAM  Η Siemens αγοράζει την UGS   

 2011–2014 
  2011  2012  2013  2014 ΓλώσσεςΠρογραμματισμού  Dart  Ada 2012ElixirJuliaTypeScriptCryEngine#CryEngine 3  Xojo  HackSwift ΛειτουργικάΣυστήματα  v10.7 Lion Android 3.x "Honeycomb" Android 4.0 "Ice Cream Sandwich"  Windows 8  v10.8 Mountain Lion  Android 4.1.x–4.2.x "Jelly Bean"  v10.9 Mavericks  Windows 8.1  Android 4.3 "Jelly Bean"  Android 4.4 "KitKat" v10.10 Yosemite Android 5.0 "Lollipop" ΔίκτυαΥπολογιστών   802.11ac   ΓραφικάΥπολογιστών  Η ταινία Hugo κερδίζειΌσκαρ Οπτικών Εφέ  CryEngine 3 και φυσικήεύκαμπτων σωμάτων 3D  

 Περαιτέρω μελέτη 



 Εξωτερικοί σύνδεσμοι 
 Ιστορία του Λογισμικού στο History-Computer.com (Αγγλικά)
 Μουσείο Ιστορίας Υπολογιστών - Ενότητα Λογισμικού (Αγγλικά)

 Δείτε επίσης 

 Λογισμικό
 Επιστήμη Υπολογιστών
 Μηχανική Λογισμικού

 Βιβλιογραφία 





Κατηγορία:Ιστορία της πληροφορικής
Κατηγορία:Λογισμικό

 Παραπομπές