15 Doskonałe darmowe książki do nauki C

C jest językiem programowania ogólnego przeznaczenia, proceduralnym, przenośnym, wysokiego poziomu, który jest jednym z najbardziej popularnych i wpływowych języków. Został zaprojektowany tak, aby można go było skompilować za pomocą prostego kompilatora, aby zapewnić niskopoziomowy dostęp do pamięci, aby dostarczyć konstrukcje językowe, które wydajnie odwzorowują instrukcje maszynowe i wymagają minimalnego wsparcia w czasie uruchamiania. Wiele języków programowania ma znaczny dług wobec C. Stał się on czymś w rodzaju lingua franca w świecie programowania.

C jest dość prosty do zrozumienia. Pozwala programiście na organizowanie programów w jasny, łatwy, logiczny sposób. Jest to bardzo elastyczny, praktyczny i zwarty język połączony z łatwą do odczytania składnią. Kod napisany w C działa szybko, z łatwym dostępem do niskopoziomowych obiektów w komputerze. Dyrektywy kompilatora pozwalają na stworzenie jednej wersji programu skompilowanego dla różnych architektur.

C to wolność. Dlatego sensowne jest uczenie się C z książek, które również ucieleśniają wolność. Spójrz na moje propozycje i sprawdź, czy któraś z nich przypadnie Ci do gustu.

1. The C Book autorstwa Mike’a Banahana, Declana Brady’ego i Marka Dorana

The C Book

The C Book

The C Book jest przeznaczona dla programistów, którzy mają już pewne doświadczenie w używaniu nowoczesnego proceduralnego języka programowania wysokiego poziomu.

Powinieneś już rozumieć oświadczenia, zmienne, wykonywanie warunkowe, tablice, procedury (lub podprogramy) i tak dalej.

Książka koncentruje się na rzeczach, które są specjalne dla C. W szczególności, jest to sposób, że C jest używany, który jest skoncentrowany na. Książka jest zarówno pouczająca, jak i dobrze się ją czyta.

Rozdziały zawierają:

  • Wprowadzenie do języka C
  • Zmienne i arytmetyka – przedstawia niektóre z podstaw języka C, w tym słowa kluczowe i identyfikatory, deklaracje zmiennych, typy rzeczywiste, typy całkowite, wyrażenia i arytmetykę oraz stałe
  • Kontrola przepływu i wyrażenia logiczne – przygląda się różnym sposobom, na jakie można wykorzystać deklaracje kontroli przepływu w programie C, w tym niektóre deklaracje, które nie zostały do tej pory wprowadzone. Kontrola przepływu, więcej wyrażeń logicznych i dziwne operatory
  • Funkcje – rodzaje funkcji, rekurencja i przekazywanie argumentów oraz powiązania
  • Tarcze i wskaźniki – tablice, wskaźniki, obsługa znaków, sizeof i alokacja pamięci, wskaźniki do funkcji, wyrażenia z wykorzystaniem wskaźników, tablice, & operator i deklaracje funkcji
  • Strukturalne typy danych – struktury, związki, pola bitowe, enumy, kwalifikatory i typy pochodne oraz inicjalizacja
  • Preprocesor – jak działa preprocesor i dyrektywy
  • Specjalne obszary języka C – deklaracje, definicje i dostępność, typedef, const i volatile oraz punkty sekwencji
  • Biblioteki – diagnostyka, obsługa znaków, lokalizacja, ograniczenia, funkcje matematyczne, skoki nielokalne, obsługa sygnałów, zmienne liczby argumentów, wejście i wyjście, formatowane we/wy, znakowe we/wy, niesformatowane we/wy, funkcje dostępu losowego, narzędzia ogólne, obsługa łańcuchów, oraz data i czas
  • Kompletne programy w C – składanie wszystkiego do kupy, argumenty do main, interpretacja argumentów programu, program dopasowujący wzorce i bardziej ambitny przykład

Autorzy dają czytelnikowi pozwolenie na zrobienie z książką, co tylko zechce, pod warunkiem, że będzie uznanie autorów i ich praw autorskich. Z tego co potwierdził Mike Banahan, książka jest efektywnie na licencji Creative Commons.

Przeczytaj książkę

2. C Elements of Style by Steve Oualline

C Elements of Style

C Elements of Style

C Elements of Style to przydatny przewodnik, który obejmuje zasady dobrego stylu programowania, ucząc programistów C i C++, jak pisać kod, który może być łatwo odczytany, zrozumiany i utrzymany przez innych. Niezależnie od tego, czy jesteś studentem, czy profesjonalnym programistą, skorzystasz z wielu wskazówek i technik konstruowania eleganckiego, niezawodnego kodu.

Książka stara się pokazać czytelnikom, jak wbudować dobry styl programowania w swój kod. Ponieważ komputer czyta tylko kod, a człowiek koncentruje się na komentarzach, dobry styl programowania odnosi się do obu części programu.

Najważniejszym celem jest zbudowanie dobrze zaprojektowanego, dobrze napisanego kodu, który nie tylko będzie efektywnie wykorzystywany przez komputer, ale także będzie zawierał starannie skonstruowane komentarze, które pomogą człowiekowi go zrozumieć. Ten warunek ułatwi proces debugowania, konserwacji i ulepszania, co ostatecznie poprawi czytelność, przenośność, niezawodność i łatwość konserwacji twojego kodu.

