Come curatore dello Jargon File e autore di pochi altri (ma ben conosciuti) documenti di questo genere, spesso ricevo delle richieste via email da parte di entusiasti principianti della rete che mi chiedono (praticamente) "come posso diventare un mago dell'hacking?". Poiché, singolarmente, non sembra esserci alcun'altra FAQ o documento web che affronti questa vitale questione, ecco qua il mio.

Se stai leggendo questo documento offline, o una sua traduzione, la versione corrente si trova all'indirizzo: http://www.tuxedo.org/~esr/faqs/hacker-howto.html.

Nota: c'è una lista di Frequently Asked Questions alla fine di questo documento. Per favore leggila due volte prima di mandarmi qualsiasi richiesta relativa a questo documento.

Sono anche disponibili numerose traduzioni di questo documento: Bulgarian, Catalan, Chinese (Simplified), Chinese (Traditional), Danish, Dutch, French, German, Hebrew, Hungarian, Indonesian, Italian, Japanese, Korean, Portuguese (Brazilian), Portuguese (European), Russian, e Swedish. Considera che poiché questo documento viene talvolta modificato, esse potrebbero essere anche abbastanza superate.

Lo Jargon File contiene una quantità di definizioni del termine 'hacker', molte delle quali hanno a che fare con l'attitudine tecnica e il piacere di risolvere problemi e superare limiti. Se vuoi sapere comediventare un hacker, comunque, solo due definizioni solo realmente rilevanti.

Esiste una comunità, una cultura condivisa, di programmatori esperti e maghi della rete per rintracciare le origini della quale dobbiamo andare indietro di decenni, fino ai tempi dei primi minicomputer funzionanti in time-sharing o degli iniziali esperimenti con ARPAnet. I membri originari di questa comunità crearono il termine 'hacker'. Gli hacker hanno costruito Internet. Gli hacker hanno portato il sistema operativo Unix a quello che esso oggi è diventato. Gli hacker hanno dato l'avvio a Usenet e al lavoro per il World Wide Web. Se fai parte di questa cultura, se hai contribuito ad essa e altre persone che ne fanno parte ti conoscono e ti chiamano hacker, allora sei un hacker.

La predisposizione mentale di un hacker non è confinata a quest'unico ambito. Ci sono persone che applicano la propria attitudine hacker ad altre cose, come l'elettronica o la musica - e puoi trovarle ai più alti livelli di qualsiasi scienza o arte. Gli hacker del software riconoscono ovunque queste anime affini e le possono anche definire 'hacker' - e qualcuno sostiene che la natura hacker sia realmente indipendente dal particolare mezzo con il quale l'hacker si esprime. Tuttavia, nel resto di questo documento, noi focalizzeremo l'attenzione sulle capacità e sugli atteggiamenti degli hacker del software, e sulle tradizioni di quella cultura condivisa che ha originato il termine 'hacker'.

C'è un altro gruppo di persone che ad alta voce si proclamano hacker, ma non lo sono. Queste sono persone (principalmente adolescenti maschi) che provano piacere a penetrare nei computer e a compiere azioni di phreaking al sistema telefonico. I veri hacker li chiamano 'cracker' e non vogliono avere nulla a che fare con loro. I veri hacker, per lo più, pensano che i cracker siano pigri, irresponsabili e non troppo svegli, e obiettano che essere capaci di violare la sicurezza informatica non ti fa hacker più di quanto essere in grado di scassinare macchine ti faccia diventare ingegnere meccanico. Sfortunatamente, molti giornalisti e scrittori sono stati fuorviati nell'usare il termine 'hacker' per descrivere i cracker, e questo irrita infinitamente i veri hacker.

La differenza fondamentale è questa: gli hacker costruiscono le cose, i cracker le rompono.

