Naturalmente questa è la capacità fondamentale per l'hacking. Se non conoscete nessun linguaggio di programmazione vi suggerisco di iniziare con Python. E' progettato in modo chiaro, è ben documentato ed è relativamente agevole per i principianti. Nonostante sia un buon linguaggio per iniziare, non è un giocattolo; è molto potente e flessibile e ben adatto per grandi progetti. Ho scritto una valutazione più dettagliata su Python e ottimi tutorial sono disponibili nel sito web di Python.
Anche il Java è un buon linguaggio per imparare a programmare. E' più difficile di Python, ma produce un codice più veloce. Penso che possa essere un eccellente secondo linguaggio. Sfortunatamente, l'implementazione di riferimento della Sun è ancora proprietaria. Questo non è tanto un problema con linguaggio Java in se, visto che interpreti open-source Java di alta qualità sono già disponibili; il problema sono le librerie di classe che vanno di pari passo con il linguaggio. Infatti, le librerie di classe open-source sono, per forza di cose, in ritardo rispetto a quelle della Sun. Quindi, se scegliete di imparare il Java, fatelo con una delle implementazioni open-source pittosto che diventare dipendenti del codice proprietario della Sun.
Ma fate attenzione al fatto che non raggiungerete le capacità di un hacker, o più semplicemente di un programmatore, se imparerete soltanto uno o due linguaggi - avrete bisogno di imparare a pensare ai problemi di programmazione in senso generale, in modo indipendente dal particolare linguaggio. Per essere realmente un hacker dovrete arrivare al punto di poter apprendere un nuovo linguaggio in pochi giorni, mettendo in relazione quello che c'è nel manuale di riferimento con quanto già conoscete. Questo vuol dire che dovreste imparare svariati linguaggi differenti.
Se entrerete nella programmazione seriamente dovrete imparare il C, il linguaggio centrale di Unix. Il C++ è strettamente collegato al C e se conoscete uno dei due imparare l'altro non sarà difficile. Comunque non è un linguaggio da provare ad imparare come primo e, allo stato delle cose, più eviterete di programmare in C e più sarete produttivi.
Il C è molto efficente e risparmia molto le risorse della vostra macchina ma sfortunatamente il C raggiunge questa efficenza grazie ad una gestione manuale di basso livello delle risorse (come la memoria). Tutto questo codice di basso livello è complesso e incline ai bug, e succhierà grosse quantità del vostro tempo per il debugging. Con le potenti macchine di oggi questo è un pessimo scambio - è preferibile usare linguaggi che usano il tempo macchina meno efficentemente ma il vostro tempo molto più efficentemente. Quindi, Python.
Altri linguaggi di particolare importanza per gli hacker includono Perl e LISP. Il Perl vale la pena di impararlo per ragioni pratiche; è usato moltissimo nelle pagine web dinamiche e per l'amministrazione di sistema, quindi anche se non scriverete mai in Perl dovreste almeno imparare a leggerlo. Molte persone usano il Perl nel modo in cui io vi ho suggerito dovreste usare Python, per evitare la programmazione in C in lavori che non richiedono l'efficenza macchina che quest'ultimo offre. Dovrete essere in grado di capire il loro codice.
Il LISP è importante per una ragione differente: la profonda ed illuminante esperienza che avrete quando lo avrete appreso. Questa esperienza farà di voi un programmatore migliore per il resto dei vostri giorni, anche se attualmente non usate molto LISP.
(Potete acquisire una esperienza base con il LIPS semplicemente scrivendo e modificando i modi di editing per Emacs).
Attualmente è meglio imparare tutti e cinque i linguaggi, Python, C/C++, Java, Perl, e LISP. Oltre ad essere i linguaggi più importanti per l'hacking rappresentano approcci molto differenti alla programmazione e ognuno di essi vi educherà in modo diverso e considerevole.
In questa sede non posso dare istruzioni complete sul come imparare a programmare, è un problema complesso. Ma posso suggerirvi quei libri e quei corsi che certamente non lo faranno (molti, e forse la maggior parte dei migliori hacker sono autodidatti). Potete imparare le caratteristiche di un linguaggio - pezzetti di conoscenze - dai libri, ma la mentalità che fa vivere questa conoscenza nelle capacità di ognuno può essere appresa soltanto attraverso la pratica e l'apprendistato. Ciò che renderà possibile tutto ciò è (a) leggere codice, (b) scrivere codice.
Imparare a programmare è come imparare a scrivere bene ed in modo naturale. Il modo migliore di farlo è leggere qualcosa scritto da un maestro della forma, scrivere alcune cose da soli, leggere ancora qualcosa in più, scrivere ancora, leggere dell'altro, scrivere dell'altro...e ripetere tutto questo finché il vostro modo di scrivere non inizia a sviluppare il tipo di efficacia ed economia che apprezzate ed ammirate nei vostri modelli.
Trovare del buon codice da leggere era difficile un tempo, per i piccoli hacker c'erano pochi grossi programmi di cui era disponibile il sorgente per la lettura e con cui armeggiare. Tutto ciò è cambiato in modo drammatico; il software open-source, gli srumenti di programmazione e i sistemi operativi (tutto costruito dagli hacker) sono ora ampiamente disponibili. Il che mi porta ad introdurre il prossimo argomento.
by http://www.saltatempo.org/hacker/hacker_howto_it.php#1._Imparare_a_programmare.
grazie e al prox post
Nessun commento:
Posta un commento