Il linguaggio C ha origine negli anni 70 del ventesimo secolo, ed è stato sviluppato per funzionare su macchine molto diverse da quelle che conosciamo adesso. Si deve a Dennis Ritchie l’implementazione della prima versione di un compilatore C su un DEC PDP-11 dotato di un sistema operativo UNIX.

Il PDP11/40 esibito al Museo della Tecnica di Vienna

Le specifiche di questo linguaggio sono state standardizzate dall’ANSI (C89/C90). Le implementazioni dei compilatori si attengono a queste direttive e al più propongono degli ampliamenti o ottimizzazioni assicurandone comunque la retrocompatibilità (C99, C11, ecc.).

Ci sono molti testi a cui si può fare riferimento per imparare il C. Non si può fare a meno però di citare quello che si ritiene il testo per eccellenza ovvero “The C Programming Language” di Brian Kernighan e Dennis Ritchie, gli autori del linguaggio. Si tratta di un testo adatto a chi ha una certa familiarità con la programmazione e vuole apprendere questo linguaggio, ma per tutti i programmatori C è un must have e ad esso ci si riferisce con la semplice sigla “K&R” dalle iniziali degli autori.

Questo linguaggio è estremamente versatile, e permette di sviluppare sistemi operativi (il sistema UNIX è scritto in C), compilatori (lo stesso compilatore C è scritto in C), e programmi applicativi (come sottolineano con un certo vezzo gli autori, nella prefazione alla prima edizione di “K&R”, il software usato per preparare il loro libro è stato scritto in C).

Per gli scopi che si pone questo sito il compilatore che verrà usato è il gcc, ovvero GNU Compiler Collection che troviamo installato di default in tutte le principali distribuzioni Linux attenendoci essenzialmente allo standard ANSI.

 _____
< GNU >
 -----
    \               ,-----._
  .  \         .  ,'        `-.__,------._
 //   \      __\\'                        `-.
((    _____-'___))                           |
 `:='/     (alf_/                            |
 `.=|      |='                               |
    |)   O |                                  \
    |      |                               /\  \
    |     /                          .    /  \  \
    |    .-..__            ___   .--' \  |\   \  |
   |o o  |     ``--.___.  /   `-'      \  \\   \ |
    `--''        '  .' / /             |  | |   | \
                 |  | / /              |  | |   mmm
                 |  ||  |              | /| |
                 ( .' \ \              || | |
                 | |   \ \            // / /
                 | |    \ \          || |_|
                /  |    |_/         /_|
               /__/