Ultima modifica:
LEGGI QUESTO PRIMA DI CONTINUARE
Se non hai già letto le avvertenze/istruzioni presenti nella LEZIONE 1 ti invito a leggerle (puoi farlo da questo link: Lezione 1 ) , ho evitato di fare copia e incolla delle varie avvertenze/istruzioni poiché mi sembrava inutile aggiungere a ogni post tutto quel testo.
FILE ZIP DEL CORSO :
Vedi: https://drive.google.com/file/d/1sPuNna2S3b0sqmFHK448j4vKg1MVUlSM/view?usp=sharing
NOTA PER I LETTORI: Ho dovuto usare molti link esterni , avrei voluto fare una guida più dettagliata, tuttavia capirete che entrare nel dettaglio di ogni installazione per ogni programma e parlare della configurazione di ognuno di essi avrebbe richiesto un sacco di tempo e avrebbe ritardato l'uscita di questa lezione di un sacco.
Dopo aver parlato di tutta la parte "teorica" è arrivato il momento di passare a un pò di pratica: oggi vi spiego come "preparare una postazione/ambiente" che vi permetta di programmare.
1 - Il sistema operativo
Può sembrare scontato ma abbiamo bisogno di un sistema operativo per programmare, e soprattutto dobbiamo sapere bene che sistema operativo stiamo usando, in modo da capire quali strumenti possiamo usare, quali vantaggi questo ci dà nella programmazione ecc... .
Parto col dire che:
- non esiste un sistema operativo fatto appositamente per programmare (non che io sappia almeno)
Questo significa che per seguire questo corso potete usare un il sistema operativo che preferite, tuttavia vi spiego comunque in poche parole quali sono i vantaggi e svantaggi di usare determinati sistemi operativi.
1.1 - Linux
Parto da Linux così possiamo fin da subito sfatare un mito che magari vi sarà capitato di sentire:
- "I programmatori usano Linux per programmare"
Vantaggi
- Linux è un sistema molto stabile: nel senso che il rischio di "schermata blu" come siamo oramai abituati con Windows è di solito molto più basso, infatti è più probabile che il sistema abbia problemi per casini che ha fatto l'utente piuttosto che per casini dovuti ad un aggiornamento o per qualche bug del sistema stesso (ovviamente gli utilizzatori di distro come Arch sono più soggetti a questo problema).
- è generalmente più sicuro: allora... qui ci sarebbe molto da dire ma per farvela breve:
- Linux è generalmente usato da utenti abbastanza tecnici quindi è abbastanza improbabile che scarichino materiale infetto (o almeno è non cadono in tranelli banali).
- Linux essendo usato da utenti di solito più tecnici non è utilizzatissimo dalla maggior parte delle persone, di conseguenza non è molto conveniente creare un malware per un sistema che usano solo in pochi (meglio fare un virus per Windows o Mac OS piuttosto, che hanno una maggiore fetta di utenza ).
- Su Linux ogni programma deve fare i conti con il rigido sistema di permessi, dovete capire che Linux nasce in origine per macchine server o che in generale dovevano far lavorare più utenti contemporaneamente, quindi ogni utente ha determinati permessi sulla macchina, e di conseguenza un malware non può fare casini se l'utente in questione non ha i giusti permessi, o se la macchina è usata da un singolo utente, non può fare grandi danni se l'utente non gli dà i permessi (ma come ho detto, Linux generalmente è usato da un utenza abbastanza tecnica che si presuppone dia i permessi di amministratore con parsimonia).
- Linux è generalmente usato da utenti abbastanza tecnici quindi è abbastanza improbabile che scarichino materiale infetto (o almeno è non cadono in tranelli banali).
- La maggior parte degli aggiornamenti non richiede il riavvio del sistema.
- È open source e questo significa massimo controllo sulla macchina.
- È gratuito.
- Molti dei tool più famosi per la programmazione sono stati scritti per Linux (in origine) e questo significa che si integrano perfettamente con il sistema operativo , anche se ora è possibile usarli anche su gli altri sistemi operativi.
- La shell : la shell di Linux (cioè il terminale) è molto potente e permette di fare tantissime cose (cose che il cmd di Windows spesso se le sogna) cosa che fà sicuramente comodo per un programmatore (anche se non è per forza necessaria).
Svantaggi
- Non ci sono molti programmi che sono invece disponibili per Windows (quindi o vi accontentate di quelli che ci sono per Linux o dovete andare di "dual boot")
- Mancanza di driver per determinate periferiche (alcune volte può capitare che determinati hardware non siano completamente supportati)
- Bisogna imparare ad usare un nuovo sistema operativo (anche se distro come Linux Mint e Ubuntu sono semplici da usare, o comunque richiedono uno sforzo non eccessivo anche per coloro che vengono da Windows o da Mac OS)
LINK:
- https://it.quora.com/Linux-è-più-sicuro-di-Windows
- https://it.quora.com/È-meglio-Linux-o-Windows
- https://it.quora.com/Perché-nessuno-usa-Linux
- https://it.quora.com/Quali-sono-gli-svantaggi-di-Linux
1.2 - Windows
Parliamo ora di Windows, allora... conoscete probabilmente un pò tutti Windows quindi non ne parlerò troppo.
Vantaggi
- 99% dei casi l'hardware è supportato.
- La maggior parte dei software più famosi sono stati progettati per Windows o comunque sono disponibili anche per esso.
- Facile da usare.
- Probabilmente già lo sai usare, quindi non devi imparare da 0 un nuovo sistema operativo
Svantaggi
- Alcune volte può risultare instabile.
- Probabilità di essere infettati da un malware più alta di Mac OS o Linux.
- Terminale con molte meno funzionalità di quello di Linux o Mac OS.
- Per sbloccare tutte le funzionalità del sistema operativo bisogna acquistare una licenza.
1.3 - Mac OS
Non ho mai usato questo sistema operativo quindi vi parlo solo di cose che ho appreso online

