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

Το **λογισμικό (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. Το πρόγραμμα γράφτηκε από τον Τομ Κίλμπερν και υπολόγιζε τον μεγαλύτερο διαιρέτη του ακεραίου $2^{18} = 262.144$. Ξεκινώντας με έναν μεγάλο δοκιμαστικό διαιρέτη, εκτελούσε τη διαίρεση μέσω επαναλαμβανόμενων αφαιρέσεων και έλεγχε αν το υπόλοιπο ήταν μηδέν. Αν όχι, μείωνε τον διαιρέτη κατά ένα και επαναλάμβανε τη διαδικασία. Η Google κυκλοφόρησε ένα αφιέρωμα στον Manchester Baby, χαρακτηρίζοντάς τον ως τη «γέννηση του λογισμικού».

Η FORTRAN αναπτύχθηκε από μια ομάδα με επικεφαλής τον Τζον Μπάκους στην IBM τη δεκαετία του 1950. Ο πρώτος μεταγλωττιστής κυκλοφόρησε το 1957. Η γλώσσα αποδείχθηκε τόσο δημοφιλής για επιστημονικούς και τεχνικούς υπολογισμούς που μέχρι το 1963 όλοι οι μεγάλοι κατασκευαστές είχαν υλοποιήσει ή ανακοινώσει τη FORTRAN για τα συστήματά τους.

Η 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). Όλες αυτές οι πλατφόρμες παραμένουν μη αποκλειστικές: επιτρέπουν την εγκατάσταση εφαρμογών εκτός του επίσημου καταστήματος.

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

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

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

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

* Γλώσσες υψηλού επιπέδου
* Λειτουργικά συστήματα
* Λογισμικό δικτύωσης και εφαρμογές
* Υλικό γραφικών, αλγόριθμοι και εφαρμογές γραφικών
* Λογιστικά φύλλα (Spreadsheets)
* Επεξεργασία κειμένου
* Σχεδίαση με τη βοήθεια υπολογιστή (CAD)

### 1971–1974

### 1975–1978

### 1979–1982

### 1983–1986

### 1987–1990

### 1991–1994

### 1995–1998

### 1999–2002

### 2003–2006

### 2007–2010

### 2011–2014

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

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

## Δείτε επίσης

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

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

## Παραπομπές

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