Θυμάστε που πριν μερικές εβδομάδες είχαμε αναφερθεί σε έναν συγκεκριμένο συνδυασμό ημερομηνίας και ώρας που έτσι και τον εισαγάγατε στο iPhone σας, υπήρχαν σημαντικές πιθανότητες αυτό να μην άνοιγε ποτέ ξανά μετά το επόμενο restart; Τότε βέβαια είχαμε περιοριστεί σε μία σχετικά λιτή επεξήγηση, δεσμευόμενοι ωστόσο να επανέλθουμε προκειμένου να… εντρυφήσουμε αρκούντως στο θέμα. Η ώρα αυτή ήρθε και, πιστέψτε μας, η ιστοριούλα που θα διαβάσετε, θα σας φανεί ιδιαίτερα ενδιαφέρουσα.
Τι έγινε την 1/1/1970;
Αν υπάρχει κάτι που πρέπει να έχετε υπ’ όψιν σας, είναι η ώρα Unix ή αν προτιμάτε, η Unix time. Το Unix είναι ένα λειτουργικό σύστημα υπολογιστών, κάτι σαν τα Windows ας πούμε, μόνο που αναπτύχθηκε αρκετά χρόνια πριν και συγκεκριμένα κατά τις δεκαετίες του ‘60 και του ‘70. Το πρώτο εγχειρίδιο του Unix λοιπόν (Unix Programmer’s Manual) που κυκλοφόρησε τον Νοέμβριο του 1971, όρισε την ώρα Unix ως «τον χρόνο που έχει παρέλθει από τις 00:00:00 UTC της 1ης Ιανουαρίου του 1970, μετρημένο σε εξηκοστά του δευτερολέπτου». Πρακτικά λοιπόν, η ώρα και η μέρα αυτές, αποτελούν το σημείο αναφοράς για την παγκόσμια ώρα Unix, βάσει της οποίας προσδιορίζουν ημ/νία και ώρα όλες οι ηλεκτρονικές συσκευές και τα πάσης φύσεως gadgets που χρησιμοποιούμε.
Όσο για τον λόγο για τον οποίο επιλέχθηκε η συγκεκριμένη ημερομηνία, δεν έγινε κάτι το ιδιαίτερο, απλά με δεδομένη την εμφάνιση της ανάγκης για ένα «σημείο 0» στις αρχές του 1971, προτιμήθηκε η κοντινότερη… στρογγυλότερη ημερομηνία. Μάλιστα, η 00:00:00 UTC (ώρα Γκρίνουιτς, πρώην GMT) της 1/1/1970, το απόλυτο μηδέν δηλαδή, είναι γνωστή ως “Unix epoch”. Ως εκ τούτου λοιπόν και χρησιμοποιώντας ένα εύχρηστο εργαλείο, θα δείτε ότι στις 11:30 το πρωί της Τρίτης 1 Μαρτίου, η ώρα Unix ήταν 1.456.831.800” –πειραματιστείτε ελεύθερα ώστε να καταλάβετε το όλο κόνσεπτ.
Το παιχνίδι των bits
Μέχρι εδώ ήταν τα εύκολα. Πάμε τώρα στα λίγο πιο σύνθετα ξεκινώντας όμως από την αρχή.
Το bit (από το binary digit) ή δυφίο (από το δυαδικό ψηφίο) ελληνιστί, είναι η στοιχειώδης μονάδα πληροφορίας στην Πληροφορική και τις Τηλεπικοινωνίες. Ένα bit μπορεί να έχει μόνο δύο τιμές: 0 ή 1. Αν λοιπόν χρησιμοποιήσουμε έναν επεξεργαστή 32-bit για να απεικονίσουμε την ώρα Unix, τότε το χρονικό διάστημα που θα είμαστε σε θέση να καλύψουμε, θα είναι περίπου 136 χρόνια, ξεκινώντας από το 1901 και τελειώνοντας στο 2038. Τι σημαίνει αυτό; Πως πρακτικά, αν εξακολουθούσαμε να βασιζόμασταν σε τέτοιους επεξεργαστές, σε περίπου 22 χρόνια από σήμερα (19/1/2038), θα αντιμετωπίζαμε ένα τεράστιο πρόβλημα αφού τα ψηφιακά ρολόγια θα μηδένιζαν.
Ο λόγος του μηδενισμού αυτού είναι η φύση του δυαδικού συστήματος. Αν για παράδειγμα αντί για 32 ψηφία πάρουμε μόνο 4, χάριν ευκολίας, τότε το 0 αντιστοιχεί στο 0000, το 1 στο 0001, το 2 στο 0010, το 3 στο 0011, το 5 στο 0101, το 14 στο 1110 και το 15 στο 1111. Εκεί το σύστημα των 4 ψηφίων μας έχει «χτυπήσει ταβάνι», αφού δεν μπορεί να μετρήσει παραπάνω, οπότε μοιραία, μετά το πέρας του χρόνου αυτού, θα καθίστατο άχρηστο αφού θα επανερχόταν στο 0 και το 0000. Σκεφτείτε πως με τον ίδιο ακριβώς τρόπο λειτουργούν και τα 32 ψηφία.
Ευτυχώς για εμάς, η Τεχνολογία έχει προοδεύσει τόσο, που να μας επιτρέπει πλέον τη χρήση επεξεργαστών στα 64 bits. Αυτό, σημαίνει πως χάρη στα περισσότερα δυφία, ένα υπολογιστικό σύστημα είναι σε θέση να «λέει την ώρα» για πολλή περισσότερη ώρα και συγκεκριμένα γύρω στα 292 δισεκατομμύρια χρόνια, τουτέστιν 20 φορές την ηλικία του σύμπαντος. Με μία βασική προϋπόθεση ωστόσο: πως δεν υπάρχουν αρνητικές τιμές. Σε περίπτωση που για τον οποιονδήποτε λόγο, η ώρα θα τίθετο ένα δευτερόλεπτο πριν τις 00:00:00 (UTC) της 1/1/1970, τότε το σύστημα δεν θα αναγνώριζε την αρνητική τιμή αλλά θα πήγαινε αυτόματα στη μέγιστη δυνατή τιμή του (με ακρίβεια δευτερολέπτου), τουτέστιν κάμποσα δισ. χρόνια στο μέλλον.
Εδώ εντοπίζεται και το πρόβλημα που κάνει τα iPhone να… τα παίζουν: ακόμα κι αν η ώρα δεν τεθεί ακριβώς στην περίφημη Epoch time, κάποια συστήματα της συσκευής (διάρκεια μπαταρίας, τελευταίες κλήσεις κλπ) αναγκάζονται να μετρήσουν και πίσω από αυτή με αποτέλεσμα κάπου εκεί το iPhone, προσπαθώντας να προσδιορίσει την ώρα, να παθαίνει… κοκομπλόκο έχοντας μεταφερθεί στο μέλλον!
Ορίστε: απλό δεν ήταν;