Coding, compiling, debugging. Beta Testing (the world).

Τον τελευταίο καιρό έχω αρχίσει να ασχολούμαι πιο σοβαρά με αυτό που ήθελα εδώ και μερικά χρόνια να ασχοληθώ. Cocoa development, that is, my dear reader! Η Cocoa, για όσους δεν γνωρίζουν (όχι ότι κακό, άλλωστε για πολλούς αποτελεί άχρηστη γνώση), είναι η γλώσσα προγραμματισμού (όχι και πολύ ακριβής ορισμός, αλλά μας κάνει) που χρησιμοποιεί το Mac OS X.

Οι γνώσεις μου πάνω στον προγραμματισμό δεν είναι αυτές που θα ήθελα. Τα skills μου έχουν εξελιχτεί ως απαραίτητη διαδικασία. Π.χ. έσπασε κάτι στο τάδε site, γιατί το plugin δεν συνεργάζεται σωστά με το τάδε update, ή θέλουμε ένα επιπλέον feature που να κάνει αυτό στην τάδε σελίδα. Κοντολογίς, debugging και enhancements σε υπάρχων κώδικα. Οπότε, αφού πρέπει να κάνει κάτι πάνω στην PHP, αναγκάζεσαι να μάθεις PHP the hard way, σε ρίξαν στα βαθιά (ή μάλλον έπεσες από επιλογή σου) και απλά κολυμπάς. Από κει και πέρα προχωράς και σε άλλες γλώσσες για να απλοποιήσεις τη ζωή σου, π.χ. Python, γιατί θες ένα σκριπτάκι να σου αντιστοιχεί τα τάδε δεδομένα από μερικές χιλιάδες καταχωρήσεις με έναν άλλο πίνακα που έχει αυτό κι αυτό κτλ. Αντί να το κάνεις με το χέρι (που θα σου πάρει μερικές δεκάδες οδυνηρές εργατοώρες), το αναλύεις και σάχνεις ένα μικρό αλλά αποδοτικό πρόγραμμα που κάνει τη δουλιά σου.

Κάποια στιγμή έμαθα (με έμαθαν δλδ, thanks ktolis :p), ολίγον τί από C και C++, the mother of all computing languages. Δεν ενθουσιάστηκα, για να είμαι ειλικρινής, αν και έγραψα ορισμένα προγράμματα-ασκήσεις για να κατανοήσω τη λειτουργία της.

Κάπου μέσα στο στρατό ήρθε και η εποχή της javascript και το Dashcode, για να φτιάξω το widget. Τρομερή επιτυχία by the way, ευχαριστώ όσους το κατέβασαν και με έκαναν διάσημο στα πέρατα του Σύμπαντος (αυτοσαρκάζομαι, χεχεχε).

Με την Cocoa ξεκίνησα πέρσι τέτοια εποχή, αγοράζοντας την 3η έκδοση του “Cocoa Programming for Mac OS X” του Aaron Hilegass, έκδοσις 3η. Δεν το έχω προχωρήσει και ακόμα δεν μπορώ να πω ότι έχω κατανοήσει πλήρως τον τρόπο που δουλεύει ένας προγραμματιστής με την Cocoa. Αν και ένας ωραίος τρόπος που έχω βρει (και μέχρι στιγμής δουλεύει ικανοποιητικά) είναι να λύνω κάθε πρόβλημα που μου έρχεται, φτιάχνοντας ένα προγραμματάκι. Π.χ. θες να υπολογίσεις την βαρυτική δύναμη δύο σωμάτων; Κάντο εφαρμογή! Ακόμα δυσκολεύομαι να κάνω πράγματα που τα σκέφτομαι με python-way ή C++-way.

break;

Το θέμα είναι ότι όσο και να σου δείξει κάποιο βιβλίο το πώς και το γιατί και τα “κόλπα”, αν δεν το δεις στην πράξη κι αν δεν τριφτείς με το αντικείμενο, δεν προχωράς και πολύ. Είναι αυτές οι στιγμές που έχεις ολοκληρώσει το προγραμματάκι σου, ο debugger γουργουρίζει ευχαριστημένος και το compiling ολοκληρώνεται και λες “γαμάω ρε μαλάκες”. Είναι κι οι στιγμές όμως που λες “γιατί δεν δουλεύεις ρε μπουρδέλο” και ξεκινάς να ψάχνεις, γενικά πρώτα και μετά πιο ειδικά με το πρόβλημά σου. Και βρίσκεις ένα κομμάτι κώδικα που το βλέπεις, το διαβάζεις, βγάζεις άκρη τί γίνεται και …ξαφνικά ανάβει η λάμπα στο κεφάλι σου!

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

