Utente:LoStrangolatore/Stubs/Guida alla programmazione/Scegliere un linguaggio di programmazione
Molte persone pensano di dover scegliere un linguaggio di programmazione per diventare un programmatore. Si chiedono: "Mm, potrei diventare un programmatore C++ o Java?" Questa è una domanda sbagliata da porsi, quella più intelligente sarebbe "Come posso diventare un buon programmatore velocemente?" La scelta di uno specifico linguaggio di programmazione non è particolarmente rilevante; la ragione è che ogni linguaggio di programmazione è basato sugli stessi concetti fondamentali, nati più di 20 anni fa. Una volta acquisita la forma mentis della programmazione, che deriva da tali concetti, imparare un nuovo linguaggio risulta considerevolmente più semplice.
Quale scelgo di imparare?
[modifica | modifica sorgente]La prima considerazione da fare quando decidi quale linguaggio imparare per primo è quanto sfruttabile è nel mondo reale, per esempio, nel campo IT industriale o nei progetti open source ti piacerebbe contribuire programmando. Se questo è la tua unica intenzione, linguaggi molto diffusi come C++ o Java costituiscono una buona scelta.
Negli altri casi, ci sono ulteriori fattori da considerare per scegliere.
Quanto adatto è il linguaggio per un principiante?
[modifica | modifica sorgente]Molti linguaggi sono conosciuti per essere facili da imparare, ad esempio il Basic oppure il Pascal. Tuttavia, qualche volta vengono criticati per la mancanza di potenza e il campo limitato delle loro proprietà. Dovremmo tenere a mente che lo scopo principale di questi linguaggi è quello di insegnare a scrivere programmi strutturati. Per applicazioni più avanzate potrebbe essere necessario un linguaggio più specializzato o più complesso.
Alcuni linguaggi (come Python o Ruby [1]) idonei per i principianti presentano una sintassi non difficile, ma sono anche dotati un completo set di proprietà per i programmatori più esperti.
Sicuramente il più difficile è il linguaggio macchina , cioè l' assembly. L'assembly è un linguaggio di basso livello , in parole povere quello che l' hardware riesce a comprendere con più facilita' ed a eseguire più velocemente.
La maggior parte dei programmatori consiglia di partire da un linguaggio come il C, che è considerato un buon compromesso tra velocita' e facilita' d'uso . Appreso con successo il C, il passo successivo è rappresentato dal C++.
Il linguaggio è disponibile oppure idoneo al tuo computer?
[modifica | modifica sorgente]Non c'è alcun motivo teorico per cui un determinato linguaggio non possa o non debba essere adatto ad un particolare computer. Però nessun linguaggio esiste "di per sé", semplicemente, ma tutti si devono appoggiare ad una serie di strumenti (compilatori, IDE, librerie, macchine virtuali ecc.): perché si possa programmare in un dato linguaggio sul proprio computer devono essere disponibili per esso gli strumenti adatti. L'esistenza di tali strumenti e la qualità di questi è ciò che rende un determinato tipo/modello di computer più o meno adatto alla programmazione con quel determinato linguaggio.
Ti sarà di aiuto per imparare altri linguaggi in futuro?
[modifica | modifica sorgente]Le basi di programmazione sono molto simili per la maggior parte dei linguaggi. Anche se esistono linguaggi simili o derivati (o veri e propri fork) come per esempio il C da cui derivano il Java, il php o il C++ In casi simili avere una conoscenza basilare di C può essere d'aiuto. Esistono anche linguaggi reputati utili per capire il funzionamento di un linguaggio più complesso o per acquisire una mentalità più aperta ed un approccio migliore alla programmazione, per esempio il Pascal.
Ti è di aiuto a scrivere programmi migliori?
[modifica | modifica sorgente]A seconda dell'utilità del programma e della sua destinazione può servire conoscere più di un linguaggio per poterli integrare. Ad esempio per la programmazione embedded un approccio potrebbe essere scrivere il programma in C o in un linguaggio ad alto livello e usare l'assembler, o un linguaggio a basso livello, per i lavori più bassi come l'allocazione statica della memoria o alcune funzioni per il boot di un sistema operativo. Il kernel linux, ad esempio, utilizza questo tipo di approccio.
Quanto è adatto il linguaggio agli scopi prefissati?
[modifica | modifica sorgente]In teoria, con qualsiasi linguaggio di programmazione, salvo limitazioni esplicite, è possibile fare qualsiasi tipo di software. Nella pratica, molti linguaggi non sono adatti a determinati scopi per vari motivi. Ad esempio:
- Il BASIC è conosciuto come linguaggio molto semplice, che però non permette di lavorare a basso livello (es. puntatori): una calcolatrice in basic non è difficile da realizzare, un sistema operativo è impensabile.
- Il Java è un linguaggio portabile, con librerie specifiche per sistemi distribuiti ed embedded, i programmi possono essere trasportati su piattaforme diverse senza essere modificati, ma l'esecuzione richiede tipicamente un interprete (macchina virtuale) e ciò può ridurne le prestazioni rispetto alla controparte nativa.
- Il C è un linguaggio a basso livello ed è la scelta più ovvia per sviluppare un kernel o un driver, tuttavia proprio questo fattore può ostacolare lo sviluppo da parte di un principiante e determina una serie di accorgimenti (puntatori, dimensione dei tipi primitivi) che possono ostacolare lo sviluppo di un'applicazione completamente portabile e di frequente sono fonte di errori di programmazione difficili da scovare.