Capitolo 3
Applicazioni: 5/10
Per cosa viene utilizzato: per quali programmi si usa il C e in quali settori è richiesto
Entriamo un pochino nel lato tecnico, giusto per darti una vaga idea di come venga usato il linguaggio C:
- Il il fulcro del sistema operativo (chiamato kernel) di Windows è scritto in C.
- Hai presente Linux? Ubuntu, Centos, Debian, mai sentiti? Ecco, anche i loro “fulcri” o kernel sono tutti scritti in C. Il creatore di Linux, Linus Torvalds, ha dichiarato di non aver voluto usare C++ perché quest’ultimo, a suo dire, è un linguaggio orribile!
- OS X, il sistema operativo della Apple indovina un po’ in cosa è scritto? Già, sempre in C.
- Per il mobile abbiamo iOS, Android e Windows Phone (ma poi c’è qualcuno che usa veramente windows phone? io non ci credo!), tutti e tre scritti in C.
Andiamo a vedere i settori in cui ha senso usare C e in cui viene ancora utilizzato attivamente.
Sistemi Operativi
Ne abbiamo appena parlato. Mai sentito nominare Windows, Linux o Mac?
Tutti scritti in C.
Sistemi Embedded (Sistemi Integrati)
Lo so, è un nome che a prima vista non vuol dire nulla, te lo spiego a modo mio altrimenti non la finiamo più.
Immagina di svegliarti la domenica mattina, con tutta calma e ad un degno orario, circa le 11.
Dopo esserti rigirato nel letto decidi di dare il benvenuto a questo nuovo giorno preparandoti un bel caffè, per colazione.
Prendi le cialde e avvii la tua macchinetta del caffè (se non ne hai una vai a comprarla, poi torni a casa e ti prepari un caffè).
Quella macchinetta, che hai avviato premendo un tastino, è un cosiddetto “sistema integrato” e con tutta probabilità è scritto in C.
Dopo il caffè senti un certo languorino, d’altronde l’ora di pranzo è vicina, quindi apri il frigo e prendi qualcosa da mangiare.
Anche il frigo è un sistema integrato e molto probabilmente anche il programma che lo gestisce è scritto proprio in C.
Decidi di posare il tuo corpo sul divano come fossi un pascià e di accendere la TV per allietare la tua colazione e, anche in questo caso, la televisione è un sistema integrato e con tutta probabilità il suo interno è scritto proprio in C.
Praticamente, con sistemi integrati, o sistemi embedded, si intendono tutti quegli “apparecchi” elettronici che vengono creati per un compito ben preciso.
Ad esempio: la macchinetta del caffè è stata costruita inserendo solo i componenti elettronici che servivano per uno scopo molto preciso, ovvero preparare il caffè, non uno di più non uno di meno.
Compilatori di altri linguaggi
Ti avevo avvisato che qui saremmo entrati nel tecnico.
I codici di alcuni linguaggi (C compreso) per essere eseguiti dalla macchina (computer) devono essere prima “compilati”.
Diciamo che il compilatore è una sorta di traduttore , che trasforma il codice che abbiamo scritto in un codice che il computer possa eseguire.
Questo procedimento di traduzione prende il nome di “compilazione” e il programmino che lo esegue viene chiamato compilatore (adesso sembra tutto più semplice).
Molti linguaggi utilizzano il compilatore scritto proprio in C, la lista è lunga per questo ne cito solo alcuni: Java, C++ o C#.
Interpreti di altri linguaggi
Poco fa ti ho spiegato cos’è il compilatore: un programma che prende un codice e lo converte in linguaggio macchina.
Ora vediamo cos’è l’interprete.
L’interprete funziona più o meno allo stesso modo del compilatore ma con una grande differenza: esegue la traduzione in tempo reale!
Mi spiego meglio:
Immagina il compilatore come una persona, un traduttore baffuto e pignolo.
Noi gli diamo un testo da tradurre e lui, quando ha completato, ci restituisce un altro foglio con tutto il testo tradotto in un’altra lingua.
L’interprete è più come l’amico dell’amico che ti aiuta a farti capire in una nazione straniera.
Non scrive nulla e non ti traduce tutte le frasi possibili e immaginabili, fa tutto a voce e riesce a tradurre una frase alla volta.
Noi diamo all'interprete il codice da tradurre e lui, man mano che lo legge, lo traduce (una riga alla volta). Nel frattempo la macchina lo ascolta ed esegue i comandi.
Questo è essenzialmente ciò che fa l’interprete di linguaggi come PHP, Ruby, Python, Javascript che sono tutti scritti in C.
Database
Hai mai sentito parlare di database?
In italiano possiamo tradurlo come “base di dati” ma non rende molto bene l’idea di cosa sia ...
Ti faccio subito un esempio per capire meglio:
Quando fai una ricerca su google e ti vengono mostrati tutti quei bei risultati, secondo te dove vengono salvati?
Din din din din! In un database, esatto!
Il database è un sistema che si occupa di immagazzinare e organizzare dati.
Facilita alcune operazioni comuni come l’inserimento di nuovi elementi, la ricerca, l’eliminazione e la modifica (in inglese l’insieme di tutte queste operazioni viene chiamato CRUD: Create Read Update Delete).
Mettiamo da parte i database e torniamo a C.
Secondo te ... per cosa può mai essere usato in questo ambito?
Già, per creare il sistema stesso del database!
Infatti viene utilizzato per MySQL, Postgres, Redis, Aerospike e tanti altri.
Web server
Ma quanto stiamo diventando tecnici parlando di questi argomenti?
Eccoci arrivati al più frizzante di tutti: i web server!
Parliamo di web, e questo è facile, ma anche di server, e forse questo è più difficile.
Il server? Che roba è?
Puoi immaginarti un server come un computer collegato ad internet H24 senza schermo, tastiera e mouse.
Ma a che serve un computer del genere? Cosa fa per tutto il tempo?!
Ok, con calma, adesso ci arriviamo.
Immagina un sito internet, come questo, anzi, immagina esattamente questa pagina che stai leggendo.
Puoi vedere del testo, delle immagini, degli altri elementi grafici e così via.
Tutto quello che tu vedi si traduce in dei file reali.
Per semplificare diciamo che hanno il formato pagina .html , e grafica .css.
Ricapitolando, un sito internet non è altro che un insieme di file HTML e CSS.
I file del nostro sito devono essere resi accessibili a tutti, altrimenti li vedremo solo noi!
Per fare questo possiamo utilizzare dei programmini chiamati “web server” e indovina di cosa si occupano?
Di rendere il nostro bel server accessibile via web.
Quindi andando ad un indirizzo web come www.imparareaprogrammare.it viene visualizzata la pagina principale del sito.
Non sarà altro che l’insieme dei file HTML e CSS (nel caso del mio sito anche un pizzico di PHP).
I web server si occupano proprio di questo. I più famosi sono Apache, Httpd e nginx e sono tutti scritti in C.
Il 99% dei programmi del tuo computer
Già, hai capito bene.
La maggior parte dei programmi che usi comunemente nel tuo computer sono completamente, o parzialmente, scritti in C.