Έχεις ένα πρόβλημα, μια κατάσταση. Ας πούμε ότι δεν έχεις καμία σχέση με το Κόμμα, δεν έχεις ακούσει ποτέ σου για Μαρξ πέρα από τον Γκράουτσο και ο Λένιν νομίζεις ότι είναι τραγουδιστής των Μπίτλες. Αν σου αναλύσουν τον τρόπο αντιμετώπισης αυτής της κατάστασης, της μεθοδολογίας, της κοσμοθεωρίας, στα συνδέσουν όλα μαζί και πεις “άναψε η λάμπα στο κεφάλι μου”, έχει γίνει ένα πρώτο βήμα. Αν όμως κανείς δεν στο πει, τότε απλά συνεχίζεις να κοιτάς την οθόνη και να αναρωτιέσαι γιατί δεν δουλεύει ο κώδικας…

Μερικές φορές, ο κώδικας δουλεύει καλά. Bugs υπάρχουν, αλλά είναι μικρά και δεν τους δίνεις σημασία. Όταν βγει κάποιο μεγάλο bug, το λύνεις, άλλες φορές εύκολα, άλλες φορές πρέπει να αλλάξεις όλη τη δομή του προγράμματος. Τότε είναι που αρχίζουν τα προβλήματα συνήθως. Το πρόγραμμά σου έχει φτιαχτεί για να κάνει την δουλιά του με άλλο τρόπο και ξαφνικά πρέπει να αλλάξει όλος ο τρόπος λειτουργίας του. Άλλα bugs βγαίνουν στην επιφάνεια, στο τέλος δεν δουλεύει τίποτα και η όλη διαδικασία καταλήγει να θέλει φτιάξιμο από την αρχή. Κάπως έτσι έγινε και με την ΕΣΣΔ, βγήκαν bugs, προσπάθησαν να τα φτιάξουν, βγήκαν μεγαλύτερα και στο τέλος ο project manager τα γάμησε τη μάνα γιατί δεν ήξερε (ή μάλλον ήξερε) που πάνε τα τέσσερα.

Αυτό κάνουμε, συνεχώς, αυτό που γράφει ο τίτλος της σελιδάρας που διαβάζεις, αναγνώστη μου, αγαπημένε και αφοσοιωμένε! Beta Testing. Το θέμα είναι ότι δεν έχουμε τον γαμημένο τον κώδικα για να τον κάνουμε (major-)bug-free, δεν έχουμε δηλαδίς, την εξουσία. Αυτό βέβαια δεν σημαίνει ότι δεν θα γράφουμε συνεχώς τον δικό μας κώδικα, μέχρι τη στιγμή που θα πάρουμε στα χέρια μας τον compiler για να βγει το εκτελέσιμο. Κι όταν βγει… …ποιος μας πιάνει…

3 Comments

  • August 21, 2009 - 2:12 am | Permalink

    χεχε… Διαβάζοντας το κείμενο δεν περίμενα ότι θα το πας εκεί… 🙂

    Μ’αρεσε ο παραδειγματισμός με τα bugs στην ΕΣΣΔ… Που θα πάει όμως… Θα γράψουμε τον κώδικα από την αρχή κι αυτή την φορά θα έχουμε την εμπειρία ν’ αποφύγουμε τα bugs… 🙂

  • JohnyQ
    August 30, 2009 - 4:25 pm | Permalink

    σήμερα δεν έχουμε τον compiler για να φτιάξουμε εκτλέσιμο ή permissions για να εκτελέσουμε τα δικα μας εκτελέσιμα.

    μπορούμε όμως πάντα να παριστάνουμε τους hackers και να παρεμβαίνουμε (δυναμικά θα έλεγα!) στο λειτουργικό ή στην εκτέλεση. Αυτό σίγουρα δε λύνει τα bugs το αντίθετο μάλλον επωφελείται από αυτά…

    εμπρός να πάρουμε στα χέρια μας τον compiler!!

  • August 30, 2009 - 11:14 pm | Permalink

    Rocean, είναι αυτό που λέμε «βαθαίνουμε στις συζητήσεις»… 😀

    Johny, σωστός. Η δουλιά περιορίζεται σε μερικά frameworks και βιβλιοθήκες, λέγε με σωματεία. Κι αυτή η δουλιά βγάζει bugs στο σύστημα, κάτι του σπάει, αλλά το πατσάρει γρήγορα γιατί έχει από πίσω ένα μεγάλο επιτελείο.
    Το θέμα είναι να βγούμε από το καβούκι, από το hacking που λες. Γι’ αυτό χρειάζεται το μέτωπο…

  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.