Se vuoi diventare un hacker, continua a leggere. Se vuoi diventare un cracker, vai a leggere il newsgroup alt.2600 e sii pronto a passare da cinque a dieci anni in prigione dopo aver scoperto che non sei così intelligente quanto pensi di essere. E questo è tutto quello che avevo intenzione di dire riguardo ai cracker.

Gli hackers risolvono problemi e costruiscono cose, e credono nella libertà e nell'aiuto reciproco. Per essere accettato come hacker, devi comportarti come se anche tu avessi questo tipo di atteggiamento. E per comportarti come se avessi questo atteggiamento, devi crederci con convinzione.

Ma se pensi che coltivare l'atteggiamento da hacker sia semplicemente un modo per ottenere l'accettazione nella comunità, non hai colto il punto fondamentale. Diventare il tipo di persona che crede in queste cose è importante soprattutto perte stesso - per aiutarti a imparare e per mantenerti motivato. Come per tutte le arti creative, la maniera più efficace per diventare un maestro è adottare l'atteggiamento mentale dei maestri - non solo dal punto di vista intellettuale ma anche da quello emozionale.

Come dice il seguente poema Zen moderno,

Pertanto, se vuoi essere un hacker, ripeti le seguenti cose finché non credi in loro:

L'attitudine hacker è vitale, ma le capacità lo sono ancora di più. L'attitudine non è un sostituto della competenza, e c'è un insieme di capacità di base che devi avere prima che qualsiasi hacker si sogni di chiamarti tale.

Questo bagaglio di conoscenze cambia lentamente nel tempo, man mano che la tecnologia crea nuove abilità e ne rende obsolete altre. Per esempio, esso in genere include la programmazione in linguaggio macchina e solo di recente richiede l'HTML. Al momento attuale il bagaglio di conoscenze di base prevede quanto segue:

Questa, ovviamente, è la capacità fondamentale dell'hacker. Se non conosci alcun linguaggio di programmazione, ti suggerisco di iniziare con Python. È progettato in maniera chiara, ben documentato e abbastanza adatto ai principianti. Malgrado sia un buon linguaggio con il quale cominciare, non è proprio un giocattolo; è molto potente e flessibile e adatto anche a grandi progetti. Ho scritto una più dettagliata recensione su Python. Dei buoni manuali sono disponibili sul sito web di Python.

Anche Java è un buon linguaggio per imparare a programmare. È più difficile di Python, ma produce un codice più veloce rispetto a Python. Lo ritengo un eccellente secondo linguaggio.

Ma devi essere conscio che non raggiungerai i livelli di abilità di un hacker o più semplicemente di un programmatore se conosci solamente uno o due linguaggi - hai bisogno di imparare a pensare ai problemi legati alla programmazione in maniera più generale, indipendentemente dal linguaggio specifico. Per essere un vero hacker, hai bisogno di arrivare al punto di poter apprendere un nuovo linguaggio in pochi giorni semplicemente confrontando il manuale con quanto già sai. Questo significa che dovrai imparare parecchi linguaggi differenti tra loro.

Se vuoi dedicarti seriamente alla programmazione, dovrai imparare il C, il linguaggio cardine di Unix. Il C++ è molto vicino al C; se già ne conosci uno, non ti sarà difficile imparare l'altro. Nessuno di questi due linguaggi, comunque, è adatto per iniziare ad imparare. E, al momento, quanto più riesci a evitare di programmare in C tanto più sarai produttivo.

Il C è veramente efficiente, e utilizza al meglio le risorse della macchina. Sfortunatamente, C fornisce questa efficienza in cambio di una notevole mole di lavoro manuale per la gestione delle risorse (quali la memoria) ad un basso livello. Tutta la programmazione di basso livello è complessa e soggetta a bug, e ti richiederà un'enorme quantità di tempo per il debugging. Con le odierne macchine, così potenti, questo in genere rappresenta un cattivo compromesso - è più conveniente utilizzare un linguaggio che impiega in maniera meno efficiente il tempo della macchina ma che impiega più efficacemente il tuo tempo. Ad esempio, Python.

