Pasos específicos para aprender el lenguaje C en profundidad
① El hecho de que puedas escribir una descripción tan larga del problema demuestra que hablas muy en serio.
②. Eres más decidido, pero también quieres tener un objetivo más claro. Puedo decirte cómo encontrar metas y rutas tú mismo y cómo aprender.
③ Hay varias direcciones generales y más de una docena de direcciones de rama en el campo profesional de la informática, y cada dirección de rama tiene docenas de pequeñas direcciones que requieren un estudio en profundidad y dominio de las cosas. No cambian de la noche a la mañana, y no están completamente desconectadas entre sí, pero ahora debes elegir una dirección general y profundizar en una de las direcciones pequeñas (¿por qué elegir una dirección de rama específica tan temprano? Hablaré de eso más adelante). ).
④ Aquí hay varias direcciones generales de las computadoras (no hablaré de desarrollo sin programación):
Instrucciones básicas:
1. Microcontrolador. dirección integrada
2. Programación de red: involucra programas de servidor, desarrollo de clientes, diseño de scripts, etc.
3. Programación del sistema: desarrollo básico de API, desarrollo de escritorio, desarrollo de programas del sistema, programa de servicio
4. Gráficos: 3D, 2D, reconocimiento de imágenes, reconocimiento facial
5. Audio: reconocimiento de voz, decodificación de audio, software de audio
6. Principio de compilación: diseño de compilador, intérprete de guiones, máquina virtual, sistema de traducción de lenguaje no natural
7. Desarrollo de la capa de aplicaciones: utilice lenguajes de alto nivel para desarrollar aplicaciones a nivel de superficie
8. Seguridad: antiingeniería, virus, antivirus, troyanos, antitroyanos, craqueo de software, empaquetado de software
Direcciones adicionales:
8. Inteligencia artificial: algoritmo genético, red neuronal, sistema gris, etc.
9. Diseño de juegos: varios diseños y negocios de motores de juegos diseño lógico, etc.
p>
⑤ La dirección básica es lo que debes elegir. Las direcciones adicionales son solo la guinda del pastel según la dirección básica. Al principio, algo debe ser profundo en lugar de solo comprenderlo (por supuesto que está familiarizado con ello (parece que mis requisitos no serán muy bajos), enumeraré esto:
Estructura de datos : la base de otras teorías a continuación.
Principios del sistema operativo: Sólo comprendiendo la arquitectura y los detalles del sistema operativo se podrá tener una comprensión y aplicación correctas de subprocesos múltiples, gestión de archivos, gestión de memoria, prioridad de instrucciones, etc. en el futuro.
Principios de compilación: puede mejorar su comprensión de los lenguajes de programación de computadoras y tener una comprensión profunda de varios algoritmos de compilación, interpretación, compatibilidad, trasplante, optimización, concurrencia y paralelo que aparecerán en el futuro. .
Principios del sistema de base de datos: esto es algo que todo el mundo debe saber al entrar en una empresa y también es la base para el desarrollo de software a gran escala.
Ingeniería de software: Esta es la base teórica para que puedas asegurar la finalización normal de grandes proyectos a pesar de la falta de experiencia.
Tecnología de redes: Esto es un aprendizaje imprescindible, porque actualmente casi no existe ningún software o plataforma con alta probabilidad de ser instalado que no tenga que ver con Internet.
En términos de matemáticas, incluye principalmente: matemáticas discretas, álgebra lineal, matemáticas avanzadas, gráficos por computadora, teoría de la probabilidad
Los conceptos básicos anteriores son lo que necesitas para convertirte en un maestro que integra Se aprenden varias ramas principales (por supuesto, no se refiere a la teoría, sino a la capacidad de codificación teórica y práctica)
⑥Los anteriores son todos los fundamentos principales, aunque debemos analizarlos uno por uno y estudiarlos en profundidad. El conocimiento profesional se ha disparado en la era de Internet. Después de dominar los conceptos básicos anteriores, descubrirá que cualquier teoría y tecnología nueva en el futuro se basa en estos fundamentos básicos y le resultará fácil comprenderlos.
⑦¿Por qué no te dije al principio qué es exactamente lo que quieres aprender y cómo hacerlo en orden? Porque si quieres dominar esas tecnologías, básicamente puedes resolverlas tú mismo. Sin embargo, si eres adicto a algunas tecnologías de pequeña escala que puedes ver debido a tu interés, entonces podrás encontrar un buen trabajo después de graduarte. El salario puede ser alto, no puedes convertirte en un Daniel.
Ahora estoy empezando a hablar sobre el orden de estudio. Aunque dijiste que no recomiendas libros, sigo usando libros como orden.
El lenguaje C puede escribir muchas cosas básicas y avanzadas, no solo cosas pequeñas, pero a juzgar por su código, en realidad usa goto, no estoy diciendo que haya nada malo en usar GOTO en sus programas. pero asegúrese de evitar usar GOTO. Goto es la fuente de errores. Si tiene que usar goto para escribir algún contenido, significa que todavía hay mucho margen de mejora en sus habilidades de codificación.
Tu secuencia de aprendizaje debe ser:
C: Haz un Super Mario y sé capaz de leer guiones de texto para actualizar niveles.
C: escriba un motor de gráficos 2D, encapsule los detalles, implemente diseño orientado a objetos y diseño reutilizable, y utilice algunos patrones de diseño mencionados en "Patrones de diseño", para que pueda considerar que está familiarizado con C Un buen dominio.
MFC: aunque la tecnología MFC se ha enfriado recientemente, solo si puede dominarla con competencia podrá demostrar que su tecnología C OO es lo suficientemente competente. Es muy sencillo demostrar estrictamente que domina MFC. Sólo es necesario usar MFC para crear un motor antivirus, que es casi suficiente. Los libros recomendados incluyen "Comprensión de MFC en un lenguaje simple y profundo".
"Programación de Windows": a diferencia de MFC, utiliza el SDK central de Windows, que es la API. Después de terminar este libro, podrá dominar la plataforma win32 desde el nivel del sistema operativo. (, la mayoría de los mecanismos de win64 y win32 son similares).
C#: C# integra algunas de las sintaxis más avanzadas de la informática contemporánea y de vanguardia (aunque la eficiencia de ejecución siempre ha sido cuestionada), pero después de aprender C# y profundizar, al menos estarás Se considera familiarizado con los lenguajes informáticos. Una comprensión más profunda. ¿Cómo demostrar que has aprendido bien C#? También es muy sencillo, una vez más, escribe un juego aleatorio, como el Tetris. ¿Qué pasa si te demuestras aún más? Úselo para escribir un juego de batalla P2P en línea.
(Si prestas atención, encontrarás que el orden de aprendizaje que mencioné sigue la línea del lenguaje y ciertas tecnologías. ¿Por qué? Porque estos lenguajes y tecnologías involucran tecnologías de campo específicas e informática. Por ejemplo, si realmente terminas de aprender C#, no solo significa que has terminado de aprender C#, sino que también has aprendido múltiples paradigmas de lenguaje, así como el pensamiento moderno de desarrollo de programas (porque utiliza muchas tecnologías que le permitirá aprenderlo de una vez por todas))
Los 5 pasos anteriores son todos pasos básicos y tomará de 1 a 2 años resolverlos.
Al mismo tiempo, debe elegir la dirección que le interesa en el artículo como una dirección a largo plazo durante 3 a 5 años lo antes posible, no se preocupe por las pérdidas de elegir una. La dirección de la rama es demasiado pronto, porque muchas ramas de la computadora están conectadas. Sólo cuando se profundiza en las ramas se puede comprender verdaderamente el significado práctico de muchas teorías. Y una vez que obtengas una gran ventaja en una determinada rama del campo (por ejemplo, eres el único más fuerte en esta área en la empresa), te convertirás en un talento escaso.
No hablaré de los pasos en la dirección general. Básicamente, debes resolver los pasos básicos que mencioné primero. Al mismo tiempo, generalmente debes prestar atención a la teoría de la dirección general y combinarla. con práctica para codificar y desarrollar.