X

Consigli pratici per chi vuole iniziare a programmare

Pubblicato da il giorno 21 novembre 2011

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.

Molte delle cose che leggerete sono spesso motivo di animate discussioni fra i developer, negli argomenti più scottanti quella che trasparirà sarà la mia personale opinione. Se la pensate diversamente da me, non prendetela sul personale.

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.
Se volete comunque avventurarvi il linguaggio da imparare è il Java, del quale, ahimè, non molto altro da dirvi per poca esperienza.

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.
Buona fortuna!

, 150 articoli pubblicati

Studente di ingegneria elettronica, nel tempo libero scrivo qui su Skimbu (o nel mio blog), programmo per iOS (la mia ultima creazione è OnSale). I principali argomenti da me trattati sono programmazione e design.

Visita il sito web di questo autore

Condividi l'articolo!

  • http://twitter.com/wingmandodo Matteo Dosmi

    Ciao, come sempre buoni consigli. Mi permetto solo un lieve appunto per rendere l’articolo ancora più imparziale: le applicazioni Java non si usano solo nel settore Desktop, anzi (!) offrono il loro massimo potenziale proprio negli ambienti Enterprise. Inoltre non le definirei “schifose”; per quanto sia chiaro il tuo riferimento all’aspetto grafico, per un neofita può essere fuorviante quell’attributo.

    Traspare un taglio dato all’articolo, in cui, tu programmatore C-oriented prediligi quella architettura rispetto a quella Java e quindi ne evidenzi le peculiarità. Per tutti quelli che leggeranno i commenti, posso assicurare che le architetture Java hanno i loro punti di forza in altrettanti ambiti e non è di certo semplice poter fare un paragone tra i due presunti major competitor nell’ambito della programmazione.

    Al prossimo articolo!

    • Anonimo

      Nell’articolo non ho parlato del settore enterprise, parlo di applicazioni da creare per utenti, applicazioni con interfacce grafiche.
      Se per creare un’app per Mac usi Objective-C e Cocoa ne uscirà un app che usa meno memoria e più bella, il contrario se userai quello che Java ti mette a disposizione (presupponendo un programmatore di eguale bravura).

  • Marco

    linkare w3schools non è per niente una gran dritta per impare l’HTML http://w3fools.com/

  • http://andreagerm.altervista.org Andrea Germanà

    Il prerequisito principale in assoluto è quello di avere una logica … Senza quella si faranno sempre programmi pietosi senza, appunto nessuna logica … Quindi la base di tutto è il sistema a blocchi …. Poi secondo me, uno può avere una buonissima genuinità ed allo stesso tempo può voler fare soldi … La prima parte penso che oggettivamente sia fondamentale, la seconda è una mia opinione … 

  • Federico

    Personalmente consiglierei di imparare il C in ognuno dei tre casi (a cui comunque aggiungerei Linux “patria” del C) in quanto è la base di praticamente tutti i linguaggi di programmazione da te citati e la sua conoscenza li renderebbe molto più semplici da imparare: provato sulla mia pelle!

  • Informatico

    Java fà talmente schifo che è il linguaggio più usato in tutto il mondo. Il Python è talmente lento che nei test di quick sort ha battuto l’Obj-C. Linux è una piattaforma di merda che all’avvio nell’heap occupa 256MB, io sono un programmatore finto, il C++ non è mai esistito, l’Apple è una società giusta (che si compra i migliori ingegneri dall’IBM & ruba brevetti) e tu sei un grande ignorante come tutti gli ingegneri che fanno informatica. Fai elettronica che ti riesce meglio. Un saluto da un tuo collega in diretta dal dipartimento di informatica. 

  • Xwicxgohan

    ragazzi posso chiedervi una cosa??? io vorrei cominciare ad entrare in questo mondo…ma praticamente parto da zero! chi mi da qualche consiglio???Â