15 utmärkta gratisböcker för att lära sig C

C är ett generellt, procedurellt, portabelt högnivåprogrammeringsspråk som är ett av de mest populära och inflytelserika språken. Det utformades för att kunna kompileras med hjälp av en enkel kompilator, för att ge tillgång till minne på låg nivå, för att tillhandahålla språkkonstruktioner som effektivt mappas till maskininstruktioner och för att kräva minimalt stöd vid körning. Många programmeringsspråk står i stor skuld till C. Det har blivit något av ett lingua franca i programmeringsvärlden.

C är ganska enkelt att förstå. Det gör det möjligt för programmeraren att organisera program på ett tydligt, enkelt och logiskt sätt. Det är ett mycket flexibelt, praktiskt och kompakt språk kombinerat med en lättläst syntax. Kod skriven i C körs snabbt, med enkel tillgång till datorns lågnivåfaciliteter. Kompileringsdirektiv gör det möjligt att producera en enda version av ett program som kompilerats för olika arkitekturer.

C handlar om frihet. Det är därför vettigt att lära sig C med böcker som också förkroppsligar frihet. Ta en titt på mina val och se om någon av dem faller dig i smaken.

1. The C Book av Mike Banahan, Declan Brady och Mark Doran

The C Book

The C Book

The C Book är utformad för programmerare som redan har viss erfarenhet av att använda ett modernt procedurellt programmeringsspråk på hög nivå.

Du bör redan förstå uttalanden, variabler, villkorligt utförande, matriser, procedurer (eller underrutiner) och så vidare.

Boken koncentrerar sig på de saker som är speciella för C. I synnerhet är det sättet som C används som fokuseras på. Boken är både informativ och trevlig att läsa.

Kapitel omfattar:

  • En introduktion till C
  • Variabler och aritmetik – introducerar några av grunderna i C, inklusive nyckelord och identifierare, deklaration av variabler, reella typer, integrala typer, uttryck och aritmetik samt konstanter
  • Flödesstyrning och logiska uttryck – tittar på de olika sätt som flödesstyrningsanvisningarna kan användas i ett C-program, inklusive några anvisningar som inte har introducerats hittills. Flödeskontroll, fler logiska uttryck och konstiga operatörer
  • Funktioner – typen av funktioner, rekursion och argumentöverlämning samt länkning
  • Matriser och pekare – matriser, pekare, teckenhantering, sizeof och lagringsallokering, pekare till funktioner, uttryck som involverar pekare, matriser, & operatorn och funktionsdeklarationer
  • Strukturerade datatyper – strukturer, unioner, bitfält, enums, kvalificerare och härledda typer samt initialisering
  • Förberedaren – hur förberedaren fungerar och direktiv
  • Specialized Areas of C – deklarationer, definitioner och tillgänglighet, typedef, const och volatile, och sekvenspunkter
  • Bibliotek – diagnostik, teckenhantering, lokalisering, gränser, matematiska funktioner, icke-lokala hopp, signalhantering, variabelt antal argument, in- och utmatning, formaterad I/O, tecken-I/O, oformaterad I/O, funktioner för slumpmässig åtkomst, allmänna verktyg, stränghantering, och datum och tid
  • Complete Programs in C – sätta ihop allt, argument till main, tolkning av programargument, ett mönstermatchningsprogram och ett mer ambitiöst exempel

Författarna ger läsaren tillåtelse att göra vad de vill med boken, förutsatt att det finns ett erkännande av författarna och deras upphovsrätt. Enligt vad Mike Banahan har bekräftat är boken faktiskt under Creative Commons-licensen.

Läs boken

2. C Elements of Style av Steve Oualline

C Elements of Style

C Elements of Style

C Elements of Style är en användbar handbok som behandlar principerna för god programmeringsstil, och som lär C- och C++-programmerare hur man skriver kod som lätt kan läsas, förstås och underhållas av andra. Oavsett om du är student eller professionell programmerare kommer du att ha nytta av de många tipsen och teknikerna för att konstruera elegant och pålitlig kod.

Boken försöker visa läsarna hur man bygger in en god programmeringsstil i sin kod. Eftersom datorn bara läser koden och människan koncentrerar sig på kommentarerna, gäller en bra programmeringsstil båda delarna av ett program.

Det slutgiltiga målet är att bygga en väl utformad och välskriven kod som inte bara utnyttjar datorn på ett effektivt sätt utan som också innehåller omsorgsfullt konstruerade kommentarer för att hjälpa människan att förstå den. Detta tillstånd kommer att underlätta felsökning, underhåll och förbättringsprocessen, vilket i slutändan kommer att förbättra läsbarheten, portabiliteten, tillförlitligheten och underhållbarheten av din kod.

