¿Cómo aprender a programar por sí mismo?

Autor:
enlace de audio esqueleto : https://www.zhihu.com/question/28354731/answer/138578609
Fuente: saber casi con
derechos de autor del autor. Para reimpresiones comerciales, comuníquese con el autor para obtener autorización. Para reimpresiones no comerciales, indique la fuente.

Las respuestas escritas por mucha gente al frente son muy buenas. La respuesta es que lo que los estudiantes de pregrado y posgrado llevan 6 años estudiando es todo mecánico. El uso ocasional de la programación en sus estudios es muy simple. Escribir una función, escribir un bucle, nada más, sí El principio de funcionamiento de la computadora no se comprende en absoluto, ni siquiera la diferencia entre bit y byte (sin exageración). Cuando estaba buscando trabajo, me topé con la industria del software por error. Comencé a aprender programación por mi cuenta. Solía ​​leer libros y abrir cursos todos los días después del trabajo. Aprendí algunos conocimientos básicos de informática y programación. Ahora trabajo en Google y trabajo en los Estados Unidos. La razón por la que quiero agregar es que la mayoría de las otras respuestas dicen que si tomas la programación como un interés para aprender, personalmente sientes que la programación, o el ingeniero de software, como tu carrera futura, simplemente aprender un idioma y escribir programas simples no es suficiente. de. Es muy importante comprender los principios operativos de los programas de computadora y comprender muchos conocimientos relacionados, de lo contrario, en el camino del aprendizaje, solo se puede tener un poco de comprensión de muchos conceptos y no se irá demasiado lejos. Tome los siguientes conceptos básicos de computación y cursos relacionados El encuestado cree que es muy útil y necesario convertirse en un excelente programador. 1. Sistema informático, curso recomendado: UC berkely CS61C, difícil de entender, ¡pero muy importante! enlace: https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_ Este curso describe cómo se ejecutan los programas de computadora, algunas computadoras, conceptos básicos de programas, como ensamblaje de computadoras El significado de las instrucciones, la memoria, los registros, la diferencia entre procesos e hilos. La comprensión de estos conceptos es vital para un programador. Comprenda estos para considerar algunos problemas básicos en el diseño y la escritura de programas, como cómo y por qué evitar pérdidas de memoria, cómo escribir programas puede reducir la pérdida de caché y mejorar el rendimiento. 2. Estructura de datos y algoritmo, curso recomendado: UC berkely CS61B , La dificultad de comprensión es de media a alta, los importantes no pueden ser más importantes enlace:https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PLZBP-86GmPTxpbvoFFzad0qYw5dKA8MV2 Si no comprende la estructura básica de datos, el algoritmo y la programación, es básicamente equivalente a construir un edificio sin comprender la mecánica. El edificio puede estar construido, pero Te atreves a vivir, yo no. La función básica del programa es almacenar datos y procesarlos.Las estructuras y algoritmos de datos pueden entenderse como herramientas e ideas básicas para realizar estas dos tareas. 3. Conocimientos básicos de redes, curso recomendado: Stanford Network, la dificultad de comprensión es media, enlace muy importante: Introducción a las redes informáticas No necesito decir cuán importante es la red en el software, a menos que solo desee escribir una calculadora, de lo contrario, estos conceptos básicos son definitivamente Entender. Este curso básicamente explica los componentes básicos de la red, cómo el navegador pasa de escribir una URL con forma de letra a mostrarte una página interactiva. Aunque esto sucedió en solo un segundo, sucedió en segundo plano. Se necesitan muchas cosas para garantizar que esta página web se envíe a su navegador. Desde dns, router, balanceador de carga, http, tcp / ip, html, css, javascript. Después de tomar este curso, está básicamente claro. Escribiré esto primero ... Continuaré actualizando si alguien está interesado. Escribiré alrededor de un cuarto más tarde./*Después de dormir, me sentí halagado de ver tanta aprobación. Como todos están tan interesados, continuaré con la palabra clave. . Intento reservar un período de tiempo para actualizar todos los días, la respuesta es que hay un bebé que solo tiene 3 meses y el tiempo es relativamente inestable. Primero que nada, tengo que explicar algunas cosas. La respuesta a la asignatura es que el proceso de autoaprendizaje de Informática o programación se completa completamente en el extranjero, por lo que todos los materiales de aprendizaje y videos están en inglés, y solo sé inglés por muchos términos. Es inconveniente para todos de entender. Se disculpa. Pero hablando de esto, creo que hacer dos cosas es muy útil para aprender CS de manera eficiente: primero, aprender inglés bien y tratar de aprender los conceptos de CS en inglés. Esto no se debe a que me gusten los extranjeros, pero objetivamente hablando, incluso si la tecnología de investigación científica y el nivel de programación de China no están muy por detrás de los de Estados Unidos, pero en términos de nivel de enseñanza y calidad del material de enseñanza, todavía hay mucha diferencia, y hay muchos CS Los conceptos se presentarán directamente en inglés en lenguajes de programación (pila, montón, árbol, matriz, lista, mapa, gráfico), incluso si usa chino cuando aprende, aún necesita saber inglés al programar, escribir inglés y aprender inglés directamente Elimina la necesidad de un aprendizaje secundario. segundo,*. La razón de esto no es solo que la mayoría de los libros de texto y videos de cursos extranjeros están en sitios web fuera del muro (casi todos los cursos públicos están en youtube, pondré el enlace del curso mencionado anteriormente). Además, volví a China el año pasado y trabajé en la oficina de la compañía en Beijing por un tiempo. Intenté usar Baidu. En términos de tecnología de programación de búsqueda, no sé hasta qué punto Google rechazó la calidad de los resultados de búsqueda de Baidu. Publicaré enlaces de YouTube a los cursos que he escrito anteriormente. Se recomienda encarecidamente seguir las asignaciones que se pueden escribir en estos cursos, porque el nivel de programación está escrito por código. / 4. No tengo ningún curso recomendado para el tema de la base de datos, porque la mayoría de los cursos de base de datos que veo son sobre cómo usar la base de datos SQL. Creo que el conocimiento de la base de datos se divide en dos partes. Como programador principiante, es posible que solo necesite saber cómo escribir declaraciones SQL simples, cómo crear una base de datos, crear tablas, insertar, actualizar y consultar. Esta es la primera parte del aprendizaje de bases de datos, recomiendo usar Algunos sitios web que puedes escribir mientras aprendes a aprender esta parte quedarán impresionados por el combate real. Aquí hay un sitio web recomendado (no sé si es necesario ) Aprende a programar, tienen muchos cursos, todos son buenos, no necesitas usar la versión paga, es gratis La versión es suficiente. El segundo nivel de la base de datos, creo que es la esencia de la base de datos. Esta parte la aprendí leyendo artículos en Internet y continuando la búsqueda. Es el principio operativo de la base de datos. Específicamente, es cómo se puede buscar rápidamente en la base de datos. Imagínese Aquí, una tabla tiene muchas columnas, como la información, el nombre, el sexo, la dirección y la edad de una persona. Entonces, por ejemplo, si quiero encontrar personas en un rango de edad, la base de datos no puede ordenar por edad cada vez y luego generar. La complejidad de la clasificación es nlog, incluso si no está ordenado, la complejidad de cada salida también es n, lo cual es inaceptable para una base de datos con millones de registros en cada turno, por lo que la base de datos utilizará varios árboles de estructura especial para almacenar estas columnas y garantizar Al generar, la complejidad es básicamente logn. Con respecto a cómo se implementan estos árboles, puede escribir un artículo muy largo de forma independiente. Se recomienda que primero aprenda y comprenda algunas estructuras básicas de árbol (se mencionan la estructura de datos y los algoritmos) y, por cierto, recomiendo una cuenta pública de WeChat. Dije de antemano que esta cuenta oficial no tiene nada que ver conmigo, excepto que su nivel de artículo es generalmente alto. El nombre de la cuenta oficial es "Kaidian Workshop", y hay un artículo sobre implementación de base de datos que está muy bien escrito y es muy profundo. / He estado trabajando horas extra esta semana, más un viaje de negocios, y no ha habido ninguna actualización. Lo siento mucho, tengo algo de tiempo para actualizar el fin de semana * / 5. Curso recomendado para el sistema operativo Berkeley CS 162link: https://www.youtube.com/watch?v = 1IcZB26STUE & list = PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c Recomendación: Computadorabloquear). Mi experiencia laboral previa en Oracle fue la principal responsable de mejorar el rendimiento del sistema operativo, por lo que tengo un conocimiento más profundo que los programadores que no están en este campo. Permítanme hablar sobre por qué los bloqueos son importantes. Hoy en día, muy pocos programas son de un solo subproceso (excepto javascript). En un entorno de subprocesos múltiples, si no hay ningún bloqueo, el mundo se arruinará. Para dar el ejemplo más simple de comprar leche, si compartes un compañero de piso con alguien más y ambos beben leche todos los días, un día vas a casa y ves que no hay leche y sales a comprar leche, pero antes de que regrese tu compañero de piso, tú no has vuelto. Tu compañero de cuarto no sabe si has ido a comprar leche. Si cree que has ido pero no fuiste, tendrás una botella de leche en tu casa. Si cree que has ido solo, tendrás dos botellas de leche. Si cree que fuiste y no fuiste, no habrá leche en tu casa. Este tipo de situación en la que pueden producirse resultados inciertos o incorrectos en un programa multiproceso es terrible y debe resolverse. Entonces la solución es la cerradura. En este ejemplo, la cerradura es una pegatina. Si vas a comprar leche y colocas una hoja de papel para decirle a tu compañero de habitación que la compraste, entonces esto es fácil de resolver para tu compañero de habitación. Si ve que no hay Leche, si no hay calcomanía, fue a pegar una nota para decirte que fue a comprarla, por eso tu familia tiene una botella de leche. Si ve que no hay leche pero le pones una nota, entonces sabe que ya la compraste y no necesita comprarla, por lo que tu familia solo tiene una botella de leche. De esta forma, no habrá incertidumbre en los resultados de la ejecución del programa. Por supuesto, la implementación del bloqueo real es más complicada que esto y hay muchos tipos de bloqueos, pero el principio básico es este. En este sentido, junto con el punto 2, recomiendo un libro. Lo escribí al principio. Los primeros tres capítulos de este libro no son fáciles de entender. Hablan de algunos principios muy básicos de implementación informática, pero debes seguir leyendo. Si no lo entiende, puede leerlo unas cuantas veces más, combinarlo con la búsqueda en línea o enviarme una carta, pero tengo un tiempo muy limitado, así que hago todo lo posible para responder, no me culpe si no tengo tiempo para responder. 6. Sistema de control de versiones. Recomendar Git. Recomendar sitio web de enseñanza: Aprenda Git con el sistema Bitbucket CloudVersion Control, no sé cómo traducirlo de manera más confiable, lo que significa sistema de control de versiones. Permítanme hablar primero sobre por qué lo necesitamos. El sistema de control de versiones lo ayuda a administrar mejor su programa y a ayudar mejor al equipo a cooperar en el programa. Por ejemplo, si escribe un artículo en Word, imagine que cada vez que lo guarde, no se sobrescribirá, sino que se guardará como un archivo nuevo, y este nombre de archivo registrará sus cambios y los últimos cambios guardados y su tiempo de ahorro (este Guardar se llama confirmar), por lo que si cree que los cambios son demasiado malos cuando realiza un cambio, no es necesario que vuelva manualmente al último guardado. El sistema lo ayudará a regresar a cualquiera de sus guardados anteriores con un solo clic, por lo que Después del segundo guardado, puede hacer cambios en negrita sin preocuparse de que si no se cambia el programa, todos los resultados anteriores se eliminarán, porque puede volver a cualquier versión anterior en cualquier momento. Hablemos de su segunda función, que es la cooperación. Suponga que escribe la mitad del programa y descubre que la cantidad de trabajo que requiere este programa supera con creces sus expectativas anteriores y necesita ayuda de otros, por lo que tiene un socio, esta cooperación Su socio usa esta herramienta para copiar (esta copia generalmente se llama clon), de modo que pueda obtener todas sus versiones anteriores en un instante. Cuando editan mucho por separado, esta herramienta puede fusionar su contenido modificado con un clic (fusionar). Si su contenido modificado entra en conflicto (fusionar conflicto), esta herramienta le dirá dónde hay un conflicto y le permitirá Elija qué modificación elegir una por una. Cuando se complete la combinación, esta combinación es solo una confirmación para ambos, y puede volver a la versión anterior en cualquier momento. Hay muchos controles de versión. Los más populares son git, perforce y Mercury. Mi favorito personal es git. Puedes aprender git primero .--------------------- -------------------------------------------------- ----------------------------- Puede volver a la versión anterior en cualquier momento. Hay muchos controles de versión. Los más populares son git, force y Mercury. Mi favorito personal es git. Puedes aprender git primero .--------------------- -------------------------------------------------- ----------------------------- Puede volver a la versión anterior en cualquier momento. Hay muchos controles de versión. Los más populares son git, force y Mercury. Mi favorito personal es git. Puedes aprender git primero .--------------------- -------------------------------------------------- -----------------------------

Supongo que te gusta

Origin blog.51cto.com/15070913/2597271
Recomendado
Clasificación