Si quiero comenzar a aprender idiomas de codificación y quiero dar pequeños pasos diarios para convertirme en un programador de nivel A, ¿cuál es el mejor idioma para comenzar?

Voy a ir en una dirección muy diferente a las otras respuestas.

Hace más de una década, el empresario Joel Spolsky advirtió sobre los peligros de enseñar programación usando Java.

El mensaje general de Spolsky es que para realmente “aprender” cómo programar, uno tiene que comprender conceptos fundamentales como punteros y recursividad. Si un estudiante no puede asimilar esos elementos esenciales, probablemente no sea posible convertirse en un programador verdaderamente competente.

Spolsky señala que “[p] ointers y recursividad requieren una cierta habilidad para razonar, pensar en abstracciones y, lo más importante, ver un problema en varios niveles de abstracción simultáneamente. Y por lo tanto, la capacidad de comprender los punteros y la recursión está directamente correlacionada con la capacidad de ser un gran programador “.

Según Spolsky, nada sobre un plan de estudios basado en Java (y muchos de los otros lenguajes de alto nivel) realmente “elimina” a aquellos que no pueden lidiar con estos conceptos clave.

Su artículo realmente resonó conmigo.

Comencé mi carrera escribiendo ensamblador Intel 8080 y luego me gradué en un lenguaje de alto nivel: ensamblador x86. Eso es una broma: créanme cuando les digo que escribir un juego de “Space Invaders” en el ensamblador x86 para el Sanyo MBC550, que hice por diversión en los años ochenta, no es un paseo por el parque.

Uno de mis primeros trabajos, en serio, fue escribir un sistema operativo en tiempo real para un pequeño sistema embebido x86. Solo el ensamblador trabajaría para esto … y más tarde fue adoptado por IBM en algunas de sus plantas de fabricación.

Más tarde me gradué para escribir millones de líneas de código C y C ++ en tiempo real para productos de software retractilados (CellWorks de Brooks Automation y Alpha Five de Alpha Software).

