"Big ideas from the computer age"
Posted by Σωτήρης Δημητριάδης Sun, 20 Mar 2005 23:18:21 EET
—Paul Graham, "HACKERS & PAINTERS, BIG IDEAS FROM THE COMPUTER AGE"
Μόλις διάβασα το πιο πάνω απόσπασμα, θυμήθηκα ορισμένους πρωτοετείς στο περασμένο εξάμηνο που είχαν γραμμένο ολόκληρο το πρόγραμμα τους σε χαρτί και πήγαιναν στα εργαστήρια για να το αντιγράψουν στον υπολογιστή. Ακόμη θυμήθηκα τον καιρό που ήμουν εγώ πρωτοετής(πριν τέσσερα χρόνια) και μας παρότρυνε ο καθηγητής να γράφουμε το πρόγραμμα σε μια κόλλα χαρτί.
Θα συμφωνήσω με τον Paul Graham ότι αυτός δεν είναι σωστός τρόπος να μάθει κάποιος προγραμματισμό. Να γράψεις κανένα ψευδοαλγόριθμο εντάξει, αλλά να γράφεις ολόκληρο πρόγραμμα στο χαρτί; Για ποιο σκοπό; Εντούτοις έχω ένα συμφοιτητή που επιμένει ότι με αυτό το τρόπο έμαθε να προγραμματίζει. Αλλά ο προγραμματισμός είναι τέχνη όπως υποστηρίζει και ο Graham:" A programming language is for thinking of programs, not for expressing programs you've already thought of. It should be a pencil, not a pen. "
Reader's Comments
Να μου επιτρέψεις να διαφωνήσω. Το να πας να κάτσεις μπροστά από τον ΗΥ χωρίς καν να έχεις σκεφτεί (=περιγράψει τη λύση σε χαρτί ή στο νου σου) το πρόβλημα που θέλεις να λύσεις, τουλάχιστον για μένα, δεν είναι καθόλου παραγωγικό. Αντίθετα, σπαταλάς την ώρα σου κάνοντας debugging το οποίο θα απεφευγες αν έκανες σωστό σχεδιασμό.
Συμφωνώ με την ιδέα του "fine tuning" του έργου, αλλά ο πυρήνας πρέπει να είναι αποτέλεσμα σκέψης, μελέτης και σχεδιασμού. Ιδιαίτερα για να μάθει κάποιος "προγραμματισμό πρέπει να ακολουθήσει κάποια βήματα. Όταν αφομοιώσει τον τρόπο σκέψης τότε μόνο γίνεται "καλλιτέχνης" (αν θέλεις). Έτσι τουλάχιστον πιστεύω εγώ.
Δεν διαφωνώ ότι πρέπει να σκεφτείς το πρόβλημα πριν να αρχίσεις να γράφεις κώδικα. Εκεί που διαφωνώ είναι ότι πρέπει να γράψεις ολόκληρο το πρόγραμμα στο χαρτί και μετά να πάεις να το γράψεις στον υπολογιστή.
Πολύ ωραία καταχώριση!!!! Λοιπόν μου θυμίζει κάπως τον εαυτό μου.
Δηλαδή δεύτερο εξάμηνο και ακόμα το κάνω μέσα,μέσα. Μόνο που εγώ ποτέ δεν έγραψα σε κόλλα το πρόγραμμα μου. Απλά το έγραφα όλο και μετά το δοκίμαζα αν δουλεύει και και και…! Μετά τραβούσα τα μαλλιά μου. Δηλαδή για να είμαι ειλικρινής πολλή κλάμα, και άρχιζα να λέω…δεν μπορώ,αφού δεν ξέρω να το κάνω διαφορετικά και μπλα μπλα μπλα!
Το χειρότερο και κορυφαίο ήταν η έκτη μας άσκηση η οποία είχε γραφικά. Ένας κώδικας των 800 και βάλε γραμμών, το οποίο έγραψα χωρίς να το τρέξω καθόλου μέχρι που είπα τελείωσα τον κώδικα. Αποτέλεσμα μετά από τρεις μέρες ξενύχτι να το γράψω, την επομένη να πάω να το δοκιμάσω και να μη δουλεύει.Φυσικό είναι,σωστά;
Έφτασα σε σημείο που το έβλεπα και δεν ήξερα από πού να αρχίσω. Μετά από τη λιποθυμία και τρεχάματα στο νοσοκομείο με έπεισαν ότι δε γίνεται αυτή η κατάσταση. Πρέπει κάποτε βλέπετε να βάζουμε τον εγωισμό μας κάτω. Πήρε τότε η μαμά μου τον ξάδελφό μου(προγραμματιστής) και του είπε τι έγινε χωρίς να το ξέρω. Ο ξάδελδελφός μου μακάρι να είναι πάντα καλά, σχόλασε την επομένη βράδυ και ήρθε να με δει.Παραξενεύτηκα όταν είδα τον αριθμό του στο κινητό μου γιατί δεν είχα ιδέα. Με πήρε και στιγμή που έκλαιγα και άντε τώρα να του πεις είμαι καλά. Το μόνο που δεν έκανε ήταν να με δείρει(και με το δίκαιο του) όταν του είπα ότι την προηγούμενη δοκίμασα να το κάνω compile.Αστείο,αλλά θύμωσε πάρα πολύ. Μου λέει που έχουμε πρόβλημα δηλαδή περιμένοντας μήπως τουλάχιστον ήξερα που έμεινα. Το θέμα ήταν ότι τα λάθη που έμειναν ήταν τα λογικά, οπότε….εν είχα υπόθεση. Δεν ξέρω του λέω ΕΝ ΔΟΥΛΕΥΚΕΙ. Κάθεται να το δει και τι μου λέει…Πως έγραψες όλο αυτόν τον κώδικα χωρίς να το δοκιμάσεις να δεις αν δουλεύει κομμάτι,κομμάτι,μέχρι και εγώ που έχω τόσα χρόνια πείρας και δεν θα έκανα κάτι τέτοιο για πρόγραμμα που δεν είχα ξαναδουλέψει με παρόμοιο θέμα; Του λέω δε μπορούσα να το δοκιμάσω σπίτι(βλέπετε δε μου αρέσει να δουλεύω στα εργαστήρια). Πάει να το δοκιμάσει. Του λέω δεν μπορείς…, δεν έχουμε παράθυρο γραφικών. Μόνο Unix μπορούμε να το δοκιμάσουμε. Τι να κάμει ο καημένος, δοκίμασε να βρει τρόπο στη visual studio για παράθυρο γραφικών αλλά τίποτα.Μετά από μια ματιά που του έριξε και κάποιες επιφανειακές διορθώσεις που μπορούσε να δει ότι χρειάζονταν, μου είπε δε γίνεται πρέπει να το τρέξω για να συνεχίσω. Πρέπει να πάμε πανεπιστήμιο θέλεις δε θέλεις.Τι να πω και εγώ…πήγαμε.Το έτρεξε, μου το διόρθωσε και αυτό ήταν.
Ομολογώ ότι τον φοβάμαι λίγο και τον ακούω. Μακάρι να είναι πάντα καλά. Από εκείνη τη μέρα κομμάτι,κομμάτι, μεταγλωττίζω, διορθώνω, δουλεύει και συνεχίζω!
Σκοπός του μου είπε είναι να με μάθει να σκέφτομαι και να δουλεύω σωστά γιατί κανείς δε πρόκειται να μου κάνει τέτοιο μάθημα στο πανεπιστήμιο…Και έχει δίκαιο! Όσο για το απόσπασμα είναι ότι πρέπει!
Μέχρι πριν 4 χρόνια, ακολουθούσα την μέθοδο του Graham. Χαρτί χρησιμοποιούσα μονάχα όταν έπρεπε να βγάλω κανένα μαθηματικό τύπο. Καθώς όμως περνάει ο καιρός, χρησιμοποιώ ολοένα και περισσότερο χαρτί. Ίσως επειδή άρχισα να ασχολούμαι με πιο πολύπλοκα—ρεαλιστικά—συστήματα. Έχω ανακαλύψει ότι με βοηθά να γράφω κατά το σχεδιασμό ενός συστήματος. Ποτέ μου όμως δεν κάθησα να γράψω ολόκληρο πρόγραμμα σε χαρτί, εκτός και αν μου επιβαλλόταν· διότι όταν το δοκίμασα μερικές φορές, άλλα έγραφα και άλλα κατέληγα να υλοποιώ.
Έχει μεγάλη διαφορά όταν γράφεις κάτι στο χαρτί, και όταν το τρέχεις στον υπολογιστή.
ποτέ μη λυπάσαι γι’αυτό που διάλεξες να’σαι δε χρωστάς σε κανένα γι’αυτό κανένα μη φοβάσαι Μη φοβάσαι ότι και να γίνει μη φοβάσαι φτάνει μόνο αληθινός να ξέρεις να σαι μη φοβάσαι τους φόβους τις αλυσίδες σπάσε φτάνει μόνο να μην κοιμάσαι