Δημοσιεύτηκε: 20 Σεπ 2012, 20:24
από lucinos
@eliasps
το Advanced Programming in the Unix Environment στην έκδοση που είδα επίσης αναφέρει το The Art of Unix Programming. Είναι δηλαδή αμοιβαία η αναφορά! Τα δύο βιβλία όμως έχουν εντελώς διαφορετικούς σκοπούς.

Διαφωνώ μαζί σου ως προς τα πρώτα βήματα. Η C, η FORTRAN και η LISP είναι γλώσσες κλασσικές και προφανώς κάπως σημαντικότερες από τις άλλες, Σίγουρα κάποιος που θέλει λίγο βαθύτερη γνώση πρέπει να περάσει για λίγο από την C. Προφανώς δεν υπάρχει μόνο ιστορικό ενδιαφέρον σε αυτές. Από την άλλη όταν εγώ λέω πρώτα βήματα εννοώ κάτι πολύ διαφορετικό.

Συγκεκριμένα πιστεύω ότι πρέπει κάποιος πρώτα να εξοικειωθεί με τον να παίζει με τούς διαφόρους τύπους (ιδιαιτέρως με νήματα, ακεραίους και αριθμούς κινητής υποδιαστολής και τύπους αληθείας), να χρησιμοποιεί μεταβλητές και να κάνει πράξεις αριθμητικές και λογικές (πιστεύω επίσης ότι είναι καλή ιδέα να δει ένα παράδειγμα υπερφόρτωσης τελεστών όπως η πρόσθεση νημάτων στην Python) να χρησιμοποιεί επίσης συναρτήσεις (το def στην Python), έλεγχο ροής (if στην Python), και βρόχους (for και while). Σε αυτό το σημείο είναι σε θέση να λύνει απλά αριθμητικά προβλήματα και να φτιάχνει απλά παιχνιδάκια (τύπου http://inventwithpython.com/ ).

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

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

Φυσικά κάποιος ο οποίος αποφασίζει ότι θέλει να μάθει την χ γλώσσα για τον ψ λόγο είναι πολύ λογικό να πάει κατευθείαν εκεί και να μην κάνει την «παράκαμψη» τής Python (εξάλλου η Python δεν υπήρχε από πάντα). Αν η χ γλώσσα είναι η C και ο ψ λόγος είναι η κατανόηση τού unix τότε μαζί σου, συμφωνώ να κάνει τα πρώτα βήματα με C, αρκεί να είναι βέβαιος ότι αυτό θέλει. Αν κάποιος ο οποίος δεν έχει ασχοληθεί ποτέ με προγραμματισμό πει ότι θέλει να ασχοληθεί με σενάρια bash η αντίδρασή μου θα ήταν ότι δεν θα πίστευα ότι ξέρει τι θέλει, βέβαια το τι πιστεύω εγώ για αυτόν δεν έχει σημασία, ίσως αρκεί να το πιστεύει αυτός για τον εαυτό του.

Ένα καλό με την Python είναι πως επιβραβεύει πολύ ταχύτερα. Αυτό είναι πολύ σημαντικό για τα παιδιά (είναι σημαντικό και για τούς μεγάλους αλλά όχι το ίδιο σημαντικό ειδικά για κάποιον αρκετά αποφασισμένο). Και όταν λέω για επιβράβευση δεν εννοώ μπισκοτάκια αλλά την ίδια την αίσθηση ότι πέτυχαν κάτι. Για παράδειγμα κάνε σύγκριση μεταξύ τού προγράμματος "hello world" σε C και σε Python. Και η C είναι από τις καλύτερες γλώσσες σε τέτοια σημεία. Η Python όμως υπερέχει (μια απλούστατη γραμμή κώδικα μόνο) και επειδή είναι διερμηνευόμενη δεν χρειάζεται καν συμπίληση.

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