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 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 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 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 |