(μια προειδοποίηση, όταν λέω γενική περίπτωση δεν εννοώ όλες τις περιπτώσεις, εννοώ αυτό που χρειάζεται ο περισσότερος κόσμος χωρίς να έχει κάποια ιδιαίτερη ανάγκη)
Ένας τρόπος να χωρίσουμε τις γλώσσες προγραμματισμού είναι σε «χαμηλού επιπέδου» και «υψηλού επιπέδου».
Χαμηλού επιπέδου πρακτικά είναι ο κώδικας μηχανής και η Assembly.
Η Assembly θα μάς ακολουθεί ες αεί ή όσο τουλάχιστον οι υπολογιστές παραμένουν μηχανές που τις προγραμματίζουμε. Έχει πάψει όμως εδώ και καιρό να χρησιμοποιείται για γενική χρήση, ένας σκοπός για τον οποίο έχει σοβαρά μειονεκτήματα. Όλες οι άλλες γλώσσες θεωρούνται «υψηλού επιπέδου».
Τις υψηλού επιπέδου γλώσσες, γνωστές και ως γλώσσες τρίτης γενιάς προσωπικά τις χωρίζω με δύο τρόπους. Ο ένας τρόπος είναι «παλαιές» και «μεταγενέστερες», ο άλλος τρόπος είναι προ-C και μετά-C κάτι σαν να λέμε «προσωκρατικοί φιλόσοφοι»
Οι παλαιές είναι πρακτικά οι ακόλουθες τέσσερις
FORTRAN (1957)
LISP (1958)
ALGOL (1958)
COBOL (1959)
Η πολύ κοντινή τους χρονικά εμφάνιση προφανώς δεν είναι τυχαία και έχει σχέση με την εξέλιξη τών υπολογιστών. Οι γλώσσες αυτές είναι πολύ σημαντικές γιατί είναι πρακτικά οι ρίζες όλων τών γλωσσών αλλά και γιατί για κάποιες ειδικές χρήσεις εξακολουθούν να είναι άριστες επιλογές. Για παράδειγμα η FORTRAN εξακολουθεί να είναι ιδανική για επιστημονικούς υπολογισμούς που θέλουμε άριστη απόδοση.
Μεταγενέστερες προ-C γλώσσες υπάρχουν φυσικά αρκετές, αλλά τρεις βλέπω σαν περισσότερο άξιες αναφοράς
BASIC (1964)
LOGO (1967)
Pascal (1970)
Η Basic είναι η αγαπημένη μου γλώσσα. Ως γλώσσα είναι συγγενική με την FORTRAN αλλά περισσότερο κατάλληλη για γενική χρήση από χομπυίστες. Τα χαρακτηριστικά της την έκαναν τεράστια επιτυχία στην δεκαετία τού 80. Είναι μια αδικημένη γλώσσα από την άποψη ότι την ακολουθούσε ένα (κατά την γνώμη μου) αδικαιολόγητο στίγμα «ερασιτεχνισμού» και «κατωτερότητας». Την δεκαετία τού 80 κάθε εταιρεία πρόσφερε την δική της Basic αλλά η επικράτηση τής Microsoft δεν είναι καλό σημάδι για το μέλλον της· έτσι για γενική χρήση δεν είναι παρά σκιά τού παλιού της εαυτού. Δεν συνδέθηκε καθόλου με την κουλτούρα τού Unix και τέλος στον εκπαιδευτικό τομέα έχασε το παιχνίδι από την Logo. Δυστυχώς δεν βλέπω τι άλλο μπορούμε να κάνουμε για αυτήν πέρα από μια καλή κηδεία.
Την Logo δεν την πολυσυμπαθώ κυρίως γιατί δεν μού αρέσει η ιδέα μιας γλώσσας φτιαγμένη με στόχο την ίδια την εκπαίδευση. Ως γλώσσα είναι συγγενική τής Lisp. Σε σχέση πάντως με την Basic βρίσκεται σε πολύ καλύτερη μοίρα.
Η Pascal όταν δημιουργήθηκε ερχόταν να καλύψει τόσο θεωρητικές όσο και πραγματικές ανάγκες. Ως γλώσσα συγγενεύει με την ALGOL. Προσωπικά την «απεχθάνομαι». Ο λόγος που ξεπεράστηκε είναι πολύ απλός και είναι ο συνδυασμός Unix-C. Η τελευταία αναλαμπή της ήταν όταν είχε κεντρικό ρόλο στον υπολογιστή Apple Lisa το 1983. Έκτοτε η μόνη της χρησιμότητα είναι μάλλον να παιδεύει φοιτητές καθώς κάποιοι επιμένουν να πιστεύουν ότι είναι χρήσιμη σε αυτό. Προσωπικά πιστεύω ότι θα έπρεπε να την κηδέψουμε και να την αφήσουμε να αναπαυθεί εν ειρήνη.
Η C επινοήθηκε το 1972. Όπως και η Pascal συγγενεύει με την ALGOL αλλά η C είναι συνυφασμένη με το Unix. Είναι μια σπάνια ιστορική στιγμή που κάποιοι είπαν «ας πετάξουμε την σαβούρα». Το αποτέλεσμα είναι μια μινιμαλιστική γλώσσα που συχνά θεωρείται «χαμηλού επιπέδου» καθώς είναι το χαμηλότερο επίπεδο που μπορείς να κατέβεις πριν την Assembly. Ως γλώσσα είναι ιδανική για λειτουργικά συστήματα και βασικά εργαλεία αλλά είναι ακατάλληλη για γενική χρήση. Η αξία τής C ως γλώσσα είναι αδιαμφισβήτητη και δικαίως συνεχίζει να στέκεται στις δημοφιλέστερες γλώσσες ακόμα και σήμερα και αυτό δεν αναμένεται να αλλάξει.
Η C++ είναι μια «αναβάθμιση» τής C. Δεν λέω σε καμμία περίπτωση ότι είναι «άχρηστη» ως γλώσσα· είναι κατανοητή η επιθυμία μιας «ανώτερης» C· αλλά πιστεύω ότι είναι «υπερτιμημένη». Η ίδια η C++ αντιβαίνει την φιλοσοφία τής C πάνω στην οποία βασίζεται. Ένας διάσημος ανώνυμος χαρακτηρισμός είναι «C++: ένα χταπόδι που φτιάχτηκε από έναν σκύλο καρφώνοντάς του επιπλέον πόδια». Προφανώς αν η επιλογή είναι μόνο μεταξύ C και C++ η δεύτερη είναι ανώτερη από την πρώτη σε πολλές περιπτώσεις (ή ακόμα περισσότερο στην «γενική» περίπτωση) αλλά προσωπικά θεωρώ ότι πάντα υπάρχουν άλλες προτιμότερες επιλογές. Από όσο έχω ασχοληθεί με αυτήν την γλώσσα έχω αποκτήσει (ανεξάρτητα) σχεδόν την ίδια άποψη με το taoup και με τον Λίνους. Η άποψη ότι η C++ είναι η ανώτερη γλώσσα προγραμματισμού την έχει υπερτιμήσει. Από την άλλη αντιστρέφοντας την λογική τού Λίνους πιστεύω η C++ είναι εξαιρετικά χρήσιμη για να κρατά μακρυά από την C άτομα ακατάλληλα για αυτήν.
Οι φλοιοί επίσης μπορούν να χρησιμοποιηθούν ως γλώσσες προγραμματισμού. Υπάρχουν αρκετοί και ο καθένας έχει τα προτερήματά του και ο (δικαίως) δημοφιλέστερος είναι το bash. Προσωπικά πιστεύω ότι κάποια πολύ λίγα πραγματάκια για το bash θα ήταν πολύ ωφέλιμο να γνώριζαν οι πάντες αν είναι δυνατόν. Από την άλλη ένας φλοιός είναι ακατάλληλος για γενική χρήση.
Για την Perl πιστεύω ότι ο χαρακτηρισμός «ντοπαρισμένος φλοιός» (έτσι την χαρακτηρίζει το taoup) πρέπει να είναι μάλλον πετυχημένος. Ως γλώσσα μου φαίνεται μάλλον πολύ καλή ιδέα για αρκετές περιπτώσεις αλλά όχι για την γενική περίπτωση και προσωπικά πιστεύω ότι δεν είναι ούτε υπερτιμημένη, ούτε υποτιμημένη.
Η γλώσσα που μού έχει κεντρίσει περισσότερο το ενδιαφέρον χωρίς να έχω ασχοληθεί ακόμα να την μάθω είναι η Python. Από όσα έχω διαβάσει για αυτήν αλλά και από την εμπειρία μου από άλλες γλώσσες η Python φαίνεται σαν ιδανική για την γενική περίπτωση. Μού φαίνεται δηλαδή σαν η Basic τής δεκαετίας τού 80. Προσωπικά την βρίσκω υποτιμημένη. Δεν έχω συζητήσει το θέμα με κάποιον για να δω αν κουβαλάει αντίστοιχο στίγμα όπως η Basic αλλά όπως και η Basic θεωρείται «αργή». Το θέμα τής ταχύτητας και τής βελτιστοποίησης είναι κάτι που με έχει απασχολήσει αρκετά και βρίσκω την επιλογή τής γλώσσας με βάση αυτό το χαρακτηριστικό μεγάλο λάθος. Εγώ θα το πρόσθετα στο taoup σαν ένα είδος πρόωρης βελτιστοποίησης. Σίγουρα αν κάτσω να μάθω μια (ακόμα) γλώσσα στο κοντινό μέλλον αυτή θα είναι η Python και αυτήν εγώ θα την πρότεινα για τον περισσότερο κόσμο.
Για να συνοψίσω πιστεύω ότι ο περισσότερος κόσμος θα ήταν χρήσιμο να ξέρει κάποια πολύ λίγα από bash και να ασχολείται για τις ανάγκες προγραμματισμού κυρίως με την Python. Άλλες γλώσσες, παλαιές όπως η FORTRAN και η COBOL ή νεώτερες όπως η C++ και η Perl, έχουν την χρησιμότητά τους ανάλογα με τις ιδιαίτερες ανάγκες και τού γούστα τού καθενός· κάποιες άλλες όπως η Basic ή η Pascal καλώς ή κακώς χρειάζονται μια καλή κηδεία ενώ η Logo παραμένει αυτό που ήταν πάντοτε και τέλος η βάση τού συστήματος πρέπει να είναι η C.