Inuti hittar du riktlinjer för att skriva kommentarer, programrubriker, bestämma variabelnamn, formatering av påståenden, detaljer om påståenden, skriva preprocessor, organisera kataloger och skapa makefile.

Den här boken är publicerad under Creative Commons-licensen.

Läs boken

3. An Introduction to GCC by Brian Gough

An Introduction to GCC

An Introduction to GCC

An Introduction to GCC ger en introduktion till GNU C och C++ Compilers, gcc och g++, som ingår i GNU Compiler Collection (GCC).

När du har läst den här boken vet du hur man kompilerar ett program, använder grundläggande kompilatoralternativ för optimering och felsökning.

Denna bok förklarar hur man använder själva kompilatorn. Baserat på flera års observation av frågor som postats på sändlistor guidar den läsaren direkt till de viktiga alternativen i GCC. Boken lär inte ut C.

Kapitel:

  • Introduktion
  • Kompilering av ett C-program – beskriver hur man kompilerar C-program med gcc. Programmen kan kompileras från en enda källfil eller från flera källfiler och kan använda systembibliotek och headerfiler
  • Kompileringsalternativ – beskriver andra vanligt förekommande kompileringsalternativ som finns tillgängliga i GCC. Dessa alternativ styr funktioner som de sökvägar som används för att hitta bibliotek och inkluderingsfiler, användningen av ytterligare varningar och diagnostik, makro för preprocessor och dialekter för C-språket
  • Användning av preprocessorn – beskriver användningen av GNU C preprocessor cpp, som är en del av GCC-paketet. Preprocessorn expanderar makron i källfiler innan de kompileras. Den anropas automatiskt när GCC bearbetar ett C- eller C++-program
  • Kompilering för felsökning – tillhandahåller alternativet -g debug för att lagra ytterligare felsökningsinformation i objektfiler och körbara filer. Denna felsökningsinformation gör det möjligt att spåra fel från en specifik maskininstruktion till motsvarande rad i den ursprungliga källfilen
  • Kompilering med optimering – GCC är en optimerande kompilator. Den tillhandahåller ett stort antal alternativ som syftar till att öka hastigheten, eller minska storleken på de körbara filer som den genererar
  • Kompilering av ett C++-program – beskriver hur man använder GCC för att kompilera program som är skrivna i C++, och de kommandoradsalternativ som är specifika för det språket
  • Plattformsspecifika alternativ – beskriver några av de alternativ som är tillgängliga för vanliga plattformar: Intel och AMD x86-alternativ, x86-tillägg, x86 64-bitars processorer, DEC Alpha-alternativ, SPARC-alternativ, POWER/PowerPC-alternativ, stöd för flera arkitekturer och flytpunktsproblem
  • Felsökning – GCC tillhandahåller flera hjälp- och diagnosalternativ för att hjälpa till att felsöka problem i samband med kompileringsprocessen
  • Compiler-relaterade verktyg – beskriver ett antal verktyg som är användbara i kombination med GCC. Dessa inkluderar GNU archiver ar, för att skapa bibliotek, och GNU profilerings- och täckningstestprogrammen, gprof och gcov
  • Hur kompilatorn fungerar – beskriver mer detaljerat hur GCC omvandlar källfiler till en körbar fil. Kompilering är en process i flera steg som involverar flera verktyg, inklusive själva GNU Compiler (genom frontenderna gcc eller g++), GNU Assembler as och GNU Linker ld. Den kompletta uppsättningen verktyg som används i kompileringsprocessen kallas verktygskedja
  • Undersökning av kompilerade filer – beskriver flera användbara verktyg för att undersöka innehållet i körbara filer och objektfiler
  • Gemensamma felmeddelanden – beskriver de mest frekventa fel- och varningsmeddelanden som produceras av gcc och g++. Varje fall åtföljs av en beskrivning av orsakerna, ett exempel och förslag på möjliga lösningar
  • Hämta hjälp – om läsaren stöter på ett problem som inte täcks av denna introduktion finns det flera referensmanualer som beskriver GCC och språkrelaterade ämnen mer detaljerat

Den här boken är publicerad under GNU Free Documentation License.

Läs boken

Nästa sida: Sidan 2 – En introduktion till C & GUI och fler böcker

Sidor i denna artikel:
Sida 1 – The C Book och fler böcker
Sida 2 – An Introduction to C & GUI Programming och fler böcker
Sida 3 – The GNU C Reference Manual och fler böcker
Sida 4 – Essential C och fler böcker
Sida 5 – Beej’s Guide to Network Programming och fler böcker

Alla böcker i denna 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

Lämna ett svar

Din e-postadress kommer inte publiceras.