C es un lenguaje de programación de propósito general, procedimental, portátil y de alto nivel que es uno de los lenguajes más populares e influyentes. Fue diseñado para ser compilado utilizando un compilador sencillo, para proporcionar acceso de bajo nivel a la memoria, para proporcionar construcciones de lenguaje que se asignan de manera eficiente a las instrucciones de la máquina, y para requerir un apoyo mínimo en tiempo de ejecución. Muchos lenguajes de programación tienen una deuda considerable con C. Se ha convertido en una especie de lingua franca en el mundo de la programación.
C es bastante sencillo de entender. Permite al programador organizar los programas de forma clara, fácil y lógica. Es un lenguaje muy flexible, práctico y compacto, combinado con una sintaxis fácil de leer. El código escrito en C se ejecuta rápidamente, con fácil acceso a las facilidades de bajo nivel del ordenador. Las directivas del compilador permiten producir una única versión de un programa compilado para diferentes arquitecturas.
C es libertad. Por lo tanto, tiene sentido aprender C con libros que también encarnan la libertad. Echa un vistazo a mis selecciones y comprueba si alguna te llama la atención.
1. El libro de C, de Mike Banahan, Declan Brady y Mark Doran
El libro de C está diseñado para programadores que ya tienen cierta experiencia en el uso de un lenguaje de programación procedimental moderno de alto nivel.
Debería entender ya las sentencias, las variables, la ejecución condicional, las matrices, los procedimientos (o subrutinas) y demás.
El libro se concentra en las cosas que son especiales de C. En concreto, se centra en la forma en que se utiliza C. El libro es a la vez informativo y de buena lectura.
Los capítulos incluyen:
- Introducción a C
- Variables y Aritmética – introduce algunos de los fundamentos de C, incluyendo palabras clave e identificadores, declaración de variables, tipos reales, tipos integrales, expresiones y aritmética, y constantes
- Control de Flujo y Expresiones Lógicas – examina las diversas formas en que las declaraciones de control de flujo pueden ser utilizadas en un programa C, incluyendo algunas declaraciones que no han sido introducidas hasta ahora. Control de flujo, más expresiones lógicas y operadores extraños
- Funciones – el tipo de funciones, la recursividad y el paso de argumentos, y la vinculación
- Arrays y punteros – arrays, punteros, manejo de caracteres, sizeof y asignación de almacenamiento, punteros a funciones, expresiones que implican punteros, arrays, el & operador y declaraciones de funciones
- Tipos de datos estructurados – estructuras, uniones, campos de bits, enums, calificadores y tipos derivados, e inicialización
- El preprocesador – cómo funciona el preprocesador, y directivas
- Áreas especializadas de C – declaraciones, definiciones y accesibilidad, typedef, const y volatile, y puntos de secuencia
- Bibliotecas – diagnósticos, manejo de caracteres, localización, límites, funciones matemáticas, saltos no locales, manejo de señales, números variables de argumentos, entrada y salida, E/S con formato, E/S sin formato, funciones de acceso aleatorio, utilidades generales, manejo de cadenas, y fecha y hora
- Programas Completos en C: cómo juntarlo todo, argumentos para main, interpretación de argumentos del programa, un programa de concordancia de patrones y un ejemplo más ambicioso
- Introducción
- Compilar un programa en C – describe cómo compilar programas en C utilizando gcc. Los programas pueden compilarse a partir de un único archivo fuente o de varios archivos fuente, y pueden utilizar bibliotecas del sistema y archivos de cabecera
- Opciones de compilación – describe otras opciones del compilador de uso común disponibles en GCC. Estas opciones controlan características como las rutas de búsqueda utilizadas para localizar bibliotecas y archivos de inclusión, el uso de advertencias y diagnósticos adicionales, las macros del preprocesador y los dialectos del lenguaje C
- Uso del preprocesador – describe el uso del preprocesador GNU C cpp, que forma parte del paquete GCC. El preprocesador expande las macros en los archivos fuente antes de que sean compilados. Se llama automáticamente cada vez que GCC procesa un programa C o C++
- Compilación para depuración – proporciona la opción -g debug para almacenar información de depuración adicional en los archivos objeto y ejecutables. Esta información de depuración permite rastrear los errores desde una instrucción específica de la máquina hasta la línea correspondiente en el archivo fuente original
- Compilación con optimización – GCC es un compilador de optimización. Proporciona una amplia gama de opciones cuyo objetivo es aumentar la velocidad, o reducir el tamaño, de los archivos ejecutables que genera
- Compilación de un programa C++ – describe cómo utilizar GCC para compilar programas escritos en C++, y las opciones de línea de comandos específicas para ese lenguaje
- Opciones específicas de la plataforma – describe algunas de las opciones disponibles para las plataformas comunes: Opciones de Intel y AMD x86, extensiones x86, procesadores x86 de 64 bits, opciones de DEC Alpha, opciones de SPARC, opciones de POWER/PowerPC, soporte de multiarquitectura y problemas de punto flotante
- Solución de problemas – GCC proporciona varias opciones de ayuda y diagnóstico para ayudar a solucionar problemas con el proceso de compilación
- Herramientas relacionadas con el compilador – describe una serie de herramientas que son útiles en combinación con GCC. Entre ellas se encuentran el archivador ar de GNU, para la creación de bibliotecas, y los programas de perfilado y pruebas de cobertura de GNU, gprof y gcov
- Cómo funciona el compilador – describe con más detalle cómo GCC transforma los archivos fuente en un archivo ejecutable. La compilación es un proceso de varias etapas que involucra a varias herramientas, incluyendo el propio compilador de GNU (a través de los frontends gcc o g++), el ensamblador de GNU as, y el enlazador de GNU ld. El conjunto completo de herramientas utilizadas en el proceso de compilación se denomina cadena de herramientas
- Examinar archivos compilados – describe varias herramientas útiles para examinar el contenido de los archivos ejecutables y los archivos de objetos
- Mensajes de error comunes – describe los mensajes de error y advertencia más frecuentes producidos por gcc y g++. Cada caso va acompañado de una descripción de las causas, un ejemplo y sugerencias de posibles soluciones
- Obtención de ayuda – si los lectores se encuentran con un problema no cubierto por esta introducción, hay varios manuales de referencia que describen GCC y temas relacionados con el lenguaje con más detalle
Los autores dan permiso al lector para hacer lo que quiera con el libro siempre que haya un reconocimiento de los autores y su copyright. Por lo que ha confirmado Mike Banahan, el libro está efectivamente bajo la licencia Creative Commons.
Lee el libro
2. C Elements of Style de Steve Oualline
C Elementos de Estilo es una guía útil que cubre los principios del buen estilo de programación, enseñando a los programadores de C y C++ cómo escribir código que pueda ser fácilmente leído, entendido y mantenido por otros. Tanto si es un estudiante como un programador profesional, se beneficiará de los numerosos consejos y técnicas para construir un código elegante y fiable.
El libro intenta mostrar a los lectores cómo construir un buen estilo de programación en su código. Dado que el ordenador sólo lee el código y el humano se concentra en los comentarios, un buen estilo de programación se refiere a ambas partes de un programa.
El objetivo final es construir un código bien diseñado y bien escrito que no sólo haga un uso eficaz del ordenador sino que también contenga comentarios cuidadosamente construidos para ayudar a los humanos a entenderlo. Esta condición facilitará el proceso de depuración, mantenimiento y mejora, lo que finalmente mejorará la legibilidad, la portabilidad, la fiabilidad y la capacidad de mantenimiento de su código.
En el interior, encontrará directrices sobre la escritura de comentarios, el encabezamiento del programa, la determinación de los nombres de las variables, el formato de las declaraciones, los detalles de las declaraciones, la escritura del preprocesador, la organización de los directorios y la creación de makefile.
Este libro se publica bajo la licencia Creative Commons.
Lea el libro
3. Una introducción a GCC por Brian Gough
Una introducción a GCC proporciona una introducción a los compiladores de C y C++ de GNU, gcc y g++, que forman parte de la GNU Compiler Collection (GCC).
Después de leer este libro, sabrá cómo compilar un programa, utilizar las opciones básicas del compilador para la optimización y la depuración.
Este libro explica cómo utilizar el propio compilador. Basado en años de observación de las preguntas publicadas en las listas de correo, guía al lector directamente a las opciones importantes de GCC. El libro no enseña C.
Capítulos:
Este libro se publica bajo la Licencia de Documentación Libre de GNU.
Lea el libro
Siguiente página: Página 2 – Una introducción a C & GUI y más libros
Páginas de este artículo:
Página 1 – El libro de C y más libros
Página 2 – Una introducción a C & Programación GUI y más libros
Página 3 – El manual de referencia de GNU C y más libros
Página 4 – C esencial y más libros
Página 5 – Guía de Beej para la programación en red y más libros
Todos los libros de esta 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 |