15 ottimi libri gratuiti per imparare il C

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

The C Book

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

C Elements of Style

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

An Introduction to GCC

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.