
Σήμερα θα γράψουμε κώδικα α λα Ελληνικά. Δηλαδή, κώδικα που λειτουργεί όπως, τον τελευταίο καιρό, η Ελλάδα.
Προσοχή: Το άρθρο, αν δεν το αντιληφθείτε εγκαίρως, έχει πολιτική χροιά και εκφράζει συγκεκριμένη άποψη. Αν ενοχληθείτε, σταματήστε να διαβάζετε. Δεν είστε υποχρεωμένοι, ούτε βέβαια χρειάζεται να συμφωνήσετε.
Ξεκινάμε γράφοντας τη ΜΙΑ και μοναδική κλήση του API μας, που θα επιτρέψει στην εφαρμογή μας να επικοινωνεί με τον έξω κόσμο. Η συγκεκριμένη κλήση ζητά ως input ένα τυχαίο αριθμό ορισμάτων, ο οποίος κάθε φορά είναι διαφορετικός ως προς το πλήθος και τον τύπο των ορισμάτων και επιστρέφει FALSE για οτιδήποτε δεν ανταποκρίνεται σε ένα προκαθορισμένο σετ τιμών των παραμέτρων που εκείνη τη στιγμή ισχύουν. Αν τυχόν καταφέρετε και μαντέψετε τις τιμές αυτές, αυτομάτως η κλήση γίνεται ασύχρονη και επιστρέφει ΚΑΠΟΙΑ ΣΤΙΓΜΗ κάτι απροσδιόριστο το οποίο δεν έχει καμία σχέση με αυτό που νομίζατε ότι ζητούσατε αρχικά.
Το documentation είναι τελείως ασαφές σε αυτό το σημείο, περιγράφοντας την ιστορική εξέλιξη της κλήσης ανά τα έτη καθώς και τον σκοπό που θεωρητικά θα έπρεπε να επιτελεί, χωρίς καμία αναφορά στο τι χρειάζεται για να λειτουργήσει σωστά ή στο τι κάνει.
Για να λειτουργήσει η κλήση απαιτεί κατ’ελάχιστον 1TB RAM που μάλιστα μπορεί να αυξηθεί ανάλογα με τις ανάγκες που θεωρεί το σύστημα ότι έχει καθώς και 6PB αποθηκευτικός χώρος. Αν τυχόν το σύστημα ανακαλύψει οτι δεν καλύπτονται οι προϋποθέσεις λειτουργίας του, εμφανίζει προειδοποιητικά απειλητικά μηνύματα ότι θα ξαναγράψει τον κώδικα της function έτσι ώστε η κλήση να πραγματοποιείται μόνο από εσωτερικά components..
Αυτή είναι η διαπραγματευτική μας τακτική με τους εταίρους στο ζήτημα του χρέους.
Στη συνέχεια γράφουμε το core του συστήματος, το οποίο αποτελείται από functions που καλούν η μια την άλλη προκειμένου να δικαιολογήσουν την ύπαρξή τους, χωρίς να επιστρέφουν τίποτα ως αποτέλεσμα. Αν τυχόν ΖΗΤΗΘΕΙ κάποιος υπολογισμός από εξωτερική κλήση, τότε είτε αυτός καθυστερεί τραγικά είτε έρχεται πίσω λανθασμένος είτε σας ζητείται να μαντέψετε εσείς ποια function πρέπει να καλέσει ποιά.
Γενικά, το σύστημα επιστρέφει περισσότερα exceptions από φυσιολογικά αποτελέσματα.
Σε περίπτωση υπερφόρτωσης, μια μικρή ομάδα components καταλαμβάνει όλη τη RAM μην αφήνοντας τα υπόλοιπα να λειτουργήσουν.
Αυτό είναι το Ελληνικό Δημόσιο.
Το σύστημα φροντίζει για την ακεραιότητά του με ποικίλους τρόπους. Εαν επιχειρήσετε να κάνετε refactoring στον κώδικα κάποιου component προκειμένου να γίνει πιό αποτελεσματικό, το component αυτόματα κάνει inject στον εαυτό του πενήντα μεταβλητές (συνήθως object arrays με blobs) που αλλάζουν τιμές τυχαία κατά την εκτέλεση χωρίς να εξυπηρετούν κανένα σκοπό ενώ αρχίζει να πραγματοποιεί επίσης τυχαίες κλήσεις σε άλλα components οδηγώντας το σύστημα σε meltdown.
Αν, παρ’ελπίδα, κάποια κλήση επιτευχθεί και φέρει ορθό αποτέλεσμα σε λογικό χρόνο, εκκινούνται αυτόματα 200 processes με realtime priority που υπολογίζουν κατι ιδιαίτερα χρήσιμο όπως το πρώτο δισεκατομμύριο ψηφίων του π ή τυχαία fractals και ανταγωνίζονται το ένα το άλλο σε κάθε επόμενη κλήση που θα γίνει για τον ίδιο λόγο. Ορισμένες φορές δεν παίρνετε το αποτέλεσμα της κλήσης που κάνατε, αλλά ένα τυχαίο αποτέλεσμα από άλλο thread που σχεδόν πάντα δίνει τιμή FALSE ακόμα και αν εσείς ζητήσατε την τρέχουσα ημερομηνία.
Σε περίπτωση που πάρετε πολλές σωστές τιμές σε σύντομο χρόνο και δεν “δουλέψει” τίποτα από τα παραπάνω, μια μικρή ομάδα components καταλαμβάνει όλη τη RAM μην αφήνοντας τα υπόλοιπα να λειτουργήσουν.
Αυτή είναι η συμπεριφορά μας απέναντι σε κάθε προσπάθεια εκσυχρονισμού και βελτίωσης της αποτελεσματικότητας.
Κάθε υποσύστημα της εφαρμογής κοιτάζει να αξιοποιήσει όλη τη διαθέσιμη μνήμη για τον εαυτό του με αποτέλεσμα ποτέ να μην υπάρχει αρκετή μνήμη διαθέσιμη. Σε περίπτωση που υπάρχει ακόμα διαθέσιμη μνήμη, το υποσύστημα αρχίζει να πραγματοποιεί αναδρομικές κλήσεις στον εαυτό του προκειμένου να την αναλώσει και αυτή.
Αν συνεχίζει να υπάρχει διαθέσιμη μνήμη παρ’όλα αυτά, μια μικρή ομάδα components καταλαμβάνει όλη τη RAM μην αφήνοντας τα υπόλοιπα να λειτουργήσουν.
Αυτές είναι οι συντεχνίες και οι κλάδοι.
Το σύστημα είναι φημισμένο για τις non-deterministic functions του. Ακόμα και απλοί υπολογισμοί, όπως 1+1, ποτέ δεν θα φέρουν δυο φορές το ίδιο αποτέλεσμα μια και το τελικό αποτέλεσμα εξαρτάται από τυχαίους παράγοντες όπως π.χ. πόση μνήμη χρησιμοποιεί κάποιο ανταγωνιστικό υποσύστημα. Αυτό οδηγεί, προφανώς, σε επανάληψη διαδικασιών που αλλιώς θα γίνονταν cached με αποτέλεσμα την εξαιρετικά αργή απόκριση.
Αν το hardware επιμένει να εξυπηρετεί γρήγορα, παρά το φόρτο, τις κλήσεις, μια μικρή ομάδα components καταλαμβάνει όλη τη RAM μην αφήνοντας τα υπόλοιπα να λειτουργήσουν.
Η μόνη περίπτωση να ανταποκριθεί το σύστημα σε καλούς χρόνους και με σωστά αποτελέσματα είναι η κρυφή απευθείας απόδοση πόρων στη διαδικασία που εκτελείται με ταυτόχρονη στέρησή τους από ανταγωνιστικά processes.
Αυτή είναι η οργάνωσή μας ως κοινωνία.
Ορισμένα components, διαπιστώνοντας ότι δεν μπορούν να λειτουργήσουν σε τέτοιες ασφυκτικές συνθήκες, αρχίζουν να μετακινούνται αυτόματα προς διπλανούς servers. Τα components που παραμένουν στον server διακόπτουν κάθε επικοινωνία με αυτά που μετακινήθηκαν και τα χαρακτηρίζουν ως hostile στο antivirus. Για να διατηρηθεί η ισορροπία, μια μικρή ομάδα components καταλαμβάνει όλη τη RAM μην αφήνοντας τα υπόλοιπα να λειτουργήσουν.
Αυτή είναι η συμπεριφορά μας απέναντι σε όσους αναγκάζονται να αναζητήσουν μια καλύτερη ζωή στο εξωτερικό (και τη βρίσκουν).
Κάθε διαδικασία που ολοκληρώνεται έχει μυστικά εκκινήσει άλλες 30 διαδικασίες κατά την εκτέλεσή της που αλλοιώνουν τον κώδικα της ίδιας, του εαυτού τους και όσων άλλων διαδικασιών βρουν στο δρόμο τους. Στο τέλος, όλες οι διαδικασίες ζητάνε περισσότερη RAM και μια μικρή ομάδα components αυτοδιαγράφεται.
Αυτό είναι το νομοθετικό έργο της Βουλής μας (εδώ και αρκετές δεκαετίες).
Στην περίπτωση που υπάρχουν δύο ή περισσότερα processes που μπορούν να χρησιμοποιηθούν για την επίτευξη αποτελέσματος, το σύστημα επιλέγει το process που θα ενεργοποιηθεί όχι με βάση το τι πραγματικά κάνει, αλλά το τι υπόσχεται το documentation οτι δυνητικά μπορεί να προσφέρει υπό ιδανικές συνθήκες και όταν αρκετές χιλιάδες global ρυθμίσεις έχουν συγκεκριμένες τιμές, καθώς και με βάση το τι δεν κάνουν τα υπόλοιπα processes, ασχέτως αν αυτό που επιλέγεται μπορεί να τα καλύψει.
Αυτή είναι η διαδικασία εκλογής κυβερνώντων.
(Θα συνέχιζα, αλλά μια μικρή ομάδα components μόλις κατέλαβε όλη τη RAM μην αφήνοντας τα υπόλοιπα να λειτουργήσουν).