C este un limbaj de programare de nivel înalt, de uz general, procedural, portabil, care este unul dintre cele mai populare și influente limbaje. A fost conceput pentru a fi compilat cu ajutorul unui compilator simplu, pentru a oferi acces de nivel scăzut la memorie, pentru a oferi construcții de limbaj care se mapează eficient la instrucțiunile mașinii și pentru a necesita un suport minim de timp de execuție. Multe limbaje de programare au o datorie considerabilă față de C. A devenit un fel de lingua franca în lumea programării.
C este destul de simplu de înțeles. Îi permite programatorului să organizeze programele într-un mod clar, ușor și logic. Este un limbaj foarte flexibil, practic și compact, combinat cu o sintaxă ușor de citit. Codul scris în C rulează rapid, cu acces ușor la facilitățile de nivel scăzut din calculator. Directivele de compilare fac posibilă producerea unei singure versiuni a unui program compilat pentru diferite arhitecturi.
C este despre libertate. Prin urmare, are sens să învățăm C cu cărți care întruchipează, de asemenea, libertatea. Aruncați o privire la alegerile mele și vedeți dacă vreuna dintre ele vă atrage fantezia.
1. Cartea C de Mike Banahan, Declan Brady și Mark Doran
Cartea C este concepută pentru programatorii care au deja o anumită experiență în utilizarea unui limbaj de programare procedurală modernă de nivel înalt.
Ar trebui să înțelegeți deja declarațiile, variabilele, execuția condiționată, array-urile, procedurile (sau subrutinele) și așa mai departe.
Cartea se concentrează asupra lucrurilor care sunt speciale pentru C. În special, se pune accentul pe modul în care C este utilizat. Cartea este atât informativă, cât și o lectură plăcută.
Capitolele includ:
- O introducere în C
- Variabile și aritmetică – introduce unele dintre elementele fundamentale ale C, inclusiv cuvinte cheie și identificatori, declararea variabilelor, tipuri reale, tipuri integrale, expresii și aritmetică și constante
- Controlul fluxului și expresii logice – analizează diferitele moduri în care declarațiile de control al fluxului pot fi utilizate într-un program C, inclusiv unele declarații care nu au fost introduse până acum. Controlul fluxului, mai multe expresii logice și operatori ciudați
- Funcții – tipul de funcții, recursivitatea și trecerea de argumente și legătura
- Array-uri și pointeri – array-uri, pointeri, manipularea caracterelor, sizeof și alocarea memoriei, pointeri la funcții, expresii care implică pointeri, array-uri, operatorul & și declarațiile funcțiilor
- Tipuri de date structurate – structuri, uniuni, câmpuri de biți, enumerații, calificatori și tipuri derivate, și inițializare
- Preprocesorul – cum funcționează preprocesorul și directive
- Zone specializate ale C – declarații, definiții și accesibilitate, typedef, const și volatile, și puncte de secvență
- Biblioteci – diagnostice, manipularea caracterelor, localizare, limite, funcții matematice, salturi nelocale, manipularea semnalelor, numere variabile de argumente, intrare și ieșire, I/O formatate, I/O cu caractere, I/O neformatate, I/O neformatate, funcții cu acces aleatoriu, utilități generale, manipularea șirurilor de caractere, și data și ora
- Programe complete în C – punerea laolaltă, argumente pentru main, interpretarea argumentelor programului, un program de potrivire a modelelor și un exemplu mai ambițios
Autorii îi dau cititorului permisiunea de a face tot ceea ce dorește cu această carte, cu condiția să existe o recunoaștere a autorilor și a drepturilor de autor. Din ceea ce a confirmat Mike Banahan, cartea este efectiv sub licența Creative Commons.
Citește cartea
2. C Elements of Style de Steve Oualline
C Elements of Style este un ghid util care acoperă principiile unui bun stil de programare, învățându-i pe programatorii C și C++ cum să scrie cod care poate fi ușor de citit, înțeles și întreținut de alții. Fie că sunteți student sau programator profesionist, veți beneficia de numeroasele sfaturi și tehnici pentru construirea unui cod elegant și fiabil.
Cartea încearcă să le arate cititorilor cum să construiască un bun stil de programare în codul dumneavoastră. Deoarece calculatorul citește doar codul, iar omul se concentrează asupra comentariilor, un bun stil de programare se referă la ambele părți ale unui program.
Obiectivul final este de a construi un cod bine conceput și bine scris, care nu numai că folosește eficient calculatorul, dar conține și comentarii atent construite pentru a ajuta omul să îl înțeleagă. Această condiție va ușura procesul de depanare, întreținere și îmbunătățire, ceea ce va îmbunătăți în cele din urmă lizibilitatea, portabilitatea, fiabilitatea și întreținerea codului dumneavoastră.
În interior, veți găsi îndrumări privind scrierea comentariilor, titlul programului, determinarea numelor variabilelor, formatarea instrucțiunilor, detaliile instrucțiunilor, scrierea preprocesorului, organizarea directoarelor și crearea fișierului makefile.
Această carte este publicată sub licența Creative Commons.
Citește cartea
3. An Introduction to GCC de Brian Gough
An Introduction to GCC oferă o introducere în compilatoarele GNU C și C++, gcc și g++, care fac parte din colecția de compilatoare GNU (GCC).
După ce veți citi această carte, veți ști cum să compilați un program, să folosiți opțiunile de bază ale compilatorului pentru optimizare și depanare.
Această carte explică modul de utilizare a compilatorului în sine. Bazându-se pe ani de zile de observare a întrebărilor postate pe listele de discuții, ea ghidează cititorul direct către opțiunile importante ale GCC. Cartea nu învață C.
Capitole:
- Introducere
- Compilarea unui program C – descrie cum se compilează programele C folosind gcc. Programele pot fi compilate dintr-un singur fișier sursă sau din mai multe fișiere sursă și pot utiliza biblioteci de sistem și fișiere antet
- Opțiuni de compilare – descrie alte opțiuni de compilare utilizate în mod obișnuit, disponibile în GCC. Aceste opțiuni controlează caracteristici cum ar fi căile de căutare utilizate pentru localizarea bibliotecilor și a fișierelor de includere, utilizarea de avertismente și diagnostice suplimentare, macro-uri de preprocesor și dialecte ale limbajului C
- Utilizarea preprocesorului – descrie utilizarea preprocesorului GNU C cpp, care face parte din pachetul GCC. Preprocesorul extinde macrourile din fișierele sursă înainte ca acestea să fie compilate. Este apelat automat ori de câte ori GCC procesează un program C sau C++
- Compilarea pentru depanare – oferă opțiunea -g debug pentru a stoca informații suplimentare de depanare în fișierele obiect și în executabile. Aceste informații de depanare permit urmărirea erorilor de la o anumită instrucțiune mașină până la linia corespunzătoare din fișierul sursă original
- Compilare cu optimizare – GCC este un compilator de optimizare. Acesta oferă o gamă largă de opțiuni care au ca scop creșterea vitezei sau reducerea dimensiunii fișierelor executabile pe care le generează
- Compilarea unui program C++ – descrie modul de utilizare a GCC pentru a compila programe scrise în C++, precum și opțiunile din linia de comandă specifice acestui limbaj
- Opțiuni specifice platformei – descrie unele dintre opțiunile disponibile pentru platformele obișnuite: Opțiunile Intel și AMD x86, extensiile x86, procesoarele x86 pe 64 de biți, opțiunile DEC Alpha, opțiunile SPARC, opțiunile POWER/PowerPC, suportul pentru mai multe arhitecturi și problemele legate de virgulă mobilă
- Troubleshooting – GCC oferă mai multe opțiuni de ajutor și diagnosticare pentru a ajuta la depistarea problemelor legate de procesul de compilare
- Unelte legate de compilator – descrie o serie de instrumente care sunt utile în combinație cu GCC. Printre acestea se numără GNU archiver ar, pentru crearea de biblioteci, și programele GNU de profilare și testare a acoperirii, gprof și gcov
- Cum funcționează compilatorul – descrie mai în detaliu modul în care GCC transformă fișierele sursă într-un fișier executabil. Compilarea este un proces în mai multe etape care implică mai multe instrumente, inclusiv compilatorul GNU propriu-zis (prin intermediul front-end-urilor gcc sau g++), asamblorul GNU as și linkerul GNU ld. Setul complet de instrumente utilizate în procesul de compilare este denumit lanț de instrumente
- Examinarea fișierelor compilate – descrie mai multe instrumente utile pentru examinarea conținutului fișierelor executabile și al fișierelor obiect
- Mesaje de eroare comune – descrie cele mai frecvente mesaje de eroare și de avertizare produse de gcc și g++. Fiecare caz este însoțit de o descriere a cauzelor, un exemplu și sugestii de soluții posibile
- Câștigarea de ajutor – dacă cititorii întâlnesc o problemă care nu este acoperită de această introducere, există mai multe manuale de referință care descriu mai detaliat subiectele legate de GCC și de limbaje
Acestă carte este publicată sub licența GNU Free Documentation License.
Citește cartea
Pagina următoare: Pagina 2 – O introducere în C & GUI și alte cărți
Pagini în acest articol:
Pagini în acest articol:
Pagini în acest articol:
Pagina 1 – The C Book și mai multe cărți
Pagina 2 – An Introduction to C & Programare GUI și mai multe cărți
Pagina 3 – The GNU C Reference Manual și mai multe cărți
Pagina 4 – Essential C și mai multe cărți
Pagina 5 – Beej’s Guide to Network Programming și mai multe cărți
Toate cărțile din această 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 |