Wewnątrz znajdziesz wskazówki dotyczące pisania komentarzy, nagłówków programów, określania nazw zmiennych, formatowania instrukcji, szczegółów instrukcji, pisania preprocesora, organizowania katalogów i tworzenia makefile.

Ta książka jest opublikowana na licencji Creative Commons.

Przeczytaj książkę

3. Wprowadzenie do GCC autorstwa Briana Gougha

Wprowadzenie do GCC

Wprowadzenie do GCC

Wprowadzenie do GCC zawiera wprowadzenie do kompilatorów GNU C i C++, gcc i g++, które są częścią GNU Compiler Collection (GCC).

Po przeczytaniu tej książki będziesz wiedział, jak skompilować program, używać podstawowych opcji kompilatora do optymalizacji i debugowania.

Książka ta wyjaśnia, jak używać samego kompilatora. Bazując na latach obserwacji pytań zamieszczanych na listach dyskusyjnych, prowadzi czytelnika prosto do ważnych opcji GCC. Książka nie uczy języka C.

Rozdziały:

  • Wprowadzenie
  • Kompilacja programu C – opisuje, jak kompilować programy C za pomocą gcc. Programy mogą być kompilowane z pojedynczego pliku źródłowego lub z wielu plików źródłowych, i mogą korzystać z bibliotek systemowych i plików nagłówkowych
  • Opcje kompilacji – opisuje inne powszechnie używane opcje kompilatora dostępne w GCC. Opcje te kontrolują takie cechy jak ścieżki wyszukiwania używane do lokalizowania bibliotek i plików include, używanie dodatkowych ostrzeżeń i diagnostyki, makr preprocesora i dialektów języka C
  • Używanie preprocesora – opisuje użycie preprocesora GNU C cpp, który jest częścią pakietu GCC. Preprocesor rozszerza makra w plikach źródłowych zanim zostaną one skompilowane. Jest on automatycznie wywoływany za każdym razem, gdy GCC przetwarza program w C lub C++
  • Kompilowanie dla debugowania – udostępnia opcję -g debug do przechowywania dodatkowych informacji o debugowaniu w plikach obiektowych i wykonywalnych. Te informacje o debugowaniu pozwalają na śledzenie błędów od konkretnej instrukcji maszynowej do odpowiadającej jej linii w oryginalnym pliku źródłowym
  • Kompilowanie z optymalizacją – GCC jest kompilatorem optymalizującym. Udostępnia on szeroki zakres opcji, których celem jest zwiększenie szybkości lub zmniejszenie rozmiaru plików wykonywalnych, które generuje
  • Kompilacja programu C++ – opisuje jak używać GCC do kompilacji programów napisanych w C++, oraz opcje wiersza poleceń specyficzne dla tego języka
  • Opcje specyficzne dla platformy – opisuje niektóre z opcji dostępnych dla popularnych platform: Opcje Intel i AMD x86, rozszerzenia x86, 64-bitowe procesory x86, opcje DEC Alpha, opcje SPARC, opcje POWER/PowerPC, obsługa wielu architektur oraz problemy zmiennoprzecinkowe
  • Rozwiązywanie problemów – GCC udostępnia kilka opcji pomocy i diagnostyki, aby pomóc w rozwiązywaniu problemów z procesem kompilacji
  • Narzędzia związane z kompilatorem – opisuje szereg narzędzi, które są przydatne w połączeniu z GCC. Obejmują one GNU archiver ar, do tworzenia bibliotek, oraz programy GNU do profilowania i testowania pokrycia, gprof i gcov
  • Jak działa kompilator – opisuje bardziej szczegółowo jak GCC przekształca pliki źródłowe w pliki wykonywalne. Kompilacja jest wieloetapowym procesem, w który zaangażowanych jest kilka narzędzi, w tym sam Kompilator GNU (poprzez nakładki gcc lub g++), Asembler GNU as, oraz Linker GNU ld. Kompletny zestaw narzędzi używanych w procesie kompilacji jest określany jako toolchain
  • Badanie skompilowanych plików – opisuje kilka użytecznych narzędzi do badania zawartości plików wykonywalnych i obiektowych
  • Wspólne komunikaty o błędach – opisuje najczęstsze komunikaty o błędach i ostrzeżenia generowane przez gcc i g++. Każdemu przypadkowi towarzyszy opis przyczyn, przykład i sugestie możliwych rozwiązań
  • Uzyskanie pomocy – jeśli czytelnicy napotkają problem nieuwzględniony w tym wprowadzeniu, istnieje kilka podręczników referencyjnych, które opisują GCC i tematy związane z językiem bardziej szczegółowo

Książka ta jest opublikowana na licencji GNU Free Documentation License.

Przeczytaj książkę

Następna strona: Strona 2 – An Introduction to C & GUI i inne książki

Strony w tym artykule:
Strona 1 – The C Book i więcej książek
Strona 2 – An Introduction to C & GUI Programming i więcej książek
Strona 3 – The GNU C Reference Manual i więcej książek
Strona 4 – Essential C i więcej książek
Strona 5 – Beej’s Guide to Network Programming i więcej książek

Wszystkie książki z tej serii:

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.