Πώς η αμάθεια και η ημιμάθεια της ελληνικής δημοσιογραφίας μπορεί να πάρει ένα πραγματικά σοβαρό θέμα και να το κάνει ΤΣΙΡΚΟ (όπως πολλά σε αυτή τη χώρα). Ξεκαθαρίζω: "ΠΗΓΑΙΟΣ ΚΩΔΙΚΑΣ". Για τι...
Πώς η αμάθεια και η ημιμάθεια της ελληνικής δημοσιογραφίας μπορεί να πάρει ένα πραγματικά σοβαρό θέμα και να το κάνει ΤΣΙΡΚΟ (όπως πολλά σε αυτή τη χώρα). Ξεκαθαρίζω: "ΠΗΓΑΙΟΣ ΚΩΔΙΚΑΣ". Για τι ακριβώς συζητάμε; Επειδή είναι καλό να ξεχωρίζουμε τις έννοιες, αλλά δεν είναι όλοι υποχρεωμένοι να τις γνωρίζουν, μερικές διευκρινίσεις για τον "πηγαίο κώδικα". Κατ' αρχάς: "Κωδικός": μια ή περισσότερες συμβολοσειρές (σύμβολα = γράμματα, αριθμοί κλπ) που "ξεκλειδώνουν" κάτι, π.χ. ένα πρόγραμμα. "Πηγαίος κώδικας": κάτι εντελώς διαφορετικό, για το οποίο πρέπει να πούμε αρκετά.
Θα τα πω όσο πιο απλά γίνεται, αλλά χρειάζεται λίγη υπομονή: Όλοι μας έχουμε εμπειρία από υπολογιστές (π.χ. ένα laptop). Οι υπολογιστές έχουν εφαρμογές με τις οποίες αλληλεπιδρούμε (π.χ. word). Ο άνθρωπος, όπως και κάθε έμβιο ον, μπορεί να αντιληφθεί και να επεξεργαστεί διάφορα ερεθίσματα του εξωτερικού χώρου (π.χ. μια εικόνα, έναν ήχο, μια οσμή κλπ) και να εκτελέσει διάφορες εργασίες. Το ΕΝΑ και ΜΟΝΟ πράγμα που μπορεί να κατανοήσει μια μηχανή (και οι υπολογιστές είναι μηχανές, ασχέτως εξέλιξης και περιπλοκότητας), και η ΜΙΑ και ΜΟΝΗ εργασία που μπορεί στην πραγματικότητα να εκτελέσει, είναι: Περνά / δεν περνά ρεύμα (1/0) μέσα από ένα μικροσκοπικό κύκλωμα.
Όλα τα άλλα που κάνουν οι υπολογιστές είναι αποτελέσματα αυτής της μιας και μόνης εργασίας - απλώς εκτελούν δισεκατομμύρια τέτοιες εργασίες το δευτερόλεπτο, που έχουν ως αποτέλεσμα τις σύνθετες ενέργειες κι εργασίες που αντιλαμβανόμαστε.
Ανάμεσα σε αυτό που κατανοεί και εκτελεί ο άνθρωπος, και αυτό που μπορεί να κατανοήσει και να εκτελέσει μια μηχανή, υπάρχουν πολλά επίπεδα "μετάφρασης" (abstraction levels). Κάθε επίπεδο μετάφρασης λέει στο από κάτω τι να κάνει, ώσπου το τελευταίο να πει στο κύκλωμα "1/0". Παραλείπω όλες τις ενδιάμεσες λεπτομέρειες για να πω το εξής: συνήθως, όλα τα ενδιάμεσα στάδια τα ονομάζουμε συλλήβδην "προγράμματα". Σε μια τυπική διάταξη (π.χ. συνηθισμένο laptop) το πρόγραμμα "εφαρμογή" (Word) λέει στο πρόγραμμα "λειτουργικό σύστημα" (Windows) τι να κάνει, ο πυρήνας (kernel) του λειτουργικού συστήματος λέει στα κατώτερα προγράμματα "drivers" τι χρειάζεται, και κάθε κατώτερο πρόγραμμα λέει στις συσκευές (επεξεργαστή, μνήμες, δίσκους, οθόνες κλπ) τι και πώς θα παραδώσουν, μιλώντας, μετά από ενδιάμεσα στάδια, εν τέλει τη "γλώσσα μηχανής" (το τελικό "1/0" στα κυκλώματα). Επιπλέον, κάθε ψηφιακή συσκευή έχει το δικό της, πλήρως ανεξάρτητο πρόγραμμα πάνω στο δικό της επεξεργαστή, το "firmware", το οποίο καθορίζει επακριβώς τη λειτουργία της.
Όλα αυτά τα προγράμματα δημιουργούνται με ειδικά εργαλεία, που ονομάζονται "γλώσσες προγραμματισμού". Οι γλώσσες προγραμματισμού έχουν πολλές διαφορές, αλλά ένα κοινό: Ακόμη και στην οπτικοποιημένη τους εκδοχή (visual), αυτό που παράγουν είναι σειρά από εντολές, τη μια κάτω από την άλλη, που ονομάζονται "γραμμές" και όλες μαζί σχηματίζουν τον "ΚΩΔΙΚΑ". Πηγαίος Κώδικας ονομάζεται ο κώδικας σε αυτή ακριβώς τη μορφή: όπως τον έγραψε ο προγραμματιστής, αναγνώσιμος από άνθρωπο, πριν από οποιαδήποτε μετατροπή.
Όμως, στις γλώσσες που χρησιμοποιούνται στις στρατιωτικές εφαρμογές (C/C++/Ada), ο κώδικας από μόνος του δεν μπορεί να κάνει κάτι.
Είναι σαν ένα αποσυναρμολογημένο αυτοκίνητο.
Η λειτουργία της τελικής συναρμολόγησης ονομάζεται "compilation" (σε ατυχή ελληνική μετάφραση: συμπίληση - έτσι την ορίζει ο νόμος). Πριν το βήμα αυτό, έχουμε κώδικα (γραμμές κειμένου τη μια κάτω από την άλλη - ένα αυτοκίνητο σε ανταλλακτικά). Μετά από αυτό έχουμε πρόγραμμα: μια εφαρμογή ικανή να αλληλεπιδράσει και να εκτελέσει εργασίες (αυτοκίνητο που μπορεί να σε πάει από το σημείο Α στο σημείο Β). ΤΙ ΔΙΝΟΥΝ, ΛΟΙΠΟΝ, ΟΙ ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΚΑΙ ΤΙ ΖΗΤΑΜΕ: Δε γίνεται συζήτηση για "κωδικούς": Όλοι οι κωδικοί χρήσης των συστημάτων, καθώς και οι κωδικοί για ορισμένα επίπεδα συντήρησης, παρέχονται (αλλιώς δε θα ήταν εφικτή η χρήση τους). Δε γίνεται συζήτηση για "εφαρμογές": Αυτό που βλέπει ο χειριστής στην οθόνη, μέχρι εκείνο που θα γίνει όταν πατήσει το κουμπί (κάθε κουμπί), είναι προγράμματα (εφαρμογές) που επίσης παρέχονται (αλλιώς τα συστήματα θα ήταν "σκέτο σίδερο"). Η συζήτηση γίνεται για τον ΚΩΔΙΚΑ με τον οποίον γράφτηκαν τα ΠΡΟΓΡΑΜΜΑΤΑ.
Για το πόσο χαμηλό επίπεδο πρόσβασης μιλάμε (σημειώνω: στην πληροφορική "χαμηλά" σημαίνει πιο βαθιά και με μεγαλύτερο επίπεδο δυσκολίας) είναι άγνωστο. Π.χ. φτάνει μέχρι το firmware (θεωρώ αδύνατο να παραχωρηθεί), για ορισμένες μόνο εφαρμογές διεπαφής (το πιο εύκολο), ή πολλά και διάφορα ενδιάμεσα (το πραγματικό ζητούμενο); Δεν ξέρουμε - και η δημοσιογραφική κάλυψη δε βοηθά να καταλάβουμε ακριβώς τι γίνεται. Πάντως, ΔΕ ζητάμε κωδικούς, ΔΕ ζητάμε εφαρμογές, ΔΕ ζητάμε οτιδήποτε χωρίς το οποίο η χρήση είναι αδύνατη.
Αυτό που ζητάμε είναι κάτι από τα "ανταλλακτικά" και τις "οδηγίες συναρμολόγησης" με τα οποία φτιάχτηκε το "αυτοκίνητο" στο παράδειγμά μας (δηλαδή, πριν το compilation), όπως: τον πηγαίο κώδικα του λογισμικού αποστολής (σύντηξη αισθητήρων, λειτουργίες ραντάρ, ηλεκτρονικός πόλεμος, διαχείριση οπλισμού, διεπαφή χειριστή), εργαλεία και κλειδιά που επιτρέπουν να ξαναχτιστεί και να φορτωθεί στο σύστημα (ανεξάρτητη δυνατότητα τροποποίησης και ενσωμάτωσης, χωρίς έγκριση του προμηθευτή), γλώσσα επικοινωνίας με τους αισθητήρες και συναφή. --- Ενημέρωση: Σε νεότερη ανακοίνωση, οι Ιραηλινοί διευκρινίζουν ότι γι το ελληνικό σύστημα αεράμυνας θα γραφτεί ειδικός (custom) κώδικας, ο οποίος θα ανήκει στην Ελλάδα (στο σημείο υπάρχει προφανής ασάφεια λόγω του περίπλοκου ζητήματος των δικαιωμάτων διανοητικής ιδιοκτησίας, αλλά αυτό δεν είναι το μείζον). Προφανώς εννοούν μόνο το σύστημα διοίκησης (Command and Control, ή C2).
Η επιλογή των posts/links γίνεται με ένα στατιστικό μοντέλο και μπορεί να μην απεικονίζει επακριβώς τη σειρά δημοτικότητάς τους