I.

Το λογισμικό και η προέλευσή του

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

Γιατί υπάρχει το λογισμικό εξαρχής;

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

Τι γλώσσα καταλαβαίνουν οι υπολογιστές;

Οι υπολογιστές κατανοούν μόνο δυαδικές πληροφορίες οι οποίες αναπαριστώνται κυρίως με τη μορφή ηλεκτρικών σημάτων που είναι ON (υψηλής τάσης) ή OFF (χαμηλής τάσης), και χρειάζονται να βλέπουν τα πάντα να αναπαριστώνται με μια ακολουθία από 1 και 0 (ON και OFF). Γενικά, μια λογική «1» αντιπροσωπεύει μια υψηλότερη τάση, όπως τα 5 βολτ, που συνήθως αναφέρεται ως τιμή HIGH, ενώ μια λογική «0» αντιπροσωπεύει μια χαμηλή τάση, όπως τα 0 βολτ, που συνήθως αναφέρεται ως τιμή LOW. Αυτή η αλληλουχία (σειρά) των τιμών 1 και 0 είναι γνωστή ως δυαδική μορφή/δυαδικός κώδικας.

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

Στους σύγχρονους υπολογιστές, υπάρχουν συστήματα κωδικοποίησης που λειτουργούν ως «επίπεδα μετάφρασης» και μετατρέπουν τα δεδομένα εισαγωγής μας σε γλώσσα μηχανής. Ένα πολύ απλό παράδειγμα: όταν πληκτρολογείτε το γράμμα «Α» σε ένα πληκτρολόγιο, μετατρέπεται από το σύστημα κωδικοποίησης χαρακτήρων UTF-8 σε γλώσσα μηχανής με την τιμή 01000001.

Ένα παράδειγμα μετάφρασης δυαδικού κώδικα σε εξέλιξη
Ένα παράδειγμα μετάφρασης δυαδικού κώδικα σε εξέλιξη

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

Προσπαθήστε να φανταστείτε πώς ήταν αυτή η διαδικασία στο παρελθόν όταν οι πρώτοι προγραμματιστές χρειάζονταν να εκφράσουν τα πάντα σε δυαδικό κώδικα ιδιοχείρως!

Τι ρόλο διαδραμάτισαν οι προγραμματιστές στην εξέλιξη του λογισμικού;

Όποια γλώσσα ή είδος γλώσσας και να χρησιμοποιήσουμε για να γράψουμε τα προγράμματά μας, τα προγράμματα πρέπει να είναι σε γλώσσα μηχανής για να εκτελεστούν από τον υπολογιστή.

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

Αυτό τους ανάγκασε να δημιουργήσουν «μεταφραστές γλωσσών» που θα διευκόλυναν το έργο τους γραφής γλώσσας μηχανής. Υπάρχουν τρεις κύριες κατηγορίες μεταφραστών γλωσσών που χρησιμοποιούνται στους υπολογιστές μας: οι συναρμολογητές (assembler), οι μεταγλωττιστές (compiler) και οι διερμηνευτές (interpreter). Θα τα μελετήσουμε στην επόμενη ενότητα.

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

Οι γλώσσες προγραμματισμού κατηγοριοποιούνται σε δύο επίπεδα: το χαμηλό και το υψηλό. Οι δύο πρώτες γενιές ανήκουν στις γλώσσες χαμηλού επιπέδου και οι επόμενες τρεις γενιές ανήκουν στις γλώσσες υψηλού επιπέδου.

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

Next section
II. Γλώσσες προγραμματισμού και δημιουργία λογισμικού