In questa lezione vedremo vari tipi di applicazioni e i linguaggi ideali per programmarle.
Il titolo è abbastanza idiota, questa lezione non è fatta per scegliere il linguaggio adatto alle vostre esigenze di apprendimento, ma più che altro per conoscere i linguaggi più usati e la loro applicazione.

- Sistemi operativi. In questo campo, dove si necessita di altissime performance e un perfetto controllo dell’hardware la scelta ricade obbligatoriamente su un linguaggio di basso livello: l’Assembly. In realtà in Assembly si realizza solo il cuore dell’OS, chiamato kernel (in greco antico “cuore”, appunto), mentre altre parti (come l’interfaccia grafica) vengono sviluppate in C/C++ (prevalentemente).

- Giochi. Eh si, non pensate che esista il bel programmino che fa tutto da solo. Il principale linguaggio utilizzato è il C++, sebbene ormai esista un grande numero di opzioni tra framework e librerie (a differenza della piattaforma).
Per giochi semplici viene spesso utilizzato anche Flash.

- Applicazioni matematiche. Per queste esistono linguaggi appositi, che possiedono operazioni predefinite per la gestione della matematica complessa. La scelta ricade principalmente sull’ALGOL.

- Applicazioni multipiattaforma. L’opzione ricade sui linguaggi semi-compilati. L’unico che garantisce la vera compatibilità multi-piattaforma è il Java, anche se è nato un porting per .NET chiamato Mono che opera su Linux.

- Applicazioni mobile. Qui dipende molto dalla piattaforma dove si sviluppa. Riporto le più diffuse.

Symbian. In questa piattaforma il panorama è abbastanza vasto, si va dal C++ (Symbian C++) al Python (PyS60) ad un linguaggio apposito, mshell, passando per il sempre meno diffuso J2ME (java). E’ anche possibile sviluppare in Flash.
Ultimamente, con l’acquisto della casa madre delle librerie Qt (C++) da parte di Nokia, si va verso questa strada.

Windows Mobile. I linguaggi sono principalmente il C# (.NET) e Silverlight.

Android. Il principale linguaggio utilizzato è il Java.

iPhone. L’unico modo per sviluppare su iPhone è di utilizzare l’apposito SDK (disponibile solo per Mac) con il linguaggio ObjectiveC, quello utilizzato in ambito Apple. E’ anche teoricamente possibile utilizzare linguaggi come C e C++.

- Estensioni. In questo campo la scelta è molto varia: dipende dal programma per cui volete creare l’estensione.
Riporto alcuni esempi: per Firefox è necessario XUL (un “dialetto” dell’XML) CSS e Javascript. Per WordPress è necessaria la conoscenza del PHP, mentre in alcuni casi anche di HTML, CSS e Javascript. Altri addirittura hanno bisogno di linguaggi particolari.
Il mio consiglio è quello di controllare il sito del produttore.

- Siti Web. Per lo sviluppo di siti web dobbiamo fare una divisione tra siti statici e dinamici. Se avete bisogno di un sito semplice, che permette di visualizzare dei contenuti ma non di interagire (ovvero modificare una pagina) con essi, la scelta ricade sulla “santa trinità” HTML, CSS e Javascript.
Se invece volete un sito con cui un utente può interagire, ovvero può modificare la pagina (lasciando un commento, ad esempio), oltre ai linguaggi precedenti, che svolgeranno una principale funzione grafica, sarà necessario l’uso di linguaggi lato-server (cioè eseguiti sul server e non dal browser dell’utente) come PHP, JSP, ASP, ASP.NET (è sufficiente uno di questi).

- Apprendimento. Eccoci infine arrivati a quello che più ci interessa. Nelle scuole superiori vengono fatti apprendere linguaggi come HTML (poco diffuso), Pascal (troppo diffuso, personalmente lo odio) e C++.
L’HTML non da idea di cosa sia la programmazione poichè è un linguaggio di markup, il Pascal non me lo nominate nemmeno, la sua sintassi mi fa venire i brividi e il C++ può risultare troppo complesso per molti.

Io per l’apprendimento consiglio di imparare il C (anche se può essere più difficile di altri), poi di dare un’occhiata ad altri linguaggi per vedere quello che vi piace di più, con cui vi trovate meglio.
Il mio consiglio è di evitare linguaggi inutilizzati come il Pascal, ADA, APL e simili.

Lezione precedente | Indice | Lezione successiva