Red de conocimientos turísticos - Conocimientos sobre calendario chino - Tecnología de programación de Internet legendaria

Tecnología de programación de Internet legendaria

Para principiantes en el desarrollo de software

Después de permanecer en el foro durante mucho tiempo, descubrí que una gran cantidad de publicaciones sobre desarrollo tratan sobre sueños, aspiraciones de convertirse en un héroe del software, un hacker famoso o un hacker famoso; jugador ávido que de repente quiere entrar en el palacio del desarrollo de juegos y crear un juego perfecto usted mismo o puede sentirse atraído por el "dinero" interminable en la industria de TI anterior y pedir ayuda para ingresar al campo del desarrollo de software debido a razones económicas; razones.

Por ejemplo, “Hola, quiero ser programador, ¿qué debo hacer?”, “¿Qué libro debo leer si soy principiante en C++?”, “Pedirle a un experto que me ayude mira este programa", "Quiero, estoy cambiando de carrera, por favor pide consejo a expertos”...

Desde que me convertí en moderador de la sección c++ de epubcn, suelo recibir mensajes o correos electrónicos de desconocidos , básicamente haciendo estas preguntas. Al ver estas publicaciones y correos electrónicos, no puedo evitar pensar en el pasado, cuando entré por primera vez en el campo del desarrollo de software, no sabía a dónde ir y estaba emocionado e incómodo. Esta experiencia se repite una y otra vez en diferentes lugares y en diferentes momentos. Hoy finalmente me senté y escribí algunas frases, con la esperanza de poder ayudar a mis amigos que están dudando.

Asegúrate de que realmente quieres dedicarte al desarrollo de software.

El desarrollo de software es una actividad puramente intelectual (ahora la gente se da cuenta de que la sobrecarga a largo plazo de la programación continua no mejorará la productividad del software, pero tendrá un gran impacto negativo en la calidad del software, por lo que, aunque muchos programadores todavía trabajan a largo plazo trabajo de horas extras, pero este fenómeno está disminuyendo gradualmente y eventualmente desaparecerá, por lo que los requisitos físicos no serán mayores que en otras industrias). Si no es una persona con una inteligencia superior a la media, para ser honesto, el desarrollo de software no es adecuado para usted y es básicamente imposible que alcance altos logros y estatus en el campo del desarrollo de software.

Si sigues el ejemplo de los héroes del software y los hackers famosos que desarrollan * * * software, determina convertirte en uno de ellos y luchar como los héroes de las novelas de artes marciales. Primero quiero echarte mucha agua fría y llevarte de la fantasía a la realidad. En primer lugar, la complejidad y la escala del software actual son mucho mayores que antes. Es básicamente imposible que una persona complete un software un poco más grande por sí sola (aunque hay algunas excepciones, pero créanme, esas son solo excepciones. Por favor, no lo haga). No te imagines como un superhombre único y tipos afortunados); en segundo lugar, ya sean héroes del software o grandes hackers, sus habilidades e inteligencia de desarrollo de software superan con creces el nivel promedio de los profesionales de la industria del software. Sería imposible sin años de acumulación y perseverancia. En otras palabras, si desea ser uno de ellos, puede hacerlo, pero primero conviértase en un desarrollador de software calificado.

Si no estás satisfecho con tu trabajo actual debido al legendario "alto salario" de los programadores, te aconsejo que lo pienses de nuevo. En general, a los programadores se les paga por encima del promedio, pero lejos de ser salarios altos. Y a juzgar por la carga de trabajo actual de los programadores, de hecho, con el mismo esfuerzo, sería bueno si los programadores pudieran estar a la par del nivel promedio. La competencia y eliminación de programadores también es extremadamente cruel. La velocidad de la actualización tecnológica es poco común en otras industrias. Todo programador debe seguir corriendo para mantenerse al día y no quedarse atrás. Entonces a este nivel nadie puede parar y descansar. Lo único que se puede acumular es tu experiencia, pero no hay mucha experiencia que pueda aumentar tu competitividad.

