Προγραμματισμός και Καφεΐνη

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

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

Αυτό που παρατήρησα είναι ότι ελάχιστοι από μας, (ακόμα και εγώ που παλιότερα είχα κάνει αντικειμενοστραφή προγραμματισμό σε Delphi και Virtual Basic και C++), ξέρουν το πόσο δύσκολη δουλειά είναι να φτιάξεις ένα παιχνίδι και το πόσο ακόμα πιο δύσκολο είναι να βρεις τα πιο σημαντικά σφάλματα της δημιουργίας σου ώστε να το στρώσεις, να είναι ομαλή και να τρέχει ευχάριστα.

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


Ας πούμε ότι θέλουμε να φτιάξουμε ρολόι με ένα απλό ημερολόγιο. Για να μην φύγουμε από το ψηφιακό τεχνολογικό πλαίσιο θα πούμε ότι θα είναι πρόγραμμα για κινητό. Είναι ίσως ένα από τα πιο κοινά προγράμματα που όλοι μας αγνοούμε καθημερινά.

Ωραία. Όλοι μας λίγο πολύ έχουμε μια βασική ιδέα του πως λειτουργεί αυτό. Όταν το ρολόι μετρήσει 24 ώρες, πέρασε μια ήμερα και ήρθε η επόμενη. Ας πούμε ότι έχουμε ένα χειρόγραφο σημειωματάριο που γράφουμε αυτά σε μια λίστα με τις επιλογές που θέλουμε να έχει το πρόγραμμα. Οπότε βάζουμε αυτό στην κορυφή μια και είναι το σίγουρο δεδομένο μας.

Το πρόγραμμα μας όμως δεν μας λέει πουθενά τι ημέρα είναι. Μας έλεγε ότι πέρασε μια ημέρα, αλλά ακόμα δεν ξέρει πια ήμερα είναι η 23η ημέρα, ούτε σε ποιον μήνα είμαστε, ούτε καν σε ποιο έτος.

Ας κοιτάξουμε την λίστα μας μια στιγμή.

1. Όταν περάσουν 24 ώρες έχει περάσει μια ημέρα.

2. Όταν περάσουν επτά ημέρες έχει περάσει μια εβδομάδα.

3. Το ημερολόγιο ξεκινά στις 1 Γενάρη και του μαθαίνουμε και την λίστα με τους υπολοίπους 12 μήνες.

Έπειτα θέλουμε να πούμε στο πρόγραμμα ότι οι ακόλουθοι μήνες έχουν 30 ημέρες ενώ άλλοι έχουν 31 και ότι μόνο ο Φλεβάρης έχει 28.

Εδώ ήδη κάποιος θα σχολίασε ή έστω θα σκέφτηκε ότι ανά τέσσερα χρόνια ο Φλεβάρης έχει 29 ήμερες.

Φυσικά θα πρέπει να του πούμε ότι η χρονιά αυξάνεται όταν ξαναδούμε την 1 Γενάρη. Και αυτό θα πρέπει να το πούμε στο πρόγραμμα μας.

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

Η οποία ευτυχώς αυτοί που την δοκιμάζουν μας λένε ότι είναι πολύ καλή. Χάρις αυτό περνούμε την απόφαση να το κυκλοφορήσουμε, όταν μας έρχεται ένα μήνυμα και μας λέει ότι ξεχάσαμε την αλλαγή ώρας σε χειμερινή και θερινή.

Αναστάτωση.

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

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

Περνάει λίγος καιρός και ένα ωραίο πρωί λαμβάνουμε ένα ωραιότατο μήνυμα ότι το πρόγραμμα μας είναι πολύ ωραίο και ότι θα ήταν πολύ καλή ιδέα να έχει και πληροφορίες για τις γιορτές της κάθε ημέρας. Να αξιοποιεί δηλαδή παραπάνω τις πληροφορίες για το τι ημέρα είναι.

Πάμε λοιπόν πάλι στην λίστα μας και …

Κάπου εδώ αρχίζουμε και συνειδητοποιούμε ότι δεν έχουν όλες οι χώρες τις ίδιες γιορτές. Έχουν διαφορετικές εθνικές και θρησκευτικές, και ειδικά αυτές δεν είναι κάθε χρόνο τις ίδιες ήμερες. Μέσα σε όλο αυτό, κάποιες χώρες έχουν αλλαγές ώρας σε διαφορετικές ημερομηνίες από άλλες, και όταν κάποιος φτάσει στην Αιθιοπία θα δει ότι αυτή η χώρα έχει 13 ΜΗΝΕΣ αντί για δώδεκα … γιατί προφανώς μπορούν.


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

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

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

Περιμένουμε και τις δικές σας απόψεις στα σχόλια παρακάτω.

Μείνετε συντονισμένοι για περισσότερα.

 

Μην μένεις σιωπηλός, σχολίασε και πες την άποψή σου ακριβώς παρακάτω!