Γιατί Αυτό Το Έγγραφο;
Σαν συγγραφέας του Jargon File και συντάκτης άλλων γνωστών εγγράφων παρόμοιας φύσης, λαμβάνω συχνά email αιτήσεις από ενθουσιασμένους αρχάριους του δικτύου που ρωτάνε (στην ουσία) “πώς μπορώ να γίνω ένας ικανότατος hacker;”. Πίσω στο 1996 παρατήρησα πως δεν φαινόταν να υπάρχει κάποιο άλλο FAQ ή web έγγραφο που να θίγει αυτή τη ζωτικής σημασίας ερώτηση, έτσι άρχισα αυτό. Πολλοί hackers τώρα το θεωρούν σημείο ορισμού, και υποθέτω ότι αυτό σημαίνει πως είναι. Επίσης, δεν υποστηρίζω πως είμαι η αποκλειστική αυθεντία σε αυτό το θέμα. Αν δεν σου αρέσει ό,τι διαβάσεις εδώ, γράψε το δικό σου.
Σημείωση:Η τρέχουσα έκδοση υπάρχει στο http://earthlab.uoi.gr/indy/hacker-howto-gr/.
Η πρωτότυπη, αγγλική έκδοση του εγγράφου αυτού βρίσκεται στο http://catb.org/~esr/faqs/hacker-howto.html. Πολλές μεταφράσεις του είναι διαθέσιμες: αραβικά, βουλγάρικα, καταλανικά, κινέζικα (απλοποιημένα), δανέζικα, ολλανδικά, εβραϊκά, φινλανδικά, γερμανικά, ιταλικά, γιαπωνέζικα, νορβηγικά, πολωνικά, πορτογαλικά (βραζιλιάνικα), ρουμάνικα, ρώσικα, ισπανικά, τούρκικα, και σουηδικά. Σημειώστε πως εφόσον αυτό το έγγραφο τροποποιείται περιοδικά, μπορεί να μην είναι ενημερωμένες.
Το διάγραμμα πέντε-τελείες-σε-εννιά-τετράγωνα που διακοσμεί αυτό το έγγραφο λέγεται glider. Είναι ένα απλό σχέδιο με κάποιες εκπληκτικές ιδιότητες σε μια μαθηματική προσομοίωση που ονομάζεται Life και διασκέδαζε τους hackers για πολλά χρόνια. Νομίζω πως αποτελεί ένα καλό οπτικό έμβλημα για το πώς περίπου μοιάζουν οι hackers – αρχικά λίγο μυστηριώδεις, αλλά μια πύλη σε έναν ολόκληρο κόσμο με μια δική του, περίπλοκη λογική. Διαβάστε περισσότερα για το έμβλημα glider εδώ.
Τί Είναι ένας Hacker;
Το Jargon File περιέχει ένα σωρό ορισμούς για τον όρο ‘hacker’, εκ των οποίων οι περισσότεροι έχουν να κάνουν με τεχνική ικανότητα και με μια ευχαρίστηση στη λύση προβλημάτων και ξεπέρασης ορίων. Αν θες όμως να μάθεις πώς να γίνεις ένας hacker, μόνο δύο είναι πραγματικά σχετικοί.
Υπάρχει μία κοινωνία, μια μοιρασμένη κουλτούρα, έμπειρων προγραμματιστών και βετεράνων των δικτύων, που έχει τις ρίζες της ιστορίας της δεκαετίες πίσω, στην εποχή των πρώτων μινι-υπολογιστών και των νεότερων ARPAnet πειραμάτων. Τα μέλη αυτής της κουλτούρας καθιέρωσαν τον όρο ‘hacker’. Οι hackers έχτισαν το internet. Οι hackers διαμόρφωσαν το λειτουργικό σύστημα Unix σε αυτό που είναι σήμερα. Οι hackers τρέχουν το Usenet. Οι hackers κάνουν τον Παγκόσμιο Ιστό να δουλεύει. Αν είστε μέρος αυτής της κουλτούρας, αν έχετε συμβάλει σε αυτή και άλλοι άνθρωποι σε αυτή γνωρίζουν ποιός είστε και σας καλούν hacker, είστε ένας hacker.
Το σκεπτικό των hacker δεν περιορίζεται σε αυτή την κουλτούρα των hacker λογισμικού. Υπάρχουν άνθρωποι που εφαρμόζουν την ιδεολογία των hacker σε άλλους τομείς, όπως στα ηλεκτρονικά ή στη μουσική – ουσιαστικά, μπορείς να τη βρεις στα υψηλότερα επίπεδα κάθε επιστήμης ή τέχνης. Οι hackers λογισμικού αναγνωρίζουν αυτά τα εξευγενισμένα πνεύματα παντού και μπορεί να τους καλέσουν κι αυτούς ‘hackers’ – και μερικοί ισχυρίζονται ότι η φύση των hacker είναι πραγματικά ανεξάρτητη από το συγκεκριμένο μέσο που δουλεύουν οι hackers. Αλλά στο υπόλοιπο αυτού του εγγράφου θα επικεντρωθούμε στις ικανότητες και στην ιδεολογία των hacker λογισμικού, και στις παραδόσεις της μοιρασμένης κουλτούρας που καθιέρωσε τον όρο ‘hacker’.
Υπάρχει και μια άλλη ομάδα ανθρώπων που αυτοαποκαλούνται hackers, αλλά δεν είναι. Αυτοί είναι άνθρωποι (κυρίως έφηβοι) που βρίσκουν διασκεδαστικό το να εισβάλλουν σε υπολογιστές και να παραβιάζουν το σύστημα του τηλεφώνου. Οι πραγματικοί hackers ονομάζουν αυτούς τους ανθρώπους ‘crackers’ και δεν θέλουν να έχουν σχέσεις με αυτούς. Οι πραγματικοί hackers κυρίως πιστεύουν πως οι crackers είναι αργόσχολοι, ανεύθυνοι, και όχι και πολύ έξυπνοι, και το γεγονός ότι μπορείς να σπάσεις την ασφάλεια δεν σε κάνει hacker, όπως και το γεγονός ότι μπορείς να χαλάς αυτοκίνητα δεν σε κάνει μηχανικό αυτοκινήτων. Δυστυχώς, πολλοί δημοσιογράφοι και συγγραφείς έχουν ξεγελασθεί στην χρήση της λέξης ‘hacker’ και την χρησιμοποιούν για να περιγράψουν τους ‘crackers’. Αυτό ενοχλεί υπερβολικά τους πραγματικούς hackers.
Η βασική διαφορά είναι αυτή: οι hackers χτίζουν πράγματα, οι crackers τα σπάνε.
Αν θέλεις να είσαι ένας hacker, συνέχισε να διαβάζεις. Αν θέλεις να είσαι ένας cracker, πήγαινε να διαβάσεις την ομάδα συζητήσεων alt.2600 και ετοιμάσου να κάνεις πέντε στα δέκα και να ανακαλύψεις πως δεν είσαι τόσο έξυπνος όσο νομίζεις. Και αυτά είναι όλα που πρόκειται να πω για τους crackers.
Η Ιδεολογία των Hacker
1. Ο κόσμος είναι γεμάτος από διασκεδαστικά προβλήματα που περιμένουν να λυθούν.
2. Κανένα πρόβλημα δεν πρέπει να λύνεται δύο φορές.
3. Η πλήξη και η αγγαρεία είναι διαβολικές.
4. Η ελευθερία είναι αγαθή.
5. Η ιδεολογία δεν είναι υποκατάστατο της ικανότητας.
Οι hackers λύνουν προβλήματα και χτίζουν πράγματα, και πιστέυουν στην ελευθερία και στην εθελοντική αμοιβαία βοήθεια. Για να γίνεις αποδεκτός ως hacker, πρέπει να συμπεριφέρεσαι σαν να έχεις αυτή την ιδεολογία. Και για να συμπεριφέρεσαι σαν να έχεις αυτή την ιδεολογία, πρέπει πραγματικά να την πιστεύεις.
Αλλά αν συμπεριφέρεσαι σαν hacker με μόνο σκοπό να γίνεις αναγνωρίσιμος στην κουλτούρα, θα χάσεις τον σκοπό σου. Να γίνεις ο τύπος ανθρώπου που πιστεύει σε αυτά τα πράγματα, είναι σημαντικό για εσένα – για να βοηθηθείς και για να έχεις ένα κίνητρο. Όπως με όλες τις δημιουργικές τέχνες, ο πιο αποτελεσματικός τρόπος να γίνεις δάσκαλος, είναι να εμπεδώσεις το σκεπτικό των κυρίων – όχι απλώς διανοητικά, αλλά επίσης συναισθηματικά.
Ή, όπως το θέτει το μοντέρνο Zen ποίημα:
Για να ακολουθήσεις το μονοπάτι:
κοίταξε τον δάσκαλο,
ακολούθησε τον δάσκαλο,
περπάτησε με τον δάσκαλο,
δες μέσα από τον δάσκαλο,
γίνε ο δάσκαλος.
Έτσι, αν θέλεις να είσαι hacker, επανέλαβε τα ακόλουθα μέχρι να τα πιστέψεις:
1. Ο κόσμος είναι γεμάτος από διασκεδαστικά προβλήματα που περιμένουν να λυθούν.
Το να είσαι hacker είναι πολύ διασκεδαστικό, αλλά είναι ένα είδος διασκέδασης που απαιτεί πολλή προσπάθεια. Η προσπάθεια απαιτεί κίνητρο. Οι επιτυχημένοι αθλητές έχουν ως κίνητρο ένα είδος φυσικής απόλαυσης που πηγάζει από το να έχουν καλές επιδόσεις και από το να πιέζουν τους εαυτούς τους να ξεπεράσουν τα δικά τους φυσικά όρια. Παρομοίως, για να είσαι hacker πρέπει να αποκτήσεις έναν ενθουσιασμό στο να λύνεις προβλήματα, να εξασκείς τις ικανότητες σου και την ευφυία σου.
Αν δεν είσαι ο τύπος ανθρώπου που νιώθει έτσι εκ του φυσικού του, θα πρέπει να γίνεις για να τα καταφέρεις ως hacker. Διαφορετικά, θα δεις πως η ενέργειά σου για το hacking θα σπαταλιέται από παράγοντες όπως το σεξ, τα χρήματα, και η κοινωνική αποδοχή.
(Επίσης πρέπει να αναπτύξεις ένα είδος πίστης στις δικές σου ικανότητες να μαθαίνεις – έτσι, ακόμα και αν δεν ξέρεις τι απαιτείται για να λυθεί ένα πρόβλημα, αν ασχοληθείς με ένα κομμάτι του και μάθεις από αυτό, θα γνωρίζεις αρκετά ώστε να λύσεις το επόμενο κομμάτι – και ου το καθ’ εξής, μέχρι να τελειώσεις.)
2. Κανένα πρόβλημα δεν πρέπει να λύνεται δύο φορές.
Τα δημιουργικά μυαλά είναι μια πολύτιμη, περιορισμένη πηγή. Δεν πρέπει να σπαταλούνται για να “ξανα-ανακαλύπτουν τον τροχό” όταν υπάρχουν τόσα πολλά διασκεδαστικά καινούρια προβλήματα που περιμένουν.
Για να συμπεριφέρεσαι σαν hacker, πρέπει να καταλάβεις πως ο χρόνος κατά τον οποίο σκέπτονται οι άλλοι hackers είναι πολύτιμος – τόσο πολύ, που αποτελεί σχεδόν ηθικό καθήκον για σένα να μοιράζεσαι πληροφορίες, και όταν λύνεις προβλήματα να μοιράζεσαι τις λύσεις ώστε οι άλλοι hackers να μπορούν να λύνουν καινούρια προβλήματα αντί να πρέπει συνεχώς να ασχολούνται με παλιά.
Σημείωσε, όμως, πως “Κανένα πρόβλημα δεν πρέπει να λύνεται δύο φορές.” δεν σημαίνει πως πρέπει να θεωρούμε όλες τις υπάρχουσες λύσεις ιερές, ή πως υπάρχει μόνο μία λύση για κάθε πρόβλημα. Συχνά, μαθαίνουμε πολλά για ένα πρόβλημα, τα οποία δεν γνωρίζαμε πριν, διαβάζοντας τη λύση του. Είναι εντάξει, και συχνά απαραίτητο, να αποφασίσουμε πως μπορούμε να δώσουμε μια καλύτερη λύση. Αυτό που δεν είναι εντάξει, είναι τεχνητά, τεχνικά, νομικά, ή θεσμικά όρια (όπως ο κλειστός κώδικας) που αποτρέπουν μια καλή λύση από το να ξαναχρησιμοποιηθεί και αναγκάζουν του ανθρώπους να “ξανα-ανακαλύπτουν τροχούς”.
(Δεν είσαι υποχρεωμένος να πιστεύεις πως είσαι αναγκασμένος να μοιράζεσαι όλο το δημιουργικό υλικό σου, αλλά οι hackers που το κάνουν είναι αυτοί που έχουν τον περισσότερο σεβασμό από τους άλλους hackers. Είναι συμβατό με τις αξίες των hacker να πουλάς αρκετό υλικό σου, ώστε να μπορείς να ζεις μια αξιοπρεπή ζωή. Είναι εντάξει να χρησιμοποιείς τις ικανότητες σου στο hacking για να υποστηρίξεις μια οικογένεια ή ακόμα και για να γίνεις πλούσιος, εφόσον δεν ξεχνάς την πίστη στην τέχνη σου και στους φίλους hackers όσο το κάνεις αυτό.)
3. Η πλήξη και η αγγαρεία είναι διαβολικές.
Οι hackers (και οι δημιουργικοί άνθρωποι γενικότερα) δεν πρέπει ποτέ να πλήττουν και να εξαναγκάζονται να κάνουν κάποια ανόητη δουλειά ρουτίνας, επειδή όταν συμβαίνει κάτι τέτοιο, σημαίνει πως δεν κάνουν αυτό που θέλουν και μπορούν – να λύνουν καινούρια προβλήματα. Αυτή η σπατάλη χρόνου και κόπου, κάνει κακό σε όλους. Συνεπώς η πλήξη και η αγγαρεία δεν είναι απλώς ανεπιθύμητες, αλλά διαβολικές.
Για να συμπεριφέρεσαι σαν hacker, πρέπει να το πιστέψεις αυτό τόσο, ώστε να θέλεις να αυτοματοποιήσεις τις πληκτικές εργασίες όσο περισσότερο γίνεται, όχι μόνο για εσένα, αλλά και για όλους τους άλλους (ειδικά για τους άλλους hackers).
(Υπάρχει μιά προφανής εξαίρεση σε αυτό. Οι hackers μερικές φορές μπαίνουν σε διαδικασίες που μπορεί να φανούν σαν αγγαρεία σε κάποιον παρατηρητή, με σκοπό την άσκηση του μυαλού τους, ή για να αποκτήσουν μια ικανότητα, ή κάποιο είδος εμπειρίας που δεν αποκτάται αλλιώς. Αλλά αυτό είναι θέμα επιλογής – κανένας σκεπτόμενος άνθρωπος δεν πρέπει ποτέ να εξαναγκάζεται να βρίσκεται σε μια κατάσταση που τον πλήττει.)
4. Η ελευθερία είναι αγαθή.
Οι hackers είναι εκ του φυσικού τους αντιεξουσιαστές. Οποιοσδήποτε σου δίνει διαταγές, μπορεί να σε σταματήσει από το να λύσεις κάποιο πρόβλημα που σε διασκεδάζει – και, σύμφωνα με τον τρόπο που σκέπτονται οι εξουσιαστές, θα βρει κάποια ανόητη αφορμή για να το κάνει. Έτσι, η ιδεολογία των εξουσιαστών πρέπει να πολεμάται όπου κι αν βρίσκεται, επειδή καταπνίγει εσένα και τους άλλους hackers.
(Αυτό δεν είναι το ίδιο με το να καταπολεμάς όλες τις μορφές εξουσίας. Τα παιδιά πρέπει να συμβουλεύονται και οι εγκληματίες να εμποδίζονται. Κάποιος hacker μπορεί να συμφωνήσει να δεχθεί ένα είδος εξουσίας, περισσότερο για να πετύχει κάτι που θέλει, παρά για να ξοδεύει χρόνο ακολουθώντας διαταγές. Αλλά αυτή είναι μια περιορισμένη, συνειδητή συμφωνία. Το είδος προσωπικής παράδοσης που επιθυμούν οι εξουσιαστές δεν το προσφέρουμε.)
Οι εξουσιαστές υποστηρίζουν την λογοκρισία και την μυστικότητα. Και δεν εμπιστεύονται την εθελοντική συνεργασία και την κοινοποίηση πληροφοριών. Τους αρέσει μόνο η ‘συνεργασία’ που αυτοί ελέγχουν. Έτσι, για να συμπεριφέρεσαι ως hacker, πρέπει να αναπτύξεις μια ενστικτώδη αντιπάθεια για τη λογοκρισία, τη μυστικότητα, την κατάχρηση εξουσίας και την εξαπάτηση. Και πρέπει να είσαι πρόθυμος να δράσεις σύμφωνα με την άποψη αυτή.
5. Η ιδεολογία δεν είναι υποκατάστατο της ικανότητας.
Για να είσαι hacker, πρέπει να αναπτύξεις αυτή την ιδεολογία. Αλλά με το να αποκτήσεις απλώς μια ιδεολογία δεν γίνεσαι hacker, όπως δεν γίνεσαι αθλητής, ή σταρ της Rock. Το να γίνεις hacker απαιτεί ευφυία, εξάσκηση, αφιέρωση, και σκληρή δουλειά.
Συνεπώς, θα πρέπει να μάθεις να εκτιμάς την ικανότητα. Οι hackers δεν χάνουν τον χρόνο τους με ανθρώπους που επιδυκνύονται συνεχώς, αλλά εκτιμούν βαθύτατα την ικανότητα – ειδικά την ικανότητα στο hacking, αλλά η ικανότητα σε οποιονδήποτε τομέα, θεωρείται σημαντική. Το να είσαι ικανός σε τομείς που λίγοι τα καταφέρνουν, είναι ιδιαίτερα καλό, και η ικανότητα σε τομείς που απαιτούν οξύτητα του νου, τέχνη, και συγκέντρωση, είναι ακόμα καλύτερο.
Αν σέβεσαι την ικανότητα, θα το βρεις διασκεδαστικό να την αναπτύξεις για τον εαυτό σου – η σκληρή δουλειά και η αφιέρωση θα γίνουν ένα είδος έντονου παιχνιδιού αντί για ρουτίνα. Αυτό το σκεπτικό είναι ζωτικής σημασίας για την πορεία σου ως hacker.
Βασικές Ικανότητες του Hacking
1. Μάθε να Προγραμματίζεις.
2. Πάρε ένα από τα Unixes ανοικτού κώδικα και μάθε να το χρησιμοποιείς και να το τρέχεις.
3. Μάθε πώς να χρησιμοποιείς τον Παγκόσμιο Ιστό και να γράφεις HTML.
4. Αν δεν γνωρίζεις λειτουργικά αγγλικά, μάθε.
Η ιδεολογία των hacker είναι ζωτική, αλλά οι ικανότητες είναι ακόμα πιο ζωτικές. Η ιδεολογία δεν είναι υποκατάστατο της ικανότητας, και υπάρχει ένα συγκεκριμένο πεδίο γνώσεων το οποίο πρέπει να έχεις πριν καν ονειρευτείς πως κάποιος hacker θα σε ονομάσει έτσι.
Αυτό το πεδίο γνώσεων μεταβάλλεται αργά κατά τη διάρκεια του χρόνου, καθώς η τεχνολογία δημιουργεί καινούριες ικανότητες και αχρηστεύει τις παλιές. Για παράδειγμα, παλιά έπρεπε να ξέρεις να προγραμματίζεις σε γλώσσα μηχανής, και μέχρι πρόσφατα, δεν απαιτούνταν η γνώση HTML. Αλλά τώρα, ξεκάθαρα, απαιτούνται τα ακόλουθα:
1. Μάθε να Προγραμματίζεις
Αυτό, φυσικά, είναι η πιο σημαντική ικανότητα για το 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) είναι τώρα διαθέσιμα. Και έτσι θα προχωρήσουμε στο επόμενο θέμα…
2. Πάρε ένα από τα Unixes ελεύθερου λογισμικού και μάθε να το χρησιμοποιείς και να το τρέχεις.
Θα θεωρήσω πως έχεις έναν προσωπικό υπολογιστή ή πως έχεις πρόσβαση σε έναν. (Σκέψου λίγο πόσο σημαντικό είναι αυτό. Η κουλτούρα των hacker εξελίχθηκε όταν οι υπολογιστές ήταν τόσο ακριβοί που ένα άτομο μόνο του δεν μπορούσε να έχει έναν.) Το πρώτο και το πιο σημαντικό που μπορεί να κάνει ένας αρχάριος ωστέ να αρχίσει την πορεία του στο hacking, είναι να πάρει ένα αντίγραφο του Linux ή ένα από τα BSD-Unixes ή το OpenSolaris, να το εγκαταστήσει σε έναν προσωπικό υπολογιστή , και να το τρέξει.
Ναι, υπάρχουν και άλλα λειτουργικά συστήματα στον κόσμο εκτός από το Unix. Αλλά όλα τα άλλα μοιράζονται σε δυαδική μορφή – δεν μπορείς να διαβάσεις τον κώδικα και δεν μπορείς να τον τροποποιήσεις. Το να προσπαθείς να μάθεις να κάνεις hacking σε μια μηχανή Microsoft Windows ή σε οποιοδήποτε άλλο σύστημα κλειστού κώδικα, είναι σαν να προσπαθείς να μάθεις να χορεύεις ενώ φοράς μια πανοπλία.
Στο Mac OS X είναι εφικτό, αλλά μόνο κομμάτι του συστήματος είναι ανοικτού κώδικα – πιθανότατα θα “χτυπήσεις” σε πολλούς “τείχους”, και θα πρέπει να προσέξεις να μην αναπτύξεις την κακιά συνήθεια να εξαρτάσαι από τον ιδιόκτητο κώδικα της Apple . Αν συγκεντρωθείς αποκλειστικά στο Unix, θα μάθεις κάποια χρήσιμα πράγματα.
Το Unix είναι το λειτουργικό σύστημα του Internet. Ενώ μπορείς να μάθεις να χρησιμοποιείς το Internet χωρίς να γνωρίζεις το Unix, δεν μπορείς να γίνεις Internet hacker χωρίς να καταλαβαίνεις το Unix. Για αυτό το λόγο, η κουλτούρα των hacker σήμερα είναι ιδιαίτερα επικεντρωμένη στο Unix. (Αυτό δεν ήταν πάντα αλήθεια , και κάποιοι παλιοί hackers ακόμα δεν είναι ευχαριστημένοι με αυτό, αλλά η συμβίωση ανάμεσα στο Unix και στο Internet έχει γίνει τόσο δυνατή που ούτε ο μυς της Microsoft δεν φαίνεται ικανός να την κάμψει σοβαρά.)
Έτσι, πάρτε ένα Unix – Προσωπικά μου αρέσει το Linux αλλά υπάρχουν και άλλα είδη (και ναι, μπορείς να τρέχεις και Linux και Microsoft Windows στην ίδια μηχανή). Μάθε το. Τρέξ’ το. Παίξε μαζί του. Μίλα στο Internet μέσω αυτού. Διάβασε τον κώδικα. Τροποποίησε τον κώδικα. Θα έχεις πολύ περισσότερα προγραμματιστικά εργαλειά (συμπεριλαμβανομένης της C, της LISP, της Python, και της Perl) από οποιδήποτε λειτουργικό σύστημα της Microsoft. Πέρνα καλά, και θα μάθεις τόσα πολλά, που κάποια στιγμή θα θυμάσαι τον εαυτό σου να μαθαίνει, ενώ θα είσαι ένας ικανότατος hacker.
Για περισσότερες πληροφορίες περί του Unix, βλέπε το The Loginataka. Μπορείς επίσης να ρίξεις μια ματιά στο The Art Of Unix Programming.
Για να πάρεις στα χέρια σου το Linux, δες την ιστοσελίδα Linux Online! – μπορείς να το κατεβάσεις από εκεί, ή (μια καλύτερη ιδέα) να βρεις έναν τοπικό σύλλογο φίλων του Linux για να σε βοηθήσει με την εγκατάσταση.
Κατά τη διάρκεια των πρώτων δέκα χρόνων της ζωής αυτού του HOWTO, ανέφερα ότι από την οπτική γωνία ενός νέου χρήστη, όλες οι διανομές του Linux είναι σχεδόν ίδιες. Αλλά μέσα στο 2006-2007, μια αντικειμενικά καλύτερη επιλογή εμφανίστηκε: το Ubuntu. Ενώ οι άλλες διανομές έχουν τα δικά τους προτερήματα, το Ubuntu είναι μακράν το πιο εύχρηστο για αρχάριους στο Linux.
Μπορείς να βρεις βοήθεια και πηγές για το BSD Unix στο www.bsd.org.
Ένας καλός τρόπος για να πάρετε μια ιδέα είναι να τρέξετε αυτό που οι φίλοι του Linux αποκαλούν live CD, μια διανομή που τρέχει αποκλειστικά από ένα CD, χωρίς να απαιτείται τροποποίηση του σκληρού δίσκου. Αυτό θα είναι αργό, επειδή τα CD είναι αργά, αλλά είναι ένας τρόπος να δείτε πώς έχουν τα πράγματα, χωρίς να χρειαστεί να κάνετε τίποτα δραστικό.
Μπορείς να βρεις βοήθεια και πόρους για το BSD Unix στο www.bsd.org.
Έχω γράψει κάποια πράγματα, σχετικά με τα βασικά του Unix και του Internet.
(Σημείωση: Δεν συστήνω να εγκαταστήσεις το Linux η το BSD μόνος σου, αν είσαι αρχάριος. Για το Linux, βρες έναν τοπικό σύλλογο φίλων του Linux και ζήτα βοήθεια.)
3. Μάθε πώς να χρησιμοποιείς τον Παγκόσμιο Ιστό και να γράφεις HTML.
Τα περισσότερα πράγματα που έχουν δημιουργήσει οι hackers, τρέχουν στο παρασκήνιο, βοηθάνε τα εργοστάσια, τα γραφεία και τα πανεπιστήμια να δουλεύουν, χωρίς να γνωρίζουν για αυτά οι άνθρωποι που δεν είναι hackers. Ο Ιστός είναι μια μεγάλη εξαίρεση, το τεράστιο λαμπερό παιχνίδι των hacker, που ακόμα και οι πολιτικοί παραδέχονται πως έχει αλλάξει τον κόσμο. Για αυτό τον λόγο (και για άλλους επίσης) πρέπει να μάθεις πώς να δουλεύεις με τον Ιστό.
Αυτό δεν σημαίνει απλώς να ξέρεις να οδηγείς έναν φυλλομετρητή (οποιοσδήποτε μπορεί να το κάνει αυτό), αλλά να μάθεις να γράφεις HTML, την περιγραφική γλώσσα του Ιστού. Αν δεν ξέρεις να προγραμματίζεις, γράφοντας HTML θα διδαχθείς κάποιες καλές συνήθειες που θα σε βοηθήσουν να μάθεις. Φτιάξε μια προσωπική ιστοσελίδα. Προσπάθησε να ακολουθήσεις την XHTML, η οποία είναι καθαρότερη γλώσσα από την κλασική HTML. (Υπάρχουν καλά εγχειρίδια στο Διαδύκτιο – εδώ είναι ένα.)
Αλλά μόνο του το γεγονός ότι απλώς θα έχεις μια ιστοσελίδα δεν θα σε κάνει σε καμιά περίπτωση hacker. Το Διαδύκτιο είναι γεμάτο από προσωπικές ιστοσελίδες. Οι περισσότερες από αυτές είναι άσκοπες, χωρίς ουσιαστικό περιεχόμενο – κακοσχεδιασμένες, και άσχημες (για περισσότερα περί αυτού, βλέπε το The HTML Hell Page).
Για να είναι σημαντική, η σελίδα σου πρέπει να έχει ουσία – πρέπει να έιναι ενδιαφέρουσα και/ή σημαντική για τους άλλους hackers. Και αυτό με φέρνει στο επόμενο θέμα…
4. Αν δεν γνωρίζεις λειτουργικά αγγλικά, μάθε.
Σαν Αμερικάνος, και έχων την αγγλική ως μητρική γλώσσα, είχα αμφιβολίες ως προς το να συμβουλέψω αυτό, επειδή μπορεί να θεωρούνταν πολιτισμικός ιμπεριαλισμός. Αλλά και άλλοι άνθρωποι, που δεν έχουν την αγγλική ως μητρική γλώσσα, με προέπεμψαν να τονίσω πως η αγγλική, είναι η γλώσσα της κουλτούρας των hacker και του Internet, και έτσι λοιπόν, θα πρέπει να την γνωρίζεις για να λειτουργήσεις στην κοινωνία των hacker.
Πίσω στο 1991 έμαθα πως hackers που δεν έχουν την αγγλική ως μητρική, την χρησιμοποιούν στις τεχνικές τους συζητήσεις, ακόμα και αν έχουν κοινή μητρική γλώσσα. Πληροφορήθηκα τότε, πως η αγγλική έχει πλουσιότερο τεχνικό λεξιλόγιο από οποιαδήποτε άλλη γλώσσα και, απλά, είναι ένα καλύτερο εργαλείο για τη δουλειά. Για παρόμοιους λόγους, μεταφράσεις Αγγλικών τεχνικών βιβλίων, είναι συχνά μη ικανοποιητικές (αν τελικά ολοκληρώνονται).
Ο Linus Torvalds, ένας Φινλανδός, γράφει Αγγλικά σχόλια στον κώδικά του (προφανώς δεν διανοήθηκε ποτέ πως μπορεί να κάνει αλλιώς). Η ευχαίρειά του στα Αγγλικά υπήρξε σημαντικός παράγοντας στην ικανότητά του να μαζέψει προγραμματιστές από όλο τον κόσμο για να φτιάξουν μαζί το Linux. Αποτελεί παράδειγμα προς μίμηση.
Ακόμα και αν έχεις την αγγλική για μητρική σου, δεν είναι σίγουρο πως έχεις τις κατάλληλες γλωσσικές ικανότητες ώστε να λειτουργήσεις ως hacker. Αν τα γραπτά σου είναι ανορθόγραφα και με άσχημο συντακτικό, πολλοί hackers, (συμπεριλαμβανομένου και εμένα) θα σε αγνοούν. Παρόλο που το άσχημο γράψιμο δεν σημαίνει απαραιτήτως μη ικανό μυαλό, έχουμε γενικώς παρατηρήσει πως η σχέση μεταξύ των δύο είναι μεγάλη – και δεν δεχόμαστε άτομα που δεν έχουν την ικανότητα να σκεφτούν. Αν δεν έχεις μάθει ακόμα να γράφεις σωστά, κάντο.
Κοινωνικό Προφίλ στην Κουλτούρα των Hacker
1. Γράφε λογισμικό ανοικτού κώδικα
2. Βοήθησε στον έλεγχο και στην αποσφαλμάτωση λογισμικού ανοικτού κώδικα
3. Δημοσίευε χρήσιμες πληροφορίες
4. Βοήθησε στη διατήρηση της υποδομής
5. Υπηρέτησε την κουλτούρα των hacker, καθεαυτή
Όπως στις περισσότερες κουλτούρες χωρίς οικονομική δραστηριότητα, έτσι και στον κόσμο του hacking μετράει η φήμη και η αναγνωρισιμότητα. Προσπαθείς να λύσεις ενδιαφέροντα προβλήματα, αλλά το πόσο χρήσιμα είναι, και το αν οι λύσεις σου είναι καλές, είναι κάτι που θα το κρίνουν τα κατοχυρωμένα μέλη της κοινωνίας.
Παρομοίως, όταν “παίζεις” το “παιχνίδι” του hacking, μαθαίνεις να “κρατάς σκορ” σύμφωνα με το τί νομίζουν οι άλλοι hackers για σένα (για αυτό το λόγο δεν είσαι hacker μέχρι άλλοι hackers να σε καλέσουν έτσι). Αυτό αποκρύπτεται από το γεγονός ότι το hacking είναι δουλειά που γίνεται απόμερα.
Συγκεκριμένα, ο κόσμος του hacking είναι αυτό που οι κοινωνιολόγοι ονομάζουν κουλτούρα δώρων. Σε αυτή, δεν γίνεσαι αναγνωρίσιμος με το να κατακτείς άλλους ανθρώπους, ούτε με το να είσαι όμορφος, ούτε με το να έχεις πράγματα που θέλουν οι άλλοι , αλλά με το να δίνεις πράγματα. Συγκεκριμένα, με το να δίνεις τον χρόνο σου, τη δημιουργικότητά σου, και τα αποτελέσματα των ικανοτήτων σου.
Υπάρχουν πέντε βασικά πράγματα που μπορείς να κάνεις για να σε σέβονται οι hackers:
1. Γράφε λογισμικό ανοικτού κώδικα
Το πρώτο (το πιο σημαντικό και το πιο παραδοσιακό) είναι να γράφεις προγράμματα τα οποία οι hackers να βρίσκουν διασκεδαστικά, ή χρήσιμα, και να δίνεις ελεύθερα τον κώδικα των προγραμμάτων, ώστε η κοινότητα των hacker να τον διαβάζει και να τον χρησιμοποιεί.
(Παλαιότερα, αυτό το αποκαλούσαμε “ελεύθερο λογισμικό”, αλλά αυτό προκαλούσε τη σύγχυση πολλών ανθρώπων οι οποίοι δεν διερμήνευαν σωστά τη λέξη “ελεύθερο”. Οι περισσότεροι από εμάς, τώρα προτιμούμε τον όρο “λογισμικό ανοικτού κώδικα” .)
Οι “ημίθεοι” στον κόσμο του hacking είναι άνθρωποι που έχουν γράψει μεγάλα, χρήσιμα προγράμματα τα οποία έχουν διαδώσει ευρέως, και έτσι τώρα όλοι τα χρησιμοποιούν.
Εδώ, αξίζει να αναφέρω μια σημαντική ιστορική αλήθεια. Ενώ οι κοινότητα των hacker σχεδόν πάντα αποτελούνταν από προγραμματιστές ανοικτού κώδικα, πριν τα μέσα του 1990, οι περισσότεροι hackers, έγραφαν κυρίως κλειστό κώδικα. Αυτό ίσχυε μέχρι τη συγγραφή της πρώτης έκδοσης του παρόντος εγγράφου , το 1996. Μετά το 1997, η κατάσταση αυτή άλλαξε ριζικά. Σήμερα, “η κοινωνία των hacker” και οι “προγραμματιστές ανοικτού κώδικα” αποτελούν δύο περιγραφές της ίδιας κουλτούρας και του ίδιου πληθυσμού – αλλά αξίζει να θυμόμαστε πως τα πράγματα δεν ήταν πάντα έτσι.
2. Βοήθησε στον έλεγχο και στην αποσφαλμάτωση λογισμικού ανοικτού κώδικα
Πολύ σημαντικό θεωρείται το έργο των ανθρώπων που κάθονται και αποσφαλματώνουν λογισμικό ανοικτού κώδικα. Σε αυτόν τον ατελή κόσμο, θα ξοδέψουμε πολύ από τον χρόνο μας στην φάση της αποσφαλμάτωσης των προγραμμάτων. Για αυτό οι προγραμματιστές ανοικτού κώδικα θεωρούν πως οι καλοί εθελοντές ελεγκτές beta επιπέδου (που ξέρουν πώς να περιγράφουν τα λάθη καθαρά, να επικεντρώνονται στο πρόβλημα, να είναι σύντομοι και περιεκτικοί, και έχουν όρεξη να βοηθήσουν) αξίζουν το βάρος τους σε χρυσάφι. Ακόμα και ένας τους μπορεί να κάνει τη διαφορά στη φάση της αποσφαλμάτωσης, η οποία είναι εξουθενωτική, δυσάρεστη και δεν έχει μεγάλο ενδιαφέρον.
Αν είσαι αρχάριος, δοκίμασε να βρεις ένα πρόγραμμα υπό ανάπτυξη το οποίο σε ενδιαφέρει, και γίνε ένας καλός ελεγκτής beta επιπέδου. Υπάρχει μια φυσική πρόοδος από το να βοηθάς στον έλεγχο προγραμμάτων, στο να βοηθάς στην αποσφαλμάτωσή τους και τέλος, στην τροποποίησή τους. Θα μάθεις πολλά με αυτόν τον τρόπο, και θα αναπτύξεις καλές σχέσεις με ανθρώπους, τη βοήθεια των οποίων θα χρειαστείς αργότερα.
3. Δημοσίευε χρήσιμες πληροφορίες
Ένα άλλο καλό πράγμα είναι να συλλέγεις και να φιλτράρεις χρήσιμες και ενδιαφέρουσες πληροφορίες, σε ιστοσελίδες ή έγγραφα όπως λίστες Συχνά Υποβαλλόμενων Ερωτήσεων (FAQ), και να τις κοινοποιείς.
Οι συντηρητές σημαντικών FAQ χαίρουν τόσου σεβασμού, σχεδόν όσο οι προγραμματιστές ανοικτού κώδικα.
4. Βοήθησε στη διατήρηση της υποδομής
Η κοινότητα των hacker (και η τεχνική ανάπτυξη του Internet) τρέχει από εθελοντές. Υπάρχει πολλή, απαραίτητη, αλλά δυσάρεστη δουλειά που πρέπει να γίνει για τη διατήρηση της υποδομής – η διαχείρηση λιστών ηλεκτρονικού ταχυδρομείου, η οργάνωση ομάδων συζητήσεων, η διατήρηση ηλεκτρονικών τοποθεσιών που αποθηκεύουν μεγάλες ποσότητες λογισμικού, η ανάπτυξη των RFC, και άλλα τεχνικά καθήκοντα.
Οι άνθρωποι που ασχολούνται με αυτού του είδους τις δουλειές χαίρουν μεγάλου σεβασμού, διότι όλοι γνωρίζουν πως αυτές οι εργασίες είναι τεράστιες σπατάλες χρόνου και δεν είναι τόσο διασκεδαστικές, όσο το να “παίζεις” με κώδικα. Το να τις κάνεις δείχνει αφοσίωση.
5. Υπηρέτησε την κουλτούρα των hacker, καθεαυτή
Τέλος, μπορείς να υπηρετήσεις και να διαδώσεις την κουλτούρα καθεαυτή (για παράδειγμα, γράφοντας ένα εύστοχο δοκίμιο για το πώς να γίνεις hacker :-)). Αυτό δεν είναι κάτι που θα κάνεις μέχρι να γίνεις γνωστός για κάποιο/κάποια από τα τέσσερα πρώτα.
Η κοινότητα των hacker δεν έχει ακριβώς αρχηγούς, αλλά έχει “σοφούς”, ιστορικούς και εκπροσώπους. Αν είσαι για πολύ καιρό μέσα στα πράγματα, μπορεί να γίνεις ένας από αυτούς. Πρόσεξε: Οι hackers δεν εμπιστεύονται εγωιστές και ανθρώπους που θέλουν να τραβάνε την προσοχή. Έτσι, αντί να το επιδιώκεις συνεχώς, πρέπει να κερδίσεις τον σεβασμό των άλλων και να τους κάνεις να σε εμπιστεύονται.
Η Σύνδεση Hacker/Nerd
Αντιθέτως με τον διαδεδομένο μύθο, δεν είναι απαραίτητο να είσαι nerd για να είσαι hacker. Βοηθάει όμως, και πολλοί hackers είναι στην ουσία nerds. Το να είσαι κοινωνικά αποκλεισμένος σε βοηθάει να μένεις συγκεντρωμένος σε πραγματικά σημαντικά πράγματα, όπως η σκέψη και το hacking.
Για αυτό το λόγο, πολλοί hackers έχουν “υιοθετήσει” τον τίτλο ‘nerd’ και μερικές φορές χρησιμοποιούν και τον ακόμα σκληρότερο όρο ‘geek’ σαν σύμβολο υπερηφάνειας – είναι ένας τρόπος να δηλώσουν την ανεξαρτησία τους από τα κοινωνικά πρότυπα.
Αν καταφέρνεις να συγκεντρώνεσαι στο hacking, και να είσαι καλός σε αυτό, ενώ έχεις ζωή, αυτό είναι εντάξει. Αυτό είναι πολύ πιο εύκολο σήμερα από ότι ήταν όταν ήμουν αρχάριος, το 1970. Ο κόσμος τώρα, είναι πολύ πιο φιλικός απέναντι στους nerds. Επίσης, υπάρχουν ομάδες ανθρώπων που πιστεύουν πως οι hackers είναι συχνά πολύ καλοί εραστές ή σύζυγοι.
Αν προσελκύστηκες στο hacking επειδή δεν έχεις ζωή, αυτό είναι επίσης εντάξει – τουλάχιστον δεν θα αντιμετωπίζεις προβλήματα στο να συγκεντρώνεσαι. Ίσως αποκτήσεις ζωή αργότερα.
Αναφορές Για το Στυλ
Για να είσαι hacker, πρέπει να έχεις το σκεπτικό των hacker. Υπάρχουν κάποια πράγματα που μπορείς να κάνεις όταν δεν βρίσκεσαι σε έναν υπολογιστή, που φαίνεται πως βοηθάνε. Δεν είναι υποκατάστατα του hacking (τίποτα δεν είναι) αλλά πολλοί hackers τα κάνουν, και νιώθουν πως σχετίζονται με κάποιο τρόπο, με την ουσία του hacking.
Μάθε να γράφεις σωστά τη μητρική σου γλώσσα. Παρόλο που συνήθως οι προγραμματιστές δεν είναι καλοί στο γράψιμο, ένα μεγάλο μέρος των hackers (συμπεριλαμβανομένων ακόμα και των πιο ικανών) είναι πολύ καλοί συγγραφείς.
Διάβαζε επιστημονική φαντασία. Πήγαινε σε συναντήσεις επιστημονικής φαντασίας (ένας καλός τρόπος να συναντήσεις hackers και proto-hackers).
Να εξασκείς μια πολεμική τέχνη. Το είδος της διανοητικής πειθαρχίας που απαιτείται στις πολεμικές τέχνες, φαίνεται να είναι παραπλήσιο σε αυτό που κάνουν οι hackers. Οι πιο δημοφιλής πολεμικές τέχνες για τους hackers είναι σίγουρα οι ασιάτικες τέχνες άδειου χεριού, όπως το Tae Kwon Do, το Judo, διάφορα είδη του Karate, το Wing Chun, το Aikido, ή το Ju Jitsu. Οι δυτικές και οι ασιατικές τέχνες του σπαθιού, επίσης είναι μια καλή ασχολία. Σε μέρη που είναι νόμιμο, η σκοποβολή γίνεται δημοφιλής από το 1990. Οι τέχνες που σχετίζονται περισσότερο με το hacking είναι αυτές που επικεντρώνονται στην πειθαρχία του νου, στη χαλάρωση, και στον έλεγχο, και όχι στην ωμή δύναμη, ή στη φυσική ανθεκτικότητα.
Μελέτησε ένα είδος νοητικής συγκέντρωσης. Το πλέον διαδεδομένο στους hackers είναι το Zen (είναι δυνατόν να ωφεληθείς από το Zen χωρίς να χρειαστεί να προσκυνήσεις μια καινούρια θρησκεία ή να απαρνηθείς αυτή στην οποία πιστεύεις). Και άλλα είδη είναι καλά επίσης, αλλά να είσαι προσεκτικός να μην διαλέξεις ένα που απαιτεί να πιστεύεις παράλογα πράγματα.
Ανέπτυξε ένα αναλυτικό αυτί στη μουσική. Μάθε να ακούς συγκεκριμένα είδη μουσικής. Μάθε να παίζεις καλά ένα μουσικό όργανο, ή να τραγουδάς.
Ανέπτυξε δικά σου λογοπαίγνια.
Όσα περισσότερα από αυτά ήδη κάνεις, τόσο είναι πιθανότερο πως έχεις το hacking μέσα σου. Όλα αυτά δεν είναι εντελώς ξεκάθαρα, αλλά είναι συσχετισμένα με ένα μείγμα των αριστερών και των δεξιών ικανοτήτων του μυαλού, κάτι που είναι σημαντκό. Οι hackers πρέπει να είναι ικανοί και να σκέπτονται λογικά, αλλά και να ξεφεύγουν από τη λογική σε συγκεκριμένες περιπτώσεις.
Δούλευε όσο έντονα παίζεις και παίζε όσο έντονα δουλεύεις. Για τους αληθινούς hackers, τα σύνορα ανάμεσα στο “παιχνίδι”, στην “εργασία”, στην “επιστήμη” και στην “τέχνη” τείνουν να εξαφανιστούν, ή να ενωθούν σε ένα παραγωγικό και ψυχαγωγικό μίγμα. Επίσης, να μην περιορίζεσαι σε λίγες ικανότητες. Παρόλο που οι περισσότεροι hackers περιγράφουν τον εαυτό τους σαν προγραμματιστές, πιθανώς είναι πολύ ικανοί και σε άλλους τομείς – διαχείρηση συστημάτων, σχεδίαση ιστοσελίδων, και αντιμετώπιση προβλημάτων του υλικού του υπολογιστή είναι κάποια συνιθισμένα. Ένας hacker που είναι διαχειριστής συστημάτων, μπορεί να είναι ικανός στον προγραμματισμό και στη σχεδίαση ιστοσελίδων. Οι hackers δεν κάνουν τα πράγματα μισά. Αν αφοσιωθούν σε έναν τομέα θα γίνουν πολλοί καλοί σε αυτόν.
Τέλος, μερικά πράγματα τα οποία να μην κάνεις
- Μην χρησιμοποιείς ανόητα, υπερβολικά μεγαλοπρεπή user ID ή screen names.
- Μην συμμετέχεις σε διαμάχες στο Usenet (ή οπουδήποτε αλλού).
- Μην αποκαλείς τον εαυτό σου ‘cyberpunk’, και μη χάνεις τον χρόνο σου σε όποιον το κάνει.
- Μην δημοσιεύεις γραπτά, και μη στέλνεις email που είναι γεμάτα ορθογραφικά λάθη και άσχημη γραμματική.
- Θα αποκτήσεις άσχημη φήμη κάνοντας οποιοδήποτε από τα παραπάνω. Οι hackers έχουν μεγάλες μνήμες – θα μπορούσε να πάρει χρόνια για να ξεχαστεί κάτι άσχημο που έκανες.
Το πρόβλημα με τα screen names ή με τις “μάσκες” αξίζει κάποια ανάλυση. Το να αποκρύπτεις την ταυτότητά σου πίσω από μια μάσκα είναι παιδιάστικη και ανόητη συμπεριφορά. Είναι χαρακτηριστικό των crackers, των warez d00dz, και άλλων χαμηλότερων μορφών ζωής. Οι hackers δεν το κάνουν αυτό. Είναι περήφανοι για το τί κάνουν και θέλουν να είναι συσχετισμένο με το πραγματικό τους όνομα. Έτσι, αν έχεις κάποια μάσκα, πέταξέ την. Στην κουλτούρα των hacker απλώς θα σε σημειώσει ως αποτυχημένο.
Άλλες Πηγές
Ο Paul Graham έχει γράψει ένα δοκίμιο που ονομάζεται Great Hackers, και ένα άλλο, το Undergraduation, στο οποίο μιλάει με μεγάλη σοφία.
Ο Peter Seebach διατηρεί ένα εξαιρετικό Hacker FAQ για τους διευθυντές που δεν ξέρουν πώς να φερθούν στους hackers.
Υπάρχει ένα άρθρο το οποίο λέγεται How To Be A Programmer και αποτελεί εξαιρετικό συμπλήρωμα για αυτό. Δεν περιέχει απλώς πολύτιμες πληροφορίες για τον προγραμματισμό, αλλά και για το πώς να συμπεριφέρεσαι μέσα σε μια προγραμματιστική ομάδα.
Έχω επίσης γράψει το A Brief History Of Hackerdom.
Έχω γράψει και το The Cathedral and the Bazaar, το οποίο εξηγεί πολλά για το πώς λειτουργούν οι κοινωνίες του Linux και του ανοικτού κώδικα. Έχω θίξει αυτό το θέμα, ακόμα πιο λεπτομερώς στη συνέχειά του, στο Homesteading the Noosphere.
Ο Rick Moen έχει γράψει ένα εξαιρετικό έγγραφο: how to run a Linux user group.
Ο Rick Moen και εγώ έχουμε συνεργαστεί σε ένα άλλο έγγραφο: Πώς Να Κάνεις Έξυπνες Ερωτήσεις. Αυτό θα σε βοηθήσει να ζητήσεις βοήθεια με τρόπο που θα είναι πιο πιθανό να σε βοηθήσουν.
Αν έχεις απορίες για το πώς δουλεύουν τα βασικά στους προσωπικούς υπολογιστές, στο Unix, και στο Internet, μπορείς να κοιτάξεις το The Unix and Internet Fundamentals HOWTO.
Όταν κοινοποιείς λογισμικό ή γράφεις συμπληρώματα για λογισμικό, προσπάθησε να ακολουθείς τις οδηγίες στο Software Release Practice HOWTO.
Αν σου άρεσε το ποίημα Zen, μπορεί επίσης να σου αρέσει και το Rootless Root: The Unix Koans of Master Foo.
Συχνά Υποβαλλόμενες Ερωτήσεις
Ε: Πώς μπορώ να ξέρω αν είμαι ήδη hacker;
Ε: Θα με μάθεις να κάνω hacking;
Ε: Πώς μπορώ να αρχίσω;
Ε: Πότε πρέπει να αρχίσει κανείς; Είναι πολύ αργά για να μάθω;
Ε: Πόσο καιρό θα μου πάρει να μάθω να κάνω hacking;
Ε: Η Visual Basic είναι μια καλή γλώσσα για να αρχίσω;
Ε: Θα με βοηθήσεις να “σπάσω” ένα σύστημα, ή να κάνω cracking;
Ε: Πώς μπορώ να πάρω τον κωδικό του λογαριασμού κάποιου άλλου;
Ε: Πως μπορώ να μπω/να διαβάσω/να ελέγξω το ηλεκτρονικό ταχυδρομείο κάποιου άλλου;
Ε: Πώς μπορώ να κλέψω δικαιώματα διαχειριστή στο IRC;
Ε: Έχουν εισβάλλει στο σύστημά μου. Θα με βοηθήσεις να αποφύγω μελλοντικές εισβολές;
Ε: Αντιμετωπίζω προβλήματα με το Windows λογισμικό μου. Θα με βοηθήσεις;
Ε: Πού μπορώ να βρω πραγματικούς hackers για να μιλήσω μαζί τους;
Ε: Μπορείς να μου συστήσεις καλά βιβλία με θέμα σχετικό με το hacking;
Ε: Πρέπει να είμαι καλός στα μαθηματικά για να γίνω hacker;
Ε: Ποιά γλώσσα πρέπει να μάθω πρώτα;
Ε: Τί υλικό χρειάζομαι;
Ε: Θέλω να συμβάλλω. Μπορείς να με βοηθήσεις να διαλέξω ένα πρόβλημα για να δουλέψω πάνω του;
Ε: Πρέπει να μισώ τη Microsoft;
Ε: Όμως, το λογισμικό ανοικτού κώδικα δεν θα αφήσει του προγραμματιστές άνεργους;
Ε: Πώς μπορώ να αρχίσω; Πού θα βρω ένα ελεύθερο Unix;
Ε:
Πώς μπορώ να ξέρω αν είμαι ήδη hacker;
A:
Υπέβαλλε στον εαυτό σου τις τρεις ακόλουθες ερωτήσεις:
Έχεις ευχέρεια στη συγγραφή κώδικα;
Ταυτίζεσαι με τους στόχους και τις αξίες της κοινότητας των hacker;
Σε έχει αποκαλέσει ποτέ “hacker” κάποιο κατοχυρωμένο μέλος της κοινότητας των hacker;
Αν η απάντηση είναι “ναι” σε όλες από αυτές τις τρεις ερωτήσεις, τότε είσαι ήδη hacker.
Το πρώτο τεστ σχετίζεται με την ικανότητα. Πιθανώς, το περνάς αν έχεις όλες τις τεχνικές ικανότητες που περιγράφηκαν νωρίτερα σε αυτό το έγγραφο. Περνάς το τεστ, αν κάποιο project ανοικτού κώδικα δέχθηκε σημαντική ποσότητα κώδικά σου.
Το δεύτερο τεστ έχει να κάνει με την ιδεολογία. Αν οι πέντε αρχές της ιδεολογίας των hacker σου φάνηκαν προφανείς, και σαν ένα είδος περιγραφής του τρόπου ζωής σου, παρά κάτι εξωπραγματικό, τότε έχεις πετύχει το μισό. Το άλλο μισό είναι ο βαθμός στον οποίο συμφωνείς με τους μακροχρόνιους στόχους των hacker.
Εδώ περιγράφεται μια ατελής, αλλά ενδεικτική λίστα από κάποιους από αυτούς τους στόχους: Σε ενδιαφέρει να βελτιωθεί και να διαδοθεί το Linux; Είσαι παθιασμένος περί της ελευθερίας του λογισμικού; Είσαι αντίθετος με τα μονοπώλια; Δρας σύμφωνα με την άποψη πως οι υπολογιστές μπορούν να γίνουν όργανα βελτίωσης του κόσμου, και ότι μπορούν να φέρουν στη γη ευημερία και ανθρωπιά;
Αλλά εδώ, αξίζει να αναφέρουμε κάτι. Η κοινωνία των hacker έχει κάποια συγκεκριμένα, κυρίως αμυντικά πολιτικά ενδιαφέροντα – εκ των οποίων δύο, είναι η υπεράσπιση της ελευθερίας του λόγου και η αποτροπή του είδους των πνευματικών δικαιωμάτων που θα έκαναν τον ακοικτό κώδικα, παράνομο. Κάποιοι άλλοι μακροχρόνιοι στόχοι είναι η υποστήριξη οργανισμών όπως το Electronic Frontier Foundation, και τα ιδρύματα που έχουν παρόμοιας φύσης. Αλλά εκτός από αυτό, οι περισσότεροι hackers έχουν διαφωνίες στις προσπάθειες να μετατραπεί η ιδεολογία των hacker σε μια μορφή πολιτικού κινήματος. Έχουμε βιώσει, πως τέτοιες προσπάθειες επιφέρουν διαχωρισμό και απόσπαση. Αν κάποιος προσπαθήσει να σε “στρατολογήσει” σε μια πορεία στην πρωτεύουσά σου, στο όνομα της ιδεολογίας των hacker , έχουν χάσει την ουσία. Η σωστή απάντηση είναι “Βούλωσέ το και δείξε τους τον κώδικα.”
Το τρίτο τεστ έχει το στοιχείο της επανάληψης. Παρατήρησα στην ενότητα που λέγεται “Τί Είναι ένας Hacker;” πως το να είσαι hacker είναι θέμα του να ανήκεις σε μια συγκεκριμένη κοινότητα ή ενός κοινωνικού δικτύου με κοινή ιστορία. Στο μακρινό παρελθόν, οι hackers ήταν λιγότερο γνώστες των δεσμών τους και λιγότερο συνδεδεμένοι μεταξύ τους από όσο είναι σήμερα. Όμως η σημασία του να ανήκεις σε μια κοινωνία ισχυροποιήθηκε, ιδιαίτερα με την ανάπτυξη του Internet, και ο πυρήνας της κοινότητας των hacker έγινε ευκολότερο να διατηρηθεί και να αναπτυχθεί. Ένα απλό δείγμα της αλλαγής αυτής, είναι ότι αυτό τον αιώνα, έχουμε τα δικά μας T-shirt.
Οι κοινωνιολόγοι, που μελετούν κοινότητες όπως αυτής των hacker , έχουν παρατηρήσει ότι ένα χαρακτηριστικό τέτοιων κοινοτήτων, είναι ότι έχουν “φύλακες της πύλης” – σημαντικά μέλη, με την κοινωνική εξουσιοδότηση να εντάσσουν καινούρια μέλη μέσα στην κοινότητα. Για το λόγο ότι η κουλτούρα των hacker δεν έχει ευδιάκριτα όρια, ο ρόλος του “φύλακα” είναι ανεπίσημος. Αλλά αυτό που γνωρίζουν πολύ καλά όλοι οι hackers, είναι ότι δεν είναι όλοι ο hakcers φύλακες. Οι φύλακες έχουν έναν καθορισμένο βαθμό κύρους και έχουν κάνει πράξεις που τους επιτρέπουν να έχουν αυτόν τον τίτλο.
Ε:
Θα με μάθεις να κάνω hacking;
A:
Από τότε που πρωτοδημοσίευσα αυτό το άρθρο, έχω λάβει πολλές αιτήσεις εβδομαδιαίως (ή και καθημερινώς) από ανθρώπους που ζητάνε να τους “μάθω να πάντα για το hacking”. Δυστυχώς, δε έχω τον χρόνο ή την ενέργεια να το κάνω αυτό. Τα hacking projects μου, καταλαμβάνουν το 110% του χρόνου μου.
Ακόμα και αν μπορούσα να το κάνω, το hacking είναι ένα σκεπτικό και μια σειρά ικανοτήτων που πρέπει να διδάξεις τον εαυτό σου. Θα καταλάβεις, πως ενώ οι hackers θέλουν να σε βοηθήσουν, δεν θα σε σέβονται αν παρακαλάς να σου μάθουν ό,τι ξέρουν, χωρίς εσύ να κάνεις τίποτα.
Αρχικά, μάθε κάποια πράγματα. Δείξε πως προοδεύεις, πως μπορείς να μάθεις μόνος σου. Τότε κάνε στους hackers συγκεκριμένες ερωτήσεις.
Αν στείλεις email σε κάποιον hacker ζητώντας συμβουλές, να έχεις στο μυαλό σου μερικά πράγματα. Πρώτον, έχουμε παρατηρήσει πως οι άνθρωποι που δεν παρουσιάζουν ένα καλό γραπτό, συνήθως είναι ανίκανοι να σκεφτούν έτσι ώστε να αποτελέσουν καλούς hackers – έτσι, φρόντισε να προσέχεις την ορθογραφία σου, και να χρησιμοποιείς σωστή γραμματική, διαφορετικά, πιθανώς θα σε αγνοήσουν. Δεύτερον, μην τολμήσεις να ζητήσεις απάντηση σε έναν λογαριασμό ISP διαφορετικό από αυτόν που στένεις το μύνημα. Όσοι το κάνουν αυτό, είναι συνήθως κλέφτες που χρησιμοποιούν λογαριασμούς άλλων και δεν είμαστε πρόθυμοι να επιβραυεύσουμε ή να βοηθήσουμε το κλέψιμο.
Ε:
Πώς μπορώ να αρχίσω;
A:
Ο καλύτερος τρόπος να αρχίσεις είναι να πας σε μια συνάντηση ενός συλλόγου φίλων του Linux. Μπορείς να βρεις τέτοιου είδους ομάδες στο LDP General Linux Information Page. Πιθανώς να υπάρχει μία κοντά σου, μάλλον συσχετισμένο με κάποιο πανεπηστίμιο ή κολέγιο. Τα μέλη του LUG θα σου δώσουν ένα Linux αν τους ζητήσεις, και θα σε βοηθήσουν να το εγκαταστήσεις και να αρχίσεις να το χρησιμοποιείς.
Ε:
Πότε πρέπει να αρχίσει κανείς; Είναι πολύ αργά για να μάθω;
A:
Κάθε ηλικία στην οποία έχεις όρεξη να αρχίσεις, είναι καλή. Οι περισσότεροι φαίνεται να αρχίζουν να ενδαφέρονται ανάμεσα στα 15 και στα 20, αλλά ξέρω εξαιρέσεις και προς τις δύο κατευθύνσεις.
Ε:
Πόσο καιρό θα μου πάρει να μάθω να κάνω hacking;
A:
Αυτό εξαρτάται από το πόσο ταλαντούχος είσαι και από το πόσο σκληρά θα δουλεύεις. Οι περισσότεροι αποκτούν αξιοσέβαστες ικανότητες σε δεκαοχτώ μήνες με δύο χρόνια, αν συγκεντρωθούν. Μην νομίζεις όμως πως τελειώνει εκεί. Στο hacking (όπως και σε πολλούς άλλους τομείς) παίρνει περίπου δέκα χρόνια για να γίνεις δάσκαλος. Αν είσαι πραγματικός hacker, θα μαθαίνεις σε όλη τη διάρκεια της ζωής σου.
Ε:
Η Visual Basic είναι μια καλή γλώσσα για να αρχίσω;
A:
Αν κάνεις αυτή την ερώτηση, σημαίνει πως σκέφτεσαι να προσπαθήσεις να κάνεις hacking στα Microsoft Windows. Αυτή είναι μια κακή ιδέα. Όταν παρομοίωσα το να προσπαθήσεις να μάθεις hacking στα Windows και το να προσπαθήσεις να μάθεις να χορεύεις ενώ φοράς πανοπλία, μιλούσα σοβαρά Μην πας εκεί. Είναι άσχημα, και δεν σταματάει να είναι άσχημα.
Υπάρχει ένα συγκεκριμένο πρόβλημα με τη Visual Basic. Δεν είναι μεταφέρσιμη. Παρόλο που υπάρχουν υλοποιήσεις ανοικτού κώδικα της Visual Basic, οι σταθερές ECMA δεν καλύπτουν παρά ένα μιρκό φάσμα των προγραμματιστικών της περιβάλλοντων. Στα Windows, οι περισσότερες από τις βοηθητικές βιβλιοθήκες της, είναι ιδιόκτητες σε έναν μοναδικό προμηθευτή (στη Microsoft). Αν δεν είσαι υπερβολικά προσεκτικός για το ποιές επιλογές χρησιμοποιείς – περισσότερο προσεκτικός από ότι κάθε αρχάριος μπορεί να είναι – θα καταλήξεις “κλειδωμένος” μέσα στις πλατφόρμες που επιλέγει να υποστηρίξει η Microsoft. Αν αρχίσεις στο Unix, πολύ καλύτερες γλώσσες με καλύτερες βιβλιοθήκες είναι διαθέσιμες. Η Python για παράδειγμα.
Επίσης, όπως και οι άλλες Basics, η Visual Basic είναι μια άσχημα σχεδιασμένη γλώσσα που θα σε διδάξει κακές προγραμματιστικές συνήθειες. Όχι, μη μου ζητάς να τις περιγράψω όλες λεπτομερώς. Αυτή η περιγραφή θα γέμιζε ένα βιβλίο. Αντί για αυτή, μάθε μια καλά σχεδιασμένη γλώσσα.
Μία από αυτές τις κακές συνήθειες είναι να εξαρτητοποιηθείς στις βιβλιοθήκες, στο περιβάλλον, και στα εργαλεία ανάπτυξης ενός μοναδικού προμηθευτή. Γενικώς, οποιαδήποτε γλώσσα δεν υποστηρίζεται πλήρως τουλάχιστον από το Linux ή από ένα από τα BSD, και/ή από τουλάχιστον τρία λειτουργικά συστήματα διαφορετικών προμηθευτών, είναι άσχημη για να μάθεις να κάνεις hacking με αυτήν.
E:
Θα με βοηθήσεις να “σπάσω” ένα σύστημα, ή να κάνω cracking;
A:
Όχι. Όποιος κάνει μια τέτοια την ερώτηση αφού διαβάσει αυτό το άρθρο, είναι πολύ ανόητος για να διδαχθεί ακόμα και αν είχα τον χρόνο να τον διδάξω. Οποιαδήποτε αίτηση τέτοιου είδους μου αποσταλεί, θα αγνοηθεί, ή θα απαντηθεί με υπερβολική αγένεια.
Ε:
Πώς μπορώ να πάρω τον κωδικό του λογαριασμού κάποιου άλλου;
A:
Αυτό είναι cracking. Φύγε από εδώ, ανόητε.
Ε:
Πως μπορώ να μπω/να διαβάσω/να ελέγξω το ηλεκτρονικό ταχυδρομείο κάποιου άλλου;
A:
Αυτό είναι cracking. Χάσου, ποταπέ.
Ε:
Πώς μπορώ να κλέψω δικαιώματα διαχειριστή στο IRC;
A:
Αυτό είναι cracking. Εξαφανίσου, κρετίνε.
Ε:
Έχουν εισβάλλει στο σύστημά μου. Θα με βοηθήσεις να αποφύγω μελλοντικές εισβολές;
A:
Όχι. Κάθε φορά που μου γίνεται αυτή η ερώτηση, είναι από κάποιον κακόμοιρο που τρέχει Microsoft Windows. Δεν είναι πιθανό να ασφαλίσεις τα συστήματα Windows έναντι επιθέσεων cracking. Ο κώδικας και η αρχιτεκτονική έχουν πολλά σφάλματα, γεγονός που κάνει το να προσπαθήσεις να ασφαλίσεις τα Windows παρόμοιο με το να προσπαθείς να αδειάσεις μια βάρκα που βουλιάζει, με κουτάλι. Η μόνη αξιόπιστη λύση είναι να αλλάξεις σε Linux ή σε κάποιο άλλο λειτουργικό σύστημα που είναι τουλάχιστον ασφαλές.
Ε:
Αντιμετωπίζω προβλήματα με το Windows λογισμικό μου. Θα με βοηθήσεις;
A:
Ναι. Πήγαινε σε μια προτροπή DOS και γράψε “format c:”. Ότι προβλήματα αντιμετωπίζεις, θα εξαφανιστούν μέσα σε λίγα λεπτά.
Ε:
Πού μπορώ να βρω πραγματικούς hackers για να μιλήσω μαζί τους;
A:
Ο καλύτερος τρόπος είναι να βρεις έναν τοπικό σύλλογο φίλων Unix ή Linux και να πας στις συναντήσεις τους (μπορείς να βρεις συνδέσμους για διάφορες λίστες που περιέχουν πληροφορίες για τέτοιους συλλόγους στην ιστοσελίδα του LDP στο ibiblio).
(Παλιά, εδώ ανέφερα πως δεν μπορείς να βρεις πραγματικούς hackers στο IRC, αλλά αυτό παροδικά αλλάζει. Κάποιες κοινότητες πραγματικών hacker, που ασχολούνται με θέματα όπως το GIMP και την Perl, έχουν τώρα κανάλια στο IRC.)
Ε:
Μπορείς να μου συστήσεις καλά βιβλία με θέμα σχετικό με το hacking;
A:
Διατηρώ το Linux Reading List HOWTO το οποίο μπορεί να βρεις χρήσιμο. Το Loginataka ίσως σου φανεί ενδιαφέρον.
Για μια εισαγωγή στην Python, δες το εισαγωγικό υλικό στην ιστοσελίδα της Python.
Ε:
Πρέπει να είμαι καλός στα μαθηματικά για να γίνω hacker;
A:
Όχι. Το hacking απαιτεί λίγα γενικά μαθηματικά και αριθμητική. Δεν θα χρειαστείς, γεωμετρία εκτός και αν κάποια στιγμή ασχοληθείς με εφαρμογές τριών διαστάσεων και με γραφικά. Είναι καλό να γνωρίζεις κάποια γενική Boolean άλγεβρα. Τα βασικά σε δυαδικά δέντρα, θεωρία γράφων και θεωρία αλγορίθμων θα ήταν χρήσιμα.
Πολύ πιο σημαντικό: Πρέπει να ξέρεις να σκέφτεσαι λογικά και να ακολουθείς λογικές αλυσίδες, όπως το κάνουν οι μαθηματικοί. Παρόλο που το περισσότερο περιεχόμενο των μαθηματικών δεν είναι απαραίτητο, θα πρέπει να σκέφτεσαι σωστά και οργανωμένα περί των μαθηματικών. Αν δεν έχεις ευφυία δεν υπάρχουν πολλές ελπίδες να τα καταφέρεις ως hacker. Αν δεν έχεις οργάνωση, θα πρέπει να την αναπτύξεις.
Πιστεύω πως ένας καλός τρόπος για να ελέγξεις τις γνώσεις σου, είναι να πάρεις ένα αντίγραφο του βιβλίου του Raymond Smullyan, What Is The Name Of This Book?. Οι ευχάριστοι, λογικοί γρίφοι του Smullyan είναι μέσα στο πνεύμα του hacking. Το να μπορείς να τους λύσεις, είναι καλή ένδειξη. Το να απολαμβάνεις να τους λύνεις είναι ακόμα καλύτερη.
Ε:
Ποιά γλώσσα πρέπει να μάθω πρώτα;
A:
Την XHTML (την νεότερη διάλεκτο της HTML), αν δεν την γνωρίζεις ήδη. Υπάρχουν πολλά φανταχτερά, διαφημισμένα, άσχημα βιβλία HTML, και δυστυχώς μόνο λίγα καλά. Αυτό που μου αρέσει περισσότερο, είναι το HTML: The Definitive Guide.
Αλλά η HTML δεν είναι μια πλήρης γλώσσα προγραμματισμού. Όταν είσαι έτοιμος να αρχίσεις τον προγραμματισμό, θα σου συνιστούσα να αρχίσεις με την Python. Θα ακούσεις πολλούς ανθρώπους να συστήνουν την Perl, και η Perl είναι πιο δημοφιλής από την Python, αλλά είναι δυσκολότερη στην εκμάθηση και (κατά τη γνώμη μου) λιγότερο καλοσχεδιασμένη.
Η C είναι πολύ σημαντική, αλλά είναι πιο δύσκολη από την Python και από την Perl. Μην δοκιμάσεις να την μάθεις ως πρώτη σου.
Χρήστες των Windows, μην αρχίσετε με την Visual Basic. Θα σας διδάξει κακές συνήθειες, και δεν είναι μεταφέρσιμη εκτός των Windows. Να την αποφύγετε.
Ε:
Τί υλικό χρειάζομαι;
A:
Παλαιότερα, οι προσωπικοί υπολογιστές ήταν αδύναμοι και με μικρή μνήμη, τόσο, ώστε να βάζουν τεχνικά όρια στην διαδικασία εκμάθησης των hacker. Αυτό σταμάτησε να ισχύει από τα μέσα του 1990. Κάθε μηχανή από Intel 486DX50 και πάνω, είναι περισσότερο από δυνατή για εργασία ανάπτυξης, γραφικό περιβάλλον και επικοινωνίες Διαδυκτίου. Οι μικρότεροι δίσκοι που μπορείς να αγοράσεις σήμερα, είναι αρκετά μεγάλοι.
Το σημαντικό είναι να διαλέξεις μια μηχανή η οποία είναι συμβατή με το Linux (ή συμβατή με το BSD, αν η επιλογή σου είναι αυτή). Αυτό ισχύει για σχεδόν όλους τους μοντέρνους υπολογιστές. Ο μόνος τομέας που μπορεί να δημιουργήσει προβλήματα, είναι τα modems. Κάποιες μηχανές έχουν modem μόνο για Windows, τα οποία δεν δουλεύουν με Linux.
Υπάρχει ένα FAQ όσον αφορά τη συμβατότητα του υλικού. Η τελευταία έκδοση βρίσκεται εδώ.
Ε:
Θέλω να συμβάλλω. Μπορείς να με βοηθήσεις να διαλέξω ένα πρόβλημα για να δουλέψω πάνω του;
A:
Όχι, επειδή δεν ξέρω τα ταλέντα και τα ενδιαφέροντά σου. Πρέπει να παρακινείς τον εαυτό σου. Όταν άλλοι κάνουν τις επιλογές σου αντί για εσένα, σχεδόν ποτέ δεν πετυχαίνει.
Δοκίμασε αυτό. Παρακολούθησε τις ανακοινώσεις για τα projects στο Freshmeat για μερικές μέρες. Όταν δεις κάποιο που να σε κάνει να σκέφτεσαι: “Ωραία! Θα ήθελα να δουλέψω πάνω σε αυτό! “, γίνε μέλος του.
Ε:
Πρέπει να μισώ τη Microsoft;
A:
Όχι. Όχι ότι δεν της αξίζει, αλλά η κουλτούρα των hacker υπήρχε πολύ πριν τη Microsoft, και θα υπάρχει πολύ μετά από το τέλος της Microsoft. Την ενέργεια που θα ξόδευες στο να μισείς τη Microsoft, θα ήταν καλύτερο να την ξοδεύεις στο να αγαπάς την τέχνη σου. Γράφε καλό κώδικα – αυτό θα εμποδίσει την εξάπλωση της Microsoft χωρίς να βλάψει την κοινωνική σου εικόνα.
Ε:
Όμως, το λογισμικό ανοικτού κώδικα δεν θα αφήσει του προγραμματιστές άνεργους;
A:
Δεν συμβαίνει κάτι τέτοιο. Μέχρι σήμερα, οι οργανισμοί λογισμικού ανοικτού κώδικα δημιουργούν θέσεις εργασίας, παρά το αντίθετο. Τις περισσότερες φορές, θα εισπράξεις χρήματα, γράφοντας ένα πρόγραμμα ακόμα και αν το πρόγραμμα θα είναι ανοικτού κώδικα. Δεν παίζει ρόλο το πόσο “ελεύθερο” λογισμικό γράφεται – υπάρχει πάντα ανάγκη για περισσότερες, νέες εφαρμογές. Έχω γράψει περισσότερα περί αυτού στις σελίδες του Open Source.
Ε:
Πώς μπορώ να αρχίσω; Πού θα βρω ένα ελεύθερο Unix;
A:
Αν ψάχνεις για ένα πρώτο project, μην ρωτάς εμένα. Παρακολούθησε τις ανακοινώσεις των project και των δημοσιοποιήσεων στο Freshmeat, βρες ένα που να σου κινεί το ενδιαφέρον, και γίνε μέλος του.
Αν δεν έχεις ένα Unix εγκατεστημένο στον υπολογιστή σου ακόμα, αλλού σε αυτό το άρθρο παρέχονται δείκτες στο πώς να πάρεις κάποιο από τα δημοφιλέστερα, ελεύθερα Unix. Για να γίνεις hacker χρειάζεσαι κίνητρο και πρωτοβουλία, και την ικανότητα να διδάσκεις τον εαυτό σου. Άρχισε τώρα…
Eric Steven Raymond
Thyrsus Enterprises
Μετάφραση από τα αγγλικά: Αριστοτέλης Μικρόπουλος amikrop [at] gmail.com