¿Qué tipo de cultura se necesita para aprender a programar?
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 la preocupación por los sueños y la aspiración de convertirse en una empresa de software. héroe o una figura de hacker conocida; o son jugadores ávidos que de repente quieren entrar al palacio del desarrollo de juegos y crear un juego perfecto por sí mismos o se sienten atraídos por las infinitas oportunidades de "dinero" en la industria de TI anterior; Quiere ser programador por motivos económicos y busca un puesto de ayuda para iniciarse en el mundo del desarrollo de software.
Estas son cosas como "Hola, quiero ser programador, ¿qué debo hacer?", "Soy principiante en C, cuál es un buen libro para leer", "¿Puede un experto ayudarme?". "Miro este programa", "Quiero" cambiar de carrera, por favor dé consejos de expertos "... las publicaciones representan una gran parte del número total de publicaciones en los principales foros de desarrollo de software y el contenido permanece sin cambios durante muchos años. , repetido una y otra vez: P
Desde que comencé con epubcn, los moderadores de la sección C a menudo reciben mensajes o correos electrónicos de internautas que no conocen y básicamente hacen estas preguntas. Cuando veo estas publicaciones y correos electrónicos, no puedo evitar pensar en el pasado, cuando recién ingresé al campo del desarrollo de software y estaba confundido e inseguro de adónde ir. Estaba emocionado y ansioso. Esta experiencia sucedió una y otra vez. en diferentes lugares y en diferentes momentos. Hoy finalmente me senté y escribí algunas palabras, esperando que fueran de alguna ayuda para mis amigos que dudaban.
Confirma que realmente quieres ingresar al campo del desarrollo de software
El desarrollo de software es una actividad puramente intelectual (ahora la gente se da cuenta de que la escritura continua de programas sobrecargados durante mucho tiempo no mejorará La productividad del software tendrá un gran impacto negativo en la calidad del software, por lo que aunque muchos programadores todavía trabajan horas extras durante largos períodos de tiempo, este fenómeno está disminuyendo gradualmente y eventualmente desaparecerá, por lo que los requisitos físicos no son 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. Es básicamente imposible que alcance altos logros y estatus en el campo del desarrollo de software, y pronto será eliminado. edad.
Si sigues el ejemplo de los héroes del software y los hackers famosos que han desarrollado la mayor cantidad de software libre, determina convertirte en uno de ellos y empuñar espadas 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 de mayor escala por sí sola (aunque todavía hay algunas excepciones, pero créanme, esas son solo excepciones, por favor). no se arriesgue, imagine ser un superhombre único, un tipo afortunado); en segundo lugar, ya sean héroes del software o los mejores piratas informáticos del mundo, sus habilidades de desarrollo de software e inteligencia superan con creces el nivel promedio de los practicantes en el mundo. Industria del software. Sin años de acumulación y tenacidad, son extraordinarios con la perseverancia humana. En otras palabras, si quieres ser uno de ellos, puedes, pero primero conviértete en un desarrollador de software calificado.
Si no estás satisfecho con tu trabajo actual debido al llamado "salario alto" de los programadores y tienes la idea de cambiar de carrera, te aconsejo que lo pienses detenidamente. En términos generales, el salario de los programadores es más alto que el promedio, pero está lejos de ser un salario alto. Y, según la carga de trabajo actual de los programadores, de hecho, por el mismo esfuerzo, lo que obtienen los programadores puede estar a la par del promedio. , la competencia y eliminación de programadores también es extremadamente cruel. La velocidad de la actualización de la tecnología es poco común en otras industrias. Cada programador debe seguir corriendo para mantenerse al día y no quedarse atrás. Por lo tanto, en este nivel, nadie puede detenerse y descansar. El único que puede acumular experiencia es usted. de ello puede añadir fichas a su competitividad.
Dicho todo esto, no estoy menospreciando deliberadamente, pero espero contarles la verdadera situación de la industria del desarrollo de software que conozco. En base a esto, considere cuidadosamente si realmente desea ingresar al software. desarrollo.
Prueba si eres apto para ser programador
En mi opinión, para ser un programador cualificado es necesario cumplir las siguientes condiciones:
1. Fuerte curiosidad y sed de conocimiento
2. El espíritu de búsqueda de la perfección
3. Buena capacidad de análisis lógico
Casi todas las demás condiciones Se han mencionado publicaciones similares: Si no vas a luchar solo, entonces las habilidades para trabajar en equipo son esenciales; soy demasiado vago para hablar inglés. Si no tienes la capacidad básica de leer materiales en inglés, te aconsejo que es mejor que abandones la idea. Para convertirte en programador, no hay razón; la habilidad matemática también es indispensable. Si no estás haciendo algoritmos, la habilidad matemática del nivel de la escuela secundaria es suficiente, pero debes tener buenas calificaciones.
Entonces, ¿por qué debería enfatizar los tres puntos enumerados anteriormente?
Tener una gran curiosidad y deseo de conocimiento puede permitirle mantenerse al día con el ritmo del desarrollo tecnológico. Simplemente confiando en un sentido de crisis y responsabilidad, su aprendizaje de la tecnología tendrá una fuerte naturaleza utilitaria y líder. a su tecnológico El sistema no puede formar un todo autónomo y es difícil 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: Al crear software, "hacerlo" y "hacerlo bien" son conceptos completamente diferentes, y la inversión y el nivel técnico requeridos son mundos diferentes. Hoy en día, muchos programadores en China sólo consideran el desarrollo de software como un medio de vida para mantener a sus familias. La mentalidad de arreglárselas y trabajar descuidadamente en la era de la economía nacional planificada también ha penetrado en la industria del software. No considere mejorarlos en absoluto. La reutilización y la capacidad de mantenimiento no se tienen en cuenta para mejorar la estabilidad y la velocidad de ejecución. Incluso el código es desordenado y no se siguen los estándares básicos de codificación (en mi opinión, esa persona no merece el título de "programador"). "). Cuando condenamos en voz alta el pobre entorno de la industria nacional del software, que depende de las conexiones para realizar proyectos, que no hay un sistema de garantía de calidad, que los jefes no prestan atención a los programadores y que explotan frenéticamente a los programadores, deberíamos preguntarnos: ¿estás simplemente mirando? ¿ellos? otras personas?
Hoy en día, existen todo tipo de kits de desarrollo de software, todo incluido, y las herramientas de programación también son extremadamente poderosas y convenientes para el sistema MIS convencional en China, no es difícil completar una función. pero si el sistema es en su conjunto, la mayoría de ellos son sistemas que se ejecutan lentamente, ocupan demasiados recursos, tienen poca compatibilidad, poca capacidad de mantenimiento y son inestables. Si es así, ¿lo encontrará? que puedes desarrollar un software excelente, lo difícil que es, lo exigente que es técnicamente y lo rápido que mejoras mientras te esfuerzas por ser perfecto. Sin el espíritu de búsqueda de la perfección, no importa cuán bueno sea el entorno externo, no desarrollará un software excelente. Lo que le espera son modificaciones y mantenimiento interminables ~, y su nivel técnico siempre se mantendrá en la etapa de codificación simple, y al final. Sólo serás eliminado.
Bien, soy realmente 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 más populares en China son Windows, Linux (Unix) y Mac OS. En términos generales, todos eligen la plataforma Windows, porque esta plataforma es un sistema operativo monopolizado en China y hay muchas herramientas de desarrollo excelentes para elegir. La desventaja es que la apertura de la plataforma Windows no es alta y es difícil de elegir. explorar la capa inferior (Pero me disgusta bastante la idea de hablar de la capa inferior. No todos los desarrolladores necesitan conocer muy bien la capa inferior. Hacer un sistema que satisfaga a los usuarios es lo fundamental que perseguimos. Jugar con la Los trucos de la capa inferior son solo una especie de autosatisfacción. Por supuesto, necesitamos algunos maestros que dominen la tecnología subyacente, pero esto es una cuestión de elección personal), y los programadores que están acostumbrados a Windows son relativamente débiles en configuración, secuencias de comandos, etc. etc. Linux es una plataforma de código abierto. Por supuesto, en teoría puedes controlar todo lo relacionado con Linux, pero ¿cuántas personas pueden alcanzar este nivel? 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 lo desee), pero debe aprender muchas instrucciones de la línea de comandos, dominar varias configuraciones y scripts de parámetros y sistemas.
Elegir un lenguaje de programación es aún más problemático. No sé mucho al respecto. Para algunos lenguajes, no puedo dar ninguna sugerencia, así que tengo que esperar a que los expertos en este campo me agreguen. él. Solo doy algunas explicaciones sobre C y Java. Por supuesto, esto solo se basa en la experiencia personal y definitivamente no es un punto de vista autorizado: P
C sigue siendo el lenguaje de desarrollo principal (para más detalles, usted). Puede leer la información relevante en TCPL Discussion), y el desarrollo o desaparición de un lenguaje es un proceso gradual. En el futuro previsible, C seguirá siendo un lenguaje de desarrollo importante, pero creo que los campos y direcciones a los que apunta pueden ajustarse. El cambio más importante es que C se retirará gradualmente del mercado de sistemas MIS comerciales. La razón para elegir C es que existen 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 esto. etapa, se explica la capa inferior del sistema. Los libros sobre tecnologías arcanas y avanzadas básicamente usan C\C como lenguaje de ejemplo. Junto con la plataforma de desarrollo cuidadosamente diseñada de Microsoft, Visual Studio, o la serie C Builder de Borland, el aprendizaje es aún más poderoso. Pero las deficiencias actuales de C también son relativamente obvias. Mi sentimiento más profundo es que no es compatible con XP y Agile Development.
Java simplifica la sintaxis de C y es más fácil de aprender (pero con la creciente popularidad y desarrollo de Java, no me atrevo a decir si podrá continuar manteniendo esta ventaja). La plataforma soporta todo el proceso de XP: diseño, pruebas, codificación, reconstrucción... El lenguaje principal para el desarrollo ágil de software en esta etapa es Java. Y las funciones multiplataforma de Java son una gran ventaja.
De hecho, no importa qué idioma elijas. Simplemente elige de acuerdo con tu plan de desarrollo y el entorno actual que te rodea. No es necesario seguir la tendencia.
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...):
El aprendizaje del lenguaje C es, por supuesto, 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. la interfaz gráfica familiar por el momento y volver al antiguo DOS. La selección de libros de referencia es una preocupación para muchos amigos en esta etapa. "Essential C" y "C Primer" de Stan Lippman son mis recomendaciones prioritarias, y "Essential C" es más pequeño, tiene un contenido explicativo apropiado y utiliza C STL. Hay muchas descripciones que parecen bastante prácticas y creo que es la más adecuada para principiantes. No importa qué libro elijas como libro de texto introductorio, debes digerirlo uno por uno, no seas demasiado rápido, pero al mismo tiempo debes concentrarte en el contenido clave. Todo lo que aprendemos es para resolver problemas prácticos, así que concéntrese en las partes más utilizadas en nuestra práctica, en lugar de profundizar demasiado en algunos detalles y tecnologías oscuras y poco comunes.
En este momento nos encontraremos con muchos problemas que parecen muy simples e ingenuos en retrospectiva, como por qué ocurren errores de compilación, por qué falla la compilación al ingresar de acuerdo con los ejemplos del libro, el archivo de encabezado no se puede encontrado, etc. En términos generales, este es el caso. Esto se debe a que acabo de entrar en contacto con el desarrollo de programas, mi comprensión de los programas aún es muy rudimentaria y no sé lo suficiente sobre el entorno de desarrollo utilizado. tiene diferentes niveles de soporte para el estándar C. Lea la documentación diversa sobre el entorno de desarrollo que está utilizando y consulte la documentación de ayuda.
Tomando Visual C y MSDN, que uso con mayor frecuencia, cuando ocurre un error de compilación que no puedo entender, presionar la tecla F4 saltará automáticamente a la ubicación del error actual y la siguiente ventana de salida también mostrará el código de error (como C ××× , que es un requisito básico). Las herramientas de desarrollo actuales son muy convenientes para la resolución de problemas. Por supuesto, a veces la causa de muchos errores no es donde lo indica el compilador, sino en algún lugar hacia adelante o hacia atrás. La experiencia de programación a largo plazo puede mejorar la velocidad de detección de errores. Practique también técnicas de depuración en este momento.
En esta etapa, siempre que pueda dominar los elementos básicos del lenguaje C, tener cierta comprensión de la programación estructurada y el diseño basado en objetos y poder completar algunos programas pequeños y simples, será Después de todo, los programas de DOS son muy difíciles ahora, lo que despierta nuestro deseo de aprender: P Después de esto, puede decidir si aprender la estructura de datos de acuerdo con su propia situación es un curso obligatorio para los programadores. Tiene un estado muy importante. Incluso si desea ingresar al mundo del desarrollo de programas de interfaz gráfica de inmediato, también le recuerdo que se ponga al día con esta lección lo antes posible.
Por fin podemos entrar en el mundo de los gráficos. Tenemos que empezar con la programación del SDK. No te preocupes, esto no te llevará mucho tiempo, pero es un buen momento para tener un conocimiento profundo del funcionamiento. Mecanismo de los programas de Windows. Aquí todos mis esfuerzos no serán en vano (créame, no hay libros de referencia para considerar en este momento). El básico es "Programación de Windows" de Charles Petzold y el avanzado es "Windows Core". Programación". Comience con "Programación de Windows". El libro de Charles Petzold es fácil de entender y muy fácil de aprender, y no requiere grandes conocimientos de lenguaje. Solo necesita saber C.
La mayoría de los problemas que son fáciles de encontrar en este momento 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 y verificarlo detenidamente. documentos y familiarizarse con el significado de cada configuración.
En esta etapa, concéntrese en dominar el método de escritura de los programas SDK de Windows, el mecanismo de ejecución de los programas de Windows y el mecanismo 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 realizar una transformación preliminar del programa SDK de procedimientos y hacer que el programa que escribimos en la computadora sea reutilizable, de acuerdo con nuestra propia comprensión del pensamiento basado en objetos. y pensamiento orientado a objetos. Comprender y reescribir el programa de ejemplo.
Bien, ahora ha comenzado a comenzar, domina el uso básico de C, tiene una comprensión vaga y moralista de la orientación a objetos y también puede escribir programas de Windows, aunque todavía es un poco Simple y un poco complejo, pero al fin y al cabo es una interfaz gráfica. Empezando a sentir algo, ¿verdad? :P No se apresure a avanzar, deténgase y establezca una base sólida de C y Windows SDK, no muerda más de lo que puede masticar. En este momento, hay muchos libros clásicos esperando que los domine y hay temas casi ilimitados para que practique. Lea tanto como sea posible y comuníquese con los siguientes recursos:
"C Primer"<. /p>
"Programación central de Windows"
"Tecnología de depuración de aplicaciones"
Libros sobre desarrollo y diseño orientado a objetos
Parte SDK de plataforma de MSDN, Parte de publicaciones periódicas (contiene muchos artículos valiosos de C. Técnicos sobre SDK)
El código fuente relevante en CodeProject es un buen material de aprendizaje complementario
Ahora continúe, usar el desarrollo de SDK a veces es Después de todo, lleva demasiado tiempo. Si requiere mucho esfuerzo, es mejor utilizar marcos de desarrollo de aplicaciones más avanzados. Los principales son MFC y VCL. Estoy cansado de escuchar argumentos sobre cuáles de estos marcos son mejores y cuáles. Peor aún, siempre que puedan ayudarnos a completar la tarea, no son más que herramientas a tu elección.
Pero después de hacer su elección, debe comprender que cuanto más comprenda su herramienta, más poderosa será. Si elige MFC, le recomiendo estudiar los siguientes libros:
"Introducción en profundidad a MFC": No hace falta decir sobre este libro, aunque algunas personas lo siguen menospreciando, su estado 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 en los sitios de desarrollo en línea son el mejor maestro. ..
¿Qué debo hacer si encuentro problemas durante el proceso de aprendizaje?
Siempre creo que los problemas encontrados en el proceso de aprendizaje del desarrollo de software solo se pueden resolver haciendo todo lo posible para resolverlos. Para aquellos que publican problemas en línea con frecuencia y esperan que los expertos los ayuden a resolverlos, lo recomiendo encarecidamente. No estoy de acuerdo con este enfoque, porque no aprenderá mucho de él. Lo que te sugiero es que primero intentes resolver el problema por tu cuenta. Es normal que dediques unas horas a resolver un problema cuando realmente no puedes hacerlo. resuelto, intente reducir el alcance del problema tanto como sea posible. Resuma el problema y inicialmente forme su propia conclusión, luego use el motor de búsqueda o la función de búsqueda en el foro de desarrollo para buscar respuestas a sus preguntas; Ninguno, publica para pedir ayuda. Por favor, comprenda una cosa: los problemas que encontró los han encontrado otros y debe haber soluciones listas para usar en Internet (porque aún no ha alcanzado el nivel de desarrollo e investigación de problemas sin precedentes: P). puede encontrarlo o no. Haga todo lo posible para utilizar los recursos existentes en lugar de molestar a los demás.
El foro de CSDN y la documentación en línea de MSDN son muy buenos recursos. Básicamente, podemos encontrar respuestas a los problemas que encontramos aquí.
(La escritura es un poco desordenada, solo léala B))
Nota: el contenido anterior no es lo suficientemente completo y puede enriquecerlo. Si hay algún problema, todos pueden señalarlo y discutirlo.
Materiales de referencia:/question/2687391.html