Vantaggi
- Come Linux anche esso deriva da UNIX e quindi condivide alcune caratteristiche molto comode, come ad esempio un ottima Shell.
- Grande stabilità e sicurezza.
- Software famosi di solito sono disponibili anche per Mac.
- Molto ottimizzato.
- Hardware praticamente sempre compatibile.
- Molti dei tool per la programmazione che troviamo su Linux li possiamo usare facilmente anche su questo OS.
Svantaggi
- Sistema chiuso
- Sistema operativo non installabile ovunque (non senza particolari smanettamenti)
LINK:
- https://it.quora.com/Che-sistema-operativo-utilizzi-per-programmare
- https://www.iprogrammatori.it/forum...-operativo-ideale-per-programmare-t22363.html
1.4 - WSL (windows subsystem for Linux)
Se usate windows potete usare questa funzionalità molto comoda (che si chiama WSL), per farvela breve in questo modo potete usare un ambiente e un terminale Linux su windows, il che significa che pote installare i programmi disponibili per Linux rimanendo su windows.
LINK:
1.5 - Macchine virtuali
Un'altra scorciatoia per usare un particolare sistema operativo senza dover per forza installarlo (come per la WSL con Linux su Windows) è quella di usare una macchina virtuale. Anche qui l'argomento può essere un pò ostico, quindi vi rimando a fonti esterne che possono darvi un ottima idea a riguardo:
LINK:
2 - Editor di testo Vs IDE
Una volta scelto il sistema operativo bisogna fare un'altra scelta:- IDE o Text Editor?
Ma prima di iniziare capiamo perché ci servono: come abbiamo detto per creare dei programmi in C dobbiamo scrivere in uno o più file il codice sorgente che deve essere poi compilato, ebbene scrivere questi file con il blocco note può essere parecchio inefficiente soprattutto per quanto riguarda il tempo che perdereste per scrivere il codice.
Motivo per cui esistono strumenti fatti appositamente per aiutare il programmatore a scrivere codice.
2.1 - Text Editor
Un text editor (editor di testo) è un programma che in generale permette di modificare/creare file testuali, ottimi esempi di text editor sono:
- Blocco note
- Notepad++
- Gedit
- Evidenziazione del codice
- Auto-completamento del codice
- Temi Dark per l'interfaccia
- Segnalazione di errori di sintassi
- ecc...
Di solito i text editor permettono di estendere le funzionalità del software attraverso delle estensioni (di solito scritte dagli utenti della community) che molte volte offrono un supporto apposito per determinati linguaggi di programmazione, vi faccio un esempio:
- Visual Studio Code è un editor che già di base offre molte funzionalità, però se si installa l'estensione per C/C++ allora esso fornirà funzionalità aggiuntive esclusive per i programmi in C o C++.
Quale text editor posso installare?
- Visual Studio Code
- Brackets
- Vim
- Sublime Text
- vis
- emacs
- nedit (nirvana editor)
- e numerosi altri editor... (basta cercare un pò sul web)
LINK:
2.2 - IDE
IDE è l'acronimo di "integrated development environment" cioè "ambiente di sviluppo integrato", e per farvela semplice potete considerarlo come un "Text Editor con i muscoli".
Gli IDE sono generalmente progettati per determinati linguaggi, questo significa che un IDE di solito non permette la stessa flessibilità di un text editor (cioè non potete usarlo per qualunque linguaggio, e/o qualunque tipo di file), ma al tempo stesso offre molte più funzionalità e strumenti per la programmazione.
- Ad esempio se volete lavorare in C dovete usare un IDE fatto appositamente per programmare in C, o che supporti tra i vari linguaggi anche il C.
- Un IDE per C avrà sicuramente:
- un compilatore C integrato
- un debugger
- un programma di building automatico
- un compilatore C integrato
Nei text editor queste cose dovete installarle tramite estensioni o manualmente, e in alcuni casi potrebbero anche essere non installabili al di fuori dell'IDE (determinate funzionalità sono parte dell'IDE, di conseguenza non potete installarle come se fossero dei programmi separatamente).
2.2.1 - Quale IDE posso installare? (per il C)
- Code::Blocks
- CodeLite
- Visual Studio ("visual studio" e "visual studio code" sono due programmi diversi)
- e numerosi altri IDE... (basta cercare un pò sul web)
LINK:
- https://www.html.it/magazine/i-migliori-ide-per-c-e-c/
- https://www.geeksforgeeks.org/7-best-ides-for-c-c-plus-plus-developers-in-2022/
2.2.2 - NON USARE Dev-C++ !
Spesso nelle scuole viene insegnato il C o il C++ usando questo programma come IDE, o in generale i vecchi tutorial fanno vedere che usano questo programma, ma non è una buona idea installarlo.
DEV-C++ è un progetto oramai abbandonato da tempo, questo significa che oramai è OBSOLETO! Di conseguenza mancano funzionalità moderne e un compilatore aggiornato, e se avete letto la lezione precedente sapete cosa ciò comporta.
3 - Installiamo il compilatore
Come sapete per compilare il codice C abbiamo bisogno di un compilatore, ci sono vari compilatori per il C ognuno con determinate caratteristiche e compatibilità con determinati sistemi operativi.
Vediamo come installarli (ovviamente devi sceglierne uno solo, anche se volendo nessuno ti vieta di provarne più di uno):
3.1 - Clang
Partiamo da Clang:
LINK:
Installazione (Windows,Linux,Mac OS):
3.2 - GNU GCC
LINK:
Per installarlo:
3.2.1 - WINDOWS
Per installare GCC su windows ci sono diversi modi:MinGW
LINK:
INSTALLAZIONE:
Cygwin
LINK:
INSTALLAZIONE:
MSYS2 (consigliato anche da Microsoft)
LINK:
INSTALLAZIONE:
WSL
Vai alla sezione "3.2.2 - Linux" e segui le istruzioni per la distribuzione Linux che hai installato nella tua WSL.
3.2.2 - LINUX
Debian,Ubuntu e relative derivate:
Nel terminale date il comando:
- Per installare GCC + DIVERSI TOOL per la programmazione C (come ad esempio il debugger ecc...,che non so se useremo, se mai ci farò una lezione vi spiegherò come installarli):
Bash:
sudo apt install build-essential
- Per installare SOLO GCC:
Bash:
sudo apt install gcc
Red Hat e derivate
- Per installare GCC + DIVERSI TOOL per la programmazione C (come ad esempio il debugger ecc...,che non so se useremo, se mai ci farò una lezione vi spiegherò come installarli):
Bash:
sudo dnf groupinstall "Development Tools" "Development Libraries"
- Per installare SOLO GCC:
Bash:
sudo dnf install gcc
Arch e derivate
- Per installare GCC + DIVERSI TOOL per la programmazione C (come ad esempio il debugger ecc...,che non so se useremo, se mai ci farò una lezione vi spiegherò come installarli):
Bash:
sudo pacman -S base-devel
- Per installare SOLO GCC:
Bash:
sudo pacman -S gcc
3.2.3 - Mac OS
Segui le istruzioni di questo link:
3.3 - Compilatore preinstallato con l'IDE (consigliato per WINDOWS)
Un altro modo per avere un compilatore C funzionante è quello di usare un IDE che ne offra uno integrato (cosa che consiglio soprattutto per chi usa windows e magari ha avuto problemi a installarlo manualmente).Gli IDE che dovrebbero avere dei compilatori integrati che ti consiglio sono:
- Visual Studio
- Code::Blocks
LINK:
- Setup VScode per la programmazione C:
- Installare Dark mode su Code::Blocks:
- Setup Sublime Text per la programmazione C: