• Alexios
  • barcodes
  • urban legends
  • greek

Ένας αστικός μύθος λέει ότι οι γραμμωτοί κώδικες (barcodes) που απαντώνται στα περισσότερα καταναλωτικά αγαθά περιλαμβάνουν το αριθμό 666 στην αρχή, μέση και τέλος του barcode. Αυτό δεν είναι αλήθεια.

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

  • Οι γραμμές που απαρτίζουν τα υποτιθέμενα εξάρια στην πραγματικότητα δεν είναι ψηφία αλλά ένδειξη ρυθμού, κάτι σαν το «και ένα, και δύο, και τρία» που χρησιμοποιούν οι μουσικοί για να συγχρονιστούν.

  • Τα υποτιθέμενα εξάρια δεν είναι καν ίδια μεταξύ τους!

  • Το ψηφίο 6 έχει όχι μία εμφάνιση, αλλά δύο διαφορετικές, και καμμία δεν ταιριάζει με τις ύποπτες μπάρες.

Επειδή η ανθρώπινη ψυχολογία χώνεται σε τέτοιες συζητήσεις που περιλαμβάνουν λευκό και μαύρο (το λευκό εξαφανίζεται συνήθως), θα αντικαταστήσουμε τα δύο σύμβολα «λευκό» και «μαύρο» με τα σύμβολα «o» και «x» αντίστοιχα.1

Από πού κι ως πού τέσσερεις γραμμές; Εγώ μετράω δύο!

Κάθε ψηφίο barcode αποτελείται από μπάρες. Το πάχος της μπάρας εκφράζεται σε μια μονάδα μέτρησης που ονομάζεται «module». Το module δεν έχει συγκεκριμένη διάσταση επειδή κάθε barcode μπορεί να έχει διαφορετικό μέγεθος. Τα ψηφία του barcode έχουν δύο ιδιότητες:

  1. Όλα τα ψηφία αποτελούνται από τέσσερεις μπάρες· δύο o και δύο x.

  2. Όλα τα ψηφία έχουν ακριβώς το ίδιο συνολικό πλάτος, 7 modules.

Στους συνηθισμένους κώδικες EAN ή UPC, οι μπάρες έχουν πλάτος 1, 2 ή 3 modules.

Κάθε EAN/UPC barcode έχει πλάτος 95 modules: 12 ψηφία × 7 modules + 3 modules στην αρχή, 5 modules στη μέση και άλλα 3 modules στο τέλος.

Barcode τύπου EAN

Barcode τύπου EAN. Τα τρία guard bars είναι χρωματισμένα κόκκινα. Τα ψηφία είναι χρωματισμένα με άλλα χρώματα για να φανεί το πλάτος τους.

Μα εγώ βλέπω μόνο μαύρες μπάρες

Ο μέσος άνθρωπος αγνοεί τις o μπάρες γιατί είναι χρωματισμένες λευκές. Έχουμε μάθει να διαβάζουμε μικρά σκούρα σημεία (γράμματα) σε μεγάλο φωτεινό φόντο και το έχουμε συνηθίσει τόσο πολύ αυτό, που μας είναι αδύνατο να δούμε τις λευκές μπάρες στο barcode, ακόμα κι αν προσπαθήσουμε. Μπορείτε να πειραματιστείτε με αυτό. Τι βλέπετε στην παρακάτω εικόνα; Απαντήστε αμέσως.

Μαύρη τελεία

Είδατε μία μαύρη τελεία, σωστά; Δεν είδατε όμως το κατά πολύ μεγαλύτερο λευκό τετράγωνο στο οποίο είναι κεντραρισμένη η τελεία.

Τα «εξάρια» στην αρχή, τη μέση και το τέλος δεν είναι εξάρια

Οι «δύο» μπάρες που πολλοί βλέπουν στην αρχή, στη μέση και στο τέλος δεν είναι εξάρια. Τα ψηφία (το «6» είναι ψηφίο) έχουν πάντα πλάτος 7 modules και ακολουθούν συγκεκριμένους κανόνες (βλέπε παραπάνω).

Διαβάζοντας πιο πάνω, θα δείτε ότι οι «σατανικές» μπάρες αριθμούν 3 modules στην αρχή και στο τέλος, και 5 modules στη μέση. Για να ήταν εξάρια θα έπρεπε να έχουν πλάτος 7 modules.

Τα «εξάρια» δεν είναι καν ίδια μεταξύ τους

