Backtrack My "Education" [cerrado]


13

Hace un tiempo, decidí comenzar a programar. Realmente, simplemente salté a un idioma (Perl) y partí de allí. Lo que lamento es que acabo de saltar:

No aprendí lo básico (si los llamarías básicos).

No aprendí sobre informática.

Creo que este problema me está frenando de mi verdadero potencial. ¿Dónde debo "reiniciar"? ¿Hay algún libro, artículo, etc. que deba leer? ¿Hay algún tema que un programador experimentado deba saber? ¿Cual es tu consejo?


No tengo claro tu pregunta. Entonces, cuando decidió comenzar a programar, ¿fue para obtener un nuevo trabajo o simplemente para realizar algunas tareas administrativas en su trabajo o simplemente por diversión? Necesito entender de dónde vienes para poder ayudarte con por qué te arrepientes de comenzar de esta manera y qué problema tiene para detenerte. No me gusta hacer suposiciones.

@JamesDrinkard: ¡Fue solo por aprender! No hago esto para vivir.
Dinámico

¿Cuál es tu experiencia? ¿Sabes algo de ciencia? ¿Matemáticas? ¿Ingenieria? ¿Trabajo de madera? :-) ¿Qué tipo de programación te interesa? Sin esos detalles es difícil dar una respuesta útil. Además, no te arrepientas de saltar, ¡eso es genial!
Guy Sirton el

@GuySirton: Soy un estudiante de secundaria. Realmente no tengo una razón para programar, ¡solo la tengo!
Dinámico

Respuestas:


21

Yo haría esto:

Camino A: El Método Semi-Típico

  1. Aprenda un lenguaje con una sintaxis más regularizada como Java, C # o Python. Perl es una herramienta increíblemente útil, pero también tiene una forma muy libre en términos de cómo te permite hacer las cosas. Los otros idiomas que enumeré son mucho, mucho menos.

  2. Obtenga un libro sobre estructuras de datos en dicho idioma.

  3. Obtenga un libro sobre Algoritmos en dicho idioma.

  4. Obtenga código completo y efectivo Java / C # / Cualquiera que sea la versión de Python.

Camino B: Camino de la Iluminación de Joel Spolsky (o Muerte, elige)

  1. Obtenga el libro "Código"

  2. Obtenga "El lenguaje de programación C" de K&R

  3. Obtenga la estructura e interpretación de la programación de computadoras

En cuanto al método, el método 1 le enseñará a programar de una manera más regular. Los conceptos de informática hasta cierto punto (aún no hay teoría de la complejidad, confía en mí) y te proporcionan un lenguaje que es mejor para trabajar en proyectos con otras personas y para hacer aplicaciones más grandes.

El método 2 es más duro, es mucho más un enfoque fundamental con "Código" que explica los conceptos básicos, K&R presenta las cosas a nivel de máquina y el SICP presenta los conceptos de nivel superior. Es un camino mucho más difícil pero más enfocado.

En cualquier caso, date tiempo. Roma no se construyó en un día y tampoco lo son las habilidades de programación, incluso si eres un genio en eso. La programación de Peter Norvig en 10 años es el ensayo habitual al que apunto a la gente.

Apéndice:

En cuanto a las cosas gratis disponibles: Python the Hard Way como se enumera a continuación es un buen comienzo, a partir de ahí, Cómo pensar como un informático es una continuación razonable.

Hay una serie de recursos sobre Algoritmos y, honestamente, probablemente podría cambiar los pasos 3 y 4 sin problemas. Tenga en cuenta que aquí es donde las matemáticas realmente comienzan a aparecer, así que nunca tenga miedo de pedir ayuda cuando llegue a esta etapa. Esto parece ser una guía gratuita razonable .

Realmente no hay un equivalente cohesivo libre de Code Complete por ejemplo, aunque Code como un Pythonista parece bastante sólido. Lo importante es concentrarse en hacer que su código sea legible una vez que tenga los fundamentos básicos. No es "necesario" de la misma manera que tener toda la sintaxis de su código es correcta, pero hace que la vida sea mucho más fácil una vez que va más allá de los pequeños programas o trabaja en algo durante un largo período.

