Quale autodidatta non ha mai posto una domanda del genere in forum di programmazione o ad amici già “esperti” del campo?
Come inizio a programmare..?
In questo articolo cercherò proprio di rispondere a questa domanda nel modo più semplice e chiaro possibile senza entrare nel dettaglio, in modo da fornire al lettore tutte quelle informazioni che gli permetteranno di scegliere quello che meglio si adatterà alle proprie esigenze. Iniziamo col suddividere i linguaggi di programmazione in due differenti categorie:
- Programmazione web
- Programmazione desktop
Programmazione Web
La programmazione web è quella programmazione che ci permette di creare siti web: Facebook,Youtube,Wikipedia per intenderci. I linguaggi che fanno riferimento a questa categoria possono essere suddivisi ulteriormente in altre due categorie: Client side,ovvero quei linguaggi che vengono eseguiti dal browser del pc del visitatore (il client appunto) e i Server Side, ovvero quei linguaggi che vengono eseguiti sul server (il pc sul quale si trova la pagina web che si sta visualizzando) il quale, dopo aver eseguito ed elaborato il codice, lo “manda” browser del client che lo elabora . Alla prima categoria, i client-side, fanno riferimento per esempio l’html (che, ad essere pignoli, è un linguaggio di formattazione) , il Javascript, l’ajax e l’adobe flash player. Ai server-side fanno riferimento il famoso php, il phyton, l’asp il perl ecc.
Se sei interessato a questo genere di programmazione ti invito a leggere questo articolo in cui si parla in maniera più specifica ma sempre semplice di cosa hai bisogno per creare un sito web tutto tuo:
Ketek - Come creare un sito web..?
Programmazione Desktop
Al contrario di quella web, la programmazione desktop ci permette di realizzare dal singolo software applicativo (skype , windows media player, gimp ecc.) all’intero sistema operativo (windows 7,ubuntu ecc.). Iniziamo con il sottolineare che a questa categoria appartengono sia quei linguaggi di programmazione che ci permettono di realizzare software per PC e sia quei linguaggi che ci permettono di realizzare software per il mondo mobile, un mondo che al giorno d'oggi assume un importanza sempre maggiore e su cui si focalizza dunque un numero sempre maggiore di programmatori. Iniziamo dunque con il descrivere questo ambiente partendo dalla programmazione per i dispositivi Apple: il programmatore di software Apple si serve dell'objective C e di COCOA, un insieme di librerie che fanno riferimento sia a Mac OS X che ad iOS. A questo proposito segnalo una guida che portebbe esservi utile :
Imparare a programmare con Apple: Objective C, Cocoa ed Xcode
. Per quanto riguarda Android, anche questo sempre più richiesto, si utilizza il Java, che io consiglio di utilizzare su Eclipse, un IDE completa al quale và aggiunto un plug-in per Android, "ADT". Dopo questa breve descrizione degli ambienti Android e Apple torniamo alla programmazione per PC, la programmazione nella quale l'aspirante programmatore ha sempre difficoltà ad entrare data la vastità dei linguaggi che gli sono messi a disposizione. Innanzitutto vi propongo una lista con i principali linguaggi.
- C
- C++
- C# ( C sharp)
- Phyton
- Java
- Visual basic
- Basic
- Assembly
- ecc.
Tra i linguaggi che vi ho appena elencato sono presenti linguaggi di basso (Assembly) e alto livello (C,C++ ecc.). La differenza tra i due è notevole: i primi sono orientati alla macchina e sono costituiti da istruzioni elementari che aumentano il grado di difficoltà mentre i secondi sono orientati al computer e sono costituiti di istruzioni che consentono di effettuare operazioni semplici ma complete. Con la programmazione di alto livello inoltre si viene svincolati dalle caratteristiche hardware del pc su cui girerà il software semplificando ulteriormente il compito del programmatore.
Ma..Quale scelgo?
Questa è la domanda più ovvia e allo stesso tempo più difficile in quanto essa varierà da programmatore in programmatore in base alla loro esperienza. Quello che tuttavia mi permetto di consigliare è di iniziare dal C essendo il linguaggio di base su cui si basa l'intera architettura dei sistemi linux ed essendo quello che, a mio parere, fornisce le basi dell'intera programmazione. Ecco perché, una volta imparato il C, il vostro percorso nel campo della programmazione sarà molto agevolato. Mi sento obbligato a consigliarvi un manuale completo, che non richiede alcuna conoscenza specifica, notevolmente chiaro e pieno di esercizi, dai più semplici ai più..sfiziosi(!?):
C. Corso completo di programmazione - Deitel & Deitel
Successivamente consiglio di spostarvi in un linguaggio object-oriented (orientato agli oggetti) tra cui C++, C#, Java ecc. per poi proseguire verso quel linguaggio che più si adatta alle vostre esigenze!
Conclusione
Dopo questa carrellata, spero chiara, di linguaggi di programmazione tutto quello che dovete fare è buttarvi verso quello che più vi intriga!
Fatemi sapere cosa ne pensate! Più opinioni sono sempre più utili di una sola!
grazie :)