Baste decir que el desarrollo del aprendizaje desde la CPU fue un gran generador de confianza. Conocía PIC (controladores de interrupción programables “, código fuente de BIOS, chips de temporización y controladores de dispositivo. Hay muy pocos misterios en la programación cuando creces de esta manera.

Por el contrario, un plan de estudios basado en Java (o C #, Python, PHP, Javascript, etc.) puede ser bueno para aprender algunos de los conceptos básicos de programación, conceptos orientados a objetos, inyección de dependencias, etc.

Pero la maquinaria real de la informática en sí misma seguirá siendo un misterio para aquellos desarrolladores que dependen de JVM, CLR o misteriosas DLL para ejecutar su código.

¿Qué pasaría si las clases de informática comenzaran enseñando lenguaje ensamblador?

Le enseñaría arquitectura de CPU, recursividad, conceptos en tiempo real como procesamiento de interrupción y mucho más. Además, los punteros están incluidos … ¡ gratis !

Si quieres convertirte en un verdadero programador de grado A, un Spolsky, un Adam Bosworth o Raymond Chen, etc., deberás haber conquistado una parte importante del ensamblaje.

No puedo pensar en un desarrollador superestrella que no tenga ese tipo de experiencia. Porque una vez que conoces los elementos internos reales, todo lo demás se convierte en una abstracción comprensible. Como dije, ¡es un gran generador de confianza saber lo que realmente está sucediendo dentro de su computadora portátil!

Sé que muchos estarán en desacuerdo conmigo en este punto, pero si realmente está tratando de convertirse en un gurú de la programación, comience con C ++ . Principalmente utilizado en sistemas operativos, desarrollo de juegos y compiladores, le enseñará mucho sobre cómo funciona la programación en un nivel bajo.

Aprende C ++

Este sitio web tiene todo lo que necesita exactamente para comenzar a programar. Luego va lentamente, profundizando en cada tema con detalle, cada vez más difícil a medida que avanza.

Se supone que tienes cero conocimientos de programación, así que sí. Una combinación perfecta.

La mejor parte es que una vez que haya terminado con esto, literalmente puede hojear los tutoriales de Java / Python.

¡Buena suerte!

Primero, veamos algunos términos de programación y un poco de código:

Código : un conjunto de instrucciones que le indican a la computadora cómo realizar una tarea.

Un compilador es una pieza de software que lee su código línea por línea y crea un programa basado o lo regaña por cometer un error. No necesitará construir uno a menos que esté creando un nuevo lenguaje o alguna otra circunstancia extrema.

Integrated Development Environment (IDE) : un elegante editor de texto que puede ayudar a identificar errores en el código de su programa y, a menudo, tiene un compilador incorporado si es necesario. Para Python, el software IDLE que viene con la descarga de Python es suficiente, pero los lenguajes como C # exigen algún tipo de compilador de terceros para funcionar fácilmente (por ejemplo, Visual Studio Community).

Los comentarios son notas que un programador toma para explicar su código, pensamientos y, a veces, escribir una lista de tareas pendientes. Los comentarios son ignorados por los compiladores.

  // (para la familia C, Java, JavaScript, etc.)
 // comentario de una sola línea 
 / * multilínea 
 los comentarios se usan a menudo * / 

 #python comentarios:
 # comentarios de una sola línea
 '' 'extraoficialmente, Python utiliza 
 cadenas de varias líneas para comentar el código '' '

 // TODO: agrega código al programa

Sintaxis : la forma en que está estructurado su código y la forma en que está escrito depende del idioma y puede cambiar mucho. Básicamente:

  // Código C #: tenga en cuenta el punto y coma para indicar el final de la declaración.
 Console.WriteLine (10/5);  // equivalente a 10 dividido por 5. 

 Código #python: sin punto y coma, diferente estilo de comentario.
 imprimir (10/5)

 ;; código Lisp:
 imprimir (/ 10 5)  
 ;;  un punto y coma es para comentarios y matemática
 ;;  Las operaciones se escriben de manera diferente.

Las variables son esencialmente cuadros con nombre que almacenan la información que les da, y se les puede dar un valor desde muchos lugares diferentes.

  //... código de configuración anterior aquí ...
 // Código C #: Main es una parte obligatoria para un programa de trabajo.
 vacío estático Main () {

	 int número = 2;  // número se le asigna un valor inicial (instanciación)
	 palabra de cadena; // variable de cadena vacía
	 // ...
	 Console.WriteLine ("escriba cualquier palabra aquí:");  // preguntar al usuario
	 palabra = Console.ReadLine ();  // palabra tomada de la entrada del usuario;
	 regreso;  // declara el final de Main.
 }

Entonces, por un momento, los pasos a un lado, acaban de ver el código de tres lenguajes diferentes (C #, Python y Lisp).

C # no es realmente el mejor para aprender primero porque tiene una sintaxis más estricta y requiere que instales un IDE más grande como Visual Studio (o un compilador de línea de comandos) y aprendas cómo usarlos. Sin embargo, es un lenguaje de programación brillante, por lo que es mejor guardarlo para más adelante, cuando comprenda entrada / salida, tipos de datos, iteración, funciones y recursividad. Si realmente quieres comenzar con C #, esto te ayudará.

Python es un lenguaje más fácil, que viene con su propio IDE y se compila de manera diferente a otros idiomas. Tiene una sintaxis más fácil que C # para trabajar y la ventaja de ser más fácil de leer que C # y una apariencia menos aterradora que Lisp. También tiene buena documentación para trabajar. Puedes descargarlo aquí.

Lisp es fundamentalmente diferente a los otros dos idiomas. Se le conoce como un lenguaje de programación funcional, mientras que C # y Python son lenguajes de paradigmas múltiples (principalmente orientados a objetos). Es algo para reconocer y volver cuando tenga un fuerte conocimiento de los dos anteriores. Aquí hay un brillante (pero antiguo) conjunto de conferencias en video del MIT que utiliza lisp para enseñar algunos conceptos de programación muy útiles.

Recomendación:

  1. Haga un poco de Python, es popular para cursos de programación de computadoras de nivel A y una buena manera de programar porque puede concentrarse más en el lado lógico de la programación y leer su código más fácilmente.
  2. ¿Atascarse? Google los errores o sus preguntas.
  3. Vaya a hacer algunos proyectos locos y luego, una vez que se sienta cómodo, pruebe C #, C ++ y / o Java.
  4. Ver 2.
  5. Una vez que esté familiarizado con los conceptos básicos de estos lenguajes, intente la programación web usándolos (para C # – pruebe Windows WebForms, para Python -try Django, para Java – google it) o ​​cree juegos (C # – pruebe sfml & unity, para Python – prueba pyGame, para Java – No tengo recomendaciones).
  6. ver 2.
  7. Haz lo que te interese.

TL; DR: Python luego C # y quizás algo de JavaScript. Usa mucho google. mira el código de otras personas e intenta entenderlo y depurarlo. Sea ambicioso una vez que comprenda los conceptos básicos.

More Interesting