Για να είναι κάτι ίδιο με κάτι άλλο, πρέπει να είναι πανομοιότυπο μέσα σε κάποιο πλαίσιο. Επί παραδείγματι, συζητώντας για τα γράμματα της αλφαβήτου, «άλφα» και «άλφα» είναι ίδια. «Άλφα» και «βήτα» δεν είναι ίδια.

Στο πλαίσιο των barcodes, οι μπάρες στην αρχή και στο τέλος έχουν πλάτος 3 modules και κωδικοποίηση «xox». Η μπάρα στη μέση έχει πλάτος 5 modules και κωδικοποίηση «oxoxo». Αφού «xox» δεν είναι το ίδιο με «oxoxo», δε μπορεί και τα τρία «εξάρια» να είναι το ίδιο πράγμα.

Για να είναι τρία εξάρια αυτές οι τρεις ομάδες, θα πρέπει να είναι τρία ίδια σύμβολα, αλλά το μεσαίο διαφέρει! Άρα μπορεί να είναι 606, 616, 626, 636, 646, 656, 666, 676, 686, 696, ή θα μπορούσε να είναι και «κόκκινο—καπνιστή ρέγγα—κόκκινο», «3,14—διαπλανητική αποστολή—3,14», ή «27 κιλά βρούβες—Σαλβαντόρ Νταλί—27 κιλά βρούβες». Άλλωστε δείξαμε πιο πάνω ότι οι τρεις ομάδες στην αρχή, στη μέση και στο τέλος δεν είναι ψηφία, οπότε μπορεί να αναπαριστούν ο,τιδήποτε.

Το «6» έχει πολλές διαφορετικές εμφανίσεις!

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

Άρα οι σταθεροί αναγνώστες μπορεί να διάβαζαν το barcode αριστερά προς δεξιά ή δεξιά προς αριστερά. Στις περισσότερες επικοινωνίες, αυτό είναι αδύνατο· έτσι ήταν απαραίτητο κάτι σχετικά ρηξικέλευθο2: το barcode έσπασε στα δύο. Τα ψηφία του αριστερού μισού κωδικοποιούνται με ένα τρόπο, τα ψηφία του δεξιού μισού με άλλο τρόπο:

UPCEAN
ΨηφίοΑριστεράΔεξιάΟμάδα LΟμάδα GΟμάδα R
0oooxxoxxxxooxooooxxoxoxooxxxxxxooxo
1ooxxooxxxooxxoooxxooxoxxooxxxxooxxo
2ooxooxxxxoxxooooxooxxooxxoxxxxoxxoo
3oxxxxoxxooooxooxxxxoxoxooooxxooooxo
4oxoooxxxoxxxoooxoooxxooxxxoxxoxxxoo
5oxxoooxxooxxxooxxoooxoxxxooxxooxxxo
6oxoxxxxxoxoooooxoxxxxooooxoxxoxoooo
7oxxxoxxxoooxoooxxxoxxooxoooxxoooxoo
8oxxoxxxxooxooooxxoxxxoooxooxxooxooo
9oooxoxxxxxoxoooooxoxxxxxoxooooxoxxx

Η κωδικοποίηση που χρησιμοποιείται σχεδόν παγκόσμια (και στην Ελλάδα), είναι η Ευρωπαϊκή EAN, η οποία είναι αρκετά πιο περίπλοκη: έχει τρειςδιαφορετικές κωδικοποιήσεις του «6». Οι δύο απαντώνται στο αριστερό μισό, και η τρίτη αποκλειστικά στο δεξιό. Ο λόγος είναι περίπλοκος. Μεταξύ άλλων, η διάταξη των L και G ομάδων κωδικοποιεί και το πρώτο ψηφίο του κώδικα, αυτό που κρέμεται έξω από την υπόλοιπη διάταξη.

Στην περίπτωση του απλούστερου UPC, αυτή η κωδικοποίηση έχει τρεις χρήσιμες ιδιότητες (το EAN έχει αρκετές επιπλέον, αλλά αυτές είναι κοινές):

  1. Η δεξιά μορφή είναι αντεστραμένη η αριστερή (αλλάζουμε τα xσε o και τούμπαλιν).
  2. Καμμία από τις κωδικοποιήσεις της δεξιάς μορφής δεν μπορεί να απαντηθεί στην αριστερή (και το αντίθετο).

Έτσι, όταν ο αναγνώστης διαβάσει μια από τις αριστερές κωδικοποιήσεις ως πρώτο ψηφίο του κώδικα, ξέρει ότι σαρώνει από τα αριστερά προς τα δεξιά. Όταν διαβάσει μία από τις δεξιές κωδικοποιήσεις ως πρώτο ψηφίο, ξέρει ότι σαρώνει από τα δεξιά προς τα αριστερά. Σ'αυτή την περίπτωση, αφού διαβάσει όλα τα ψηφία, αντιστρέφει τη σειρά τους για να καταλήξει στον σωστό αριθμό.

