Είπα, με την ευκαιρία των τραγουδο-διαγωνισμών, και αφού αυτός ο χώρος δέχεται και λογοτεχνία, να παραθέσω κι εγώ την παρακάτω - σουρεαλιστική - ιδέα μου:
Η ιστορία ξεκινά πολύ παλιά,
τότε που οι άνθρωποι κατέβηκαν από τα δέντρα και άρχισαν να γράφουν κώδικα μηχανής.
Επειδή τις περισσότερες φορές έπρεπε να γράψουν πολλούς αριθμούς, κατέβηκε η ιδέα του πίνακα.
Η ιδέα είναι απλή, βρίσκεις μια διεύθυνση Δ1. Από αυτήν και κάτω δεσμεύεις χώρο. Ο πρώτος αριθμός θα είναι λοιπόν στη θέση Δ1+0, ο δεύτερος στη θέση Δ1+1, και ο ν-οστός στην θέση Δ1+(ν-1). Για πίνακες στον 80x86 υπάρχουν και έτοιμες εντολές, και όλα καλά.
Έπειτα ήρθε η C.
Ο κόσμος, χωρίς δεύτερη κουβέντα θεωρούσε ότι το πρώτο στοιχείο ενός πίνακα a θα είναι *a. Πείτε το όπως θέλετε: *(a+0) ή πιο κομψά a[0]
Κανείς δεν αμφισβητούσε ότι το πρώτο στοιχείο του πίνακα είναι στη θέση μηδέν.
Κάποιοι όμως δεν συμβιβάζονταν. Το μηδέν, έλεγαν, τους θυμίζει το τίποτα, το κενό - άσε που γραφόταν και σαν κενό, με μια γραμμή να το κόβει διαγωνίως -.
Τότε ήρθε η Basic.
Για να καλυφθεί το ψυχολογικό κενό των προγραμματιστών, λοιπόν, η Basic άρχισε να μετράει τους πίνακες από το ένα!
Η συνέχεια δώθηκε με τη Visual Basic (VB), που επίσης ξεκινούσε να μετράει τους πίνακες από το 1.
Έτσι λοιπόν, όταν κάποιος έγραφε σε C: a[3] εννοούσε το 4ο στοιχείο, ενώ αν έγραφε σε VB: a(3) εννοούσε το 3ο!
Τελικά, ήρθε και το .NET .
Κάτι με το CLR, κάτι με τις σαράντα γλώσσες του .NET, έπρεπε κάποια στιγμή να αποφασίσουμε πώς θα μετράμε τους πίνακες.
Η VB έκανε πίσω (1 θέση ακριβώς) και άρχισε κι αυτή να μετρά από το μηδέν. Όλοι πλέον θα καταλάβαιναν ότι το a[3] όπως επίσης καί το a(3) -ναι καί σε VB- θα είναι, πια, το τέταρτο στοιχείο του πίνακα.
Όπως καταλαβαίνετε, αυτό προκάλεσε μεγάλη ανατροπή στους γαλουχημένους με VB προγραμματιστές, αφού έπρεπε να αλλάξουν ριζικά τρόπο σκέψης τους...
Είναι τόσο σημαντικό;
Ναι, αν σκεφτούμε τι μπορεί να συμβεί με αυτό το bug, να θεωρούμε δηλαδή ότι το στοιχείο a(ν) είναι το ν-οστό, ενώ πραγματικά είναι το επόμενό του! Το (ν+1)-οστό!
Σκεφθείτε για παράδειγμα ότι έχουμε έναν προγραμματιστή σε VB που αρνείται να παραδεχθεί τα παραπάνω. Βάλτε τώρα αυτόν τον προγραμματιστή να γράψει τον κώδικα στα SMS του tele-voting για την Eurovision.
Ας υποθέσουμε τώρα ότι ένας Ευρωπαίος θέλει να ψηφίσει Ελλάδα. Δίνει λοιπόν τον αριθμό του Ελληνικού τραγουδιού. Επειδή όμως έχει γίνει το bug που συζητάμε, δεν ψηφίζει Ελλάδα, αλλά την αμέσως επομένη χώρα, τη Φινλανδία!
Καταραμένοι πίνακες!
Καλή βδομάδα