" Αποδέχομαι αυτό το βραβείο για λογαριασμό όλων των καλών δασκάλων που έχω γνωρίσει όλα αυτά τα χρόνια. Όλων των δασκάλων που πάσχισαν να οικοδομήσουν σχέσεις με τους μαθητές τους. Σχέσεις βασισμένες στην τιμή. Άνδρες και γυναίκες που δεν ήταν ποτέ εφησυχασμένοι, που πάντοτε, στην αδιάκοπη προσπάθεια τους να προσδιορίσουν και να επαναπροσδιορίσουν την σημασία της λέξης «Παιδεία» έθεταν ερωτήματα. Ο «Δάσκαλος της Χρονιάς» δεν είναι ο καλύτερος δάσκαλος. Οι καλοί δάσκαλοι είναι πολύ χαμηλών τόνων για να γίνουν εύκολα αντιληπτοί. Ο «Δάσκαλος της Χρονιάς» όμως, είναι ένας σημαιοφόρος, ένα σύμβολο γι’ αυτούς τους αφανείς ήρωες που πρόθυμα αφιερώνουν τη ζωή τους στα παιδιά. Η διάκριση αυτή τους ανήκει εξ’ ίσου. " Απόσπασμα από ομιλία του John Taylor Gatto το 1990 στη Νέα Υόρκη (Βλέπε σχετικό άρθρο http://bit.ly/19z7T7G )


Cyber-hacking

Αυτό, φυσικά, είναι η πιο σημαντική ικανότητα για το hacking. Αν δεν γνωρίζεις καμία γλώσσα προγραμματισμού, σου συνιστώ να αρχίσεις με την Python. Είναι καθαρά σχεδιασμένη, καλά τεκμηριωμένη, και σχετικά φιλική προς τους αρχάριους. Εκτός από το ότι αποτελεί μια καλή πρώτη γλώσσα, δεν είναι απλώς ένα παιχνίδι. Είναι πολύ ισχυρή και ελαστική και κατάλληλη για μεγάλα projects. Έχω γράψει μια πιο λεπτομερή αξιολόγηση της Python. Καλά εγχειρίδια είναι διαθέσιμα στο web site της Python.

Στο σημείο αυτό, πρότεινα τη Java ως γλώσσα για εκμάθηση νωρίς, αλλά αυτή η κριτική μού άλλαξε γνώμη (ψάξτε για το «The Pitfalls of Java as a First Programming Language» μέσα σε αυτή). Ένας hacker δεν μπορεί, όπως καταστροφικά το θέτουν «να προσεγγίσει τη λύση προβλημάτων όπως ένας υδραυλικός σε μαγαζί hardware». Πρέπει να γνωρίζεις ουσιαστικά το τί κάνουν τα συστατικά. Πλέον πιστεύω ότι μάλλον είναι καλύτερο να μάθεις C και Lisp πρώτα, και μετά Java.

Αν μπεις σε σοβαρό προγραμματισμό, θα πρέπει να μάθεις C, τη γλώσσα του πυρήνα του Unix. Η C++ είναι παρόμοια με τη C. Αν ξέρεις τη μία, δεν θα δυσκολευτείς να μάθεις την άλλη. Όμως καμία από αυτές τις δύο γλώσσες δεν είναι καλή για να τη μάθεις ως πρώτη σου. Και, βασικά, όσο περισσότερο μπορείς να αποφεύγεις να προγραμματίζεις σε C τόσο περισσότερο παραγωγικός θα είσαι.

Η C είναι πολύ αποδοτική, και πολύ οικονομική για τους πόρους της μηχανής σου. Δυστυχώς, η C είναι τόσο αποδοτική επειδή απαιτεί να κάνεις πολλή, χαμηλού επιπέδου διαχείρηση (όπως διαχείρηση της μνήμης του υπολογιστή) μόνος σου. Όλος αυτός ο κώδικας χαμηλού επιπέδου είναι περίπλοκος και επιρρεπής στα λάθη, και θα σπαταλήσει πάρα πολύ από τον χρόνο σου στην αποσφαλμάτωση. Με τις σημερινές μηχανές, τόσο ισχυρές που είναι, αυτή, είναι συνήθως μια κακή επιλογή – είναι πιο έξυπνο να χρησιμοποιήσεις μια γλώσσα που χρησιμοποιεί τον χρόνο της μηχανής σου λιγότερο αποδοτικά, αλλά τον δικό σου χρόνο πολύπερισσότερο αποδοτικά. Κατά συνέπεια, την Python.

Αλλες γλώσσες ιδιαίτερης σημασίας για hackers αποτελούν η Perl και η LISP. Αξίζει να μάθεις Perl για πρακτικού λόγους. Χρησιμοποιείται ευρέως για τη δημιουργία δυναμικών ιστοσελίδων και για διαχείρηση συστημάτων, έτσι, ακόμα και αν δεν γράψεις ποτέ Perl, πρέπει να μάθεις να τη διαβάζεις. Πολλοί, χρησιμοποιούν την Perl όπως συστήνω να χρησιμοποιείται η Python, δηλαδή, για να αποφευχθεί ο προγραμματισμός σε C, σε περιπτώσεις που δεν απαιτείται η αποδοτικότητα της C. Θα πρέπει να μπορείς να καταλαβαίνεις τον κώδικά τους.

Αξίζει να μάθεις LISP για ένα διαφορετικό λόγο – για τη βαθιά εμπειρία που θα αποκτήσεις όταν τη μάθεις. Αυτή η εμπειρία θα σε βελτιώσει σημαντικά ως προγραμματιστή, ακόμα και αν δεν χρησιμοποιήσεις πολύ τη LISP καθεαυτή. (Μπορείς να αποκτήσεις κάποια αρχική εμπειρία με τη LISP σχετικά εύκολα, γράφοντας και τροποποιώντας μορφές του επεξεργαστή κειμένου Emacs, ή πρόσθετα Script-Fu για το GIMP.)

Θα ήταν πολύ καλό, λοιπόν, να μάθεις και τις πέντε γλώσσες: Python, C/C++, Java, Perl, και LISP. Εκτός από το ότι είναι οι πιο σημαντικές γλώσσες για το hacking, αντιπροσωπεύουν πολύ διαφορετικές προσεγγίσεις στον προγραμματισμό, και η καθεμία θα σε επιμορφώσει με τον δικό της τρόπο.

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

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

Ο Peter Norvig, ο οποίος είναι ένας από τους καλύτερους hackers της Google και ο ένας από τους δύο συντάκτες του περισσότερο διαδεδομένου βιβλίου στην Τεχνητή Νοημοσύνη, έχει γράψει ένα εξαιρετικό δοκίμιο που λέγεται Teach Yourself Programming in Ten Years. Η «συνταγή για την προγραμματιστική επιτυχία» που έγραψε, αξίζει ιδιαίτερη προσοχή.

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

Παλιά ήταν δύσκολο να βρεις καλό κώδικα για να διαβάσεις, επειδή δεν υπήρχαν πολλά διαθέσιμα μεγάλα καλογραμμένα προγράμματα σε κώδικα, ώστε να τα διαβάσουν οι hackers και να τα τροποποιήσουν. Αυτό έχει αλλάξει δραματικά. Το λογισμικό ανοικτού κώδικα, τα προγραμματιστικά εργαλεία και τα λειτουργικά συστήματα (όλα χτισμένα από hackers) είναι τώρα διαθέσιμα. Και έτσι θα προχωρήσουμε στο επόμενο θέμα…

Περισσότερα εδώ . . .

ΠΗΓΗ:

«Πως να γίνεις  hacker» του        Eric Steven Raymond

Thyrsus Enterprises                  <esr@thyrsus.com>

Copyright © 2001 Eric S. Raymond

Μετάφραση από τα αγγλικά: Αριστοτέλης Μικρόπουλος

Advertisements

Σχολιάστε

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s

Ετικετοσύννεφο

Αρέσει σε %d bloggers: