15 Uitstekende gratis boeken om C te leren

C is een algemene, procedurele, overdraagbare programmeertaal op hoog niveau en is een van de populairste en invloedrijkste talen. De taal is ontworpen om te worden gecompileerd met behulp van een eenvoudige compiler, om op laag niveau toegang tot het geheugen te bieden, om taalconstructies te bieden die efficiënt kunnen worden omgezet naar machine-instructies en om minimale runtime-ondersteuning te vereisen. Veel programmeertalen zijn schatplichtig aan C. Het is zo’n beetje de lingua franca in de programmeerwereld geworden.

C is vrij eenvoudig te begrijpen. Het stelt de programmeur in staat programma’s op een duidelijke, gemakkelijke, logische manier te organiseren. Het is een zeer flexibele, praktische en compacte taal, gecombineerd met een gemakkelijk te lezen syntaxis. In C geschreven code loopt snel, met gemakkelijke toegang tot de low-level faciliteiten in de computer. Compiler directives maken het mogelijk om een enkele versie van een programma te produceren, gecompileerd voor verschillende architecturen.

C gaat over vrijheid. Daarom is het zinvol om C te leren met boeken die ook vrijheid belichamen. Kijk maar eens of een van mijn boeken je aanspreekt.

1. The C Book van Mike Banahan, Declan Brady en Mark Doran

The C Book

The C Book

The C Book is ontworpen voor programmeurs die al enige ervaring hebben met het gebruik van een moderne procedurele programmeertaal op hoog niveau.

U zou al iets moeten begrijpen van statements, variabelen, voorwaardelijke uitvoering, arrays, procedures (of subroutines) enzovoort.

Het boek concentreert zich op de dingen die speciaal zijn aan C. In het bijzonder is het de manier waarop C wordt gebruikt die wordt gefocust. Het boek is zowel informatief als prettig leesbaar.

De hoofdstukken omvatten:

  • Een inleiding tot C
  • Variabelen en rekenkunde – introduceert enkele van de grondbeginselen van C, waaronder trefwoorden en identificatoren, declaratie van variabelen, reële typen, integrale typen, uitdrukkingen en rekenkunde, en constanten
  • Control of Flow and Logical Expressions – gaat in op de verschillende manieren waarop de control of flow statements in een C-programma kunnen worden gebruikt, waaronder enkele statements die tot nu toe nog niet zijn geïntroduceerd. Flow control, meer logische expressies, en vreemde operatoren
  • Functies – het type functies, recursie en argument passing, en linkage
  • Arrays en pointers – arrays, pointers, character handling, sizeof en storage allocation, pointers naar functies, expressies met pointers, arrays, de & operator en functieverklaringen
  • Gestructureerde gegevenstypen – structuren, unions, bitfields, enums, qualifiers en afgeleide typen, en initialisatie
  • De preprocessor – hoe de preprocessor werkt, en directives
  • Gespecialiseerde gebieden van C – declaraties, definities en toegankelijkheid, typedef, const en volatile, en sequentiepunten
  • Bibliotheken – diagnostiek, tekenbehandeling, lokalisatie, limieten, wiskundige functies, niet-lokale sprongen, signaalbehandeling, variabel aantal argumenten, invoer en uitvoer, geformatteerde I/O, teken-I/O, niet-geformatteerde I/O, functies voor willekeurige toegang, algemene hulpprogramma’s, tekenreeksbehandeling, en datum en tijd
  • Volledige programma’s in C – alles samenvoegen, argumenten voor main, programma argumenten interpreteren, een patroon overeenstemmend programma, en een meer ambitieus voorbeeld

De auteurs geven de lezer toestemming om met het boek te doen wat hij wil, mits er een erkenning van de auteurs en hun copyright bij zit. Van wat Mike Banahan heeft bevestigd, valt het boek effectief onder de Creative Commons Licentie.

Lees het boek

2. C Elements of Style door Steve Oualline

C Elements of Style

C Elements of Style

C Elements of Style is een handige gids die de beginselen van een goede programmeerstijl behandelt, en C- en C++-programmeurs leert hoe ze code moeten schrijven die door anderen gemakkelijk kan worden gelezen, begrepen en onderhouden. Of u nu een student of een professionele programmeur bent, u zult profiteren van de vele tips en technieken voor het bouwen van elegante, betrouwbare code.

Het boek probeert lezers te laten zien hoe u een goede programmeerstijl in uw code kunt bouwen. Aangezien de computer alleen de code leest en de mens zich concentreert op het commentaar, heeft een goede programmeerstijl betrekking op beide delen van een programma.

Het uiteindelijke doel is het bouwen van een goed ontworpen, goed geschreven code die niet alleen effectief gebruik maakt van de computer en maar ook zorgvuldig geconstrueerd commentaar bevat om de mens te helpen het te begrijpen. Deze voorwaarde zal het debuggen, onderhoud en verbeteringsproces vergemakkelijken, wat uiteindelijk de leesbaarheid, portabiliteit, betrouwbaarheid en onderhoudbaarheid van uw code zal verbeteren.

Binnenin vindt u richtlijnen over het schrijven van commentaar, programmakoppen, het bepalen van variabelennamen, statement formattering, statement details, het schrijven van een preprocessor, het organiseren van directories en het maken van makefile.

Dit boek is gepubliceerd onder de Creative Commons Licentie.

Lees het boek

3. An Introduction to GCC door Brian Gough

An Introduction to GCC

An Introduction to GCC

An Introduction to GCC geeft een introductie tot de GNU C en C++ Compilers, gcc en g++, die deel uitmaken van de GNU Compiler Collection (GCC).

Na het lezen van dit boek weet u hoe u een programma moet compileren en hoe u de basisopties van de compiler voor optimalisatie en debugging moet gebruiken.

Dit boek legt uit hoe u de compiler zelf moet gebruiken. Gebaseerd op jaren van observatie van vragen gepost op mailinglijsten, leidt het de lezer rechtstreeks naar de belangrijke opties van GCC. Het boek leert de lezer geen C.

Hoofdstukken:

  • Inleiding
  • Compileren van een C-programma – beschrijft hoe je C-programma’s compileert met gcc. Programma’s kunnen worden gecompileerd vanuit een enkel bronbestand of vanuit meerdere bronbestanden, en kunnen systeembibliotheken en header-bestanden gebruiken
  • Compilatie-opties – beschrijft andere veelgebruikte compileropties die beschikbaar zijn in GCC. Deze opties regelen functies zoals de zoekpaden die worden gebruikt voor het lokaliseren van bibliotheken en include bestanden, het gebruik van extra waarschuwingen en diagnostieken, preprocessor macro’s en C taal dialecten
  • De preprocessor gebruiken – beschrijft het gebruik van de GNU C preprocessor cpp, die deel uitmaakt van het GCC pakket. De preprocessor breidt macro’s in bronbestanden uit voordat ze worden gecompileerd. Hij wordt automatisch aangeroepen wanneer GCC een C of C++ programma verwerkt
  • Compileren voor debugging – biedt de -g debug optie om extra debug informatie op te slaan in object bestanden en executables. Met deze debug-informatie kunnen fouten worden getraceerd van een specifieke machine-instructie naar de corresponderende regel in het originele bron-bestand
  • Compileren met optimalisatie – GCC is een optimaliserende compiler. Het biedt een breed scala aan opties die tot doel hebben de snelheid te verhogen, of de grootte te verminderen, van de uitvoerbare bestanden die het genereert
  • Compileren van een C++ programma – beschrijft hoe GCC gebruikt kan worden om programma’s geschreven in C++ te compileren, en de opdrachtregel opties die specifiek zijn voor die taal
  • Platform-specifieke opties – beschrijft enkele van de opties die beschikbaar zijn voor gangbare platforms: Intel en AMD x86 opties, x86 uitbreidingen, x86 64-bit processoren, DEC Alpha opties, SPARC opties, POWER/PowerPC opties, Multi-architecture ondersteuning, en floating-point problemen
  • Troubleshooting – GCC biedt verschillende hulp en diagnostische opties om problemen met het compilatieproces op te lossen
  • Compiler-gerelateerde tools – beschrijft een aantal tools die nuttig zijn in combinatie met GCC. Deze omvatten de GNU archiver ar, voor het maken van bibliotheken, en de GNU profiling en coverage test programma’s, gprof en gcov
  • Hoe de compiler werkt – beschrijft in meer detail hoe GCC bronbestanden omzet in een uitvoerbaar bestand. Compilatie is een meerfasig proces waarbij verschillende gereedschappen betrokken zijn, waaronder de GNU Compiler zelf (via de gcc of g++ frontends), de GNU Assembler as, en de GNU Linker ld. De complete set van gereedschappen gebruikt in het compilatie proces wordt een toolchain genoemd
  • Onderzoeken van gecompileerde bestanden – beschrijft verscheidene nuttige gereedschappen voor het onderzoeken van de inhoud van uitvoerbare bestanden en object bestanden
  • Gemeenschappelijke fout berichten – beschrijft de meest voorkomende fout en waarschuwings berichten geproduceerd door gcc en g++. Elk geval gaat vergezeld van een beschrijving van de oorzaken, een voorbeeld en suggesties voor mogelijke oplossingen
  • Hulp krijgen – als lezers een probleem tegenkomen dat niet door deze inleiding wordt behandeld, zijn er verschillende referentiehandleidingen die GCC en taal-gerelateerde onderwerpen meer in detail beschrijven

Dit boek is gepubliceerd onder de GNU Free Documentation License.

Lees het boek

Volgende pagina: Pagina 2 – Een Introductie tot C & GUI en meer boeken

Pagina’s in dit artikel:
Pagina 1 – The C Book en meer boeken
Pagina 2 – An Introduction to C & GUI Programming en meer boeken
Pagina 3 – The GNU C Reference Manual en meer boeken
Pagina 4 – Essential C en meer boeken
Pagina 5 – Beej’s Guide to Network Programming en meer boeken

Alle boeken in deze 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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.