C è un linguaggio di programmazione generale, procedurale, portatile e di alto livello che è uno dei linguaggi più popolari e influenti. È stato progettato per essere compilato usando un compilatore semplice, per fornire un accesso di basso livello alla memoria, per fornire costrutti di linguaggio che mappino efficientemente le istruzioni della macchina, e per richiedere un supporto minimo di run-time. Molti linguaggi di programmazione hanno un debito considerevole verso il C. È diventato una specie di lingua franca nel mondo della programmazione.
C è abbastanza semplice da capire. Permette al programmatore di organizzare i programmi in modo chiaro, facile e logico. È un linguaggio molto flessibile, pratico e compatto combinato con una sintassi facile da leggere. Il codice scritto in C gira velocemente, con un facile accesso alle strutture di basso livello del computer. Le direttive del compilatore rendono possibile produrre una singola versione di un programma compilato per diverse architetture.
C significa libertà. Ha quindi senso imparare il C con libri che incarnano anche la libertà. Date un’occhiata alle mie scelte e vedete se qualcuna di esse vi piace.
1. The C Book di Mike Banahan, Declan Brady e Mark Doran
The C Book è progettato per i programmatori che hanno già qualche esperienza nell’uso di un moderno linguaggio di programmazione procedurale di alto livello.
Dovreste già capire le dichiarazioni, le variabili, l’esecuzione condizionale, gli array, le procedure (o subroutine) e così via.
Il libro si concentra sulle cose che sono speciali del C. In particolare, è il modo in cui il C viene usato che viene messo a fuoco. Il libro è sia informativo che di buona lettura.
I capitoli includono:
- Un’introduzione al C
- Variabili e aritmetica – introduce alcuni dei fondamenti del C, incluse parole chiave e identificatori, dichiarazione di variabili, tipi reali, tipi integrali, espressioni e aritmetica, e costanti
- Controllo del flusso ed espressioni logiche – esamina i vari modi in cui le dichiarazioni di controllo del flusso possono essere usate in un programma C, incluse alcune dichiarazioni che non sono state presentate finora. Controllo del flusso, altre espressioni logiche, e strani operatori
- Funzioni – il tipo di funzioni, ricorsione e passaggio di argomenti, e linkage
- Array e puntatori – array, puntatori, gestione dei caratteri, sizeof e allocazione della memoria, puntatori a funzioni, espressioni che coinvolgono puntatori, array, l’& operatore e dichiarazioni di funzioni
- Tipi di dati strutturati – strutture, unioni, bitfield, enum, qualificatori e tipi derivati, e inizializzazione
- Il preprocessore – come funziona il preprocessore e le direttive
- Aree specializzate del C – dichiarazioni, definizioni e accessibilità, typedef, const e volatile, e punti sequenza
- Librerie – diagnostica, gestione dei caratteri, localizzazione, limiti, funzioni matematiche, salti non locali, gestione dei segnali, numero variabile di argomenti, input e output, I/O formattato, I/O a caratteri, I/O non formattato, funzioni ad accesso casuale, utilità generali, gestione delle stringhe, e data e ora
- Programmi completi in C – mettere tutto insieme, argomenti per main, interpretare gli argomenti del programma, un programma di pattern matching, e un esempio più ambizioso
Gli autori danno al lettore il permesso di fare qualsiasi cosa vogliano con il libro, purché ci sia un riconoscimento degli autori e del loro copyright. Da quello che Mike Banahan ha confermato, il libro è effettivamente sotto la Licenza Creative Commons.
Leggi il libro
2. C Elements of Style di Steve Oualline
C Elements of Style è un’utile guida che copre i principi del buon stile di programmazione, insegnando ai programmatori C e C++ come scrivere codice che possa essere facilmente letto, compreso e mantenuto da altri. Che tu sia uno studente o un programmatore professionista, beneficerai dei molti consigli e tecniche per costruire un codice elegante e affidabile.
Il libro cerca di mostrare ai lettori come costruire un buon stile di programmazione nel tuo codice. Poiché il computer legge solo il codice e l’uomo si concentra sui commenti, un buon stile di programmazione riguarda entrambe le parti di un programma.
L’obiettivo finale è quello di costruire un codice ben progettato e ben scritto che non solo faccia un uso efficace del computer, ma contenga anche commenti accuratamente costruiti per aiutare l’uomo a capirlo. Questa condizione faciliterà il debug, la manutenzione e il processo di miglioramento, che alla fine migliorerà la leggibilità, la portabilità, l’affidabilità e la manutenibilità del vostro codice.
All’interno, troverete linee guida sulla scrittura dei commenti, l’intestazione del programma, la determinazione dei nomi delle variabili, la formattazione degli statement, i dettagli degli statement, la scrittura del preprocessore, l’organizzazione delle directory e la creazione del makefile.
Questo libro è pubblicato sotto la Licenza Creative Commons.
Leggi il libro
3. An Introduction to GCC by Brian Gough
An Introduction to GCC fornisce un’introduzione ai compilatori GNU C e C++, gcc e g++, che fanno parte della GNU Compiler Collection (GCC).
Dopo aver letto questo libro, saprai come compilare un programma, usare le opzioni di base del compilatore per l’ottimizzazione e il debug.
Questo libro spiega come usare il compilatore stesso. Basato su anni di osservazione delle domande postate sulle mailing list, guida il lettore direttamente alle opzioni importanti di GCC. Il libro non insegna il C.
Capitoli:
- Introduzione
- Compilazione di un programma C – descrive come compilare programmi C usando gcc. I programmi possono essere compilati da un singolo file sorgente o da più file sorgente, e possono utilizzare librerie di sistema e file di intestazione
- Opzioni di compilazione – descrive altre opzioni del compilatore comunemente usate disponibili in GCC. Queste opzioni controllano caratteristiche come i percorsi di ricerca usati per localizzare le librerie e i file di inclusione, l’uso di avvertimenti e diagnostica aggiuntivi, le macro del preprocessore e i dialetti del linguaggio C
- Uso del preprocessore – descrive l’uso del preprocessore GNU C cpp, che è parte del pacchetto GCC. Il preprocessore espande le macro nei file sorgente prima che vengano compilati. Viene chiamato automaticamente ogni volta che GCC elabora un programma C o C++
- Compilazione per il debug – fornisce l’opzione -g debug per memorizzare ulteriori informazioni di debug nei file oggetto e negli eseguibili. Queste informazioni di debug permettono di risalire agli errori da una specifica istruzione della macchina alla linea corrispondente nel file sorgente originale
- Compilazione con ottimizzazione – GCC è un compilatore di ottimizzazione. Fornisce una vasta gamma di opzioni che mirano ad aumentare la velocità, o ridurre la dimensione, dei file eseguibili che genera
- Compilazione di un programma C++ – descrive come usare GCC per compilare programmi scritti in C++, e le opzioni della riga di comando specifiche per quel linguaggio
- Opzioni specifiche per le piattaforme – descrive alcune delle opzioni disponibili per le piattaforme comuni: Opzioni Intel e AMD x86, estensioni x86, processori x86 a 64 bit, opzioni DEC Alpha, opzioni SPARC, opzioni POWER/PowerPC, supporto multi-architettura e problemi in virgola mobile
- Risoluzione dei problemi – GCC fornisce diverse opzioni di aiuto e di diagnostica per aiutare a risolvere i problemi con il processo di compilazione
- Strumenti correlati al compilatore – descrive un certo numero di strumenti che sono utili in combinazione con GCC. Questi includono il GNU archiver ar, per la creazione di librerie, e i programmi GNU di profiling e test di copertura, gprof e gcov
- Come funziona il compilatore – descrive più in dettaglio come GCC trasforma i file sorgente in un file eseguibile. La compilazione è un processo a più stadi che coinvolge diversi strumenti, tra cui il compilatore GNU stesso (attraverso le interfacce gcc o g++), l’assemblatore GNU as e il linker GNU ld. L’insieme completo degli strumenti usati nel processo di compilazione viene chiamato toolchain
- Esame dei file compilati – descrive diversi strumenti utili per esaminare il contenuto dei file eseguibili e dei file oggetto
- Messaggi di errore comuni – descrive i più frequenti messaggi di errore e di avviso prodotti da gcc e g++. Ogni caso è accompagnato da una descrizione delle cause, un esempio e suggerimenti di possibili soluzioni
- Per ottenere aiuto – se il lettore incontra un problema non coperto da questa introduzione, ci sono diversi manuali di riferimento che descrivono GCC e argomenti relativi al linguaggio in modo più dettagliato
Questo libro è pubblicato sotto la GNU Free Documentation License.
Leggi il libro
Next page: Pagina 2 – Un’introduzione al C & GUI e altri libri
Pagine in questo articolo:
Pagina 1 – Il libro C e altri libri
Pagina 2 – Un’introduzione al C & Programmazione GUI e altri libri
Pagina 3 – Il manuale di riferimento GNU C e altri libri
Pagina 4 – Essential C e altri libri
Pagina 5 – Beej’s Guide to Network Programming e altri libri
Tutti i libri di questa serie:
Free Programming Books | |
---|---|
Java | General-purpose, concurrent, class-based, object-oriented, high-level language |
C | General-purpose, procedural, portable, high-level language |
Python | General-purpose, structured, powerful language |
C++ | General-purpose, portable, free-form, multi-paradigm language |
C# | Combines the power and flexibility of C++ with the simplicity of Visual Basic |
JavaScript | Interpreted, prototype-based, scripting language |
PHP | PHP has been at the helm of the web for many years |
HTML | HyperText Markup Language |
SQL | Access and manipulate data held in a relational database management system |
Ruby | General purpose, scripting, structured, flexible, fully object-oriented language |
Assembly | As close to writing machine code without writing in pure hexadecimal |
Swift | Powerful and intuitive general-purpose programming language |
Groovy | Powerful, optionally typed and dynamic language |
Go | Compiled, statically typed programming language |
Pascal | Imperative and procedural language designed in the late 1960s |
Perl | High-level, general-purpose, interpreted, scripting, dynamic language |
R | De facto standard among statisticians and data analysts |
COBOL | Common Business-Oriented Language |
Scala | Modern, object-functional, multi-paradigm, Java-based language |
Fortran | The first high-level language, using the first compiler |
Scratch | Visual programming language designed for 8-16 year-old children |
Lua | Designed as an embeddable scripting language |
Logo | Dialect of Lisp that features interactivity, modularity, extensibility |
Rust | Ideal for systems, embedded, and other performance critical code |
Lisp | Unique features – excellent to study programming constructs |
Ada | ALGOL-like programming language, extended from Pascal and other languages |
Haskell | Standardized, general-purpose, polymorphically, statically typed language |
Scheme | A general-purpose, functional language descended from Lisp and Algol |
Prolog | A general purpose, declarative, logic programming language |
Forth | Imperative stack-based programming language |
Clojure | Dialect of the Lisp programming language |
Julia | High-level, high-performance language for technical computing |
Awk | Versatile language designed for pattern scanning and processing language |
CoffeeScript | Transcompiles into JavaScript inspired by Ruby, Python and Haskell |
BASIC | Beginner’s All-purpose Symbolic Instruction Code |
Erlang | General-purpose, concurrent, declarative, functional language |
VimL | Powerful scripting language of the Vim editor |
OCaml | The main implementation of the Caml language |
ECMAScript | Best known as the language embedded in web browsers |
Bash | Shell and command language; popular both as a shell and a scripting language |
LaTeX | Professional document preparation system and document markup language |
TeX | Markup and programming language – create professional quality typeset text |
Arduino | Inexpensive, flexible, open source microcontroller platform |
TypeScript | Strict syntactical superset of JavaScript adding optional static typing |
Elixir | Relatively new functional language running on the Erlang virtual machine |
F# | Uses functional, imperative, and object-oriented programming methods |
Tcl | Dynamic language based on concepts of Lisp, C, and Unix shells |
Factor | Dynamic stack-based programming language |
Eiffel | Object-oriented language designed by Bertrand Meyer |
Agda | Dependently typed functional language based on intuitionistic Type Theory |
Icon | Wide variety of features for processing and presenting symbolic data |
XML | Rules for defining semantic tags describing structure ad meaning |
Vala | Object-oriented language, syntactically similar to C# |
Standard ML | General-purpose functional language characterized as “Lisp with types” |
D | General-purpose systems programming language with a C-like syntax |
Dart | Client-optimized language for fast apps on multiple platforms |
Markdown | Plain text formatting syntax designed to be easy-to-read and easy-to-write |
Kotlin | More modern version of Java |
Objective-C | Object-oriented language that adds Smalltalk-style messaging to C |
PureScript | Small strongly, statically typed language compiling to JavaScript |
ClojureScript | Compiler for Clojure that targets JavaScript |
VHDL | Hardware description language used in electronic design automation |