Ένα EAN barcode

Ένα EAN barcode με αρκετά πραγματικά εξάρια. Και οι τρεις διαφορετικές μορφές του 6 στο EAN εμφανίζονται εδώ.

Βέβαια, στο πλαίσιο της συζήτησης, το πρόβλημα είναι ότι στο UPC, το 6 κωδικοποιείται «oxoxxxx» στο αριστερό μισό και «xoxoooo» στο δεξί μισό ενώ στο EAN, το 6 κωδικοποιείται «oxoxxxx» ή «ooooxox» στο αριστερό μισό ή «xoxoooo» στο δεξιό. Άρα το επιχείρημα ότι οι ομάδες στην αρχή, στο τέλος και στη μέση του κώδικα είναι εξάρια χωλαίνει ακόμα περισσότερο: τώρα, ανάλογα με τον τύπο του κώδικα, έχουμε δύο διαφορετικά είδη «ψευδο-εξαριών» και πέντεδιαφορετικά είδη πραγματικών εξαριών. Οι υποστηρικτές αυτού του χαζού μύθου ισχυρίζονται ότι μια ομάδα από επτά διαφορετικά πράγματα είναι όλα το ίδιο.

Και εδώ έχουμε την πρώτη απάντηση στην ερώτηση που μάλλον ήδη απασχολεί ελάχιστους από τους ελάχιστους που διαβάζουν το άρθρο:

Και τι στο καλό είναι οι μπάρες στην αρχή, στη μέση, και στο τέλος;

Είναι μπάρες συγχρονισμού! Η λύση του γρίφου είναι ήδη πιο πάνω. Όλα τα σύμβολα του UPC barcode εκφράζονται συναρτήσει μιας μονάδας μέτρησης που... δεν έχει ορισμό! Οι πιο λεπτές μπάρες (του ενός module) μπορεί να έχουν πλάτος από κλάσματα του χιλιοστού ως δέκα εκατοστά, και ο ίδιος αναγνώστης μπορεί να διαβάσει barcodes και των δύο ακραίων διαστάσεων.

Για να το κάνει αυτό, στην αρχή του barcode έχουμε τρεις μπάρες χρονισμού. Καθώς ο αναγνώστης σαρώνει από τη μια άκρη στην άλλη, ξεκινάει διαβάζοντας πολλά o, καθώς εκατέρωθεν του κώδικα έχουμε αρκετό κενό. Καθώς σαρώνουμε το πρώτο x (μαύρη μπάρα), ο αναγνώστης μετράει το χρονικό διάστημα που βλέπει μαύρο, το χρονικό διάστημα που βλέπει λευκό, και το χρονικό διάστημα που βλέπει πάλι μαύρο. Έχει διαβάσει τρία modules, οπότε υπολογίζει το μέσο όρο, αυτορυθμίζεται και στήνει ένα χρονιστή ή μετρονόμο. Σε κάθε χτύπημα του μετρονόμου, ο αναγνώστης διαβάζει μία μπάρα χωρίς σφάλματα χρονισμού (αρκεί να μείνει η ταχύτητα σάρωσης σταθερή).

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

Και η μεσαία; Αν ο αναγνώστης κινείται με σταθερή ταχύτητα, η αρχική μέτρηση που πήρε ισχύει μέχρι το τέλος της σάρωσης. Όμως πολλοί αναγνώστες κινούνται με πολύ μεταβλητή ταχύτητα (π.χ. ανθρώπινο χέρι), κι έτσι είναι πολύ χρήσιμο για τον αναγνώστη να μπορεί να ξαναρυθμιστεί αφού έχει διαβάσει το μισό κώδικα. Η δεύτερη ρύθμιση μειώνει τα σφάλματα ανάγνωσης του δεξιού μισού (ή του αριστερού μισού, αν σαρώνουμε δεξιά προς αριστερά). Επίσης, η παρουσία της μεσαίας διάταξης σηματοδοτεί το τέλος του πρώτου μισού και την αρχή του δεύτερου, και μπορεί να χρησιμοποιηθεί για να σιγουρευτεί ο αναγνώστης ότι δεν έχει πάει κάτι στραβά (π.χ. μέχρι εκείνο το σημείο θα πρέπει να έχει διαβάσει ακριβώς 6 ψηφία).