Puede encontrar que me he centrado principalmente en Python, eso es porque es el más fácil de los tres para encontrar cosas gratis bien escritas. Creo que los tutoriales de Java de Oracle están bien, pero son un poco secos y no excelentes para principiantes. C # se encuentra en una situación similar, aunque ninguno de los dos sufre de falta de documentación.

Además, tu primer chiste / juego de palabras de CS: quieres "Refactorizar" tu educación, no Backtrack.


¡Gracias! ¿Tendría algún libro en línea gratuito para leer? ¡Aparte de eso, esta es una respuesta increíble!
Dinámico

55
+ 1 para Estructura e interpretación de la programación de computadoras (SICP) se puede encontrar en línea aquí: mitpress.mit.edu/sicp
NWS

Conociendo a Perl, ¿Python me dará muchos problemas para acostumbrarme?
Dinámico

1
Después de Perl, la mayoría de los idiomas serán una transición un poco difícil. Python es bastante fácil porque esencialmente hay 1 forma de hacer 1 cosa en lugar de 50 formas de hacer 1 cosa como las que hay en Perl. El gran truco para Python es determinar qué versión del lenguaje usar: 2.7 o 3.x. Usaría cualquier tutorial que elijas y partiré desde allí. Una vez que sea mejor, puede adaptarse al otro a medida que se presenten los proyectos.
Ingeniero mundial el

1
@kevincline: En realidad, después de hacer algunos de los ejercicios de Python, me está dando muchos problemas. En mi humilde opinión, algunas de las cosas que son extremadamente simples en Perl, son difíciles (er) en Python.
Dinámico


1

Bueno, comencé por la misma razón que tenía algunos conocimientos sobre el lado del hardware y estaba intrigado con la programación. Me gusta aprender cosas nuevas.

Comencé con archivos DOS Batch, luego QuickBasic, luego Visual Basic, VBA, MASM, con Access para el trabajo de base de datos antes de conseguir mi primer trabajo. Para mí, ese fue el mejor camino, comenzando simple y luego construyendo desde allí.

Diría que decida qué es lo que más le gusta de la programación y siga esa ruta, secuencias de comandos, desarrollo web, programación de Windows, etc. Si no sabe, comience a trabajar con algunos lenguajes para ver qué le gusta. Aunque necesitarás tiempo. Lleva alrededor de 5 años ser realmente bueno con un lenguaje como Java o tal vez C ++, en mi humilde opinión.

Como lenguaje para ayudar a aprender el desarrollo web, JavaScript definitivamente, PHP es popular y Python, pero eso es en mi humilde opinión. Se supone que sabrá o aprenderá HTML / CSS. Realmente subestimé javascript, aunque lo he usado desde 2001. Hice lo mismo con CSS y no pensé que fuera importante. También he cambiado mi opinión al respecto.

Cuando intento determinar una tendencia, voy a http://www.indeed.com y hago clic en el enlace de tendencias en la parte superior izquierda de la página. Luego pongo palabras clave como PHP y Python y veo cuáles se están asignando para puestos de trabajo reales que están en Internet.

Sin embargo, esto es desde una perspectiva profesional y se basa en lo que me brinda el mayor valor para los clientes (empleadores). No solo desde una perspectiva de aprendizaje.


Si dijera que quiero aprender un idioma que me ayude con el desarrollo web, pero que aún pueda hacer mucho más, ¿qué me recomendarías?
Dinámico

-1

Aprenda sobre algoritmos en su forma más básica, olvídese de los idiomas por un tiempo. Clasificación de vectores, palabras, etc. Freepascal es un buen lenguaje para comenzar con estas cosas, me encanta Perl, pero con todos sus atajos y cosas geniales, a menudo descuidará el algoritmo inherente del programa.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.