In realtà il C è più un'interfaccia più umana per programmare un computer. L'alternativa è il linguaggio macchina vero e proprio e/o l'asm.
Il fatto che sia diventato un linguaggio potente, che già di per sè lo è visto che parla binario diretto con l'hardware, è dato dal fatto che sopra ci sono state sviluppate librerie. L'esempio più tangibile è la sua evoluzione Plus (C++), che introduce la gestione degli oggetti.
Dato che, come ho detto, è un tramite un pò più umano per interfacciare l'utente con la macchina, la sua potenza e quasi pari al programmare i registri direttamente del processore.
Di suo non ha controlli, non fornisce aiuto, e non controlla quello che stai facendo. Quello è tutto compito del programmatore, che DEVE sapere cosa stà facendo. Se si utilizza un puntatore su un'area di memoria, il programmatore DEVE sapere se questa memoria appartiene alla ram, al rom dle bios, alla scheda video, o alla cache del processore, e quindi DEVE sapere perchè la stà utilizzando, come utilizzarla, e i dati che e come trattarli.
Da qui che nasce un sistema operativo, e dovete tener conto che tutti, e dico tutti, i linguaggi hanno il 90% del codice compilato scritto in C, il resto è asm puro (solo per risolvere casi particolarissimi).
Se prendiamo anche un linguaggio come Java, è da tener presente che, per poter essere trasportabile, deve poter usare le specifiche logiche di quel determinato sistema, e quindi essere compilato per quel specifico ambiente. Ad ogni modo, praticamente tutto il motore di Java è scritto con un linguaggio, e questo è il C.
Se prendiamo i motori di database, vedi PostgreSQL, MySQL e SQLite (tanto per citare solo quelli open), sono scritti in C (e neppure il C++, proprio e solo in C).
La velocità di esecuzione, ovviamente se il programma è scritto bene, e ben ottimizzato, non può essere eguagliata da nessun altro linguaggio.
Insomma, tutto quello che vediamo oggi, sia che si tratti di linguaggi che di sistemi operativi, hanno la stessa base.
Tutto ciò che vediamo ora, sono applicativi, per costruire altre applicazioni in modo più o meno facile, e/o più o meno artisticamente bello, in cui conta di più il raggiungimento dell'obiettivo in modo più semplice e facile possibile, ma senza aver la benchè minima conoscenza di quello che avviene sotto, e di conseguenza il non avere quel minimo di sensibilità per lavorare al meglio delle nostre possibilità e delle possibilità della macchina.
Come qualcuno ha accennato, io sono contento di essere passato per un'epoca in cui era molto a livello sperimentale, che mi è servito a farmi le osse, conoscenza e particolare sensibilità in questo ambiente, che mi ha permesso, e mi permette tuttore, di capire e risolvere problemi, anche se non ho una conoscenza diretta, e questo perchè sò qual'è la base comune da cui tutto parte, e su cui si fondano le strutture di oggi, nonostante qualcuno se ne dimentichi.