Dicho todo esto, no pretendo menospreciar, sólo quiero contaros lo que sé sobre la verdadera situación de la industria del desarrollo de software. En base a esto, considere cuidadosamente si realmente desea ingresar al campo del desarrollo de software.

Comprueba si eres apto para ser programador.

En mi opinión, para convertirse en un programador calificado, es necesario tener las siguientes condiciones:

1. Gran curiosidad y sed de conocimiento.

2 .El espíritu de búsqueda de la perfección

3. Buenas habilidades de análisis lógico

Otras condiciones se mencionan en casi todas las publicaciones similares: si no estás preparado para trabajar solo, entonces un equipo La cooperación es esencial; Soy demasiado vago para hablar inglés. No tengo la capacidad básica para leer materiales en inglés. Te aconsejo que abandones la idea de ser programador. Sin motivo. Las habilidades matemáticas también son esenciales. Si no haces aritmética, las habilidades matemáticas de la escuela secundaria son suficientes, pero debes obtener buenas calificaciones.

Entonces, ¿por qué debería enfatizar los tres puntos enumerados anteriormente?

Solo con una gran curiosidad y deseo de conocimiento podremos seguir el ritmo del desarrollo tecnológico. Simplemente confiar en un sentido de crisis y responsabilidad hará que su aprendizaje tecnológico sea altamente utilitario, lo que hará que su sistema tecnológico no forme un todo completo y autónomo, lo que dificultará tener un alto nivel de comprensión y dominio de la tecnología.

Un diseñador de sistemas senior que conozco me dijo una vez que al crear software, "crearlo" y "hacerlo bien" son conceptos completamente diferentes, y que la inversión y el nivel técnico requeridos son mundos aparte. En la actualidad, muchos programadores en China sólo consideran el desarrollo de software como un medio para mantener a sus familias. La mentalidad improvisada de la era de la economía planificada de China también ha penetrado en la industria del software. Muchos programadores simplemente crean funciones sin considerar mejorar la reutilización y la mantenibilidad, ni mejorar la estabilidad y la velocidad de ejecución. Incluso el código es confuso y no se siguen los estándares básicos de codificación (en mi opinión, una persona así no merece el título de "programador"). Cuando condenamos en voz alta el duro entorno de la industria nacional del software, la falta de un sistema de garantía de calidad y la negligencia y explotación loca de los programadores por parte de los jefes, deberíamos preguntarnos: ¿estás simplemente mirando a los demás?

Actualmente existe una variedad de kits de desarrollo de software y las herramientas de programación son extremadamente poderosas y convenientes. De hecho, no es difícil para los sistemas MIS domésticos convencionales completar una función, pero desde la perspectiva del sistema en su conjunto, la mayoría de ellos funcionan lentamente, ocupan demasiados recursos, tienen poca compatibilidad, poca mantenibilidad y sistemas inestables. ¿Alguna vez has intentado desarrollar un gran sistema? Si es así, verá lo difícil que es desarrollar un software excelente. Sin el espíritu de buscar la perfección, no importa cuán bueno sea el entorno externo, nunca podrás desarrollar un software excelente. Lo que te espera son modificaciones y mantenimiento sin fin~. Tu nivel técnico siempre se mantendrá en la etapa de codificación simple y eventualmente te verás obligado a cambiar de carrera.

Bueno, realmente soy apto para ser programador, entonces, ¿cómo empiezo?

Primero, elige un lenguaje de programación y una plataforma de sistema operativo.

