
Siamo nell’età dell’oro del software, oggi come non mai si possono avere immediate possibilità se ci si lancia in questo grande mercato.
Nonostante le scarse probabilità di diventare i prossimi Larry Page e Sergey Brin, di fondare la nuova Google, se si è abbastanza interessati e motivati l’avventura può rivelarsi soddisfacente, diventare più di un hobby da fine settimana.
Con questo articolo vi voglio proporre quelle che secondo me sono le strade migliori da intraprendere per chi vuole iniziare a programmare, in base all’obiettivo di partenza.
I libri ai quali linkerò sono quelli che ho usato personalmente.
Prerequisiti
Non sono necessari dei veri e propri prerequisiti per iniziare a programmare, ma certe caratteristiche, se si vogliono ottenere risultati significativi, bisogna possederle.
Ciò che deve essere chiaro dal principio è ciò che ci motiva: genuina curiosità o voglia di fare soldi?
Se siete motivati da entrambe le cose bene, se solo dalla prima meglio, se solo dalla seconda arrendetevi in partenza, non farete altro che perdere tempo e beccarvi insulti.
Cosa significa programmare
Fondamentalmente quello che fa un programmatore è scrivere delle istruzioni in un linguaggio di programmazione che vengono compilate e rese comprensibili alla macchina sulla quale l’applicazione viene eseguita.
Esistono diversi linguaggi di programmazione che si differenziano per vari fattori, quelli su cui dovreste tenere un occhio, voi ipotetici novizi, sono:
- curva di apprendimento (quanto è “difficile” un dato linguaggio);
- piattaforme alle quali avrete accesso apprendendoli.
Visto che vi state avvicinando per la prima volta alla programmazione scegliere un linguaggio “difficile” potrebbe scoraggiarvi.
Linguaggi di basso livello e di alto livello
Quando poco fa ho scritto “difficile”, ho virgolettato il termine in quanto non tecnicamente corretto.
Esistono, in realtà , due tipi di linguaggi di programmazione: linguaggi di basso livello e linguaggi di alto livello.
I primi, quelli di basso livello, sono più distanti dalla logica umana e più vicini a quella binaria con la quale i computer si trovano effettivamente a lavorare. Sono linguaggi di basso livello, per esempio, l’Assembly e il C (anche se per il tempo in cui è stato concepito dall’ormai defunto Ritchie era di alto livello).
Questi ultimi hanno il vantaggio di essere estremamente più efficienti perché, mettiamola così, parlano un “dialetto” che richiede meno interpreti, più vicino alla vera lingua dei computer.
Se non avete mai programmato, vi sconsiglio di iniziare da linguaggi di basso livello.
Dovreste concentrare la vostra attenzione, invece, su linguaggi di più alto livello che risulteranno sicuramente più comprensibili e utilizzabili.
Sono linguaggi di alto livello Ruby, Python, Java.
Linguaggi e piattaforme
La vostra scelta deve considerate una seconda variabile oltre alla pendenza della “curva di apprendimento” che è la vostra piattaforma di “destinazione”.
Ebbene sì, se volete creare una web-app (applicazione alla quale si accede tramite il browser) ci sono dei linguaggi di programmazione per questo, se volete creare un’applicazione per Mac, iPhone o iPad dovete imparare qualcos’altro, così come per Windows e Android.
Se volete creare qualcosa di universale (nel mondo desktop) c’è Java, che è un linguaggio che viene “capito” su tutti i sistemi operativi al prezzo di essere poco efficiente e di dar vita ad applicazioni che non si avvicinano neanche lontanamente a quelle scritte coi linguaggi propri di ogni piattaforma.
Web
Questo è certamente il campo nel quale è più facile iniziare, dato che le conoscenze richieste sono le più facili da assimilare.
Dovete come prima cosa imparare l’HTML, potete farlo online o con un buon libro. Quest’ultimo non possiamo definirlo nemmeno linguaggio di programmazione, è semplicemente la sintassi che si usa per definire il contenuto di una pagina web: link, liste puntate, paragrafi.
Vi serve in quanto se dovete sviluppare una web-app sono questi gli elementi che avrete a disposizione per l’interfaccia.
Se vi appassionate al lato HTML della faccenda una rapida occhiata anche a CSS non vi farebbe male, dovrete comunque darla se decidete di sviluppare seriamente per il web.
Imparati questi potrete passare ai linguaggi di programmazione veri e propri, ce ne sono diversi fra cui scegliere:
- PHP
- Ruby
- Python
Questi elencati sono i principali, non i soli ovviamente. Personalmente conosco abbastanza bene il PHP e posso dirvi che non è difficilissimo iniziare con esso, però se potessi tornare indietro penso sceglierei di iniziare direttamente con Ruby, linguaggio di programmazione che invece sto approfondendo adesso.
Per farvi un’idea di Ruby potete leggere “Ruby in Venti Minuti” e provare quello che vi viene detto direttamente su linea di comando.
Inizialmente vi sfuggirà il collegamento fra Ruby e le web-app, ma una volta che avrete approfondito (magari con un buon libro) scoprirete che esiste Ruby on Rails che permette di sviluppare potenti web-app in modo molto semplice. Per farvi un idea Rails è stato usato per creare Basecamp, Twitter, Groupon e un’infinità di altri progetti.
Con i linguaggi che vi ho consigliato scriverete la logica che fa funzionare le vostre applicazioni lato server, per potere estendere invece l’esperienza utente e l’interfaccia vi toccherà imparare anche Javascript.
Mac e iOS
Volete sviluppare per Mac? Vi trovate di fronte a un bivio: creare schifose applicazioni che girano su virtual machine in Java o applicazioni native con Cocoa e Objective-C.
Io vi consiglio vivamente la seconda strada, ma non fraintendetemi: anche le applicazioni che potreste scrivere in Java funzioneranno, ma mai come quelle che scriverete in Objective-C.
Inoltre Objective-C vi apre la strada anche ad iOS, che è un mercato in continua crescita, dove si fanno i maggiori profitti anche con applicazioni relativamente facili da realizzare (pensate ci voglia molto a realizzare una fart-app?).
Quindi la strada da percorrere è questa nel caso abbiate scelto Objective-C:
- Imparate C (non è indispensabile, ma la mia personale esperienza consiglia che è meglio farlo).
- Imparate Objective-C (che è la naturale evoluzione ad oggetti del linguaggio C).
- Adesso avete bisogno di un modo per esprimere quello che avete imparato, di una collezione di oggetti per creare interfacce e applicazioni. Ecco che entra in gioco Cocoa. Dovete imparare Cocoa-Touch nel caso di iOS, Cocoa nel caso di Mac OS X.
Windows e Android
Non ho per niente esperienza in questo settore, ma posso dirvi che, per i dev Windows, vale la prima cosa che vi ho consigliato per Mac: imparare il C.
Da li passate a .NET e C#, dei quali non so dirvi molto però. Se volete maggiori informazioni ecco le pagine di Wikipedia di C# e .NET.
Se invece la piattaforma che vi interessa è Android ci sono un paio di cose che dovreste sapere:
- difficilmente riuscirete a ottenere profitti con applicazioni a pagamento in quanto il fenomeno della pirateria è molto più diffuso che su iOS, provate invece a guadagnare con la pubblicità ;
- data l’infinità di dispositivi diversi per i quali la vostra applicazione dovrà essere ottimizzata non la vedo molto come piattaforme per principianti.
Consigli prescindenti la piattaforma scelta
Qualsiasi piattaforma scegliate ho dei consigli da darvi riguardo la fase in cui apprenderete il linguaggio:
- Cercate di bilanciare pratica e teoria, dopo aver imparato una quantità di concetti nuovi applicateli nel problem solving.
- Fatevi dare una mano quando ne avete bisogno, chiedete a qualcuno che conoscete o iniziate a frequentare i posti giusti nel web, come stackoverflow.
- Non arrendetevi alle prime difficoltà e se pensate di essere sulla strada sbagliata, ricominciate da capo con qualcosa di diverso che più vi si addica.