Ο Παύλος Σιδηρόπουλος έχει ένα κατάστημα εργαλείων στη Δράμα και ήθελε μια διεύθυνση που να απαντάει μία γραμμή: αν το μαγαζί είναι ανοιχτό αυτή την ώρα. Επειδή δεν ήξερε ποια γλώσσα να διαλέξει, το έγραψε τέσσερις φορές μέσα σε ένα απόγευμα. Ο κώδικας βγήκε σχεδόν ίδιος και στις τέσσερις. Αυτό που δεν βγήκε ίδιο ήταν πόσα πράγματα χρειάστηκε να του δοθούν για να τρέξει.
Η σύνταξη μιας γλώσσας παίρνει ένα σαββατοκύριακο. Το κομμάτι που παίρνει τον υπόλοιπο χρόνο είναι το ίδιο σε όλες: πώς δηλώνει ένα έργο από τι εξαρτάται, και πώς πείθεται ένα δεύτερο μηχάνημα να συμφωνήσει.
Τι σας ζητάει στ' αλήθεια μια γλώσσα να μάθετε
Ένα μάθημα καλύπτει τους βρόχους, τις συναρτήσεις, τον τρόπο που η γλώσσα γράφει μια λίστα. Αυτή η ύλη είναι αληθινή και είναι το μικρό μισό. Από κάτω κάθονται ένας διαχειριστής πακέτων, ένα αρχείο κλειδώματος, ένα βήμα χτισίματος, ένας εκτελεστής δοκιμών και ένας τρόπος δημοσίευσης, και κανένα από αυτά δεν εμφανίζεται στο μάθημα επειδή κανένα δεν είναι η γλώσσα.
Το χρήσιμο εδώ είναι ότι το σχήμα από κάτω επαναλαμβάνεται. Το uv, το npm και το cargo είναι το ίδιο εργαλείο με τρία ονόματα: το καθένα διαβάζει ένα αρχείο που λέει τι χρειάζεται το έργο, το μεταφράζει σε ακριβείς εκδόσεις, και τις γράφει κάπου. Όποιος μάθει το σχήμα μία φορά πληρώνει για τη δεύτερη γλώσσα ένα κλάσμα της πρώτης, και γι' αυτό η Επιλογή πρώτης γλώσσας μετράει λιγότερο απ' όσο νομίζει όποιος τη ζυγίζει για μήνες.
Τέσσερα γεγονότα που τελειώνουν τη δεύτερη μέρα
Ο Παύλος έστειλε την εκδοχή σε Python σε έναν ξάδελφό του για να τη δοκιμάσει, και εκείνη έσπασε στη γραμμή τέσσερα με μια συνάρτηση που δεν υπήρχε. Ο κώδικας ήταν ίδιος. Οι εκδόσεις μιας βιβλιοθήκης από κάτω δεν ήταν, και ο μηχανισμός που το αποτρέπει χωράει σε τρία σημεία στίξης.
Σημασιολογική έκδοση: το 2.4.1 σημαίνει μείζων 2, ελάσσων 4, διόρθωση 1. Ο κανόνας που υπόσχεται ο εκδότης είναι ότι η διόρθωση φτιάχνει κάτι, η ελάσσων προσθέτει κάτι χωρίς να χαλάσει ό,τι υπήρχε, και η μείζων επιτρέπεται να χαλάσει. Ο αριθμός δεν είναι διακοσμητικός. Είναι ισχυρισμός για το τι θα πάθει ο κώδικάς σας αν τον δεχτεί.
Το αρχείο του έργου συνήθως δεν γράφει έκδοση, γράφει εύρος, και το εύρος το κουβαλάει η στίξη. Το ^2.4.1 δέχεται την 2.9.0 και αρνείται την 3.0.0. Αυτή είναι η προεπιλογή και είναι σωστή προεπιλογή: παίρνει τις διορθώσεις και μένει μέσα στην υπόσχεση. Σημαίνει όμως και ότι μια εγκατάσταση την Τρίτη και μια εγκατάσταση την Πέμπτη δίνουν διαφορετική βιβλιοθήκη, που είναι ακριβώς αυτό που έγινε.
Η λύση είναι το δεύτερο αρχείο, εκείνο που δεν το διαβάζει κανείς. Ένα αρχείο κλειδώματος καρφώνει τις ακριβείς εκδόσεις ώστε το δεύτερο μηχάνημα να πάρει τις ίδιες. Παράγεται, δεν γράφεται, ανήκει μέσα στο αποθετήριο, και όλη του η δουλειά είναι να καταγράψει τη λύση κάθε εύρους σε μια στιγμή ώστε να ξαναπαραχθεί.
uv add pandasγράφει το εύρος στο αρχείο του έργου και την ακριβή έκδοση στο αρχείο κλειδώματοςuv syncστο δεύτερο μηχάνημα εγκαθιστά από το κλείδωμα αντί να ξαναλύσει τα εύρηgit add uv.lockείναι το βήμα που έλειπε από τη Δράμα
Το ίδιο πρόγραμμα, τέσσερις γλώσσες, τέσσερις λογαριασμοί
Οι γλώσσες διαφέρουν πολύ στο πόσα φέρνουν μέσα στο κουτί, και η διαφορά μετριέται. Για την ίδια διεύθυνση που επιστρέφει μία γραμμή κειμένου, το έργο σε Go εγκατέστησε 0 πακέτα, επειδή ο εξυπηρετητής βρίσκεται μέσα στην τυπική βιβλιοθήκη. Η Python εγκατέστησε 2, η Rust 4, και η JavaScript 49.
Κανένας από τους τέσσερις αριθμούς δεν είναι βαθμός. Ένα οικοσύστημα που δίνει τα πάντα κινείται πιο γρήγορα από μια επιτροπή, και η τιμή πληρώνεται σε δέντρα εξαρτήσεων αντί για αναμονή μιας έκδοσης της γλώσσας. Η Go διάλεξε το αντίθετο και το πλήρωσε αλλού. Αυτό που αξίζει να κοιτάξετε πριν από την πρώτη γραμμή, και όχι μετά, είναι ποια από τις δύο πλευρές αντέχετε να συντηρείτε.
Η ΓΛΩΣΣΑ του λυκείου δεν είχε ποτέ πακέτα
Εδώ ο Έλληνας αναγνώστης ξεκινάει από αλλού, και αυτό εξηγεί το μισό κόλλημα. Η εξεταστέα ύλη της Πληροφορικής της Γ' λυκείου ζητάει, και για τις πανελλαδικές του 2026, οι λύσεις να διατυπώνονται σε ΓΛΩΣΣΑ: μια διδακτική γλώσσα με ελληνικές λέξεις κλειδιά, που τρέχει στον Διερμηνευτή της ΓΛΩΣΣΑΣ και πουθενά αλλού.
ΑΛΓΟΡΙΘΜΟΣ ΩραριοΔΙΑΒΑΣΕ ΩΡΑΑΝ ΩΡΑ = 9 ΤΟΤΕ ΓΡΑΨΕ 'Ανοιχτα'ΤΕΛΟΣ_ΑΝΤΕΛΟΣ ΑΛΓΟΡΙΘΜΟΥ
Είναι καθαρή γλώσσα και διδάσκει σωστά τη λογική. Έχει όμως ένα χαρακτηριστικό που κανείς δεν το ονομάζει δυνατά: η ΓΛΩΣΣΑ δεν έχει διαχειριστή πακέτων, αποθετήριο ούτε αρχείο κλειδώματος. Δεν έχει και δεύτερο μηχάνημα. Ό,τι γράφεται τρέχει εκεί που γράφτηκε, από τον ίδιο άνθρωπο, την ίδια μέρα.
Άρα το μοντέλο που κουβαλάει ο Έλληνας αρχάριος για το τι είναι γλώσσα είναι ο πυρήνας και τίποτε γύρω του. Όταν ανοίξει την πρώτη πραγματική γλώσσα, οι δακτύλιοι φτάνουν όλοι μαζί μέσα σε μια εβδομάδα, μοιάζουν άσχετοι με το μάθημα που πέρασε με άριστα, και διαβάζονται ως προσωπική αποτυχία. Δεν είναι. Είναι η ύλη που δεν εξετάστηκε ποτέ.
Πού κολλάει η δεύτερη γλώσσα, και γιατί φταίει η πρώτη
Το κόλλημα είναι η δεύτερη γλώσσα, και το προκαλεί η πρώτη επειδή πήγε καλά. Κάποιος μαθαίνει μία, βολεύεται, και συμπεραίνει ότι η άνεση ήταν ευχέρεια στον προγραμματισμό. Ύστερα ανοίγει μια γλώσσα με αυστηρό μεταγλωττιστή, βλέπει κώδικα να απορρίπτεται χωρίς να διακρίνει τι φταίει, και διαβάζει την άρνηση ως ετυμηγορία για τον εαυτό του. Η πρώτη γλώσσα δίδαξε σύνταξη και ένα οικοσύστημα. Η δεύτερη χρεώνει τις παραδοχές που η πρώτη τον άφησε να κρατήσει.
Το δεύτερο κόλλημα είναι μικρότερο και πιο συχνό. Πολλοί προσπαθούν να μάθουν μια γλώσσα διαβάζοντας για τη γλώσσα, και δεν εγκαθιστούν ποτέ τίποτα, επειδή η εγκατάσταση είναι το βαρετό μέρος. Η εγκατάσταση είναι το μάθημα. Τα Θεμέλια του προγραμματισμού επιβιώνουν μιας αλλαγής γλώσσας, η εγκατάσταση όχι, και γι' αυτό ακριβώς πρέπει να γίνει με τα χέρια σας τουλάχιστον μία φορά.
Τι ανοίγετε το 2026, και τι κοστίζει από την Ελλάδα
Για την Python το uv είναι η τρέχουσα απάντηση, βγήκε το 2024 και αντικατέστησε μια στοίβα από τρία: το pip για την εγκατάσταση, το virtualenv για την απομόνωση και το pyenv για τις εκδόσεις της γλώσσας. Κάνει και τα τρία, είναι αρκετά γρήγορο ώστε η ταχύτητα να μετράει, και γράφει το αρχείο κλειδώματος που έλειπε.
Για τη JavaScript το npm έρχεται μαζί με το Node και παραμένει η προεπιλογή, έχοντας πάρει τη θέση της αντιγραφής ενός φακέλου με βιβλιοθήκες μέσα στο έργο με το χέρι. Για τη Rust το cargo φτάνει μαζί με τη γλώσσα και δεύτερη επιλογή δεν υπήρξε ποτέ, που είναι το ήσυχο επιχείρημα υπέρ των γλωσσών που το αποφάσισαν νωρίς.
Κανένα από τα τρία δεν κοστίζει ευρώ, κανένα δεν χρειάζεται κάρτα και κανένα δεν αρνείται ελληνική διεύθυνση. Ο πραγματικός λογαριασμός αυτού του θέματος είναι άλλος και δεν πληρώνεται μία φορά: κάθε αρχείο τεκμηρίωσης, κάθε μήνυμα του μεταγλωττιστή και κάθε συζήτηση σε αποθετήριο είναι στα αγγλικά, οπότε η ταχύτητα με την οποία μαθαίνετε μια γλώσσα εξαρτάται από τα Αγγλικά περισσότερο απ' όσο από την ίδια τη γλώσσα.
Ένας βοηθός κώδικα γράφει σωστό κώδικα σε γλώσσα που δεν ανοίξατε ποτέ, και είναι πιο σίγουρος ακριβώς εκεί όπου το οικοσύστημα διαφέρει από αυτό που ξέρετε. Δεν πρόκειται να σας πει ότι το αρχείο κλειδώματος δεν μπήκε στο αποθετήριο.
Αυτό που δεν αποφασίζεται εδώ είναι πού θα τρέξει ο κώδικας, και εκεί κρίνεται η επιλογή πολύ περισσότερο απ' όσο στη σύνταξη. Η ίδια διεύθυνση του Παύλου ζυγίζεται αλλιώς όταν πρέπει να την ανοίξει ένας πελάτης, που είναι η Ανάπτυξη ιστού, και αλλιώς όταν πρέπει να μείνει ζωντανή χωρίς εκείνον, που είναι το Από τον κώδικα στην παραγωγή.