Las plataformas de sistemas operativos son muy populares en China, como Windows, Linux (Unix) y Mac OS. En términos generales, todo el mundo elige la plataforma Windows porque es el sistema operativo dominante en China y tiene muchas herramientas de desarrollo excelentes para elegir. La desventaja es que la apertura de la plataforma Windows no es alta y es difícil averiguar el resultado final (pero me disgusta mucho la idea de decirlo todo. No todos los desarrolladores deberían conocer el resultado final. Crear un sistema Lo que perseguimos es satisfacer a los usuarios. Hacer trucos en la parte inferior es solo una especie de autosatisfacción. Por supuesto, necesitamos algunos expertos que dominen la tecnología subyacente, pero esto es una cuestión de elección personal. están acostumbrados a Windows son relativamente débiles en configuración, scripting, etc. Linux es una plataforma de código abierto. Por supuesto, en teoría puedes manipular todo en Linux, pero ¿cuántas personas pueden hacer eso? Los programadores que recién comienzan a aprender a desarrollar solo pueden desarrollar algunas aplicaciones de software en Linux. Las herramientas de desarrollo en Linux no son lo suficientemente fáciles de usar, pero esta situación se está aliviando gradualmente. Eclipse es una excelente plataforma de desarrollo. Al desarrollar en Linux, puede obtener una gran cantidad de código fuente excelente y todo es transparente (siempre que esté dispuesto), pero debe aprender muchas instrucciones de línea de comandos y dominar el conocimiento de varios sistemas, configuraciones de parámetros y scripts. .

La elección del lenguaje de programación es aún más problemática. No lo entiendo del todo. Para algunos idiomas, no puedo dar ninguna sugerencia y solo puedo esperar a que los expertos en este campo se las agreguen. Sólo explico C++ y Java. Por supuesto, esto solo se basa en la experiencia personal y definitivamente no es una opinión autorizada: P

C++ sigue siendo el lenguaje de desarrollo principal actual (consulte la discusión relevante en TCPL para obtener más detalles). un lenguaje es un proceso gradual. En el futuro previsible, C++ seguirá siendo un lenguaje de desarrollo importante, pero sus áreas de destino y direcciones pueden modificarse. Creo que el cambio más importante es que C++ se retirará gradualmente del mercado de sistemas MIS comerciales. La razón por la que elegí C++ es porque aquí se encuentran los mejores libros y herramientas de desarrollo sobre C++, y los recursos relacionados también son extremadamente ricos. Después de dominar el desarrollo de aplicaciones generales, puede aprender varias tecnologías en profundidad sin transición, porque en esta etapa, los libros sobre los misterios subyacentes del sistema y las tecnologías avanzadas básicamente eligen C \ C ++ como lenguaje de ejemplo. Junto con la plataforma de desarrollo cuidadosamente construida de Microsoft, Visual Studio, o la serie C++ Builder de Borland, el aprendizaje es aún más poderoso. Sin embargo, las deficiencias de C++ también son obvias ahora. Mi sentimiento más profundo es el escaso soporte para XP y el desarrollo ágil.

Java simplifica la sintaxis de C++ y es fácil de aprender (pero con la creciente popularidad y desarrollo de Java, no estoy seguro de si esta ventaja se puede mantener).

Eclipse es una excelente plataforma de desarrollo Java que soporta todo el proceso de XP: diseño, pruebas, codificación y refactorización... Actualmente, el lenguaje principal para el desarrollo de software ágil es Java. Y la naturaleza multiplataforma de Java es una gran ventaja.

De hecho, no importa el idioma que elijas. Puede elegir según su propio plan de desarrollo y el entorno actual. No hay que seguir la tendencia, la dificultad es persistir en el seguimiento.

Bien, suponiendo que elijas C++ como lenguaje de desarrollo y desarrolles en la plataforma Windows, te daré las siguientes sugerencias de aprendizaje (agrega activamente otras opciones...):

Lenguaje C ++ Por supuesto, el aprendizaje es la base. En esta etapa, dado que no tenemos ninguna experiencia de desarrollo en una plataforma específica, solo podemos ingresar y ejecutar los ejemplos uno por uno de acuerdo con los ejemplos del libro. Por el momento, nos despedimos de la interfaz gráfica familiar y regresamos. al antiguo DOS. La selección de libros de referencia es un tema que preocupa a muchos amigos en esta etapa. "Essential C++ and C++ Primer" de Stan Lippman es mi primera recomendación. Essential C++ es muy práctico debido a su breve extensión, contenido explicativo apropiado y muchas descripciones del uso de C++ STL. Creo que es más adecuado para principiantes. No importa qué libro elija como libro de texto introductorio, debe digerirlo caso por caso, no codiciar demasiado, pero al mismo tiempo concentrarse en el contenido clave. Todo lo que aprendemos es para resolver problemas prácticos, así que concéntrese en las partes más utilizadas de nuestra práctica y no busque demasiado en algunos detalles y tecnologías oscuras.

Ahora nos encontraremos con muchos problemas que nos parecerán muy simples e ingenuos en el futuro, como por qué hay errores en la compilación, por qué no podemos compilar según los ejemplos del libro, por qué no podemos encontrar el archivos de encabezado, etc. En términos generales, esto se debe a que usted es nuevo en el desarrollo de programas, su comprensión de los programas aún es rudimentaria y no sabe lo suficiente sobre el entorno de desarrollo que está utilizando. Como resultado, los compiladores específicos tienen diferentes niveles de soporte para C++ estándar. . Lea más documentación sobre el entorno de desarrollo que está utilizando y consulte la documentación de ayuda. Tomemos como ejemplo MSDN Visual c++, que uso con más frecuencia. Cuando ocurre un error de compilación que no puedo entender, presione F4 y el editor saltará automáticamente a la ubicación del error actual. El código de error (como C ××××××) también aparecerá en la ventana de salida a continuación. Tome nota del código de error, abra MSDN e ingrese el código de error en la barra de índice, podrá encontrar una explicación detallada sobre este error. Por supuesto que está en inglés (no preguntes qué hacer si no entiendes inglés). Las herramientas de desarrollo ahora son muy convenientes para verificar errores de depuración. Por supuesto, a veces la causa de muchos errores no es donde el compilador indica, sino en algún lugar hacia adelante o hacia atrás. La experiencia en programación a largo plazo puede aumentar la velocidad de detección de errores. Practique más técnicas de depuración en este momento.

En esta etapa, siempre que pueda dominar los elementos básicos del lenguaje C++ y tener cierta comprensión de la programación estructurada y el diseño basado en objetos, podrá completar algunos pequeños programas simples. Después de todo, es difícil que los programas DOS estimulen nuestro deseo de aprender ahora :P Después de eso, puedes decidir si aprender estructuras de datos de acuerdo con tu propia situación. La estructura de datos es un curso obligatorio para los programadores y su estado es muy importante. Incluso si desea ingresar al mundo de la programación de interfaces gráficas ahora, le recuerdo que se ponga al día con esta lección temprano.

Por fin puedes adentrarte en el mundo gráfico. Deberías comenzar con la programación del SDK. No se preocupe, no le quitará mucho tiempo, pero es una buena oportunidad para comprender mejor cómo funcionan los programas de Windows, y sus esfuerzos aquí no serán en vano (créame). No hay nada que considerar sobre los libros de referencia en este momento. El básico es "Programación de Windows" de Charles Petzold y el avanzado es "Programación central de Windows". Comience con "Programación de Windows". Los libros de Charles Petzold son accesibles, fáciles de aprender y no requieren mucho conocimiento del idioma. Sólo sé c.

En este momento, la mayoría de los problemas que son fáciles de encontrar están relacionados con la configuración del proyecto. Si usa Visual C++, presione Alt+F7 para abrir el cuadro de diálogo de configuración del proyecto para verificarlo cuidadosamente y lea los documentos relevantes para familiarizarse con el significado de varias configuraciones.

En esta etapa, concéntrese en dominar los métodos de escritura de los programas SDK de Windows, los mecanismos operativos de los programas de Windows y los mecanismos de mensajes de Windows, y las API de Windows de uso común.

Podemos ir un paso más allá: intentar utilizar el conocimiento de C++ aprendido en la etapa anterior para transformar inicialmente el programa SDK de procedimiento, de modo que el programa que escribimos en la computadora pueda reutilizarse y reescribirlo según nuestra comprensión de la tecnología basada en objetos. Pensamiento y pensamiento orientado a objetos.

Bien, ahora tienes los conocimientos básicos de C++, tienes una comprensión vaga y moralista de la orientación a objetos y puedes escribir programas para Windows. Aunque un poco simple y feo, no deja de ser una interfaz gráfica. Está empezando a sentirse un poco mejor, ¿no? :p No se apresure, deténgase y siente las bases de C ++ y Windows SDK. No muerdas más de lo que puedes masticar. En este momento, hay muchos libros clásicos esperando que los domines y preguntas casi ilimitadas para que practiques. Lea todo lo posible y comuníquese con los siguientes recursos:

"C++ Primer"

Programación del kernel de Windows

Tecnología de depuración de aplicaciones

Libros sobre desarrollo y diseño orientado a objetos

Sección SDK de plataforma MSDN y sección de revistas (que contienen una gran cantidad de valiosos artículos técnicos sobre C++ y SDK).

El código fuente relevante en CodeProject es un buen material de aprendizaje auxiliar.

Ahora continuamos. Después de todo, desarrollar con SDK a veces requiere demasiado tiempo y es laborioso. Es mejor utilizar marcos de desarrollo de aplicaciones más avanzados, principalmente MFC y VCL. Estoy cansado de escuchar argumentos sobre cuáles de estos marcos son mejores y cuáles son peores. Considerándolo todo, esto es suficiente para ayudarnos a hacer el trabajo. No son más que herramientas. Por favor haga su propia elección. Pero una vez que elijas, comprende que cuanto más sepas sobre tu herramienta, más poderosa será. Si eliges MFC, te recomiendo estudiar los siguientes libros:

MFC: No hace falta decir que, aunque algunas personas lo han menospreciado, su estatus es incuestionable y también es uno de los libros más útiles para mí.

Programación MFC

Visual C++ Technology Insider

Entonces deja de buscar libros. Los innumerables códigos fuente para sitios web de desarrollo en línea son los mejores maestros...

¿Qué debes hacer si encuentras problemas mientras aprendes?

Siempre he creído que sólo haciendo todo lo posible para resolver los problemas encontrados en el proceso de aprendizaje del desarrollo de software se pueden obtener los mayores beneficios. No estoy de acuerdo con las personas que publican fácilmente sus problemas en línea y esperan que los expertos le ayuden a resolverlos, porque no aprenderá mucho de ellos. Lo que sugeriría es intentar resolver un problema usted mismo primero; es normal pasar algunas horas resolviendo un problema. No te rindas si no puedes resolverlo en unos minutos. Cuando no se pueda resolver, intente limitar el alcance, resuma el problema y, inicialmente, forme su propia conclusión, luego utilice un motor de búsqueda o la función de búsqueda en el foro de desarrollo para buscar respuestas a sus propias preguntas; , publicar para obtener ayuda. Por favor, comprenda: los problemas que encuentra los encuentran otros y debe haber soluciones listas para usar en línea (porque aún no ha alcanzado el nivel de desarrollo e investigación de problemas sin precedentes: P). Solo vea si puede encontrarlos, intente utilizar los recursos existentes en lugar de molestar a otros.

El foro de CSDN y la documentación en línea de MSDN son muy buenos recursos. Básicamente, todas las preguntas que encontramos se pueden responder aquí.

(Es un poco complicado, así que hagámoslo. b))

Nota: El contenido anterior no es lo suficientemente completo y todos pueden agregarlo. Si hay algún problema, todos pueden señalarlo y discutirlo.

served.