Podemos dividir el conocimiento del software en dos partes, conocimiento de habilidades profesionales y conocimiento del dominio o conocimiento de la industria.
1. Habilidades y conocimientos profesionales
Lenguajes y bibliotecas de programación
Puedes encontrar varios libros sobre programación en las librerías, pero te sugiero que lo domines. en profundidad Eso es todo.
Para un solo curso, cualquier programador necesita estar familiarizado con el lenguaje C. Hay muchas opciones para idiomas que ya dominas profundamente. Si está involucrado en el desarrollo de controladores, creo que debe dominar el lenguaje ensamblador y el lenguaje C también es una buena opción. Si está utilizando UI, c puede ser mejor. El lenguaje Java es más adecuado para el desarrollo de programas de red. Por supuesto, JavaScript es definitivamente muy respetado en Google.
Para los programadores, el lenguaje de programación equivale al arma en manos de un guardabosques. Puede ser una espada larga, una espada corta, una espada ancha o una daga. Cada una de estas armas tiene sus propias fortalezas. Para usar sus fortalezas, deben basarse en un conjunto de rutas, por lo que para los programadores, se basan en el código base de un determinado lenguaje de programación. Por ejemplo, la biblioteca GNUC es libc o ulibc. Si está utilizando lenguaje C y desarrollando en una plataforma tipo UNIX, entonces debe comprender correctamente el principio de funcionamiento de libc, la entrada y salida de cada función llamada en su código, posibles errores, posibles ambigüedades y posibles efectos en el sistema. . impacto. Por ejemplo, si una función es reentrante o no reentrante, qué errores ocurrirán si se llaman varios subprocesos al mismo tiempo, etc.
Una idea de programación
El mundo entero se maravilló ante el liderazgo y la destreza militar de Mao Zedong, pero detrás de su brillante exterior estaba su revolución.
El espíritu es su pensamiento sabio. Lo mismo ocurre con la programación. Si no hay ideas de programación, no habrá motivación para seguir adelante y no habrá terreno para la inspiración creativa. Hasta ahora, las ideas de programación comúnmente utilizadas en el conocimiento del software son estructuradas (modulares) y orientadas a objetos (patrones de diseño).
Algunos lenguajes se inventaron bajo el trasfondo histórico de la modularidad, como el lenguaje C, y otros se construyeron para cumplir con ideas de programación orientada a objetos, como C. Algunos programadores piensan que el lenguaje C es un lenguaje de programación estructurado y no pueden implementar ideas de programación orientada a objetos. De hecho, el lenguaje C también puede implementar la idea de programación orientada a objetos, pero los programadores completan parte del trabajo orientado a objetos. Asimismo, se pueden utilizar lenguajes de programación orientados a objetos para escribir programas modulares.
Una creencia
En cuanto a los sistemas con los que he entrado en contacto, sólo puedo instalar y usar Windows, VC/VB sólo puede hacer un desarrollo simple y MACOS ha desaparecido. A través de una instalación, al final falló y aún no he tenido la oportunidad de probar el sistema del iPhone. He realizado desarrollo bajo AIX y actualmente estoy haciendo desarrollo bajo Fedora9. La CPU de la placa de destino es SH4 y puede que sea MIPS en el futuro.
Ya sea MACOS, Windows, UNIX, Linux, etc. , todos tienen sus propios seguidores. A este fenómeno lo llamo fe. Por mi parte, creo en Linux y el código fuente del kernel de Linux es un mito para mí.
Creo que trabajar con Linux es algo muy divertido. Si resuelve con frecuencia algunos problemas difíciles, tendrá una sensación de logro que no se puede sentir en la plataforma Windows. Entonces, para esta creencia, creo que necesitamos al menos comprender su instalación, inicio, configuración y seguridad, como la configuración del programa de arranque GRUB, ftp, telnet, sshd, smbd, servidores con nombre y otros, configuración de seguridad de la red, etc. .
Si quieres desarrollar bajo Linux, debes conocer la API de Linux y la biblioteca estándar, que es libc. "Si tú"...
El programa es multiproceso y necesitas dominar el uso de funciones en libpthread, por lo que GCC, GDB, LD, AS, AR, con
y Makefile y el uso de herramientas como make. Si puede dominar herramientas prácticas como find, awk, sed, grep, od, nm y objmp
, la eficiencia de su trabajo mejorará enormemente.
Esta es mi creencia.
En definitiva, un lenguaje de programación y una biblioteca, una idea de programación y una creencia. ¡Todo está bien!
2. Conocimiento del dominio/conocimiento de la industria
Recuerdo que mi primer trabajo fue como programador de desarrollo de transacciones en un banco. En ese momento, una empresa de subcontratación me envió a la industria y el comercio.
Banco, no sé nada sobre el negocio del ICBC. Pero cuando era novato, no le tenía miedo a los tigres, pero completé un proyecto del que no sabía nada, solo por la confianza en mi fuerza técnica.
Pero después me asusté un poco, porque no entendía por qué este número entero se multiplicaba por 0,456 y se almacenaba en la base de datos, y no sabía qué tan precisos eran los datos del banco, y mucho menos los detalles. Entonces sólo me queda rezar para que Dios algún día deje de deducir dinero de los demás. Dios mío, ¿yo también hice esto? ! Por supuesto que no fue tan grave :)
Más tarde, descubrí que me costaba entender el sistema bancario. Prefiero dedicar algo de tiempo a escribir algo pequeño.
Los programas C tampoco están dispuestos a perder tiempo acordando esos amargos documentos de procesos comerciales. Entonces renuncié a esa empresa después de un año.
Creo que la mayoría de los programadores quieren realizar algún trabajo de desarrollo de tecnología relativamente alta, del tipo que se ocupa de datos y datos durante todo el día.
Ningún programador ambicioso está dispuesto a realizar trabajos de desarrollo de bibliotecas. Por supuesto, si tengo suficiente dinero, todavía estoy dispuesto a hacerlo :)
Pero ahora me doy cuenta de que sí. equivocado . Porque esta parte también forma parte del conocimiento del software. En lo que respecta a mi trabajo actual, no habrá muchas dificultades técnicas, pero hay muchas especificaciones de Blu-ray, y me temo que no podré hacerlo. dominarlos en diez años. Este es conocimiento de dominio o conocimiento de la industria. Algunas personas sólo hacen una cosa en su vida, pero es posible que no puedan hacerla bien. Pero sólo llevo menos de dos años haciéndolo. Aunque siento que el tiempo no es largo, tampoco es corto, aunque no haya logrado nada.
Entonces, todavía siento que no soy un desarrollador calificado. Los conceptos básicos del desarrollo de software incluyen conocimiento profesional y conocimiento de la industria.
Conocimiento, si el conocimiento básico es incompleto, entonces el programador no es un programador calificado y eficiente.