Impariamo il C: lezione 1



*FAQ* seguire:

1. *Come è possibile che il programma funzioni solo col prototipo della printf()?* Be’, di default i programmi in C vengono “linkati” con la “libc”. La libc contiene un insieme di funzioni standard, che sono a disposizione di *ogni* programma in C. Per cui quando il compilatore, alla fine, deve produrre il binario, va a controllare se dentro l’insieme di librerie con cui sta producendo il programma finale c’è una funzione che si chiama “printf”. La trova, e la usa. La libc non viene compilata assieme al programma, è già un binario da qualche parte nel sistema, e viene caricata solo al momento in cui il programma viene eseguito (shared library).

2. *So seguendo il corso su Windows, come faccio ad avere il compilatore C e gli altri strumenti che utilizzi nelle lezioni?* Basta installare Windows Subsystem for Linux (WSL2). Ci sono guide ovunque, ed è gratuito.

3. *Che emulatore di terminale, che shell e che editor utilizzi?* Il terminale è Ghostty, un nuovo progetto open source molto interessante. La shell è la zsh, e l’editor è vim.

source

33 Comments

  1. 00.00: Presentazione del corso
    04.00: Breve presentazione del C
    05.22: Hello world
    08.47: Ottimizzazioni del compilatore
    14.50: Direttive del preprocessore e file di intestazione
    19.57 Prototipi di funzione

  2. Suggerisco a chi e' interessato al linguaggio di buttare un occhio all' include file (stdio.h in questo caso ma ce ne sono tanti altri) per ammirare [o detestare, fate voi] cosa c'è sotto il cofano. Nel mondo Unix si trovano sotto /usr/include. A me il C piace molto e seguiro' la serie con molta attenzione perché c'è sempre da imparare.

  3. un contenuto didattico e tecnico di un livello semplicemente stellare, un vero regalo per la nostra community. 🇮🇹

    Per studiare meglio e fissare i concetti, è nato uno strumento per rendere questo materiale navigabile e più fruibile per lo studio.

    Inizialmente solo per uso personale, ho realizzato una piccola Web App che raccoglie riassunti delle lezioni, concetti chiave, esercizi pratici, domande di verifica, terminali simulati e animazioni grafiche per visualizzare meglio i meccanismi del linguaggio — il tutto pensato per accompagnare passo passo il corso originale.

    Oggi ho deciso di rilasciarla del tutto aperta e gratuita. Spero possa essere utile a studenti, appassionati o semplicemente a chiunque voglia godersi al meglio il corso di Salvatore.

    Il progetto è open source e collaborativo. Se volete usarlo, o magari contribuire per migliorarlo, siete i benvenuti!

  4. Molto chiaro ed esaustivo (certo dovresti avere meno fretta quando scrivi i comandi ma va be ci sta)

    Per chi fosse curioso ho scritto un piccolo programmino in C che opera senza librerie per far capire che gli header vanno a implementare quelle funzioni che normalmente in C non esistono senza headers.

    //Questo esempio non usa nessun header.
    //ASM per Kernel Linux

    long myprint(long fd, const char *buf, long len) {
    //Questa funzione scritta in ASM Stampa la stringa come farebbe printf()

    long ret;
    _asm_ volatile (
    "movq $1, %%raxnt" // syscall number: 1 = write
    "syscall"
    : "=a"(ret)
    : "D"(fd), "S"(buf), "d"(len)
    : "rcx", "r11", "memory"
    );
    return ret;
    }

    long endprogram(long code) {
    //Questa funzione invece è necessaria poichè senza il programma non saprebbe cosa fare andando a eseguire la prossima istruzione nella memoria e non essendoci darebbe errore di segmentazione.

    _asm_ volatile (
    "movq $60, %%raxnt" // syscall number: 60 = exit
    "syscall"
    :
    : "D"(code)
    : "rax", "rcx", "r11", "memory"
    );
    __builtin_unreachable();
    }

    int main(void) {
    const char msg[] = "Hello, world!n"; //Inizializzo l'array di caratteri inserendo una stringa con ritorno a capo
    myprint(1, msg, sizeof(msg) – 1); //Invio alla funzione la stringa per stamparla a video
    endprogram(0); //Eseguo la funzione per indicare al programma che deve terminare la sua esecuzione e tornare al sistema.
    }

    Ovviamente Per te Salvo questo programma ha delle pecche come la syscall che non ritorna, ma la lascio così magari ti viene qualche spunto per una tua lezione.

  5. Ho una certa infarinatura con l'informatica e la programmazione.. Ho sentito parlare di te molto bene e ho cercato i tuoi video, guarda caso imparare C seriamente è una cosa che volevo fare da tempo, già nei primi 15 minuti sono rimasto di stucco, si prospetta un corso interessante

  6. Quell'espressione WTF al "Gulf Cooperation Council" come primo risultato per gcc fa oggettivamente spaccare dalle risate 🤣

    Video fatto benissimo comunque, non vedo l'ora di recuperarmi pian piano l'intera serie!

  7. "Ma che mi frega del C che l'ho visto fino allo sfinimento all'università" Primo pensiero appena ho visto i video delle lezioni in C.
    "Sarà un corso per insegnare ai ragazzini a programmare" Secondo pensiero mentre cliccavo su un altro tuo video.
    "Cazzo ha detto che la cosa a cui tiene di più sul canale è il corso in C" Primo e Ultimo pensiero dopo aver visto il video sul quit di linkedin. A quel punto ho veramente ralizzato cosa questo corso fosse.
    Students count +1.

  8. Grazie Salvatore per questo corso sul C molto pratico e ti ringrazio che trovi il tempo per condividere questo materiale nei tuoi ritagli di tempo libero, ho anche avuto il piacere qualche settimana fa di assistere ad un seminario di Richard Stallman alla Sapienza qui a Roma e di farmi una foto con lui, anche se a distanza ( è molto disponibile solo che è un po paranoico ed evita il contatto con gli altri), soltanto che ha fatto una lezione che ripete sempre le stesse cose che si trovano già qui su YouTube e le domande non erano un granché che da parte degli altri studenti, pensavo fosse molto più alto il livello tecnico degli studenti e dei presenti, vista la grande affluenza.

  9. Buongiorno a tutti, ho scoperto questo canale da pochissimo e adesso nel tempo libero sto cercando quanto piu possibile di seguirlo. Tuttavia mi rendo conto che mi mancano delle nozioni di programmazione generale ( mi riferisco a nomenclature e operazioni a cui spesso si fa riferimento ). Qualcuno sa consigliarmi dei corsi o dei forum da seguire per capire meglio la programmazione? Vedo spesso che fa riferimento a github che io non uso praticamente mai, cosa mi consigliate di fare? Grazie in anticipo

Leave a Reply

Your email address will not be published. Required fields are marked *

You might like

© 2026 Cantinho do Vídeo - WordPress Video Theme by WPEnjoy