| Titolo originale: | How To Become A Hacker |
| Autore: | Eric Steven Raymond |
| Versione originale: | http://www.catb.org/~esr/faqs/hacker-howto.html |
| Traduzione aggiornata al: | 12 Luglio, 2009; Revisione 1.40 |
| A cura di: | Fabio Z Tessitore |
| Hanno collaborato: | Meriester Tessitore, Caterina Tucci |
| Licenza: | Questo documento rispetta le condizioni di copia imposte dall'autore. |
Copyright © 2001 Eric S. Raymond
| Revisioni | ||
|---|---|---|
| Revisione 1.40 | 03 Nov 2008 | esr |
| Aggiustamenti ai link. | ||
| Revisione 1.39 | 14 Ago 2008 | esr |
| Aggiustamenti ai link. | ||
| Revisione 1.38 | 08 Gen 2008 | esr |
| Deprecato Java come uno dei primi linguaggi da imparare. | ||
| Revisione 1.37 | 04 Ott 2007 | esr |
| Raccomandata Ubuntu come ditribuzione Unix per principianti. | ||
| Revisione 1.36 | 21 Mar 2007 | esr |
| Aggiunta nota sui CD live, e dieci anni per diventare un maestro. | ||
| Revisione 1.35 | 03 Ago 2006 | esr |
| Aggiustamenti minori. | ||
| Revisione 1.34 | 07 Mar 2006 | esr |
| Rimosso C# dalla lista dei linguaggi da evitare ora che è stata rilasciata la versione beta di Mono. | ||
| Revisione 1.33 | 29 Nov 2005 | esr |
| Aggiunto un collegamento all'eccellente saggio di Peter Norvig. | ||
| Revisione 1.32 | 29 Giu 2005 | esr |
| Aggiunta una considerevole quantità di nuovo materiale riguardo al non risolvere due volte i problemi. Risposta ad una FAQ riguardante l'hacking e la programmazione open-source. Le tre domande che svelano se siete già un hacker. | ||
| Revisione 1.31 | 22 Mar 2005 | esr |
| Aggiunto un collegamento ad un altro saggio di Paul Graham, e consigli su come scegliere il primo progetto. Aggiornamenti dei collegamenti alle traduzioni. | ||
| Revisione 1.30 | 02 Mar 2005 | esr |
| Aggiunti ed aggiornati molti collegamenti alle traduzioni. | ||
Indice

Come curatore del Jargon File e autore di alcuni altri ben noti documenti di simile natura, spesso ricevo richieste via email da novellini della rete entusiasti che chiedono (in pratica) come posso imparare magicamente ad essere un hacker?. Nel 1996 notai che non sembravano esserci né documenti sul web né altre FAQ che rispondessero a questa domanda vitale, così iniziai a scriverne uno. Oggi molti hacker lo considerano definitivo, e suppongo che questo significhi che lo sia. Tuttavia, non pretendo di essere l'autorità esclusiva sull'argomento; se non vi piace ciò che leggete, scrivete qualcosa voi stessi.
Se state leggendo una copia di questo documento offline, la versione più recente si trova all'indirizzo http://catb.org/~esr/faqs/hacker-howto.html.
Nota: c'è una lista di Frequently Asked Questions alla fine di questo documento. Per favore, leggetela due volte prima di inviarmi email con domande riguardanti questo documento.
Sono disponibili numerose traduzioni di questo documento: Arabo, Bulgaro, Catalano, Cinese (Semplificato), Danese, Olandese, Estone, Persiano, Finlandese, Tedesco, Greco, Ebraico, Italiano, Giapponese, Norvegese, Polacco, Portogese (Brasiliano), Rumeno, Russo, Spagnolo, Turco e Svedese. Notate che questo documento evolve continuamente, e quindi potrebbero non essere aggiornate sotto vari aspetti.
Il diagramma composto dai cinque pallini nei nove quadrati che orna questo documento è chiamato glider. È un semplice schema con proprietà sorprendenti in una simulazione matematica chiamata Life che ha affascinato gli hacker per molti anni. Penso sia un buon simbolo per quello che gli hacker sono - astratto, apparentemente misterioso, ma un portale per un intero mondo con una sua propria complicata logica. Per saperne di più, glider.
Il Jargon File contiene una serie di definizioni del termine hacker, la maggior parte delle quali si riferisce all'esperienza tecnica, al piacere di risolvere problemi e al superare limiti. Tuttavia, se volete sapere come diventare hacker, solo due sono veramente importanti.
Esiste una comunità, una cultura condivisa, di esperti programmatori e maghi delle reti la cui storia risale indietro nel tempo di qualche decennio ai primi minicomputer time-sharing e ai primi esperimenti su ARPAnet. I membri di questa cultura diedero origine al termine hacker. Gli hacker hanno costruito Internet. Gli hacker hanno reso il sistema operativo Unix quello che è oggi. Gli hacker frequentano Usenet. Gli hacker rendono il World Wide Web funzionante. Se siete parte di questa cultura, se vi avete contribuito e altri appartenenti vi conoscono e vi chiamano hacker, siete un hacker.
La mentalità hacker non è confinata alla cultura del software. Ci sono persone che applicano l'atteggiamento hacker ad altre cose, come l'elettronica o la musica - oggigiorno, si possono trovare ai livelli più elevati di ogni scienza o arte. Gli hacker del software riconoscono questi spiriti affini ovunque e chiamano anch'essi hacker - e alcuni affermano che la natura dell'hacker sia indipendente dal particolare supporto su cui lavora. Comunque nel prosieguo di questo documento ci concentreremo sulle abilità e sugli atteggiamenti degli hacker del software, e sulla tradizione della cultura condivisa che ha generato il termine hacker.
Ci sono altre persone che si vantano di essere hacker, ma non lo sono. Sono persone (generalmente maschi adolescenti), percorse da un fremito quando penetrano nei computer e intasano le linee telefoniche. I veri hacker li chiamano cracker e non vogliono avere niente a che fare con loro. I veri hacker generalmente pensano che i cracker siano pigri, irresponsabili e non molto brillanti, ed obiettano che essere in grado di compromettere la sicurezza di un sistema non renda hacker più di quanto manomettere una macchina renda ingegneri meccanici. Sfortunatamente, molti giornalisti e scrittori usano la parola hacker per descrivere i cracker, cosa che irrita all'infinito i veri hacker.
La differenza fondamentale è questa: gli hacker costruiscono le cose, i cracker le rompono.
Se volete essere un hacker, continuate a leggere. Se volete essere un cracker, andate sul newsgroup alt.2600 e siate pronti a passare dai cinque ai dieci anni in prigione dopo aver scoperto che non siete così intelligenti come pensavate. E questo è tutto quello che ho intenzione di dire sui cracker.