Αντεπιχείρημα: μα μόνο το 6 έχει δύο μπάρες

Κανένα κομμάτι του κώδικα δεν έχει δύο μπάρες. Όλα έχουν τρεις, τέσσερεις, ή πέντε (διαφορετικού πάχους). Τα ψηφία έχουν πάντα τέσσερεις διαφορετικού πλάτους. Όλα τα ψηφία έχουν από δύο μαύρες μπάρες. Αν όλα τα ψηφία είναι το ίδιο και οι δύο μπάρες είναι «6», τότε όλα τα ψηφία είναι «6», και άρα υπάρχει μόνο μία ερμηνεία κάθε barcode: «666666666666» — αυτό κάνει την όλη ιδέα του barcode τελείως άχρηστη, μια και υπάρχει πάνω από ένα προϊόν στον πλανήτη.

Αντεπιχείρημα: το 6 είναι η ακολουθία «xox», όπου κι αν βρίσκεται

Δεν είναι έτσι. Το 6 είναι μια συγκεκριμένη ακολουθία μήκους 7 modules, όχι 3 modules. Αλλά έστω ότι το ιδιαίτερο, διαφορετικό, σατανικό «6» είναι η ακολουθία xox. Αυτή η ακολουθία απαντάται στα ψηφία: 0, 2, 3, 4, 6, 7, και 9. Άρα αυτά τα ψηφία ισούνται με το 6. Είναι προφανές ότι μόνο το 6 ισούται μόνο με το 6, οπότε το αντεπιχείρημα δεν ισχύει.

Αντεπιχείρημα: τα guard bars είναι ο αριθμός του θηρίου κατά 99%

Αυτή η σελίδαεπιχειρηματολογεί ότι «99%» ισότητα αρκεί για να αποδείξει ότι το 666 εμπεριέχεται στα barcodes. Παρά την υποτιθέμενη «επιστημονική» αντιμετώπιση, η εν λόγω σελίδα αγνοεί επιδεικτικά ότι η ισότητα δε λειτουργεί με ποσοστά. Το 6 δεν ισούται με τον Σαλβαντόρ Νταλί 99% των περιπτώσεων. Ούτε καν 1% των περιπτώσεων. Το 6 ισούται με το 6 και μόνο με το 6· πάντα, αμετάκλητα, αξιωματικά και εξ ορισμού.

Υπάρχουν τύποι μαθηματικών (πχ ασαφή μαθηματικά — fuzzy mathematics) όπου η πρόταση «το 6 ισούται περίπου με το 7» ισχύει, αλλά οι αναγνώστες barcode και το εμπόριο δε λειτουργούν με ασαφή μαθηματικά. Ένα μπουκάλι γάλα ενός λίτρου δεν είναι περίπου το ίδιο με ένα σαπούνι, και τα barcodes πρέπει να μπορούν να χρησιμοποιηθούν για να διαχωρίζουν τα δύο.

Το αν ο διάβολος και η οικογένειά του προτιμούν crisp ή fuzzy μαθηματικά αφήνεται άσκηση στον αναγνώστη.

Πηγές

«Ανάλυση των barcodes», άρθρο του γράφοντος στην Acrobase τη δεκαετία του 90. (το αρχικό άρθρο δεν είναι διαθέσιμο πλέον)

International Article Number (EAN) (Wikipedia)

Code (E.A.N.-13 UPC) & χξς (666) (sic, με σημαντικές ανακρίβειες)

  1. Η μετονομασία είναι έγκυρη: ο υπολογιστής που διαβάζει τον κώδικα αδιαφορεί για το πώς τα ονομάζουμε. Στο χαρτί τα δύο σύμβολα είναι «απουσία μελανιού» και «παρουσία μελανιού». Στον αναγνώστη είναι «φωτεινό» και «λιγότερο φωτεινό». Στο καλώδιο είναι «0 Volt» και «+10 Volt». Στα εξωτερικά «στρώματα» του υπολογιστή είναι «+3.3 Volt» και «0 Volt», στα εσώτερα στρώματα της μνήμης και των τρανζίστος του επεξεργαστή είναι «έλλειψη φορτίου», και «παρουσία φορτίου», και για τον μέσο προγραμματιστή είναι «0» και «1». Το μόνο που μετράει είναι ότι είναι ακριβώς δύο και είναι διαφορετικά. Θα μπορούσαμε να τα ονομάσουμε σκόρδο και κρεμμύδι. 
  2. αν μου επιτρέπετε το σχετικά ηλίθιο λογοπαίγνιο.