Introducing
Your new presentation assistant.
Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.
Trending searches
lidia cuozzo
giovanna d'aniello
La programmazione, in informatica, è l'insieme delle attività e tecniche che una o più persone specializzate (team), programmatori o sviluppatori (developer), svolgono per creare un programma o applicazione, ossia un software da far eseguire ad un computer, scrivendo il relativo codice sorgente in un determinato linguaggio di programmazione.
Con l'avvento dell'ingegneria del software l'attività di programmazione rappresenta in realta' solo la fase implementativa dell'intero ciclo di sviluppo del software con l'obiettivo ultimo di soddisfare le specifiche funzionali richieste dal committente secondo una predefinita analisi strutturale del progetto software. Assieme al lato sistemistico e al data science, costituisce il ramo o filone di produttività in informatica aziendale, detto terziario avanzato.
Con fondamenti di programmazione si indicano le conoscenze basilari che un programmatore deve possedere per la programmazione in un qualunque linguaggio di programmazione.
Per la scrittura di righe di codice nei linguaggi di programmazione è sufficiente per un programmatore utilizzare un normale elaboratore testi, o un programma ad hoc detto editor spesso compreso all'interno di un ambiente di sviluppo integrato (IDE). Nel secondo caso il software individua automaticamente gli errori più banali (es. errori di sintassi) che un programmatore può commettere.
I passi con cui si sviluppa un programma efficiente sono simili tra di loro per quasi tutti i contesti di programmazione (aziende, hobby, lavoro, ecc.). Le prime fasi sono strettamente legate alla logica di quello che si va a creare e del suo funzionamento, mentre le ultime sono orientate verso lo specifico linguaggio di programmazione che si intende utilizzare.
La prima operazione da svolgere per la creazione di un qualunque programma è definire nel modo più preciso ed accurato possibile quale problema intendiamo risolvere. Questo vale sia per una semplice funzione matematica che per un complesso database. L'input che il programma riceve è legato all'output che intendiamo restituire dopo l'elaborazione.
Questa fase può presentare una grande complessità dovuta al lavoro astratto che impone al programmatore di immaginare il risultato finale e la sua formalizzazione.
Al fine di creare un programma efficiente occorre progettarne con attenzione l'algoritmo. Ad esempio potremmo creare un algoritmo che esegue i seguenti passi:
È importante precisare che la lista di passi deve contenere istruzioni chiare, precise e non ambigue, ovvero il cui significato non dipenda dal contesto in cui lo si scrive, ma sia chiaramente identificabile.
I programmi informatici risultano essere molto più articolati di un processo lineare come l'addizione di due numeri. Per dare al programma una struttura più complessa si utilizzano i seguenti strumenti:
I programmi possono inoltre essere divisi in sezioni in modo che i vari compiti possano essere eseguiti attraverso sequenze più semplici di passi. A tale scopo viene suddiviso il programma in funzioni.
Viene detto linguaggio di programmazione un linguaggio destinato a descrivere l'insieme di azioni consecutive che un computer deve eseguire. Questo tipo di linguaggio è anche un modo pratico, per noi umani, di dare delle istruzioni a un computer. Un linguaggio di programmazione si distingue dal linguaggio naturale, il che racchiude le codifiche di espressione condivise da un gruppo di individui (le lingue, l'inglese o l'italiano sono linguaggi naturali).
I linguaggi che servono ai computer per comunicare fra loro non hanno niente a che vedere con gli altri linguaggi di programmazione, infatti in questo caso si parla di protocolli di comunicazione, due nozioni totalmente diverse. Un linguaggio di programmazione è rigoroso: ad ogni istruzione corrisponde un'azione del processore .
Il linguaggio usato dal processore è detto codice macchina. Si tratta di dati come quelli che arrivano al processore, costituiti da una serie di 0 e di 1 (codici binari). Il linguaggio macchina non comprensibile all'uomo è intramezzato da linguaggi intermedi messi a punto per essere compresi dall'uomo. Il codice scritto in questo tipo di linguaggio è poi trasformato in linguaggio macchina per essere utilizzabile dal processore
Linguaggio imperativo
Un linguaggio imperativo organizza il programma come una serie di istruzioni, raggruppate in blocchi e comprendenti dei salti condizionali che permettono di ritornare ad un blocco di istruzioni se la condizione è realizzata. Si tratta storicamente dei primi linguaggi, anche se molti linguaggi moderni usano ancora questo principio di funzionamento. I linguaggi imperativi strutturati soffrono tuttavia di una mancanza di flessibilità dato il carattere sequenziale delle istruzioni.
Linguaggio funzionale
Un Linguaggio funzionale (detto talvolta linguaggio procedurale) è un linguaggio nel quale il programma è costruito per funzioni, rinviando un nuovo stato in uscita e prendendo in entrata l'uscita di altre funzioni. Se la funzione si chiama da sola, allora si parla di periodicità.
L'operazione di codifica è quella più soggetta ad errori di natura logica e sintattica. In teoria il programma potrebbe essere pronto in questa fase, ma in realtà esso presenta nella quasi totalità dei casi degli errori (bug), che verranno analizzati con la fase successiva. Tipicamente lo sviluppo di un'applicazione avviene in locale sul PC dello sviluppatore che potrà operare una prima fase di test verificando la bontà o meno dell'output del programma svolto.
Talvolta un progetto software è portato avanti da una community di utenti distribuita in rete attiva attraverso newsgroup, come accade ad esempio per diverse distribuzioni GNU/Linux. Quando da un progetto software se ne sviluppa un altro sullo stesso tipo di programma, ma portato avanti da un'altra community si parla di fork.
Completato il programma è frequente la presenza di errori di programmazione o bug derivanti da ragioni varie che possono evidenziarsi durante lo sviluppo e l'esecuzione di un codice. Questi errori possono essere essenzialmente in tre principali categorie: errori di sintassi, errori di logica ed errori di runtime. Tutti questi errori vanno necessariamente eliminati pena il malfunzionamento o il blocco dell'esecuzione del programma stesso.
La fase di verifica e di messa a punto del programma ha lo scopo di ricercare e correggere gli errori riscontrati ed è detta debugging. Si tratta di una fase molto lunga ed importante in cui il programmatore verifica la bontà del proprio lavoro. La correzione di un bug potrebbe essere causa di nuovi errori ed occorre quindi prestare la massima attenzione.
Per evitare un debugging di un programma troppo complesso ed articolato è preferibile creare un prototipo, ovvero una versione del risultato finale che non presenta in sé tutte le funzioni previste dal progetto originale, ottenendo una maggiore velocità di correzione dei bug principali.
Alla fine di questa fase avremo il prodotto finito. Le operazioni svolte durante lo sviluppo vanno opportunamente documentate così da rendere più agevole una futura modifica.