C je univerzální, procedurální, přenosný, vysokoúrovňový programovací jazyk, který je jedním z nejoblíbenějších a nejvlivnějších jazyků. Byl navržen tak, aby jej bylo možné kompilovat pomocí jednoduchého kompilátoru, aby poskytoval nízkoúrovňový přístup do paměti, aby poskytoval jazykové konstrukce, které se efektivně mapují na strojové instrukce, a aby vyžadoval minimální podporu při běhu. Mnoho programovacích jazyků má značný dluh vůči jazyku C. Stal se jakousi lingua franca ve světě programování.
C je poměrně jednoduchý na pochopení. Umožňuje programátorovi uspořádat programy přehledným, jednoduchým a logickým způsobem. Je to velmi flexibilní, praktický a kompaktní jazyk v kombinaci se snadno čitelnou syntaxí. Kód napsaný v jazyce C běží rychle a má snadný přístup k nízkoúrovňovým prostředkům počítače. Kompilátorové směrnice umožňují vytvořit jedinou verzi programu zkompilovanou pro různé architektury.
C je o svobodě. Proto má smysl učit se C s knihami, které také ztělesňují svobodu. Podívejte se na můj výběr a zjistěte, jestli vás některá z nich zaujme.
1. Kniha C od Mika Banahana, Declana Bradyho a Marka Dorana
Kniha C je určena programátorům, kteří již mají nějaké zkušenosti s používáním moderního vysokoúrovňového procedurálního programovacího jazyka.
Měli byste již rozumět příkazům, proměnným, podmíněnému provádění, polím, procedurám (neboli podprogramům) a podobně.
Kniha se soustředí na věci, které jsou pro jazyk C speciální. Zejména se zaměřuje na způsob, jakým se jazyk C používá. Kniha je poučná a dobře se čte.
Kapitoly obsahují:
- Úvod do jazyka C
- Proměnné a aritmetika – seznamuje s některými základy jazyka C, včetně klíčových slov a identifikátorů, deklarace proměnných, reálných typů, integrálních typů, výrazů a aritmetiky a konstant
- Řízení toku a logické výrazy – zabývá se různými způsoby, jakými lze v programu jazyka C použít příkazy pro řízení toku, včetně některých příkazů, které dosud nebyly představeny. Řízení toku, další logické výrazy a podivné operátory
- Funkce – typy funkcí, rekurze a předávání argumentů a propojení
- Pole a ukazatele – pole, ukazatele, práce se znaky, sizeof a alokace paměti, ukazatele na funkce, výrazy zahrnující ukazatele, pole, & operátor a deklarace funkcí
- Strukturované datové typy – struktury, uniony, bitová pole, enumy, kvalifikátory a odvozené typy a inicializace
- Preprocesor – jak funguje preprocesor a direktivy
- Specializované oblasti jazyka C – deklarace, definice a přístupnost, typedef, const a volatile a sekvenční body
- Knihovny – diagnostika, práce se znaky, lokalizace, limity, matematické funkce, nelokální skoky, práce se signály, proměnný počet argumentů, vstup a výstup, formátovaný vstup/výstup, znakový vstup/výstup, neformátovaný vstup/výstup, funkce náhodného přístupu, obecné utility, práce s řetězci, a datum a čas
- Kompletní programy v jazyce C – skládání všeho dohromady, argumenty pro main, interpretace argumentů programu, program pro porovnávání vzorů a náročnější příklad
Autoři dávají čtenáři svolení, aby si s knihou dělal, co chce, za předpokladu, že v ní budou uvedeni autoři a jejich autorská práva. Z toho, co nám potvrdil Mike Banahan, vyplývá, že kniha fakticky podléhá licenci Creative Commons.
Přečtěte si knihu
2. C Elements of Style by Steve Oualline
C Elements of Style je užitečná příručka, která se zabývá zásadami správného programovacího stylu a učí programátory v jazycích C a C++, jak psát kód, který budou ostatní snadno číst, chápat a udržovat. Ať už jste student nebo profesionální programátor, bude pro vás přínosem mnoho tipů a technik pro sestavení elegantního a spolehlivého kódu.
Kniha se snaží čtenářům ukázat, jak do svého kódu zabudovat dobrý programovací styl. Vzhledem k tomu, že počítač čte pouze kód a člověk se soustředí na komentáře, týká se dobrý programátorský styl obou částí programu.
Konečným cílem je vytvořit dobře navržený, dobře napsaný kód, který nejen efektivně využije počítač a který také obsahuje pečlivě sestavené komentáře, které pomohou člověku porozumět. Tento stav usnadní ladění, údržbu a vylepšování, což v konečném důsledku zlepší čitelnost, přenositelnost, spolehlivost a udržovatelnost vašeho kódu.
Uvnitř najdete návody na psaní komentářů, záhlaví programu, určování názvů proměnných, formátování příkazů, detaily příkazů, psaní preprocesoru, uspořádání adresářů a vytváření souboru makefile.
Tato kniha je vydána pod licencí Creative Commons.
Přečtěte si knihu
3. Knížka je určena pro čtenáře, kteří se chtějí dozvědět více. Úvod do GCC by Brian Gough
Úvod do GCC poskytuje úvod do překladačů GNU C a C++, gcc a g++, které jsou součástí GNU Compiler Collection (GCC).
Po přečtení této knihy budete vědět, jak zkompilovat program, používat základní volby překladače pro optimalizaci a ladění.
V knize je vysvětleno, jak používat samotný překladač. Na základě dlouholetého pozorování dotazů zasílaných do poštovních konferencí vede čtenáře přímo k důležitým možnostem GCC. Kniha neučí jazyk C.
Kapitoly:
- Úvod
- Kompilování programu v jazyce C – popisuje, jak kompilovat programy v jazyce C pomocí gcc. Programy lze kompilovat z jednoho zdrojového souboru nebo z více zdrojových souborů a mohou používat systémové knihovny a hlavičkové soubory
- Možnosti kompilace – popisuje další běžně používané možnosti kompilátoru, které jsou v GCC k dispozici. Tyto volby řídí funkce, jako jsou vyhledávací cesty používané pro vyhledávání knihoven a souborů include, použití dalších varování a diagnostiky, makra preprocesoru a dialekty jazyka C
- Používání preprocesoru – popisuje použití preprocesoru GNU C cpp, který je součástí balíčku GCC. Preprocesor rozšiřuje makra ve zdrojových souborech před jejich kompilací. Je automaticky volán vždy, když GCC zpracovává program v jazyce C nebo C++
- Kompilování pro ladění – poskytuje volbu -g debug pro ukládání dalších ladicích informací do objektových souborů a spustitelných souborů. Tyto ladicí informace umožňují vysledovat chyby od konkrétní strojové instrukce až po odpovídající řádek v původním zdrojovém souboru
- Kompilování s optimalizací – GCC je optimalizační kompilátor. Poskytuje širokou škálu možností, jejichž cílem je zvýšit rychlost nebo zmenšit velikost vytvářených spustitelných souborů
- Kompilování programu v jazyce C++ – popisuje, jak používat GCC ke kompilaci programů napsaných v jazyce C++, a možnosti příkazového řádku specifické pro tento jazyk
- Platformově specifické možnosti – popisuje některé možnosti dostupné pro běžné platformy: Možnosti Intel a AMD x86, rozšíření x86, 64bitové procesory x86, možnosti DEC Alpha, možnosti SPARC, možnosti POWER/PowerPC, podpora více architektur a problémy s plovoucí desetinnou čárkou
- Řešení problémů – GCC poskytuje několik možností nápovědy a diagnostiky, které pomáhají řešit problémy s procesem kompilace
- Nástroje související s kompilátorem – popisuje řadu nástrojů, které jsou užitečné v kombinaci s GCC. Patří mezi ně GNU archiver ar pro vytváření knihoven a programy GNU pro profilování a testování pokrytí, gprof a gcov
- Jak pracuje kompilátor – podrobněji popisuje, jak GCC transformuje zdrojové soubory na spustitelný soubor. Kompilace je vícestupňový proces zahrnující několik nástrojů, včetně samotného překladače GNU (prostřednictvím frontendů gcc nebo g++), assembleru GNU as a linkovacího programu GNU ld. Kompletní sada nástrojů používaných v procesu kompilace se označuje jako řetězec nástrojů
- Zkoumání zkompilovaných souborů – popisuje několik užitečných nástrojů pro zkoumání obsahu spustitelných souborů a objektových souborů
- Běžná chybová hlášení – popisuje nejčastější chybová a varovná hlášení vytvářená nástroji gcc a g++. Každý případ je doplněn popisem příčin, příkladem a návrhy možných řešení
- Získání nápovědy – pokud čtenář narazí na problém, který není popsán v tomto úvodu, existuje několik referenčních příruček, které podrobněji popisují GCC a témata související s jazykem
Tato kniha je vydána pod licencí GNU Free Documentation License.
Přečtěte si knihu
Další strana: & GUI a další knihy
Stránky v tomto článku:
Strana 1 – The C Book a další knihy
Strana 2 – An Introduction to C & GUI Programming a další knihy
Strana 3 – The GNU C Reference Manual a další knihy
Strana 4 – Essential C a další knihy
Strana 5 – Beej’s Guide to Network Programming a další knihy
Všechny knihy v této sérii:
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 |