Τρια Κιλά Κώδικα - The Serious Blog

Η σοβαρή πλευρά της αστείας πλευράς της Πληροφορικής

Γράφοντας κώδικα α λα Ελληνικά

Σήμερα θα γράψουμε κώδικα α λα Ελληνικά. Δηλαδή, κώδικα που λειτουργεί όπως, τον τελευταίο καιρό, η Ελλάδα.

Προσοχή: Το άρθρο, αν δεν το αντιληφθείτε εγκαίρως, έχει πολιτική χροιά και εκφράζει συγκεκριμένη άποψη. Αν ενοχληθείτε, σταματήστε να διαβάζετε. Δεν είστε υποχρεωμένοι, ούτε βέβαια χρειάζεται να συμφωνήσετε. 

Ξεκινάμε γράφοντας τη ΜΙΑ και μοναδική κλήση του 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 μην αφήνοντας τα υπόλοιπα να λειτουργήσουν).

Σχόλια (10) -

  • Moho

    21/4/2015 12:48:12 μμ | Απάντηση

    Και όλα αυτά τρέχουν στο λειτουργικό ΜπουρδέλOS 1981? :p

  • μπρρρ... παγώσαμε

    21/4/2015 3:42:49 μμ | Απάντηση

    Πολύ αστείο, τι να σου πω...

    Φαίνεται ότι άμα όλη τη μέρα είσαι μπροστά από ένα pc και προγραμματίζεις και δεν έχεις διαβάσει ούτε ένα βιβλίο, ούτε μια εφημερίδα, ούτε έχεις βγει λίγο παραέξω, τότε όχι μόνο δεν μπορείς να δεις την πραγματικότητα ως έχει (π.χ. απουσιάζουν από τη "σάτιρά" σου οι καναλάρχες-μεγαλοεργολάβοι, οι τραπεζίτες, οι τοκογλύφοι δανειστές που κερδίζουν δανείζοντας την Ελλάδα, οι ΜΚΟ των λαμογιών που τρώνε τη μία κρατική επιχορήγηση πίσω από την άλλη, ο απλός λαός που υποφέρει, ο κόσμος που έχει μείνει άστεγος, παιδιά που λιποθυμούν από την πείνα στα σχολεία κλπ), αλλά αποκτάς και ηλίθιο χιούμορ. Συνέχισε έτσι, αυτιστικά.

    • Ζαχαρίας

      21/4/2015 4:02:05 μμ | Απάντηση

      Φαίνεται ότι δεν με γνωρίζεις. Εφόσον όμως είσαι επιθετικός, έχω κάθε δικαίωμα να είμαι και εγώ, let the flames begin.

      Πρώτον και κυριότερον, αυτό ΔΕΝ είναι σάτιρα. Σάτιρα στο άλλο blog. Εδώ δεν έχεις να κάνεις με "περσόνα" (μονο το όνομα έχω κρατήσει), αλλά με μένα τον ίδιο. Αρα μάθε να ξεχωρίζεις τι είναι σάτιρα και τι απλά αρθρογραφία (καλή, κακή, δεν έχει σημασία). ΔΕΝ ΕΙΝΑΙ ΧΙΟΥΜΟΡ.

      Δεύτερον, ΑΥΤΑ μπόρεσα να γράψω στον ελεύθερο χρονο που είχα. Αν πιστεύεις ότι λείπουν πράγματα, άνοιξε ένα δικό σου blog, γράψε τα δικά σου και έλα μετά να τα κάνουμε join. Παρεμπιπτόντως, έχω και άποψη και θα ενοχληθείς πολύ αμα σου την αναπτύξω αλλά δεν πρόκειται. Θα περιοριστώ σε αυτό: Οι καναλάρχες, οι ΜΚΟ είναι ΑΠΟΤΕΛΕΣΜΑ (όπως και το Δημόσιο) και όχι ΑΙΤΙΑ. Αποτέλεσμα του γεγονότος οτι ως νοοτροπία πάμε όλοι ΚΑΤΑ ΔΙΑΟΛΟΥ. Και μας αξίζει ό,τι και να πάθουμε. Και δεν βγάζω και τον εαυτό μου από αυτό. Τα υπόλοιπα είναι φυσικά επακόλουθα της κρίσης και ναι, δεν θα πω ούτε για τα παιδάκια στη Λιβύη ούτε για τους ναυαγούς στη Μεσόγειο, γιατί μετά θα γίνω ειδησεογραφικό blog. Μια άποψη λέω, όσο αποσπασματική, μεροληπτική και ηλίθια γουστάρω ΕΓΩ να είναι. Μην με διαβάζεις.

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

      Ο αυτιστικός ηλιθιος φίλος σου. (Πάντα φιλικά).

    • SomeJavaGuy

      29/2/2016 9:03:05 μμ | Απάντηση

      XAXAXAXAXA!
      Κάτσε... τρολλάρεις σωστά;

      Oh. Bastard.

  • Ιωσήφ Κανακάρης

    21/4/2015 4:16:58 μμ | Απάντηση

    Εντάξει, έχει την χιουμοριστική του αξία, αλλά είναι υπεραπλουστευτικό και απολιτίκ. Ποταμίσιο κάπως...

    • Ζαχαρίας

      21/4/2015 4:20:12 μμ | Απάντηση

      Δεν θέλω να πέσω στην παγίδα του πολύ "πολιτίκ" γιατί θα εξαπολυθούν ορδές trolls από όποια πλευρά προσβάλλω περισσότερο, και βαριέμαι να κάνω τόσο moderation στα μηνύματα. Πρόσεξε, αν το έκανα όμως θα προσέβαλλα ΟΛΕΣ τις πλευρές. ΜΑ ΟΛΕΣ. Το πρόβλημα για μένα δεν ειναι (μόνο) πολιτικο - είναι πρωτίστως θέμα νοοτροπίας του Έλληνα.

  • Pavlos Polianidis

    21/4/2015 8:13:35 μμ | Απάντηση

    Καλησπέρα!

    Ωραίο άρθρο με αρκετά εύστοχες παρομοιάσεις. Εγώ θεωρώ πως είναι όμως λίγο ελλιπές. Ναι ισχύει πως η γενική άποψη ενός μέσου component στην Ελλάδα για το ποιός παράγει και προσφέρει είναι τελείως για το πούτσο. 'Όμως και η επιχειρηματική νοοτροπία στην Ελλάδα προκαλεί components να καταλαμβάνουν όλη τη μνήμη. Δεν έχουν όλοι αυτή τη νοοτροπία αλλά όσοι την έχουν δίνουν γερό πάτημα.

    Το ίδιο ισχύει και για το δημόσιο φορέα με τη διαφορά του ότι το δημόσιο είναι λίγο oversized για τις ανάγκες μας και ταυτόχρονα τόσο μη αποτελεσματικό που ακόμα και στο μέγεθος που είναι δεν καταφέρνει να κάνει αυτά που πρέπει να κάνει...Νομίζω το περιέγραψες αυτό στο άρθρο σου.

    Εκεί που θέλω να καταλήξω είναι ότι η τρέχουσα μας πολιτική δεν είναι μόνο αποτέλεσμα της νοοτροπίας αυτών που "δεν αφήνουν τους υπόλοιπους να λειτουργήσουν" αλλά και η νοοτροπία της πλειοψηφίας των Ελλήνων επιχειρηματιών. Οπότε κάποια στιγμή άμα έχεις όρεξη και χρόνο, ρήξε κάτι παρόμοιο για Έλληνες επιχειρηματίες. Χωρίς να είναι "πολύ πολιτίκ" γιατί θα το έχουμε είδη διαβάσει αλλού και παίζει να ξεράσουμε πάνω στο πληκτρολόγιο. Πιστεύω πως είναι τόσο πολιτίκ οσο χρειάζεται.

    p.s. φίλε (or not) μπρρρ... παγώσαμε, χάρη σε αυτούς που κάθονται όλη μέρα στο ΠιΣι έχεις τη δυνατότητα να εκφράσεις την άποψη (or not) σου ελευθέρα σε μεγάλο κοινό, ανώνυμα, χωρίς να σε κυνηγά κανείς με μπαλτά.
      
    Πάντα φιλικά (or not Laughing)
    Παύλος.

  • Παντελης

    22/4/2015 12:21:50 μμ | Απάντηση

    Για να απαντήσω σε όρους του αθρόου, το πρόβλημα γενικά είναι με τη σχεδίαση του λειτουργικού συστήματος. Σε κανονικά λειτουργικά, υπάρχουν δικλείδες ασφαλείας, όπου βλέπουν αν μια διεργασία καταλαμβάνει περισσότερους πόρους από ότι πρέπει. Παράδειγμα τέτοιων διεργασιών είναι το trapwire και το ossec.
    Στον πραγματικό κόσμο τα λέμε ελεγκτικούς μηχανισμούς.
    Σε περίπτωση οπου βρεθεί μια διεργασία με μια ή περισσότερες functions οι οποίες είναι κακόβουλες, ειτε έχουν κενά, τότε στέλνονται είτε για refactoring είτε σε κάποιο quarantine.
    Στον πραγματικό κόσμο, αυτά τα λέμε δικαιοσύνη.

    Και εδώ είναι η καρδιά του προβλήματος. 40 χρονια θυμάμαι ότι ούτε δικαιοσύνη υπήρχε, ούτε τιμωρία, ούτε τίποτα. Με εξαίρεση βεβαία τους φτωχόδιαβόλους.
    40 χρονια ουσιαστικής ανομίας, εκπαίδευσε τους πολίτες σε μια συμπεριφορά.

    Και βέβαια τα τελευταία χρονια, αρκετές φορές οι users, επέλεξαν να γίνει re-factor, να γίνει system scan, να γίνει quarantine. όμως, άλλες τόσες φορές, ο νέο εκλεγμένος scheduler, αποφάσισε να ρίξει στο recycle bin, τις υποσχέσεις.

  • d3sync

    26/4/2015 8:13:02 μμ | Απάντηση

    Μην φοβάστε αδέρφια μου η τεχνολογία πάει μπρόστα τώρα με το κλαουντ κομπιουτινγκ δεν θα μας απασχολούν τα ρισορσιςς!!!! Είμαστε Ελληνάρες...όποτε θα επιθυμούμε περισσότερα θα γίνεται απλά ένα έξτρα νοντ διαθέσιμο για να έχουν τα κομπονεντς να παίζουν! Η μόνη σώτηρια που έχουμε είναι μερικα δεκάδες restrictions κυριως IP based και να απενεργοποιηθεί το API για το remote control του master....

  • Manos

    5/5/2015 1:42:45 μμ | Απάντηση

    Φίλε cap να πεις επίσης για τα resource-hungry components, που όταν εξαντλήσουν τους πόρους του δικού τους υποσυστήματος ζητάνε "δανεικά" resources διπλανών συνεργαζομένων υποσυστημάτων, απειλώντας οτι αν δεν τους δωθούν θα ρίξουν όλο το σύστημα!
    Μόνη λύση είναι ένα full unistall και εγκατάσταση στη θέση του, του generic "hello world" service... και μετά ξαναχτίζεις πάνω σε αυτό Smile

Loading