A C egy általános célú, procedurális, hordozható, magas szintű programozási nyelv, amely az egyik legnépszerűbb és legbefolyásosabb nyelv. Úgy tervezték, hogy egyszerű fordítóprogrammal fordítható legyen, alacsony szintű hozzáférést biztosítson a memóriához, a nyelvi konstrukciókat hatékonyan leképezze a gépi utasításokra, és minimális futásidejű támogatást igényeljen. Számos programozási nyelv jelentős mértékben köszönheti a C-nek. A programozás világának egyfajta lingua francájává vált.
A C meglehetősen egyszerűen érthető. Lehetővé teszi a programozó számára, hogy a programokat világos, egyszerű, logikus módon szervezze meg. Nagyon rugalmas, praktikus és kompakt nyelv, könnyen olvasható szintaxissal kombinálva. A C nyelven írt kód gyorsan fut, és könnyen hozzáférhet a számítógép alacsony szintű eszközeihez. A fordítói direktívák lehetővé teszik, hogy a különböző architektúrákra lefordított programnak egyetlen változatát készítsük el.
A C a szabadságról szól. Ezért van értelme a C-t olyan könyvekből tanulni, amelyek szintén a szabadságot testesítik meg. Vessen egy pillantást az általam kiválasztott könyvekre, hátha valamelyik elnyeri a tetszését.
1. The C Book by Mike Banahan, Declan Brady and Mark Doran
A The C Book olyan programozóknak készült, akik már rendelkeznek némi tapasztalattal egy modern, magas szintű procedurális programozási nyelv használatában.
Az utasításokat, a változókat, a feltételes végrehajtást, a tömböket, az eljárásokat (vagy szubrutinokat) és így tovább már ismernie kell.
A könyv azokra a dolgokra koncentrál, amelyek különlegesek a C-ben. Különösen a C használatának módja áll a középpontban. A könyv egyszerre informatív és jó olvasmány.
A fejezetek a következők:
- Bevezetés a C-be
- Változók és aritmetika – bemutatja a C néhány alapját, beleértve a kulcsszavakat és azonosítókat, a változók deklarálását, a valós típusokat, az integrált típusokat, a kifejezéseket és az aritmetikát, valamint a konstansokat
- Folyamatvezérlés és logikai kifejezések – megvizsgálja, hogy a C programban milyen különböző módon használhatók a folyamatvezérlő utasítások, beleértve néhány eddig nem bemutatott utasítást. Az áramlás vezérlése, további logikai kifejezések és furcsa operátorok
- Függvények – a függvények típusa, rekurzió és argumentumátadás, valamint összekapcsolás
- Tömbök és mutatók – tömbök, mutatók, karakterkezelés, sizeof és tárolókiosztás, mutatók függvényekhez, mutatókat tartalmazó kifejezések, mutatók, tömbök, a & operátor és függvénydeklarációk
- Szerkezetes adattípusok – struktúrák, unió, bitmezők, enumok, minősítők és származtatott típusok, inicializálás
- A preprocesszor – a preprocesszor működése és direktívák
- A C speciális területei – deklarációk, definíciók és hozzáférhetőség, typedef, const és volatile, és szekvenciapontok
- Könyvtárak – diagnosztika, karakterkezelés, lokalizáció, korlátok, matematikai függvények, nem lokális ugrások, jelkezelés, változó számú argumentumok, be- és kimenet, formázott I/O, karakter I/O, nem formázott I/O, véletlen hozzáférésű függvények, általános segédprogramok, stringkezelés, valamint dátum és idő
- Kész programok C-ben – az egész összerakása, argumentumok a main-hoz, a program argumentumainak értelmezése, egy mintaillesztő program és egy ambiciózusabb példa
A szerzők engedélyt adnak az olvasónak, hogy a könyvvel bármit csináljon, feltéve, hogy a szerzők és szerzői jogaik feltüntetésre kerülnek. Amit Mike Banahan megerősített, a könyv gyakorlatilag a Creative Commons licenc alatt áll.
Olvassa el a könyvet
2. C Elements of Style by Steve Oualline
A C Elements of Style egy hasznos útmutató, amely a jó programozási stílus alapelveivel foglalkozik, megtanítva a C és C++ programozókat, hogyan írjanak olyan kódot, amelyet mások is könnyen olvashatnak, megérthetnek és karbantarthatnak. Akár diák, akár hivatásos programozó, hasznát veheti a számos tippnek és technikának, amelyekkel elegáns, megbízható kódot készíthet.”
A könyv megpróbálja megmutatni az olvasóknak, hogyan építsenek jó programozási stílust a kódjukba. Mivel a számítógép csak a kódot olvassa, az ember pedig a megjegyzésekre koncentrál, a jó programozási stílus a program mindkét részére vonatkozik.
A végső cél az, hogy jól megtervezett, jól megírt kódot építsünk, amely nemcsak hatékonyan használja ki a számítógépet, hanem gondosan felépített megjegyzéseket is tartalmaz, amelyek segítik az emberek megértését. Ez az állapot megkönnyíti a hibakeresést, a karbantartást és a továbbfejlesztést, ami végső soron javítja a kód olvashatóságát, hordozhatóságát, megbízhatóságát és karbantarthatóságát.
A könyvben találsz útmutatást a megjegyzések írására, a programcímek írására, a változónevek meghatározására, az utasítások formázására, az utasítások részleteire, a preprocesszor írására, a könyvtárak szervezésére és a makefile létrehozására.
A könyv a Creative Commons License alatt jelent meg.
A könyv olvasása
3. An Introduction to GCC by Brian Gough
A bevezetés a GCC-be bevezetést nyújt a GNU C és C++ fordítóprogramok, a gcc és a g++ használatába, amelyek a GNU Compiler Collection (GCC) részét képezik.
A könyv elolvasása után tudni fogja, hogyan fordítson le egy programot, hogyan használja az alapvető fordítóopciókat az optimalizáláshoz és a hibakereséshez.
Ez a könyv elmagyarázza, hogyan használja magát a fordítót. A levelezőlistákon feltett kérdések többéves megfigyelése alapján egyenesen a GCC fontos opcióihoz vezeti az olvasót. A könyv nem tanítja a C nyelvet.
Könyvfejezetek:
- Bevezetés
- C program fordítása – leírja, hogyan fordíthatunk C programokat a gcc segítségével. A programok fordíthatók egyetlen forrásfájlból vagy több forrásfájlból, és használhatnak rendszerkönyvtárakat és fejlécfájlokat
- Kompilálási lehetőségek – ismerteti a GCC-ben elérhető egyéb, gyakran használt fordítási lehetőségeket. Ezek az opciók olyan funkciókat szabályoznak, mint a könyvtárak és include fájlok keresési útvonalai, a további figyelmeztetések és diagnosztikák használata, a preprocesszor makrók és a C nyelvi dialektusok
- A preprocesszor használata – a GCC csomag részét képező GNU C preprocesszor cpp használatát írja le. A preprocesszor a forrásfájlokban lévő makrókat a lefordítás előtt kibontja. Automatikusan meghívódik, amikor a GCC feldolgoz egy C vagy C++ programot
- Kompilálás hibakereséshez – biztosítja a -g debug opciót további hibakeresési információk tárolásához az objektumfájlokban és a futtatható fájlokban. Ezek a hibakeresési információk lehetővé teszik a hibák visszakövetését egy adott gépi utasítástól az eredeti forrásfájl megfelelő soráig
- Optimalizálással történő fordítás – a GCC egy optimalizáló fordító. Számos olyan opciót biztosít, amelyek célja az általa generált futtatható fájlok sebességének növelése, illetve méretének csökkentése
- C++ program fordítása – leírja, hogyan használhatjuk a GCC-t C++ nyelven írt programok fordítására, valamint az erre a nyelvre jellemző parancssori opciókat
- Platformspecifikus opciók – ismerteti az általános platformokhoz elérhető néhány opciót: Intel és AMD x86 opciók, x86 kiterjesztések, x86 64 bites processzorok, DEC Alpha opciók, SPARC opciók, POWER/PowerPC opciók, Multi-architektúra támogatás és lebegőpontos problémák
- Hibaelhárítás – a GCC számos segítséget és diagnosztikai opciót biztosít a fordítási folyamat során felmerülő problémák elhárításához
- Kompilátorral kapcsolatos eszközök – számos olyan eszközt ismertet, amelyek a GCC-vel együtt hasznosak. Ezek közé tartozik a GNU archiver ar, a könyvtárak létrehozásához, valamint a GNU profilalkotó és lefedettségi tesztelő programok, a gprof és a gcov
- Hogyan működik a fordító – részletesebben leírja, hogyan alakítja át a GCC a forrásfájlokat futtatható fájlokká. A fordítás egy többlépcsős folyamat, amelyben több eszköz is részt vesz, köztük maga a GNU fordító (a gcc vagy a g++ frontendeken keresztül), a GNU Assembler as és a GNU Linker ld. A fordítási folyamatban használt eszközök teljes készletét eszközláncnak nevezzük
- A fordított fájlok vizsgálata – számos hasznos eszközt ismertet a végrehajtható fájlok és objektumfájlok tartalmának vizsgálatához
- Gyakori hibaüzenetek – a gcc és a g++ által előállított leggyakoribb hiba- és figyelmeztető üzeneteket ismerteti. Minden egyes esethez tartozik az okok leírása, egy példa és megoldási javaslatok
- Segítségkérés – ha az olvasó olyan problémával találkozik, amellyel ez a bevezető nem foglalkozik, számos referencia kézikönyv áll rendelkezésre, amelyek részletesebben ismertetik a GCC-vel és a nyelvvel kapcsolatos témákat
Ez a könyv a GNU Free Documentation License alatt jelent meg.
A könyv olvasása
Következő oldal: oldal – Bevezetés a C nyelvbe & GUI és további könyvek
A cikk oldalai:
1. oldal – The C Book és további könyvek
2. oldal – An Introduction to C & GUI Programming és további könyvek
3. oldal – The GNU C Reference Manual és további könyvek
4. oldal – Essential C és további könyvek
5. oldal – Beej’s Guide to Network Programming és további könyvek
A sorozat összes könyve:
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 |