Gli hacker risolvono problemi e costruiscono cose, e credono nella libertà e nel volontario aiuto reciproco. Per essere accettati come hacker, dovete comportarvi come se questo atteggiamento fosse vostro. E per comportarvi così, dovete crederci.
Ma se pensate di coltivare l'atteggiamento hacker solo come un modo per essere accettati in questa cultura, sbagliate. Diventare il tipo di persona che crede in queste cose è importante per voi - per aiutarvi ad imparare e a mantenervi motivati. Come per tutte le arti creative, il modo più efficace per diventare un maestro è quello di imitare la mentalità dei maestri - non solo dal punto di vista intellettuale ma anche da quello emotivo.
Oppure, secondo il seguente moderno poema Zen:
Seguire il sentiero:
guarda il maestro,
segui il maestro,
cammina con il maestro,
guarda oltre il maestro,
diventa il maestro.
Quindi, se volete diventare un hacker, ripetete le seguenti affermazioni finché non crederete in loro:
Diventare un hacker è molto divertente, ma è un divertimento che richiede molti sforzi. Lo sforzo richiede motivazione. Gli atleti di successo traggono la loro motivazione da una specie di piacere fisico derivante dal rendere i loro corpi performanti, nello spingersi oltre i loro stessi limiti fisici. Allo stesso modo, per essere un hacker devete sentire un fremito quando risolvete problemi, affinate le vostre capacità, esercitate la vostra intelligenza.
Se non siete il genere di persona che si sente così per propria natura, dovrete diventarlo per essere hacker. Altrimenti scoprirete che la vostra energia verrà indebolita da distrazioni come il sesso, i soldi, e l'approvazione sociale.
(Dovreste inoltre cercare di sviluppare una specie di fede nella vostra capacità di apprendimento - una convinzione tale per cui anche se non conoscete tutto ciò di cui avete bisogno per risolvere un problema, se ne affrontate solo una parte e imparate da questa, potete apprendere abbastanza per risolvere la parte successiva - e così via, finché non avrete finito.)
Le menti creative sono una risorsa preziosa e limitata. Non possono essere sprecate per reinventare la ruota quando ci sono così tanti nuovi affascinanti problemi che aspettano là fuori.
Per comportarsi come un hacker, dovete pensare che il tempo degli altri hacker è prezioso - così tanto che dovrebbe essere quasi un dovere morale per voi condividere le informazioni, risolvere problemi e quindi pubblicarne le soluzioni, così che altri hacker possano risolvere nuovi problemi invece di dover tornare sempre sugli stessi.
Notate, comunque, che Nessun problema dovrebbe mai essere risolto due volte non implica che dovete considerare tutte le soluzioni esistenti sacre, oppure che ci sia solo una soluzione giusta per ogni dato problema. Spesso si impara molto su un problema che non si conosceva studiandone una soluzione. È corretto, e talvolta necessario, decidere che possiamo fare meglio. Non sono corrette le tecniche artificiose, legali, o le barriere istituzionali (come il codice closed-source), che non permettono la riusabilità di una buona soluzione e costringono le persone a reinventare la ruota.
(Non dovete pensare che siete obbligati a dare via tutto il vostro prodotto creativo, benché gli hacker che lo fanno sono quelli che godono del maggior rispetto. È coerente con i valori hacker vendere abbastanza del proprio lavoro per mangiare, avere un alloggio e dei computer. È giusto mettere a disposizione le proprie competenze personali per mantenere una famiglia o anche per diventare ricchi, purché non dimentichiate la lealtà nei confronti della vostra arte e dei vostri colleghi hacker mentre lo fate.)
Gli hacker (e le persone creative in generale) non dovrebbero mai essere annoiate o costrette a fossilizzarsi su lavori stupidi e ripetitivi, perché quando questo accade vuol dire che non stanno facendo ciò che solo loro possono fare - risolvere nuovi problemi. Questo dispendio di energie danneggia tutti. Pertanto noia e ripetitività non solo sono spiacevoli ma rappresentano il peggio che possa accadere.
Per comportarsi come un hacker, dovete crederci abbastanza da voler automatizzare il più possibile le piccole cose noiose, non solo per voi ma per chiunque altro (specialmente altri hacker).
(C'è un'eccezione apparente a tutto questo. A volte gli hacker fanno cose che sembrano ripetitive o noiose ad un osservatore esterno, come esercizi per liberare la mente, o per acquisire delle abilità, oppure guadagnare qualche tipo di esperienza che non è possibile ottenere diversamente. Ma si tratta di una scelta - nessun essere pensante dovrebbe mai essere costretto a fare cose che considera noiose).
Gli hacker sono per natura anti-autoritari. Chiunque vi dia degli ordini potrebbe bloccarvi mentre state risolvendo un qualunque problema dal quale siete affascinati - e, dato il modo in cui operano le menti autoritarie, troveranno sempre qualche ragione terribilmente stupida per farlo. Per questo l'atteggiamento autoritario va combattuto ovunque lo troviate, affinché non soffochi né voi né gli altri hacker.
(Quanto appena affermato non vuol dire combattere contro tutte le autorità. I bambini hanno bisogno di essere guidati e i criminali rinchiusi. Un hacker può accettare alcuni tipi di autorità per ottenere qualcosa che desidera maggiormente rispetto al tempo che perderebbe nell'eseguire ordini. Ma questo è un compromesso limitato e consapevole; il tipo di resa personale cercata dalle persone autoritarie non è in vendita).
Le persone autoritarie traggono profitto dalla censura e dalla segretezza. E diffidano della collaborazione volontaria e dello scambio di informazioni - esse accettano solo la cooperazione che possono controllare. Perciò, per comportarvi come un hacker, dovete sviluppare un'ostilità istintiva verso la censura, la segretezza, e l'uso della forza o dell'inganno per convincere adulti responsabili. E dovete essere disposti a comportarvi in base a questa convinzione.
Per essere un hacker, dovete sviluppare alcuni di questi atteggiamenti. Tuttavia, copiare solo un atteggiamento non vi renderà un hacker, non più che diventare un campione di atletica o una rock star. Diventare un hacker richiederà intelligenza, pratica, dedizione, e duro lavoro.
Pertanto, dovete imparare a non fidarvi degli atteggiamenti e rispettare competenze di ogni tipo. Gli hacker non lasceranno che le domande sprechino il loro tempo, adorano la competenza - specialmente la competenza nell'hacking e comunque la competenza in genere. In particolare, molto apprezzate sono quelle abilità che padroneggiano solo in pochi, e le competenze in abilità per le quali sono richieste acutezza mentale, concentrazione e intuito brillante sono le migliori in assoluto.
Se venerate la competenza, sarete felici nello svilupparla in voi stessi - il duro lavoro e la dedizione diventeranno una specie di gioco intenso piuttosto che monotonia. Questo atteggiamento è di vitale importanza per diventare un hacker.

L'atteggiamento hacker è vitale, ma le abilità lo sono ancora di più. L'atteggiamento non è un'alternativa alla competenza, e c'è un insieme di abilità di base che dovete possedere prima che un hacker si sogni di chiamarvi così.
Esso cambia lentamente nel tempo, mentre la tecnologia crea nuove abilità e ne rende obsolete altre. Per esempio, prima includeva la programmazione in linguaggio macchina, più recentemente l'HTML. Oggigiorno include piuttosto chiaramente le seguenti:
Questa, ovviamente, è l'abilità fondamentale dell'hacking. Se non conoscete nessun linguaggio di programmazione, vi raccomando di partire con il Python. È progettato in modo chiaro, ben documentato e relativamente agevole per i principianti. Nonostante sia un buon primo linguaggio, non è solo un giocattolino; è molto potente e flessibile e ben si adatta a progetti di grosse dimensioni. Ho scritto una più dettagliata valutazione del Python. Buoni tutorial sono disponibili sul sito del progetto Python.
Ero abituato a raccomandare Java come linguaggio da imparare presto, ma questa critica ha cambiato le mie idee (cercate The Pitfall of Java as a First Programming Language [I Rischi dell'utilizzo di Java come Primo Linguaggio] al suo interno). Un hacker non può, come osservano gli autori, utilizzare come approccio alla risoluzione dei problemi quello di un idraulico in una ferramenta; dovete conoscere esattamente cosa fanno le varie componenti. Ora penso che sia meglio imparare il C e il LISP prima, e poi Java.
Se volete fare della programmazione seria, dovrete imparare il C, il linguaggio del kernel di Unix. Il C++ è strettamente correlato al C; se ne conoscete uno, imparare l'altro non sarà difficile. In ogni caso, nessuno dei due è una buona scelta come primo linguaggio. E, oggi, meno programmate in C, tanto più sarete produttivi.
Il C è molto efficiente, e poco esigente delle risorse della macchina. Sfortunatamente questa efficienza richiede molto lavoro di gestione a basso livello (come la gestione della memoria) da parte vostra. Tutto questo codice di basso livello è complesso e incline alla presenza di bug, e richiederà parecchio tempo nella fase di debug. Con le macchine attuali, così potenti come sono, generalmente non è un buon compromesso - è più intelligente usare un linguaggio che sfrutti il tempo della macchina in modo meno efficiente, ma molto più efficientemente il vostro. Cioè, Python.
Altri linguaggi di particolare importanza per gli hacker sono il Perl e il LISP. Vale la pena imparare il Perl per ragioni pratiche; è largamente utilizzato per le pagine Web dinamiche e l'amministrazione di sistema, perciò anche se non scriverete mai in Perl dovreste quantomeno imparare a leggerlo. Molte persone usano Perl nel modo in cui io suggerisco di usare Python, per evitare la programmazione in C per lavori che non ne richiedono l'efficienza. Avrete bisogno di saper comprendere i loro codici.
Vale la pena imparare il LISP per un'altra ragione - la profonda ed illuminante esperienza che ne ricaverete quando finalmente lo padroneggerete. Questa esperienza vi renderà dei programmatori migliori per il resto dei vostri giorni, anche se non lo utilizzerete molto. (Potete fare una prima esperienza con il LISP abbastanza facilmente scrivendo e modificando i modi di editing dell'editor di testi Emacs, oppure i plugin Script-Fu di GIMP).
Sarebbe meglio, oggigiorno, imparare tutti e cinque questi linguaggi, Python, C/C++, Java, Perl, e LISP. Oltre ad essere i più importanti per l'hacking, rappresentano approcci alla programmazione molto diversi, ed ognuno vi formerà in modo diverso.
Ma fate attenzione perché non raggiungerete il livello di abilità di un hacker o di un semplice programmatore solo imparando vari linguaggi - avrete bisogno di imparare come pensare riguardo ai problemi della programmazione in un modo più generale, indipendente dal linguaggio. Per essere un vero hacker, dovrete arrivare ad imparare un nuovo linguaggio in pochi giorni confrontanto il manuale con quello che già sapete. Questo significa che dovreste imparare vari linguaggi molto diversi tra loro.
Non posso darvi istruzioni complete su come imparare a programmare in questa sede - è un'abilità complessa. Ma posso dirvi quali libri e corsi non ve lo insegneranno (molti, forse la maggior parte dei migliori hacker sono autodidatti). Potete imparare le caratteristiche dei linguaggi - pezzi di conoscenza - dai libri, ma la mentalità che trasforma la conoscenza in abilità può essere acquisita solo con la pratica e l'apprendistato. Cosa renderà possibile ciò è (a) leggere codice e (b) scrivere codice.
Peter Norvig, uno degli hacker di Google e coautore di uno dei libri più usati sull'AI, ha scritto un eccellente saggio chiamato Teach Yourself Programming in Ten Years (traduzione italiana su CulturaHacker.it: Impara a Programmare in Dieci Anni). La sua ricetta per una programmazione di successo merita grande attenzione.
Imparare a programmare è come imparare a scrivere bene in un linguaggio naturale. Il modo migliore per farlo è leggere delle cose scritte da maestri della forma, scrivere qualcosa da soli, leggere di più, scrivere un po' di più, leggere di più, scrivere ancora un po' di più ... e ripetere finché le cose che scrivete inizieranno a sviluppare la stessa forza ed economia che vedete nei vostri modelli.
Fino a non molto tempo fa era difficile trovare del buon codice da leggere, perché c'erano pochi codici sorgente di grandi programmi che potevano essere letti e con i quali si poteva armeggiare e giocare. Tutto ciò è cambiato drasticamente; software open-source, strumenti per la programmazione, e sistemi operativi (tutti creati da hacker) sono oggi largamente disponibili. Il che ci porta direttamente al prossimo argomento.
D'ora in avanti presumerò che possedete o avete accesso ad un personal computer. (Prendetevi un momento per apprezzare cosa ciò significhi. La cultura hacker è nata quando i computer erano così costosi che un individuo da solo non poteva possederne uno.) Il singolo passo più importante che ogni principiante dovrebbe fare per acquisire le abilità di un hacker è ottenere una copia di Linux oppure uno dei sistemi Unix BSD o ancora OpenSolaris, istallarlo su un computer, e farlo girare.
Certo, ci sono altri sistemi operativi nel mondo oltre a Unix. Ma essi sono distribuiti in formato binario - non potete leggerne il codice, e non potete modificarlo. Cercare di imparare l'hacking su una macchina con Microsoft Windows o con un qualunque altro sistema closed-source è come cercare di imparare a ballare mentre si è ingessati.
Sotto Mac OS X è possibile, ma solo parte del sistema è open source - è probabile che incontrerete molti ostacoli e dovrete fare attenzione a non sviluppare la cattiva abitudine di dipendere dal codice proprietario della Apple. Se vi getterete su Unix a capofitto imparerete molte cose interessanti.
Unix è il sistema operativo di Internet. Mentre potete imparare a usare Internet senza conoscere Unix, non potete essere un hacker di Internet senza capire Unix. Per questa ragione, oggi la cultura hacker è quasi esclusivamente centrata su Unix. (Non è stato sempre così, e alcuni hacker della vecchia generazione sono ancora insoddisfatti, ma la simbiosi tra Unix e Internet è diventata abbastanza forte che persino la potenza di Microsoft sembra incapace di scalfirla seriamente.)
Quindi, procuratevi una versione di Unix - io personalmente preferisco Linux ma ci sono altre scelte (e certo, potete far girare Linux e Microsoft Windows sulla stessa macchina). Imparate a usarlo, fatelo girare, smanettateci. Navigateci in Internet. Leggetene il codice. Modificatene il codice. Disporrete dei migliori strumenti di sviluppo (inclusi C, LISP, Python, e Perl) che ogni altro sistema operativo Microsoft possa sognare di ospitare, vi divertirete, e assorbirete più conoscenza di quello che pensate finché riguarderete indietro a queste cose come un maestro hacker.
Per maggiori informazioni su come imparare Unix, guardate The Loginataka (traduzione italiana su CulturaHacker.it: Il Loginataka). Potreste voler dare un'occhiata anche a The Art Of Unix Programming (L'Arte della Programmazione sotto Unix).
Per mettere le mani su Linux, cercate sul sito Linux Online!; potrete scaricare da lì o (idea migliore) cercare un Linux user group dalle vostre parti che possa aiutarvi con l'istallazione.
Durante i primi dieci anni di vita di questo HOWTO ho scritto che, dal punto di vista di un nuovo utente, tutte le distribuzioni Linux sono quasi equivalenti. Ma nel 2006-2007 è emersa una scelta migliore delle altre: Ubuntu. Mentre altre distribuzioni hanno i loro punti di forza, Ubuntu è di gran lunga la più accessibile ai principianti di Linux.
Potete cercare aiuto e risorse per Unix BSD su www.bsd.org.
Un buon metodo per iniziare è far partire quello che i fan di Linux chiamano un live CD, una distribuzione che gira interamente da CD senza modificare il vostro hard disk. Ovviamente andrà lentamente, perché così sono i CD, ma è un modo per dare un'occhiata alle possibilità offerte senza dover fare niente di drastico.
Inoltre, ho scritto un'introduzione sulle basi di Unix e Internet.
(Nota: non vi raccomando di istallare Linux o BSD da soli se siete dei principianti. Oggigiorno i programmi di installazione sono diventati abbastanza buoni a tal punto che è diventato possibile fare tutto da soli anche per un principiante. Nonostante ciò io raccomando ancora di prendere contatto con il vostro Linux User Group local e chiedere aiuto. Male non farà e può smussare il processo.
La maggior parte delle cose che la cultura hacker ha creato lavora lontano dai riflettori, aiutando le aziende e gli uffici e le università senza un impatto evidente sulla vita dei non-hacker. Il Web è l'unica grande eccezione, il grande scintillante giocattolo degli hacker che anche i politici ammettono abbia cambiato il mondo. Anche solo per questa ragione (e per un sacco di altre buone ragioni) dovreste imparare come funziona il Web.
Questo non significa solo imparare a navigare con un browser (chiunque può farlo), ma imparare a scrivere l'HTML, il linguaggio di markup del Web. Se non sapete programmare, scrivere HTML vi insegnerà alcune abitudini che vi aiuteranno ad imparare. Quindi costruite una home page. Cercate di passare all'XHTML, è più pulito dell'HTML classico. (Ci sono buoni tutorial per principianti sul Web; eccone uno).
Comunque avere una home page non è sufficiente a rendervi un hacker. Il Web ne è pieno. La maggior parte delle quali inutili, melma senza contenuti - melma molto appariscente, penserete, ma sempre melma. Per saperne di più date un'occhiata a The HTML Hell Page (La Pagina dell'Inferno dell'HTML).
Per essere utile, la vostra pagina deve avere dei contenuti - deve essere interessante e/o utile agli altri hacker. E questo ci porta direttamente al prossimo argomento ...
Come Americano e madrelingua inglese, in passato sono stato riluttante nel darvi questo suggerimento, per timore che fosse interpretato come una forma di imperialismo culturale. Ma molte persone che parlano altre lingue mi hanno esortato a precisare che l'inglese è la lingua di lavoro della cultura hacker e di Internet, e che avrete bisogno di conoscerlo per poter far parte della comunità hacker.
Verso il 1991 scoprii che molti hacker per i quali l'inglese era la seconda lingua lo usavano nelle discussioni tecniche, anche quando condividevano la stessa madrelingua; ciò mi venne riferito al tempo in cui l'inglese aveva un vocabolario tecnico più ricco di qualsiasi altra lingua e quindi era semplicemente uno strumento di lavoro migliore. Per ragioni simili, le traduzioni di libri tecnici scritti in inglese sono spesso insoddisfacenti (almeno quando esistono).
Linus Torvalds, un Finlandese, commenta i suoi codici in inglese (sembra non gli sia mai servito fare altro). La sua naturalezza con l'inglese è stata un fattore importante per la sua abilità nel reclutare una comunità mondiale di sviluppatori per Linux. È un esempio che vale la pena seguire.
Essere un madrelingua inglese non garantisce che abbiate abilità linguistiche da hacker. Se i vostri testi sono sgrammaticati e pieni di errori, molti hacker (incluso me stesso) tenderanno ad ignorarvi. Anche se testi carenti non significano pensieri carenti, generalmente esiste una forte correlazione tra le due cose - e non sappiamo cosa farcene di pensatori carenti. Se non siete ancora in grado di scrivere adeguatamente, imparate a farlo.

Come molte culture senza un'economia monetaria, l'hackerdom si basa sulla reputazione. Cercherete di risolvere problemi interessanti, ma quanto interessanti saranno, e se le vostre soluzioni saranno veramente buone, è qualcosa che solo chi ha le vostre conoscenze o ne ha di superiori può giudicare.
Di conseguenza, quando giocherete a fare gli hacker, in primo luogo imparerete che si guadagnano punti in base a ciò che gli altri hacker pensano delle vostre abilità (questo è il motivo per cui non sarete veramente un hacker fino a quando altri hacker non vi chiameranno in questo modo). Questo fatto è nascosto dall'immagine dell'hacking come lavoro solitario; anche per un taboo della cultura hacker (che va lentamente scomparendo dalla fine degli anni '90 ma ancora potente) che non ammette che l'ego o il riconoscimento degli altri riguardino la propria motivazione anche solo in minima parte.
Più specificamente, l'hackerdom è ciò che gli antropologi chiamano una cultura del dono. Guadagnate status e reputazione non dominando altre persone, e non perché siete belli, e neanche perché possedete cose che le altre persone vorrebbero possedere, ma piuttosto regalando cose. In particolare, regalando il vostro tempo, la vostra creatività, e i risultati delle vostre capacità.
Ci sono fondamentalmente cinque tipi di cose che potete fare per essere rispettati dagli hacker:
La prima (la più centrale e la più tradizionale) è scrivere programmi che altri hacker pensano siano divertenti o utili, e donare i sorgenti all'intera cultura hacker.
(Siamo abituati a chiamare questi lavori free software, ma questo confonde troppe persone che non sono esattamente sicure di cosa free significhi. Oggi molti di noi preferiscono il termine software open-source).
I più riveriti semidei dell'hackerdom sono persone che hanno scritto grandi, capaci programmi, che sono venuti incontro a grandi esigenze e li hanno donati, così che oggi tutti possono usarli.
Qui entra in gioco un po' di storia. Mentre gli hacker hanno sempre guardato agli sviluppatori di software open-source come al nucleo duro della comunità, prima della metà degli anni '90 la maggior parte di loro, per la maggior parte del tempo, lavorava su codici chiusi. Questo era ancora vero quando scrissi la prima versione di questo HOWTO nel 1996; si è dovuto aspettare l'avvento del software open-source dopo il 1997 per cambiare le cose. Oggi, la comunità hacker e gli sviluppatori open-source sono due descrizioni per quella che è essenzialmente la stessa cultura e popolazione - ma vale la pena ricordare che non è sempre stato così.
Inoltre c'è richiesta di chi sostenga e faccia il debug di software open-source. In questo mondo imperfetto inevitabilmente spenderemo nella fase di debug la maggior parte del nostro tempo dedicato allo sviluppo del software. Motivo per cui tutti gli autori open-source vi diranno che buoni beta-tester (che sanno come descrivere i sintomi in maniera chiara, localizzano bene i problemi, sanno tollerare i bug in una versione rilasciata precocemente, e sono disposti ad applicare poche e semplici routine diagnostiche) valgono il loro peso in rubini. Persino uno di loro può fare la differenza tra una fase di debug che sia un incubo protratto, estenuante, e una che risulta essere semplicemente una salutare seccatura.
Se siete un principiante, cercate un programma in fase di sviluppo a cui siete interessati e siate dei buoni beta-tester. C'è una naturale progressione dall'aiutare a testare i programmi all'aiutare a farne il debug ad aiutare a modificarli. Imparerete molto in questo modo, e genererete un buon karma con le persone che vi aiuteranno in futuro.
Un'altra cosa buona da fare è raccogliere e filtrare informazioni utili e interessanti in pagine web o documenti come liste di Frequently Asked Questions (FAQ), e renderle disponibili.
I curatori delle maggiori FAQ tecniche ottengono almeno lo stesso rispetto degli autori di software open-source.
La cultura hacker (e lo sviluppo ingegneristico di Internet, in questo senso) è gestita da volontari. C'è una grande quantità di lavoro necessario ma non affascinante che richiede di essere fatto per mantenere funzionante il tutto - amministrare mailing list, moderare newsgroup, curare grandi siti per l'archivio di software, sviluppare RFC e altri standard tecnici.
Chi fa bene queste cose ottiene molto rispetto, perché tutti sanno come questi lavori assorbano una gran quantità di tempo e non sono così divertenti come giocare con del codice. Fare queste cose dimostra dedizione.
Infine, potreste servire e propagare la cultura hacker stessa (per esempio, scrivendo un accurato manuale su come diventare hacker :-)). Non si tratta di qualcosa che sarete nella posizione di poter fare finché non sarete ben noti per uno dei primi quattro punti.
La cultura hacker non ha leader, in senso stretto, ma eroi, antenati tribali, storici e oratori. Quando sarete stati in trincea abbastanza a lungo, potrete diventare una di queste figure. Fate attenzione: gli hacker non si fidano di personalità troppo appariscenti tra i loro antenati, quindi cercare questo tipo di fama troppo visibilmente è pericoloso. Piuttosto che sforzarsi per ottenerla, dovreste migliorare la vostra posizione così che sia essa a raggiungervi, e una volta ottenuta siate modesti riguardo al vostro status.

Contrariamente al mito popolare, non dovrete essere un nerd per essere un hacker. Aiuta, comunque, e molti hacker sono di fatto dei nerd. Essere socialmente emarginati aiuta a rimanere concentrati sulle cose veramente importanti, come pensare e fare dell'hacking.
Per questa ragione, molti hacker hanno adottato l'etichetta di geek (geco) come distintivo di orgoglio - è un modo per dichiarare la loro indipendenza dalle normali aspettative sociali (così come una passione per altre cose come la fantascienza e i giochi di strategia spesso si accompagnano con l'essere un hacker). Il termine nerd è entrato nel gergo nel anni '90, quando nerd era solo un leggero peggiorativo e geek, invece, uno più duro; dopo il 2000 questi termini hanno invertito i propri ruoli, almeno nella cultura popolare statunitense, e c'è oggi perfino una significativa cultura dell'orgoglio geek tra i non tecnici.
Se riuscite a concentrarvi sull'hacking abbastanza da diventare bravi e avere ancora una vita, ottimo. Oggi è molto più facile di quanto non fosse quando ero un principiante negli anni '70; la cultura principale è molto più amichevole verso i tecno-nerd oggi. C'è persino un numero crescente di persone che crede che gli hacker siano spesso degli amanti di alta qualità e da sposare.
Se siete attratti dall'hacking perché non avete una vita, va bene lo stesso - almeno non avrete difficoltà a concentrarvi. Forse l'avrete in futuro.

Ancora, per essere un hacker, dovete entrare nella mentalità hacker. Pare che fare alcune cose quando non si è davanti ad un computer aiuti. Non sono un'alternativa all'hacking (niente lo è) ma molti hacker le fanno, e sentono che in qualche modo si entra in connessione con l'essenza dell'hacking.
Imparate a scrivere bene nella vostra lingua. Benché sia un comune stereotipo che i programmatori non sappiano scrivere, un numero sorprendente di hacker (inclusi tutti i più esperti che conosco) sono scrittori molto abili.
Leggete fantascienza. Andate ai congressi di fantascienza (un buon modo per incontrare hacker e proto-hacker).
Esercitatevi in una forma di arti marziali. Il tipo di disciplina mentale rischiesta dalle arti marziali sembra essere simile a ciò che gli hacker fanno. Le forme più popolari tra gli hacker sono senza alcun dubbio le arti asiatiche a mani nude come il Tae Kwon Do, varie forme di Karate, Kung Fu, Aikido, oppure Ju Jitsu. Anche le arti della scherma occidentale e della spada asiatica hanno un grande seguito. Dove è legale, sparare con la pistola sta accrescendo la propria popolarità sin dalla fine degli anni '90. Le arti marziali che più hanno a che fare con l'hacking sono quelle in cui è enfatizzata la disciplina mentale, il rilassamento, e il controllo, piuttosto che la forza bruta, l'atletismo, o la resistenza fisica.
Studiate una disciplina meditativa. La favorita tra gli hacker è lo Zen (una cosa importante, è possibile trarre benefici dalla pratica dello Zen senza acquisire una religione o perderne una di cui si è già in possesso). Altri stili funzionano altrettanto bene, ma fate attenzione a sceglierne uno che non vi richieda di credere in cose folli.
Sviluppate un orecchio analitico per la musica. Imparate ad apprezzare tipi di musica peculiari. Imparate a suonare bene qualche strumento musicale, o a cantare.
Sviluppate un vostro apprezzamento per gli indovinelli e i giochi di parole.
Più cose già fate tra queste, più probabilmente siete materiale hacker naturale. Perché queste cose in particolare, non è completamente chiaro, ma c'è un legame con un mix di abilità della parte sinistra - e destra - del cervello che sembra essere importante; gli hacker hanno bisogno contemporaneamente di ragionare logicamente e andare fuori dagli schemi della logica apparente di un problema.
Lavorate intensamente come giocate e giocate intensamente come lavorate. Per i veri hacker, i confini tra gioco, lavoro, scienza e arte tendono a scomparire, o a fondersi in un gioco creativo di alto livello. Inoltre, non vi accontentate di un un campo ristretto di abilità. Nonostante la maggior parte degli hacker si descrivano come programmatori, essi sono molto probabilmente più competenti in svariati campi correlati - amministrazione di sistema, progettazione di pagine web, e analisi dei guasti dell'hardware del PC sono esempi comuni. Un hacker che sia un amministratore di sistema, d'altra parte, è probabilmente abbastanza abile nella programmazione di script e nella progettazione di pagine web. Gli hacker non fanno le cose a metà; se investono del tempo in un'abilità, tendono a diventare molto bravi in essa.
In conclusione, poche cose da non fare.
Non usate un nome o un ID utente stupido, grandioso.
Non andate in escandescenze su Usenet (o altrove).
Non autodefinitevi cyberpunk, e non perdete il vostro tempo con chiunque lo faccia.
Non inviate o scrivete email piene di errori grammaticali e di ortografia.
L'unica reputazione che guadagnerete facendo una qualsiasi di queste cose è quella di idioti. Gli hacker hanno lunga memoria - potrebbero volervici anni per far dimenticare i vostri errori abbastanza da essere accettati.
Il problema con i nickname o nomignoli merita qualche digressione. Mascherare l'identità dietro un appellativo è una caratteristica giovanile e stupida dei cracker, warez d00dz, e altre forme di vita inferiori. Gli hacker non lo fanno; sono orgogliosi del loro lavoro e vogliono che sia associato al loro vero nome. Quindi se avete un appellativo, sbarazzatevene. Nella cultura hacker vi etichetterà soltanto come un perdente.

Paul Graham ha scritto un saggio chiamato Great Hackers (Fantastici Hacker), e un altro su Undergraduation (Universitari), in cui parla con molta saggezza.
Esiste un documento chiamato How To Be A Programmer (Come Diventare Un Programmatore) che è un eccellente complemento a questo. Non solo sono presenti consigli riguardo alla programmazione e all'insieme di conoscenze necessarie, ma anche riguardo a come lavorare in un gruppo di programmatori.
Ho scritto inoltre A Brief History Of Hackerdom (Una Breve Storia Del Mondo Hacker).
Ho scritto una relazione, The Cathedral and the Bazaar (La Cattedrale e il Bazaar), che spiega come Linux e la cultura dell'open-source funzionano. Ho affrontato questo tema più direttamente nel suo seguito Colonizzare la Noosphere.
Rick Moen ha scritto un documento eccellente su come gestire un Linux user group.
Io e Rick Moen abbiamo collaborato ad un altro documento, How To Ask Smart Questions (Come Porre Domande Intelligenti). Vi aiuterà a cercare assistenza in modo tale da rendere più probabile ottenerla.
Se avete bisogno di istruzioni fondamentali sul funzionamento di un personal computer, di Unix, e di Internet, guardate The Unix and Internet Fundamentals HOWTO (Basi di Unix e Internet).
Quando rilasciate software o scrivete patche per software, cercate di seguire le linee guida descritte in Software Release Practice HOWTO (Rilasciare Software).
Se vi piacciono i poemi Zen, probabilmente gradirete Rootless Root: The Unix Koans of Master Foo (traduzione italiana su CulturaHacker.it: I Paradossi del Maestro Foo).

| D: | Come faccio a sapere se sono già un hacker? |
| R: | Fatevi le seguenti tre domande:
Se potete rispondere si a tutte e tre le domande, siete già un hacker. Due sole non bastano. La prima domanda si riferisce alle abilità acquisite. Probabilmente lo passerete se avete le competenze tecniche minime descritte precedentemente in questo documento. Lo passerete se una considerevole quantità di codice scritto da voi è stata accettata da un progetto di sviluppo open-source. La seconda domanda riguarda l'atteggiamento. Se i cinque principi della mentalità hacker vi sembrano ovvi, una descrizione del modo in cui già vivete più che un qualsiasi romanzo, siete a metà strada. Questa è la prima metà, quella interna; l'altra, quella esterna, è il grado in cui vi identificate con i progetti di lungo termine della comunità hacker. Segue una incompleta ma indicativa lista di progetti: vi importa che Linux cresca e si diffonda? Vi appassiona la libertà del software? Siete contrari ai monopoli? Vi comportate con la convinzione che i computer possono essere strumenti utili a rendere il mondo un posto più ricco e umano? Ma attenzione. La comunità hacker ha alcuni interessi specifici, primariamente politici di carattere difensivo - due dei quali sono la difesa del diritto di libertà di parola e la battaglia contro il potere della proprietà intellettuale che vorrebbe rendere l'open-source illegale. Alcuni di questi progetti a lungo termine sono organizzazioni per le libertà civili come la Electronic Frontier Foundation, e l'atteggiamento esterno include il loro supporto. Ma al di là di questo, la maggior parte degli hacker vede con sospetto i tentativi di sistematizzare l'atteggiamento hacker in un programma politico esplicito; abbiamo imparato, nella maniera peggiore, che questi tentativi dividono e distraggono. Se qualcuno cerca di reclutarvi per marciare contro le vostre istituzioni nel nome dell'atteggiamento hacker, non ha capito niente. La risposta giusta probabilmente è zittirli e mostrare loro il codice. La terza domanda ha in sé un complicato elemento di ricorsività. Ho osservato nella sezione Che Cos'è un Hacker? che essere un hacker è in parte una questione di appartenenza ad una particolare sottocultura o rete sociale con una storia condivisa, un dentro e un fuori. Nel lontano passato, gli hacker erano un gruppo molto meno coeso di oggi. Ma l'importanza dell'aspetto di una rete sociale è aumentata negli ultimi trent'anni così come Intenet ha reso più semplici da sviluppare e mantenere i contatti con il nucleo della sottocultura hacker. Un semplice indice di questo cambiamento è che, in questo secolo, abbiamo delle T-shirt tutte nostre. I sociologi, che studiano le reti come quella della cultura hacker sotto il generico nome di college invisibili, hanno notato che una caratteristica di queste reti è la presenza di guardiani - membri del nucleo con una autorità sociale tale da garantire per i nuovi membri. Siccome il college invisibile che è la cultura hacker è vago e informale, il ruolo dei guardiani è anch'esso informale. Ma una cosa che tutti gli hacker capiscono è che non tutti sono dei guardiani. Essi devono avere un certo grado di anzianità e realizzazione prima di potersi fregiare del titolo. Quanto, è difficile a dirsi, ma ogni hacker è in grado di riconoscerlo. |
| D: | Mi insegnerai come fare dell'hacking? |
| R: |
Dalla prima pubblicazione di questa pagina, ho ricevuto svariate richieste per settimana (spesso diverse al giorno) del tipo insegnami tutto a proposito dell'hacking. Sfortunatamente non ho né il tempo né l'energia per farlo; i miei progetti, fare da fautore dell'open-source, prendono il 110% del mio tempo. Persino se avessi potuto, l'hacking è un atteggiamento e un'abilità che fondamentalmente dovete apprendere da soli. Mentre i veri hacker vogliono aiutarvi, scoprirete che non vi rispetteranno se elemosinate di essere imboccati di tutto quello che sanno. Imparate alcune cose prima. Dimostrate che state provando, che siete capaci di apprendere da soli. Quindi chiedete agli hacker cose specifiche. Se scrivete ad un hacker chiedendo per un consiglio, ci sono due cose da sapere in anticipo. Primo, pensiamo che le persone che sono troppo pigre o disattente nei loro scritti sono normalmente troppo pigre e disattente nel pensare per diventare dei buoni hacker - quindi fate attenzione a scrivere correttamente, e ad usare la giusta grammatica ed i giusti segni di punteggiatura, altrimenti sarete probabilmente ignorati. Secondo, non osate chiedere di ottenere risposta su un account ISP diverso da quello da cui avete inviato; chi fa questo è generalmente un ladro che usa account rubati, e non abbiamo nessun interesse nel ricompensare o assistere i ladri. |
| D: | Da dove posso cominciare, allora? |
| R: |
Il modo migliore per partire probabilmente è andare ad un incontro di un LUG (Linux user group). Potete trovare molti gruppi su LDP General Linux Information Page; ce n'è probabilmente uno dalle vostre parti, possibilmente associato con un college o un'università. I membri del LUG probabilmente vi forniranno Linux su vostra richiesta, e certamente vi aiuteranno ad istallarne uno e a iniziare. |
| D: | Quando hai cominciato? È troppo tardi per me per imparare? |
| R: |
Qualunque età alla quale vi sentiate motivati a cominciare è una buona età. Sembra che la maggior parte delle persone siano interessate tra i 15 e i 20 anni, ma conosco eccezioni in entrambi i sensi. |
| D: | Quanto tempo mi ci vorrà per imparare a fare dell'hacking? |
| R: |
Dipende dal talento che possedete e da quanto ci lavorerete duramente. La maggior parte delle persone riescono ad acquisire un insieme di abilità rispettabile tra i diciotto mesi e i due anni, se si concentrano. Non pensate che finisca qui, comunque; nell'hacking (così come in tanti altri campi) sono necessari dieci anni circa per diventare dei maestri. Se siete dei veri hacker, passerete il resto della vostra vita imparando e perfezionando le vostre capacità. |
| D: | Il Visual Basic è un buon linguaggio da cui iniziare? |
| R: |
Se fate questa domanda, quasi certamente significa che state pensando di fare dell'hacking sotto Microsoft Windows. È un'idea sbagliata in sé. Quando ho paragonato il cercare di fare dell'hacking sotto Windows con il cercare di imparare a ballare portando il gesso, non stavo scherzando. Non fatelo. È orribile, e non smetterà di esserlo. C'è un problema particolare con il Visual Basic; principalmente non è portabile. Benché esista un'implementazione open-source ancora in fase di prototipo del Visual Basic, gli standard ECMA applicabili non coprono più di un piccolo insieme delle sue interfacce di programmazione. Sotto Windows la maggior parte delle librerie è di proprietà di una singola azienda (Microsoft); se non sarete estremamente attenti riguardo alle funzionalità che userete - più attenti di quanto ogni principiante sia realmente capace di essere - finirete rinchiusi nelle piattaforme che la Microsoft sceglierà di supportare. Se state cominciando con Unix, sono disponibili linguaggi di gran lunga migliori, con migliori librerie. Python, per esempio. In più, come gli altri Basic, il Visual Basic è un linguaggio mal progettato che vi insegnerà cattive abitudini di programmazione. No, non chiedetemi di descriverle in dettaglio; queste spiegazioni potrebbero riempire un libro. Imparate un linguaggio ben progettato invece. Una di queste cattive abitudini è diventare dipendente da un singolo venditore di librerie, widget, e strumenti di sviluppo. In generale, ogni linguaggio che non sia totalmente supportato almeno sotto Linux o uno dei sistemi BSD, e/o almeno da tre diversi venditori di sistemi operativi, è una scelta infelice per imparare a fare dell'hacking. |
| D: | Mi aiuteresti a crackare un sistema, o mi insegnerai a farlo? |
| R: |
No. Chiunque ancora mi chieda una cosa del genere dopo aver letto questa FAQ è troppo stupido per essere educato anche se avessi del tempo per fare da tutore. Ogni richiesta di questo tipo sarà ignorata o otterrà una risposta estremamente rude. |
| D: | Come posso ottenere la password dell'account di qualcun altro? |
| R: |
Questo è fare del cracking. Vai via, idiota. |
| D: | Come posso entrare nel/leggere/controllare le email di qualcun altro? |
| R: |
Si tratta di cracking. Sperditi, imbecille. |
| D: | Come posso rubare un canale o dei privilegi sul sistema IRC? |
| R: |
È cracking. Vattene, cretino. |
| D: | Sono stato crackato. Mi aiuteresti a sventare ulteriori attacchi? |
| R: |
No. Finora, ogni volta che mi è stata fatta questa domanda, era da qualche poveraccio con Microsoft Windows. Non è possibile rendere realmente sicuri i sistemi Windows contro gli attacchi dei cracker; il codice e l'architettura hanno semplicemente troppe falle, che fanno si che rendere sicuro Windows sia come buttare fuori l'acqua da una barca con un setaccio. L'unica prevenzione affidabile è passare a Linux o a qualche altro sistema operativo che sia stato progettato almeno tenendo conto della sicurezza. |
| D: | Sto avendo problemi con i software per Windows. Mi aiuteresti? |
| R: |
Certo. Apri il prompt di MSDOS e scrivi "format c:". Qualunque problema stiate avendo cesserà in pochi minuti. |
| D: | Dove posso trovare dei veri hacker con cui parlare? |
| R: |
Il modo migliore è cercare un Unix/Linux user group dalle vostre parti e andare ai loro incontri (potete trovare dei collegamenti a svariate liste di gruppi sul sito LDP su ibiblio). (Ero solito dire che non avreste trovato un vero hacker su IRC, ma mi è dato capire che le cose stanno cambiando. Apparentemente alcune comunità di veri hacker, collegate a cose come GIMP e Perl, hanno dei canali IRC oggigiorno). |
| D: | Potresti consigliare dei libri utili sui temi relativi all'hacking? |
| R: |
Curo una Linux Reading List HOWTO (Lista di Letture su Linux) che potreste trovare utile. Anche il Loginataka (traduzione italiana su CulturaHacker.it: Il Loginataka) potrebbe essere interessante. Per un'introduzione al Python, guardate il materiale introduttivo sul sito del progetto Python. |
| D: | Devo essere bravo in matematica per essere un hacker? |
| R: |
No. Durante l'hacking si usa poca matematica o aritmetica formale. In particolare, non dovreste aver bisogno della trigonometria, del calcolo o dell'analisi (ci sono eccezioni in alcune aree specifiche come la computer grafica 3-D). Conoscere un po' di logica e di algebra Booleana e' cosa buona. Delle basi in matematica finita (inclusa la teoria degli insiemi finiti, calcolo combinatorio, e teoria dei grafi) possono aiutare. Molto più importante: dovrete essere capaci di pensare logicamente e seguire catene di ragionamenti esatti, quello che fanno i matematici. Mentre i contenuti della maggior parte della matematica non vi saranno di aiuto, avrete bisogno della disciplina e dell'intelligenza per maneggiare la matematica. Se mancate di intelligenza, ci sono ben poche speranze per voi di diventare hacker; se mancate di disciplina, fareste meglio a svilupparla. Un buon metodo per capire se avete ciò di cui avete bisogno è prendere una copia del libro di Raymond Smullyan What Is The Name Of This Book? (Qual È Il Nome Di Questo Libro?). I divertenti enigmi logici di Smullyan sono intrisi dello spirito hacker. Essere capaci di risolverli è un buon segno; divertirsi nel risolverli è un segno ancora migliore. |
| D: | Quale linguaggio dovrei imparare per primo? |
| R: |
XHTML (l'ultimo dialetto dell'HTML) se non lo conoscete ancora. Ci sono un mucchio di libri patinati, intensivi, cattivi sull'HTML, e penosamente pochi buoni. Quello che preferisco di più è HTML: The Definitive Guide (HTML: La Guida Definitiva). Comunque l'HTML non è un vero e proprio linguaggio di programmazione. Quando siete pronti per iniziare a programmare, vi raccomando di partire con Python. Sentirete molte persone che vi raccomandano Perl, e il Perl è ancora più popolare del Python, ma è più difficile da imparare e (secondo me) progettato meno bene. Il C è veramente importante, ma è anche molto più difficile del Python o del Perl. Non cercate di impararlo come primo linguaggio. Utenti di Windows, non vi fossilizzate su Visual Basic. Vi insegnerà cattive abitudini, e non è portabile al di fuori di Windows. Evitatelo. |
| D: | Di che tipo di hardware ho bisogno? |
| R: |
Un tempo i personal computer avevano scarsa potenza e memoria, abbastanza da porre limiti artificiali al processo di apprendimento degli hacker. Tutto ciò ha cessato di essere vero verso la metà degli anni '90; ogni macchina a partire dall'Intel 486DX50 è potente abbastanza per il lavoro di sviluppo, per X, e per le comunicazioni via Internet, e il disco più piccolo che potete comprare oggi è più che abbondante. La cosa importante quando scegliete una macchina su cui imparare è se il suo hardware è compatibile con Linux (oppure con BSD, se scegliete questa strada). Ancora, questo è vero per quasi tutte le macchine moderne. Le uniche aree veramente problematiche sono i modem e gli strumenti per il wireless; alcune macchine hanno hardware specifico per Windows che non funzionerà con Linux. C'è una FAQ sulle compatibilità hardware; l'ultima versione la trovate qui. |
| D: | Vorrei contribuire. Mi aiuteresti a scegliere un problema su cui lavorare? |
| R: |
No, perché non conoso il vostro talento o i vostri interessi. Dovete essere auto-motivati o fallirete, motivo per cui avere altre persone che scelgono per voi quasi sempre non funziona. Provate a fare così. Date uno sguardo agli annunci di progetti su Freshmeat per alcuni giorni. Quando ne vedete uno che vi fa pensare "Interessante! Mi piacerebbe lavorarci su", aggregatevi. |
| D: | Devo odiare e colpire la Microsof? |
| A: |
No, non dovete. Non che la Microsoft non sia disgustosa, ma c'era una cultura hacker di vecchia data prima della Microsoft e ce ne sarà ancora una quando la Microsoft sarà storia. Le energie che sprecherete odiando la Microsoft sarebbero spese meglio amando i vostri interessi. Scrivete buon codice - che colpirà sufficientemente la Microsoft senza inquinare il vostro karma. |
| D: | Il software open-source non impedisce ai programmatori di guadagnarsi da vivere? |
| R: |
Non pare probabile - finora le industrie di software open-source sembra stiano creando posti di lavoro invece di perderli. Se avere un programma scritto è un guadagno economico netto rispetto al non averlo, un programmatore sarà pagato sia se il programma diventerà open-source dopo che è stato fatto sia se questo non accade. E, non importa quanto software free viene scritto, ci sarà sempre domanda per applicazioni nuove e personalizzate. Ho scritto di più su quest'argomento sulle pagine dell'Open Source. |
| D: | Dove posso ottenere una versione libera di Unix? |
| R: |
Se non avete ancora Unix istallato sulla vostra macchina, altrove su questa pagina ho incluso vari collegamenti a siti da cui è possibile ottenere le versioni più utilizzate. Per essere un hacker avrete bisogno di motivazione e iniziativa e dell'abilità di educare voi stessi. Adesso si comincia ... |
