Hay muchos buenos enfoques para aprender a programar. No incluiría “comenzar con JavaScript” en ninguno de esos enfoques. JavaScript es el lenguaje de Internet listo para el navegador, pero tiene serias desventajas como lenguaje de aprendizaje:
- Tiene una sintaxis muy abierta. Si bien esto puede ser un beneficio para los expertos, es más probable que cause confusión a los principiantes.
- Tiene un sistema de tipo basado en prototipos inusuales. El aprendizaje de la programación orientada a objetos de esta manera no se traducirá bien a otros idiomas que es probable que use.
- Se considera ampliamente que tiene algunos defectos importantes en su diseño. Esto se puede debatir, pero no creo que muchos debatan que tiene muchas “trampas” para principiantes.
En cambio, sugeriría que comience con un lenguaje amigable para principiantes como Python . Es más flexible que un lenguaje como C / C ++, pero no es tan abierto como para perderse. La documentación de Python es excelente, y hay muchos tutoriales y recursos de aprendizaje. Tiene una biblioteca central sólida que le permitirá comenzar a crear aplicaciones no triviales tan pronto como haya aprendido algunos conceptos básicos (más motivador que escribir programas de nivel Hello World durante semanas). Es compatible con múltiples paradigmas de programación, por lo que puede probar muchas técnicas diferentes. Es popular entre los científicos e investigadores porque es fácil de aprender y rápido para los programas de creación de prototipos, y como tal tiene una sólida biblioteca de terceros y soporte de marco como SciPy. Incluso si solo aprende Python, puede hacer casi cualquier cosa que necesite hacer. Python es uno de los mejores lenguajes para aprender lo básico y luego continuar con él a medida que aprende a ser un mejor programador.
Puede aprender todo lo que necesita saber en línea, pero sugeriría comprar algunos libros para ayudar. Como mínimo, cada programador de Python debe tener la Referencia esencial de Python en su escritorio. Es bastante barato, como dicen los libros de software. Como sugiere el título, no es un libro de programación para principiantes, pero cada escritor debe tener un diccionario y un tesauro cerca, incluso si esos libros no les enseñan a escribir.
Si decide que desea profundizar en la programación, le sugiero que pruebe un lenguaje de tipo estático como C (estructural / de procedimiento, el lenguaje de los sistemas operativos como Linux) o Java (basado en objetos, el favorito lenguaje de las grandes empresas). C ++ es otra opción aquí, pero no tan popular fuera de la programación de juegos o industrias heredadas como la defensa. C # es un lenguaje excelente, a pesar de estar limitado principalmente al ecosistema de Windows. La mayoría de los usuarios de C # están muy contentos con él, y un buen programador de C # siempre puede encontrar trabajo en estos días. Cualquiera de estos es una buena base para la programación profesional. Lea, elija uno y prepárese para un poco de frustración mientras se adapta a la estructura más restrictiva. Sin embargo, aprenderás algunos buenos hábitos aquí.
- Tengo miedo de escribir debido a mi incapacidad para expresar bien mis pensamientos en inglés. Temo lo que la gente piense de mí si mi gramática está mal. ¿Que puedo hacer? ¿Debo seguir escribiendo aquí en Quora?
- Estoy en sexto grado. ¿Qué puedo hacer ahora para prepararme para ingresar al MIT?
- Estoy ganando alrededor de 80k por mes en Hyderabad. Tengo 23 años. ¿Cómo debo planificar mi vida?
- La ciudad me abrió el agua hoy y solo mi grifo de la ducha está a plena potencia, los otros están goteando, ¿por qué podría ser esto?
- Tengo un iPhone 6, de casi 8 meses, ha dejado de funcionar, todo lo que obtengo es el logotipo de Apple cuando enciendo el teléfono. ¿Recibiré un reemplazo?
Una vez que comprenda la programación básica y algunos principios como la verificación de tipos estática frente a la dinámica, puede aventurarse en la programación funcional. Esto se centra principalmente en una familia de idiomas llamada Lisp. Hay varias opciones populares en estos días, pero algunas personas piden aprender primero una implementación directa de Lisp. No puedo sugerir una mejor ruta, ya que solo he incursionado en la programación funcional hasta ahora. Será más fácil comprender los pros y los contras de las opciones aquí una vez que tenga una base sólida en la programación. A diferencia de Tim Hammerquist, no te recomiendo que comiences con lenguajes mayormente funcionales como Haskell o Scheme. A menos que tenga una sólida formación en Matemática y lógica discretas, es probable que sea una forma confusa de aprender a programar, especialmente de forma autodidacta. Es más difícil entender cómo aplicar la programación funcional a las aplicaciones con muchos datos, que son bastante comunes. Si planea programar profesionalmente, conocer un lenguaje funcional le dará un poco de respeto, pero no es tan comercializable como conocer programación procedimental, estructural y / u orientada a objetos.
En el camino, tómese el tiempo para aprender cómo funcionan los sistemas operativos, la arquitectura de la computadora y otros temas relacionados. Aprenda a usar sus herramientas (IDEs y editores como Vim, depuradores, Linux / Unix shell, etc.). Pide ayuda a los mejores programadores, incluso si es solo en línea. Lea libros y blogs sobre programación, algoritmos y ciencias de la computación. Ninguno de estos es absolutamente crítico para aprender programación básica, pero son necesarios si quieres ser bueno en eso.