¿Cómo aprender a programar en C?
Aprendí c en mi primer año y he estado usando c desde que comencé a trabajar.
1. Una lista de libros que cubren el acceso al dominio de C
"El lenguaje de programación C" debe leerse
"C Primer" se conoce como un libro. que puede hacer Este es un libro de referencia introductorio de lectura obligada para que pueda transformarse de un programador de C o JAVA a un programador de C real.
"El lenguaje de programación C" es obra del padre de C, conocido como el líder B. Después de leer el manual de C, deberías poder saltarte capítulos y leerlo.
"Piensa en c", Internet dijo que la calidad de traducción de la versión china de este libro es extremadamente pobre, se recomienda leer la versión fotocopiada y optar por leer.
"Effective c", similar a Effective java, habla sobre las mejores prácticas y es una lectura obligada para los programadores.
"Más eficaz c", complemento de la carta.
"La biblioteca estándar de C", ¿cómo puedo hacerla si puedo escribir C pero no puedo usar la biblioteca estándar? Esto es como los programadores de Java que no usan el paquete java.util. Es una lectura obligada.
"STL efectivo", mejores prácticas para bibliotecas STL. Otra obra maestra del autor de Effective C, una lectura obligada.
"La fuente STL anotada", análisis del código fuente STL, este libro debe considerarse un libro profundo/competente, elija leerlo.
La "programación genérica y STL", conocida como programación en C, se ocupa de plantillas y genéricos, por lo que es imperativo dominar los genéricos.
"Plantilla C", programación de plantillas C, experiencia en reutilización de código, lectura obligada.
"Exceptional C", similar a Effective C, trata sobre las mejores prácticas y el análisis de problemas. El libro enumera muchos escenarios de aplicación y códigos de ejemplo para que los lectores los descubran y elijan leer.
"Más Excepcional C", suplemento de la carta.
"Estilo C excepcional", un suplemento del libro anterior
"Inside The C Object Model", con los libros anteriores como base, finalmente puedes leer este libro mágico. Le lleva en un recorrido por los mecanismos de implementación subyacentes del modelo de objetos de C. Después de leer este libro, cualquier código C parecerá agua corriente. Es una lectura obligada.
2. Excelente proyecto C/C de código abierto (leer código)
OS: kernel Linux LVS, aplicación Linux
DB: Mysql, PostgreSQL
p>
Complier: VM, GCC
Marco: OpenSip, SipProxy,
Net: ACE (Java Mina, Netty), TCP/IP, protocolo HTTP pila
Caché: Memcached, Redis,
Biblioteca: STL (paquete de utilidades de Java), Boost, Qt (UI),
equilibrio: Apache, Nginx
GSL
Dirección:/microsoft/GSL
Documentación de Boost
Dirección:/
Qt
Dirección: /Asio/
POCO
Dirección: /w/cpp/links/libs
Además de estos proyectos de código abierto, usted También puedes encontrar algunos cursos públicos gratuitos. Aquí también te recomendamos un curso gratuito de C impartido por un medallista de oro de ACM. Puedes probarlo:
¡Aprender bien C es el trampolín para unirse a una gran empresa! Si este curso hubiera estado disponible en aquel entonces, mi C no sería así
¿No válido?
Explicación de la sintaxis de C
Conceptos básicos del lenguaje
Introducción detallada a variables, expresiones, declaraciones, punteros, matrices, control de flujo, funciones, organización de archivos, etc.
Mecanismo abstracto: programación orientada a objetos
Explicación detallada del mecanismo abstracto de C, encapsulación (clase), herencia, polimorfismo, sobrecarga de operadores, objetos de función, manejo de excepciones, etc.
Plantilla - Programación genérica
Presenta en detalle el mecanismo de plantilla de C, plantillas de clases, plantillas de funciones, especialización de plantillas, etc.
4. C orientado a objetos en profundidad
4.1. De C a C
Referencias y sugerencias: por qué las referencias son importantes
Palabra clave constante: Por qué es importante const
Espacio de nombres (espacio de nombres)
4.2 Objetos C en profundidad
Acerca de los objetos C
Definición de tipos de objetos
Palabras clave clase y estructura
Miembros de clase: miembro funciones y datos Miembros
Miembros de datos estáticos
Control de acceso de miembros
Tamaño del objeto
Acerca de este puntero
onst ¿Qué modifican exactamente las funciones miembro y const?
miembros de datos mutables
Cuatro funciones miembro especiales: constructor, destructor, constructor de copias, operador=
Construcción de objetos, Lista de inicialización
Destrucción de objetos
Copia de objetos
Bajo qué circunstancias es necesario definir explícitamente cuatro funciones especiales
Objeto C ciclo de vida
4.3. Sobrecarga de operadores
Acerca del mecanismo de sobrecarga de operadores en C
Sobrecarga de operadores importante
Operaciones aritméticas: , -, *, /, , , --, ...
Operaciones relacionales: gt;, lt;, ==, !=
Acceso a subíndice: [ ]
Llamada a función: (), objeto de función
Conversión de tipo, constructor de un solo parámetro y conversión implícita, evitando la conversión implícita: palabra clave explícita
Amigos y miembros
4.4. Conceptos básicos de la orientación a objetos: herencia
Clase base y clase derivada
Hablemos de la construcción y destrucción de objetos
Funciones virtuales, puramente virtuales funciones
Diseño de memoria de clases derivadas, tablas de funciones virtuales
Polimorfismo, tipos polimórficos, cómo incorporar el polimorfismo
Destrucción virtual, por qué el destructor virtual es importante p>
4.5. Más temas sobre herencia
Herencia múltiple
Herencia virtual y clases base virtuales
Acceso a clases base, públicas/protegidas/privadas herencia
Down cast: static_castlt;gt; anddynamic_castlt;gt;
Identificación de tipo en tiempo de ejecución (RTTI)
4.6.
El mecanismo del lenguaje C proporciona soporte completo de programación orientada a objetos
Más allá de la herencia
Varias reglas de programación orientada a objetos y patrones de diseño
p>5.C Programación genérica y STL
5.1, Mecanismo de plantilla C
5.2, Descripción general de STL
5.3, Contenedor STL
5.4, Iteración STL
5.5, algoritmo STL
5.6, objeto STL predefinido
5.7, adaptador STL
6. >"C Primer"
La última versión: la tercera edición (la cuarta edición ya está disponible en los estantes del extranjero y algunas librerías nacionales en línea también están realizando pedidos por adelantado)
p>Adecuado para aquellos que tienen una rica experiencia en C pero carecen de experiencia en C. Sin embargo, personalmente siempre he creído que este libro tiene rastros demasiado fuertes del lenguaje C, lo que puede no ser bueno para aprender C.
"El lenguaje de programación C"/"Lenguaje de programación C"
Última versión: Tercera edición especial
Denominado TC PL, disponible en otros idiomas Rica experiencia. (Algunas personas también lo llaman "TCPL" para abreviar, pero es necesario distinguirlo de otro libro "El lenguaje del programador C")
"Essential C"
"Accelerated C"
p>Estos dos son más delgados y ambos son buenas opciones. No he leído "Accelerated C". A juzgar por todas las reseñas, vale la pena recomendarlo.
Los libros anteriores tienen sus correspondientes versiones en chino y la calidad de la traducción es buena. No es necesario leer todos los libros anteriores, pero en cualquier caso se debe leer TC PL.
"Effective C"
La última versión: la segunda edición (la tercera edición ya está disponible en los estantes del extranjero y algunas librerías nacionales en línea también están realizando pedidos por adelantado) p>
denominado CE. ¡Una lectura obligada para los programadores de C! Muchas veces, cuando decimos Biblia C, no nos referimos a TC PL, sino a ésta. El libro "El programador pragmático" escribe: "Una vez que se encuentre involucrado en el desarrollo de un proyecto C, corra (no camine) a la librería para comprar "Effective C" de Scott Mayer, y tal vez "More Effective C". ".
"Estándares de codificación C: 101 reglas, directrices y mejores prácticas"/"Estándares de programación C"
Personalmente, creo que este libro debería ser un libro de escritorio imprescindible para C. programadores. Aquí se resumen casi las series efectivas y excepcionales. Aquí se reflejan las últimas plantillas y la extraordinaria experiencia en la industria. El único defecto posible es que para un novato, la pregunta "por qué" no está suficientemente explicada.
Mi opinión es: si no entiendes los términos, recuérdalo y hazlo; si entiendes los términos, supongo que estarás de acuerdo con las opiniones del libro. Creo que el contenido de este libro seguirá siendo relevante al menos hasta 2009, y que los 101 preceptos que contiene serán ampliamente recitados.
Aún no conozco su abreviatura, ¿tal vez “101” sería un candidato?
Al mencionar "C efectivo", surgieron otros tres libros uno por uno:
"C más efectivo"
"C excepcional"
p>
《C más excepcional》.
El nuevo libro "Exceptional C Style" también es un buen libro que vale la pena leer.
Ninguno de los libros mencionados anteriormente debe perderse.
Personalmente, se recomienda leer los libros anteriores en orden. Y lea estos libros una y otra vez en el futuro.
"Pensamiento en C"/"Pensamientos de programación en C"
Hay rumores buenos y malos sobre este libro y su versión china. No lo he leído con atención y no haré ningún comentario. Si es cierto, si está interesado, también puede probar este libro.
Los siguientes libros tratan básicamente del lenguaje en sí y pueden leerse en el siguiente orden.
"Must Know C"
Si fuera un año antes, este libro habría sido un peso pesado, pero fue eclipsado por 101 y "Exceptional C Style".
"C Gotchas: Cómo evitar problemas comunes en codificación y diseño"/"Trampas de programación en C"
Este es otro libro que nunca he leído y que es ampliamente elogiado.
"Análisis de código fuente STL"
Tan pronto como recibí este libro, alguien lo "tomó prestado", así que aún no lo he leído. Los amigos que hayan leído este libro pueden dar una evaluación adecuada.
7. C Conceptos básicos avanzados de estructura de datos
Esta es la parte más importante que se debe aprender en todos los lenguajes de programación y una de las bases de la composición de programas.
Almacenamiento secuencial, almacenamiento encadenado, lista circular enlazada;
Lista doble enlazada, pila (secuencial y encadenada), cola (secuencial y encadenada);
Aplicación de pila, conceptos básicos de árboles y recorrido, árboles binarios;
Algoritmo de ordenación, algoritmo de unión, selección, inserción, rápido, Hill.
¿Conoce el contenido anterior?
8. Desarrollo avanzado de la interfaz C UI
Domine la arquitectura de la biblioteca de clases QT y el modelo de desarrollo de la interfaz gráfica;
p>
Dominar las habilidades de desarrollo de QT, mecanismo de mensajes, procesamiento de gráficos;
Dominar la programación de redes QT, UDP, uso de TCP;
Dominar los métodos de procesamiento de archivos QT, serialización;
Domina la tecnología de trasplante de QT en diferentes plataformas como Windows, Linux, iOS y Android.
9. C Servidor de red Unix/Linux avanzado
Domina el método de desarrollo de la plataforma Unix/Linux;
Competente en el uso de llamadas al sistema;
Competente en la gestión de memoria, procesos y programación de subprocesos de Unix/Linux;
Familiarizado con los métodos de desarrollo de servidores de red, competente en la escritura de programas de servicios de red TCP y UCP;
Domina la sincronización /modelo IO asíncrono en Uso en programación de redes.
10.C Desarrollo avanzado de bases de datos
Dominar las habilidades prácticas del lenguaje SQL. Cómo utilizar bases de datos Oracle y MySQL.
Si domina las habilidades enumeradas anteriormente, tiene la capacidad de resolver problemas complejos y dificultades técnicas, y puede desarrollar de forma independiente algunos módulos funcionales más complejos, entonces es un honor para mí decirle que ha logrado En el nivel intermedio, un salario de más de 10.000 yuanes es pan comido para ti.
11.Referencia estándar C
Referencia C
Dirección: /w/
Estándar de codificación C
Dirección: /Cpp/CppCodingStandard.html
Estándar C
Dirección: /
Borrador de Norma C: Contenido
Dirección: http: //eel.is/c draft/
Sigue algunas cuentas públicas, como lenguaje c y programación cpp