Λογισμικό

Επισκόπηση

Ως λογισμικό υπολογιστών θεωρείται ό,τι δεν ανήκει στο υλικό (hardware) του υπολογιστή. Στο υλικό περιλαμβάνονται τα αντικείμενα που έχουν υλική υπόσταση, ενώ στο λογισμικό περιλαμβάνονται τα άυλα προγράμματα και οι εφαρμογές που υπάρχουν στο εσωτερικό του υπολογιστή. Το λογισμικό καλύπτει ένα ευρύτατο φάσμα προϊόντων και τεχνολογιών που αναπτύσσονται με χρήση διαφορετικών τεχνικών όπως οι γλώσσες προγραμματισμού, οι γλώσσες μορφοποίησης κλπ. Οι διαφορετικοί τύποι λογισμικού περιλαμβάνουν ιστοσελίδες που αναπτύσσονται με τις τεχνολογίες HTML, PHP, Perl, JSP, ASP.NET, XML, και εφαρμογές που εμφανίζονται στην επιφάνεια εργασίας, όπως το Microsoft Word και το OpenOffice, που αναπτύσσονται στις γλώσσες C, C++, Java, C#, κλπ. Το λογισμικό εκτελείται συνήθως πάνω από ένα λειτουργικό σύστημα (που είναι επίσης λογισμικό), όπως τα Microsoft Windows, το Linux (με περιβάλλον GNOME ή KDE) ή το Solaris της Sun. Ως λογισμικό θεωρούνται και τα βιντεοπαιχνίδια όπως το Super Mario και το Grand Theft Auto για προσωπικούς υπολογιστές ή για κονσόλες βιντεοπαιχνιδιών. Αυτά τα παιχνίδια αναπτύσσονται από εφαρμογές CGI (computer generated imagery) αφού έχουν σχεδιαστεί πρώτα τα γραφικά τους από εφαρμογές όπως το Maya, το 3ds Max ή το Blender.
Επίσης, ένα λογισμικό συνήθως λειτουργεί πάνω σε μια πλατφόρμα λογισμικού που παρέχεται είτε από λειτουργικό σύστημα ή από ανεξάρτητες πλατφόρμες όπως η πλατφόρμα της Java και η πλατφόρμα .NET. Λογισμικό γραμμένο για μία αρχιτεκτονική λογισμικού ή μια πλατφόρμα συνήθως δεν μπορεί να λειτουργεί και σε άλλες πλατφόρμες, για παράδειγμα, οι εφαρμογές των Microsoft Windows δεν θα είναι σε θέση να λειτουργήσουν σε Mac OS, λόγω των διαφορών που σχετίζονται με τις πλατφόρμες και τα πρότυπά τους. Οι εφαρμογές αυτές μπορούν να λειτουργήσουν μόνο εάν μεταφερθούν, χρησιμοποιώντας ένα διερμηνέα ή με μεταφορά (port) του πηγαίου κώδικα στην εν λόγω πλατφόρμα.

Σχέση με το υλικό του υπολογιστή

Το λογισμικό υπολογιστών καλείται έτσι ώστε να διακρίνεται από το υλικό του υπολογιστή, που εποπτεύει τις φυσικές διασυνδέσεις και διατάξεις που απαιτούνται για να αποθηκευτεί και να εκτελεστεί το λογισμικό. Σε χαμηλότερο επίπεδο, το λογισμικό αποκωδικοποιείται σε γλώσσα μηχανής ειδικά προσαρμοσμένη για έναν συγκεκριμένο τύπο επεξεργαστή. Μια γλώσσα μηχανής είναι στην ουσία δυαδική αναπαράσταση των οδηγιών που στέλνονται στον επεξεργαστή ώστε να αλλάξει την κατάσταση του υπολογιστή από την προηγούμενη κατάσταση. Λογισμικό είναι η διατεταγμένη ακολουθία οδηγιών για την αλλαγή της κατάστασης του υλικού του υπολογιστή σε μια συγκεκριμένη επιθυμητή κατάσταση. Είναι συνήθως γραμμένο σε υψηλού επιπέδου γλώσσες προγραμματισμού που είναι ευκολότερες στη χρήση για τους ανθρώπους (πιο κοντά στη φυσική γλώσσα) και πιο αποτελεσματικές από την γλώσσα μηχανής. Οι υψηλού επιπέδου γλώσσες μεταγλωττίζονται σε γλώσσα μηχανής. Το λογισμικό μπορεί επίσης να είναι γραμμένο σε συμβολική γλώσσα (assembly), μια μνημονική αναπαράσταση της γλώσσας μηχανής που χρησιμοποιεί αλφάβητο φυσικής γλώσσας. Η συμβολική γλώσσα μεταφράζεται σε γλώσσα μηχανής μέσω ενός συμβολομεταφραστή (assembler).
Ο όρος «λογισμικό» χρησιμοποιήθηκε για πρώτη φορά με αυτή την έννοια από τον John W. Tukey το 1958. Στην πληροφορική, λογισμικό υπολογιστών είναι όλα τα προγράμματα για ηλεκτρονικούς υπολογιστές. Αυτή η θεωρία είναι η βάση του σύγχρονου λογισμικού και προτάθηκε για πρώτη φορά από τον Άλαν Τούρινγκ το 1935 στο δοκίμιο του Υπολογίσιμοι αριθμοί με μια εφαρμογή στο Entscheidungsproblem.

Είδη συστημάτων λογισμικού

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

Κατηγορίες λογισμικού

Στο παρακάτω δένδρο εμφανίζονται ενδεικτικά κάποιες κατηγορίες λογισμικού - η εμφάνιση των μελών μιας κατηγορίας γίνεται με κλικ στο "+".
▼  Λογισμικό
►  Λογισμικό ανά εταιρεία
►  Λογισμικό ανά λειτουργικό σύστημα
►  CRM
►  ERP
►  Instant messengers
►  Λογισμικό αναπαραγωγής πολυμέσων
►  Ανάπτυξη λογισμικού
►  Βίκι λογισμικό
►  Βιντεοπαιχνίδια
►  Διαλειτουργικό λογισμικό
►  Διαχειριστές αρχείων
►  Διεπαφές χρηστών
►  Διορθωτές κειμένου
►  Ελεύθερο λογισμικό
►  Εργαλεία προγραμματισμού
►  Κακόβουλο λογισμικό
►  Κωδικοποιητές ήχου
►  Λογισμικό GNOME
►  Λογισμικό VoIP
►  Λογισμικό γενεαλογίας
►  Λογισμικό διαδικτύου
►  Λογισμικό επεξεργασίας βίντεο
►  Λογισμικό εφαρμογών
►  Λογισμικό κρυπτογράφησης
►  Λογισμικό με τη χρήση άδειας MIT
►  Λογισμικό πολυμέσων
►  Λογισμικό που χρησιμοποιεί GTK+
►  Λογισμικό που χρησιμοποιεί wxWidgets
►  Λογισμικό προσομοίωσης
►  Λογισμικό προστασίας από ιούς
►  Λογισμικό συστήματος
►  Λογισμικό-Εργαλεία τοπικοποίησης
►  Μηχανική λογισμικού
►  Λογισμικό συμπίεσης δεδομένων
►  Συστήματα διαχείρισης περιεχομένου
►  Φυλλομετρητές