"Big ideas from the computer age"

Posted by Σωτήρης Δημητριάδης Sun, 20 Mar 2005 23:18:21 EET

  I was tought in college that one ought to figure out a program completely on paper before even going near a computer. I found that I did not program this way. I found that I liked to program sitting in front of a computer, not a piece of paper. Worse still, instead of patiently writing out a complete program and assuring myself it was correct, I tended to just spew out code that was hopelessly broken, and gradually beat it into shape. Debugging, I was taught, was a kind of final pass where you caught typos and oversights. The way I worked, it seemed like programming consisted of debugging.[…] As far as I can tell, the way they taught me to program in college was all wrong. You should figure out programs as you're writing them, just as writers and painters and architects do.

  —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. "

5 comments

    Reader's Comments

  1. Να μου επιτρέψεις να διαφωνήσω. Το να πας να κάτσεις μπροστά από τον ΗΥ χωρίς καν να έχεις σκεφτεί (=περιγράψει τη λύση σε χαρτί ή στο νου σου) το πρόβλημα που θέλεις να λύσεις, τουλάχιστον για μένα, δεν είναι καθόλου παραγωγικό. Αντίθετα, σπαταλάς την ώρα σου κάνοντας debugging το οποίο θα απεφευγες αν έκανες σωστό σχεδιασμό.

    Συμφωνώ με την ιδέα του "fine tuning" του έργου, αλλά ο πυρήνας πρέπει να είναι αποτέλεσμα σκέψης, μελέτης και σχεδιασμού. Ιδιαίτερα για να μάθει κάποιος "προγραμματισμό πρέπει να ακολουθήσει κάποια βήματα. Όταν αφομοιώσει τον τρόπο σκέψης τότε μόνο γίνεται "καλλιτέχνης" (αν θέλεις). Έτσι τουλάχιστον πιστεύω εγώ.

    -- Μιχάλης Λαζάρου ~mihalis, March 20, 2005

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

    -- Σωτήρης Δημητριάδης ~sotiris, March 20, 2005

  3. Πολύ ωραία καταχώριση!!!! Λοιπόν μου θυμίζει κάπως τον εαυτό μου.

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

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

    Έφτασα σε σημείο που το έβλεπα και δεν ήξερα από πού να αρχίσω. Μετά από τη λιποθυμία και τρεχάματα στο νοσοκομείο με έπεισαν ότι δε γίνεται αυτή η κατάσταση. Πρέπει κάποτε βλέπετε να βάζουμε τον εγωισμό μας κάτω. Πήρε τότε η μαμά μου τον ξάδελφό μου(προγραμματιστής) και του είπε τι έγινε χωρίς να το ξέρω. Ο ξάδελδελφός μου μακάρι να είναι πάντα καλά, σχόλασε την επομένη βράδυ και ήρθε να με δει.Παραξενεύτηκα όταν είδα τον αριθμό του στο κινητό μου γιατί δεν είχα ιδέα. Με πήρε και στιγμή που έκλαιγα και άντε τώρα να του πεις είμαι καλά. Το μόνο που δεν έκανε ήταν να με δείρει(και με το δίκαιο του) όταν του είπα ότι την προηγούμενη δοκίμασα να το κάνω compile.Αστείο,αλλά θύμωσε πάρα πολύ. Μου λέει που έχουμε πρόβλημα δηλαδή περιμένοντας μήπως τουλάχιστον ήξερα που έμεινα. Το θέμα ήταν ότι τα λάθη που έμειναν ήταν τα λογικά, οπότε….εν είχα υπόθεση. Δεν ξέρω του λέω ΕΝ ΔΟΥΛΕΥΚΕΙ. Κάθεται να το δει και τι μου λέει…Πως έγραψες όλο αυτόν τον κώδικα χωρίς να το δοκιμάσεις να δεις αν δουλεύει κομμάτι,κομμάτι,μέχρι και εγώ που έχω τόσα χρόνια πείρας και δεν θα έκανα κάτι τέτοιο για πρόγραμμα που δεν είχα ξαναδουλέψει με παρόμοιο θέμα; Του λέω δε μπορούσα να το δοκιμάσω σπίτι(βλέπετε δε μου αρέσει να δουλεύω στα εργαστήρια). Πάει να το δοκιμάσει. Του λέω δεν μπορείς…, δεν έχουμε παράθυρο γραφικών. Μόνο Unix μπορούμε να το δοκιμάσουμε. Τι να κάμει ο καημένος, δοκίμασε να βρει τρόπο στη visual studio για παράθυρο γραφικών αλλά τίποτα.Μετά από μια ματιά που του έριξε και κάποιες επιφανειακές διορθώσεις που μπορούσε να δει ότι χρειάζονταν, μου είπε δε γίνεται πρέπει να το τρέξω για να συνεχίσω. Πρέπει να πάμε πανεπιστήμιο θέλεις δε θέλεις.Τι να πω και εγώ…πήγαμε.Το έτρεξε, μου το διόρθωσε και αυτό ήταν.

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

    Σκοπός του μου είπε είναι να με μάθει να σκέφτομαι και να δουλεύω σωστά γιατί κανείς δε πρόκειται να μου κάνει τέτοιο μάθημα στο πανεπιστήμιο…Και έχει δίκαιο! Όσο για το απόσπασμα είναι ότι πρέπει!

    -- Γεωργία Γεωργίου ~jealous, March 20, 2005

  4. Μέχρι πριν 4 χρόνια, ακολουθούσα την μέθοδο του Graham. Χαρτί χρησιμοποιούσα μονάχα όταν έπρεπε να βγάλω κανένα μαθηματικό τύπο. Καθώς όμως περνάει ο καιρός, χρησιμοποιώ ολοένα και περισσότερο χαρτί. Ίσως επειδή άρχισα να ασχολούμαι με πιο πολύπλοκα—ρεαλιστικά—συστήματα. Έχω ανακαλύψει ότι με βοηθά να γράφω κατά το σχεδιασμό ενός συστήματος. Ποτέ μου όμως δεν κάθησα να γράψω ολόκληρο πρόγραμμα σε χαρτί, εκτός και αν μου επιβαλλότα튷 διότι όταν το δοκίμασα μερικές φορές, άλλα έγραφα και άλλα κατέληγα να υλοποιώ.

    Έχει μεγάλη διαφορά όταν γράφεις κάτι στο χαρτί, και όταν το τρέχεις στον υπολογιστή.

    -- Χρίστος Ευαγγέλου ~christose, March 20, 2005

  5. ποτέ μη λυπάσαι γι’αυτό που διάλεξες να’σαι δε χρωστάς σε κανένα γι’αυτό κανένα μη φοβάσαι Μη φοβάσαι ότι και να γίνει μη φοβάσαι φτάνει μόνο αληθινός να ξέρεις να σαι μη φοβάσαι τους φόβους τις αλυσίδες σπάσε φτάνει μόνο να μην κοιμάσαι

    -- Εύα Κυπριανού ~gatoulla, March 23, 2005