Altri linguaggi di particolare importanza per gli hacker sono Perl e LISP. Perl è degno di essere appreso per ragioni pratiche; è largamente utilizzato per costruire pagine web dinamiche e per l'amministrazione di sistema; così, anche se non dovrai mai scrivere in Perl, dovresti imparare almeno a leggerlo. Molte persone usano Perl nella maniera in cui io suggerisco di usare Python, per evitare di programmare in C quei lavori che non richiedono l'efficienza della macchina che C fornisce. Avrai bisogno di essere in grado di capire il loro codice.

LISP è da imparare per un altro motivo: la profonda e illuminante esperienza che proverai quando finalmente riuscirai a farlo tuo. Questa esperienza ti renderà un programmatore migliore per il resto dei tuoi giorni, anche se non lo utilizzerai poi molto. (Puoi procurarti qualche esperienza iniziale con LISP in maniera abbastanza semplice realizzando e modificando le modalità di editing per l'editor di testo Emacs.)

È meglio, addirittura, imparare tutti questi cinque linguaggi (Python, Java, C/C++, Perl e LISP). Oltre che essere i linguaggi più importanti per l'hacking, essi rappresentano approcci molto differenti alla programmazione, e ognuno ti educherà in maniera preziosa.

Non posso fornire qui delle istruzioni complete su come imparare a programmare - è un compito complesso. Ma posso dirti che libri e corsi vari non te lo insegnano (molti, forse la maggior parte dei migliori hacker è autodidatta). Puoi imparare le caratteristiche dei linguaggi - frammenti di conoscenza - dai libri, ma l'approccio mentale che trasforma quella conoscenza in reali capacità può essere appreso solo mediante la pratica e l'apprendistato. Ciò che devi fare è (a) leggere codice e (b) scrivere codice.

Imparare a programmare è come imparare a scrivere bene nel linguaggio nativo. Il miglior modo per farlo è leggere del materiale scritto dai maestri della forma, scrivere qualcosa per conto proprio, leggere molto di più, scrivere qualcosa in più, leggere molto di più, scrivere qualcosa in più... e ripetere il tutto finché la tua scrittura inizia a sviluppare la forza e l'economia che vedi nei tuoi modelli.

Una volta, trovare del buon codice da leggere era un'impresa ardua, poiché esistevano ben pochi programmi disponibili anche sotto forma di codice sorgente, a disposizione degli hacker per la lettura e la manipolazione. Tutto ciò è cambiato radicalmente; software open-source, strumenti per la programmazione e sistemi operativi (tutti costruiti da hacker) sono oggi largamente disponibili. Questo mi porta al prossimo argomento...

Sto assumendo che tu abbia un personal computer o che possa averne accesso (questi giovani d'oggi lo ottengono facilmente :-)). L'unico passo importante che un principiante possa compiere per acquisire delle capacità da hacker è procurarsi una copia di Linux o di uno degli Unix BSD, installarlo sulla propria macchina ed utilizzarlo.

Certo, ci sono altri sistemi operativi al mondo oltre a Unix. Ma sono distribuiti solo in forma di file binari - non puoi leggerne il codice sorgente e non puoi neppure modificarlo. Imparare l'hacking su macchine DOS o Windows o MacOS è come cercare di imparare a ballare mentre si è ingessati.

In ambiente OS/X questo è possibile, ma solo una parte del sistema è open source: sei sempre sul punto di urtare qualche muro, e devi fare attenzione a non sviluppare la cattiva abitudine di dipendere dal codice proprietario di Apple. Se ti concentri su Unix senza distrarti puoi imparare alcune utili cose.

Unix è il sistema operativo di Internet. Sebbene tu possa imparare ad utilizzare Internet senza conoscere Unix, non puoi essere un hacker di Internet senza capire Unix. Per questa ragione, la cultura hacker oggi è fortemente centrata su Unix. (Questo non è sempre stato vero, e alcuni hacker dei tempi andati non ne sono molto contenti, ma la simbiosi tra Unix e Internet è diventata forte abbastanza che neppure i muscoli della Microsoft sembrano in grado di rappresentare una seria minaccia.)

Pertanto, procurati un sistema Unix - io amo Linux, ma ci sono altre scelte (è vero, puoi anche far girare DOS/Windows e Linux sulla stessa macchina). Impara ad usarlo. Fallo girare. Armeggiaci sopra. Usalo per connetterti a Internet. Leggine il codice sorgente e modificalo. Avrai a disposizione i migliori strumenti di programmazione (incluso C, LISP, Python e Perl) che qualsiasi sistema operativo della Microsoft possa mai sognarsi di ospitare, ti divertirai, acquisirai più conoscenza di quanto saprai rendertene conto, finché non lo guarderai con gli occhi di un maestro hacker.

Per altre informazioni sull'apprendimento di Unix, vedi The Loginataka.

Per mettere le mani su Linux, vedi Where can I get Linux.

Puoi trovare aiuto e risorse relative a Unix BSD presso www.bsd.org.

Ho scritto anche un'introduzione alle basi di Unix e Internet.

(Nota: se sei un principiante non ti consiglio di installare Linux o BSD da solo. Per Linux, trova un Linux User Group nella tua zona e chiedi aiuto a loro oppure contatta l'Open Projects Network. LISC mantiene dei canali IRC dove puoi ottenere aiuto.)

Come molte culture prive di un'economia di mercato, l'universo hacker orbita attorno alla reputazione. Tu stai tentando di risolvere interessanti problemi, ma per quanto interessanti siano, e benché le tue soluzioni siano veramente il massimo, è un dato di fatto che solo le persone con la tua stessa preparazione tecnica o superiore sono in grado di apprezzarlo.

Coerentemente con questo, quando giochi il ruolo dell'hacker, impari a fare attenzione innanzitutto a cosa gli altri hacker pensano delle tue capacità (e questo perché non sei veramente un hacker finché gli altri hacker non ti chiamano tale). Questo fatto è messo in ombra dall'immagine dell'hacking come un lavoro solitario; e anche da un tabù della cultura hacker (oggi gradualmente in declino ma ancora consistente) contro il voler ammettere che l'ego o l'essere ben considerati dagli altri contribuiscano ad alimentare le proprie motivazioni.

Nello specifico, l'universo hacker è ciò che gli antropologi chiamano cultura del talento. In essa guadagni posizione sociale e reputazione non dominando altre persone o grazie alla bellezza o possedendo beni che altri vorrebbero, ma piuttosto donando cose. In particolare, donando il tuo tempo, la tua creatività e i risultati della tua abilità.

Principalmente, ci sono cinque tipi di cose che puoi fare per essere rispettato dagli altri hacker:

Contrariamente al luogo comune, non hai bisogno di essere un nerd per essere un hacker. Ti può aiutare, comunque, e molti hacker sono effettivamente dei nerd. Essere estraneo ai rapporti sociali ti aiuta a rimanere concentrato sulle cose veramente importanti, quali il pensiero e l'hacking.

Per questa ragione, molti hacker hanno adottato l'etichetta 'nerd' e utilizzano anche il termine 'geek' con orgoglio: è una maniera di dichiarare la propria indipendenza dalle normali aspettative sociali. Vedi The Geek Page per una discussione più ampia.

Se riesci ad organizzarti in modo da concentrarti abbastanza sull'hacking tanto da diventare bravo e avere ancora una vita normale, è perfetto. Questo è oggi molto più facile di quanto lo fosse negli anni '70, quando io ero un hacker; la cultura ufficiale è molto più amichevole con i techno-nerd al giorno d'oggi. C'è anche un numero crescente di persone che ritiene che gli hacker siano spesso degli ottimi amanti e buoni da sposare.

Se sei attratto dall'hacking perché non hai una vita sociale, va bene comunque - almeno non avrai problemi di concentrazione. Forse avrai una tua vita più avanti.

Ancora, per essere un hacker, devi avere la mentalità dell'hacker. Ci sono alcune cose che puoi fare quando non sei davanti al computer che sembrano essere utili. Non sono sostituti dell'hacking (niente lo è), ma molti hacker le fanno e sentono che in qualche modo esiste un legame tra queste e l'essenza dell'hacking.

Quante più di queste cose già fai, maggiore è la tua predisposizione naturale per diventare un hacker. Il perché di queste cose in particolare non è del tutto chiaro, esse sono tuttavia connesse in un intreccio di capacità della parte destra - e sinistra - del cervello che sembra essere importante; gli hacker hanno bisogno di essere in grado sia di ragionare in maniera logica, sia, al momento opportuno, di mantenersi estranei alla logica apparente di un problema.

Lavora così intensamente come quando ti diverti, e divertiti così intensamente come quando lavori. Per i veri hacker, i confini tra "gioco", "lavoro", "scienza" e "arte" tendono a scomparire, o a confondersi in un gioioso momento creativo di alto livello. Inoltre, non ritenerti soddisfatto di un limitato campo di conoscenze. Sebbene la maggior parte degli hacker si definiscano programmatori, probabilmente sono più che competenti in numerose attività correlate: amministrazione di un sistema, web design e risoluzione dei problemi hardware sono le più comuni. Un hacker che sia anche un amministratore di sistema, d'altra parte, è indotto ad essere particolarmente competente nella programmazione di script e nel web design. Gli hacker non fanno le cose con superficialità; se si impegnano a fondo in un settore, tendono a diventare molto bravi.

Infine, alcune cose da non fare.

L'unica reputazione che otterrai facendo una qualsiasi di queste cose è quella del cretino. Gli hackers hanno una memoria di ferro, e potrebbero volerci degli anni per essere riaccettato.

La questione dei nickname o dei soprannomi richiede un approfondimento. Nascondere la propria identità dietro un soprannome è una stupida ed infantile caratteristica di crackers, warez d00dz ed altre forme inferiori di vita. Gli hacker non fanno questo. Loro sono orgogliosi di ciò che fanno e vogliono che venga associato al loro vero nome. Pertanto, se usi un soprannome eliminalo. Nella cultura hacker esso ti identificherebbe come un perdente.

Peter Seebach mantiene un eccellente Hacker FAQ per manager che non capiscono come trattare con gli hacker. Se il sito di Peter non dovesse risultare attivo, la seguente ricerca con Excite dovrebbe trovarne una copia.

Io ho scritto anche A Brief History Of Hackerdom.

Ho poi scritto un documento, The Cathedral and the Bazaar, che spiega parecchie cose su come funzionano Linux e la cultura open-source. Ho affrontato questo argomento ancora più direttamente nel suo seguito Homesteading the Noosphere.

Rick Moen ha scritto un eccellente documento su come gestire un Linux user group.

Rick Moen ed io abbiamo lavorato assieme ad un altro documento su Come Porre Domande Intelligenti. Questo ti aiuterà a cercare assistenza in un modo che la farà diventare più piacevole di quanto attualmente sia.

Se hai bisogno di un insegnamento di base su come funzionano i personal computer, Unix e Internet, consulta The Unix and Internet Fundamentals HOWTO.

Quando realizzi software o scrivi correzioni di software, cerca di seguire le linee guida contenute in Software Release Practice HOWTO.

Q: Mi insegnerai a fare dell'hacking?
Q: Come posso iniziare, allora?
Q: Quando si dovrebbe iniziare? È troppo tardi per me?
Q: Quanto tempo ci impiegherò ad imparare?
Q: Visual Basic o C# sono buoni linguaggi per iniziare?
Q: Potresti aiutarmi a violare un sistema o insegnarmi come fare?
Q: Come posso ottenere la password per un account di qualcun altro?
Q: Come posso introdurmi/leggere/sorvegliare la posta di qualcun altro?
Q: Come posso rubare canali o privilegi su IRC?
Q: Sono stato crackato. Mi aiuterai a difendermi dagli attacchi futuri?
Q: Sto avendo problemi con il software di Windows. Mi aiuterai?
Q: Dove posso trovare dei veri hacker con cui parlare?
Q: Puoi consigliarmi dei validi libri su argomenti relativi all'hacking?
Q: Ho bisogno di essere bravo in matematica per diventare un hacker?
Q: Quale linguaggio dovrei imparare per primo?
Q: Quale tipo di hardware mi occorre?
Q: Voglio contribuire. Puoi aiutarmi ad ottenere un problema su cui lavorare?
Q: Ho bisogno di odiare e combattere Microsoft?
Q: Ma non è possibile che il software open-source renda i programmatori incapaci di crearsi una posizione?
Q: Come posso iniziare? Dove posso ottenere uno Unix gratuito?
Q:

Mi insegnerai a fare dell'hacking?

A:

Fin dalla prima pubblicazione di questo documento, ho ricevuto numerose richieste ogni settimana (spesso molte al giorno) da persone che mi chiedevano "insegnami tutto sull'hacking". Sfortunatamento non ho il tempo né l'energia per fare questo; i miei progetti personali di hacker, e i viaggi in veste di sostenitore dell'open-source, occupano il 110% del mio tempo.

Ma anche se lo facessi, l'hacking è un'attitudine e una capacità che, fondamentalmente, devi imparare da solo. Ti accorgerai che nonostante i veri hacker vogliano aiutarti, non avranno alcun rispetto per te se chiedi loro di essere imboccato di tutto ciò che sanno.

Impara prima alcune cose. Mostra che ci stai provando e che sei in grado di imparare da solo. Infine rivolgiti agli hacker con domande specifiche.

Se invii una richiesta di aiuto ad un hacker, devi avere presente due cose. Primo, abbiamo notato che le persone pigre o negligenti nello scrivere di solito sono anche troppo pigre e negligenti nel pensare per poter diventare buoni hacker: per questo, abbi cura di usare un linguaggio appropriato, una grammatica corretta e una buona punteggiatura, in caso contrario sarai probabilmente ignorato. Secondo, non richiedere una risposta presso un account diverso da quello dal quale stai scrivendo; le persone che fanno questo sono di solito dei ladri che stanno usando account rubati, e non abbiamo alcuna intenzione di aiutarli.

Q:

Come posso iniziare, allora?

A:

La maniera per te migliore di iniziare probabilmente sarebbe quella di andare ad un raduno di un LUG (Linux user group). Puoi trovare molti gruppi nella LDP General Linux Information Page; probabilmente ce n'è uno nella tua zona, se possibile, associato con un college o una università. I membri del LUG probabilmente ti daranno una copia di Linux se gliela chiedi e di sicuro ti aiuteranno ad installarlo e cominciare ad usarlo.

Q:

Quando si dovrebbe iniziare? È troppo tardi per me?

A:

Qualsiasi età alla quale ti senti motivato per partire è una buona età. La maggior parte delle persone sembrano divenire interessati tra i 15 e i 20 anni, ma conosco eccezioni in entrambe le direzioni.

Q:

Quanto tempo ci impiegherò ad imparare?

A:

Questo dipende da quanto talento hai e quanto duramente lavori. La maggior parte delle persone, se si impegna, è in grado di acquisire capacità del tutto rispettabili entro 18-24 mesi. Non pensare comunque che finisca lì; se sei un vero hacker, passerai il resto della tua vita imparando e perfezionando quanto sai.

Q:

Visual Basic o C# sono buoni linguaggi per iniziare?

A:

No, perché non sono portabili. Non ci sono versioni open-source di questi linguaggi, per cui saresti vincolato a quelle sole piattaforme che i produttori decidono di supportare. Accettare questo tipo di monopolio non è un modo di agire da hacker.

Visual Basic è, in particolar modo, terribile. Il fatto che sia un linguaggio proprietario della Microsoft è già abbastanza per declassarlo, e al pari degli altri Basic è un linguaggio progettato in maniera scadente che ti insegna cattive abitudini di programmazione.

Una di queste cattive abitudini è diventare dipendenti da un unico produttore di librerie, widgets e tool di sviluppo. In generale, qualsiasi linguaggio che non sia supportato almeno sotto Linux o qualche Unix BSD, e/o da almeno tre diversi fornitori di sistemi operativi, è una cosa scadente per imparare l'hacking.

Q:

Potresti aiutarmi a violare un sistema o insegnarmi come fare?

A:

No. Chiunque possa ancora porre una domanda del genere dopo aver letto questa FAQ è troppo stupido per essere educato anche se io avessi il tempo per l'insegnamento. Ogni richiesta di questo tenore che mi arriverà via e-mail, sarà ignorata o riceverà una replica di estrema durezza.

Q:

Come posso ottenere la password per un account di qualcun altro?

A:

Questo è cracking. Vai via, idiota.

Q:

Come posso introdurmi/leggere/sorvegliare la posta di qualcun altro?

A:

Questo è cracking. Sparisci, deficiente.

Q:

Come posso rubare canali o privilegi su IRC?

A:

Questo è cracking. Vai via, cretino.

Q:

Sono stato crackato. Mi aiuterai a difendermi dagli attacchi futuri?

A:

No. Tutte le volte che mi è stata posta, questa domanda proveniva da qualche povero sfigato che utilizzava Microsoft Windows. Non è possibile rendere realmente sicuri i sistemi Windows contro gli attacchi informatici; semplicemente perché il codice e l'architettura hanno troppe lacune, che rendono l'operazione di rendere sicuro Windows simile a cercare di svuotare una nave con un secchio. La sola prevenzione possibile consiste nel passare a Linux o a qualche altro sistema operativo progettato quanto meno per offrire sicurezza.

Q:

Sto avendo problemi con il software di Windows. Mi aiuterai?

A:

Si. Vai al prompt del DOS e digita "format c:". Qualunque problema ti sia capitato scomparirà in pochi minuti.

Q:

Dove posso trovare dei veri hacker con cui parlare?

A:

Il modo migliore è trovare un gruppo di utenti Unix o Linux nella tua zona e andare ai loro incontri (puoi trovare i link a numerosi elenchi di tali gruppi sul sito LDP presso il Metalab).

(A questo punto ero solito dire che non troverai alcun vero hacker su IRC, ma mi sembra di capire che qualcosa stia cambiando. Alcune comunità di hacker, legate a progetti come GIMP e Perl, ora hanno dei canali IRC.)

Q:

Puoi consigliarmi dei validi libri su argomenti relativi all'hacking?

A:

Io mantengo un Linux Reading List HOWTO che tu potresti trovare utile. Anche The Loginataka potrebbe essere interessante.

Per un'introduzione al linguaggio Python, consulta il materiale introduttivo sul sito di Python.

Q:

Ho bisogno di essere bravo in matematica per diventare un hacker?

A:

No. Sebbene tu debba essere capace di pensare in maniera logica e di seguire i passaggi di un ragionamento esatto, l'hacking usa molto poco la matematica formale o l'artimetica.

In particolare, non avrai bisogno della trigonometria, del calcolo infinitesimale o dell'analisi matematica (lasciamo questa roba agli ingegneri elettronici :-)). Alcune basi di matematica finita (compresa l'algebra Booleana, la teoria degli insiemi finiti, il calcolo combinatorio e la teoria dei grafi) potrebbero essere di aiuto.

Q:

Quale linguaggio dovrei imparare per primo?

A:

XHTML (il più recente dialetto dell'HTML) se ancora non lo conosci. Ci sono un sacco di enormi, lucenti e scadenti libri sull'HTML in giro e, dolorosamente, pochi buoni libri. Quello che io preferisco è HTML: The Definitive Guide.

Ma HTML non è un linguaggio di programmazione completo. Quando sarai pronto a programmare, ti raccomanderei di iniziare con Python. Sentirai molte persone raccomandarti Perl, e inoltre Perl è più popolare di Python, ma è più difficile da imparare e (a mio parere) è progettato meno bene.

Il linguaggio C è davvero importante, ma è anche molto più difficile sia di Python che di Perl. Non cercare di impararlo per primo.

Utenti di Windows, non optate per Visual Basic. Vi insegnerà cattive abitudini e non è portabile all'infuori di Windows. Evitatelo.

Q:

Quale tipo di hardware mi occorre?

A:

Era convinzione comune che i computer fossero sotto-dimensionati e poveri di memoria, tanto da imporre dei limiti artificiali ai progressi degli hacker. Questo ha cessato di essere vero tempo fa; qualsiasi macchina dall'Intel 486DX50 in su è potente abbastanza per lo sviluppo di software, per utilizzare X e connettersi a Internet, e i dischi più piccoli che puoi comprare oggi hanno spazio in abbondanza.

La cosa importante nello scegliere una macchina sulla quale imparare è verificare che il suo hardware sia Linux-compatibile (o BSD-compatibile, se hai scelto di seguire questa strada). Attualmente, ciò dovrebbe essere vero per la maggior parte delle macchine moderne; il solo campo che richiede attenzione è rappresentato dai modem; alcune macchine sono dotate di hardware specifico per Windows che non funziona con Linux.

C'è una FAQ sulla compatibilità hardware; la versione più recente è qui.

Q:

Voglio contribuire. Puoi aiutarmi ad ottenere un problema su cui lavorare?

A:

No, poiché non conosco le tue capacità e i tuoi interessi. Hai bisogno di essere auto-motivato altrimenti non ti applicherai, che è la ragione per la quale quando altre persone scelgono il tuo lavoro non funziona quasi mai.

Prova in questo modo. Controlla gli annunci dei progetti che si susseguono su Freshmeat per qualche giorno, quando ne vedi uno che ti fa pensare "Carino! Mi piacerebbe lavorare su questo!", allora sceglilo.

Q:

Ho bisogno di odiare e combattere Microsoft?

A:

No, non devi. Non che Microsoft non sia detestabile, ma esisteva una cultura hacker molto prima di Microsoft e ne esisterà ancora una molto dopo che Microsoft diventerà un ricordo. Ogni energia che tu spendi per odiare Microsoft potrebbe essere utilizzata in maniera migliore amando il tuo lavoro. Scrivi del buon codice - questo darà fastidio a sufficienza a Microsoft senza inquinare il tuo karma.

Q:

Ma non è possibile che il software open-source renda i programmatori incapaci di crearsi una posizione?

A:

Questo appare improbabile - finora l'industria del software open-source sembra creare posti di lavoro piuttosto che farne perdere. Se scrivere un programma produce una rendita economica, il programmatore sarà comunque pagato sia che questo diventi o meno open-source dopo essere stato realizzato. E non importa quanto software "free" venga scritto, sembra che ci sia sempre maggiore richiesta di applicazioni nuove e personalizzate. A tale proposito, ho scritto di più nelle pagine del sito Open Source.

Q:

Come posso iniziare? Dove posso ottenere uno Unix gratuito?

A:

Da qualche parte in questa pagina ho incluso i link verso i siti dove puoi trovare le più utilizzate versioni free di Unix. Per diventare un hacker, hai bisogno di motivazione, iniziativa e capacità di auto-educazione. Inizia ora ...