¿Cuáles son algunos consejos que le darías a alguien que quiere aprender a programar (código)?

Aunque tengo una maestría en Ciencias de la Computación, he aprendido a programar solo, resolviendo problemas. Hay personas que me han ayudado a idear mis enfoques y aclarar mis fundamentos, pero la parte de ejecución la hice yo.

Desarrollar habilidades para resolver problemas. Lo más importante que una persona necesita para escribir un programa es el enfoque correcto para un problema que el programa debe resolver. Si le pido que elija un botón rojo de una caja de botones, ¿cómo procedería? Podría haber múltiples formas de hacerlo. Por ejemplo:

    1. Puede devolver todos los botones y dejar que yo elija el botón de color rojo, en cuyo caso su programa no sirve.
    2. Puede elegir un botón al azar y devolverlo, y dejarme decidir si puedo ajustarlo con un color que no sea rojo. Incluso ahora, su programa ha fallado.
    3. Puede verificar el color de cada botón, devolverlo si es rojo. Además, si eres daltónico, puedes pedirle a un amigo que te ayude a identificar el color de un botón.
    4. Puede elegir 10 botones en cada turno, repita el paso 3 hasta que estos botones estén marcados y se devuelva un botón de color rojo. Si no se encuentra un botón de color rojo, tome los siguientes 10 botones y vaya al paso 3.

Puede haber muchos de estos enfoques, dependiendo de cómo se piense acerca de un problema. Ahora, si desea escribir código para resolver este problema, primero debe traducirlo a la jerga de programación. Significado, en términos técnicos. En el ejemplo anterior, el cuadro de botones es mi conjunto de datos o colección , un botón es mi variable u objeto con el color como propiedad. Debe seleccionar una variable o un objeto de la colección, que tiene la propiedad ‘color’ con el valor ‘rojo’.

El enfoque o la lógica también deben traducirse en jerga de programación. Normalmente este paso es donde escribe el código:

Cuando digo verificar el color de cada botón , cada uno representa una única iteración en un bucle , check representa una declaración condicional . Retorno significa devolver un resultado. El paso c es una operación independiente que se puede repetir varias veces, por lo tanto, se convierte en una función .

Esta, la lógica o descripción del problema, permanece constante en cualquier lenguaje de programación. Esto es lo que necesita hacer bien. Una vez que tenga claro cómo describir un problema y su solución lógicamente, lo único que necesita aprender es la sintaxis, ya que solo difiere en diferentes idiomas. Cada lenguaje de programación tiene una forma de definir conjuntos de datos, una forma de recorrerlos, una forma de verificar el valor de una variable o someterlo a una condición, definir y usar una función, etc. Conocer estos conceptos básicos y cuándo usarlos es bueno suficiente para convertirte en un programador decente.

Desarrolle una forma de pensar según el idioma que elija . Hay ciertas cosas que vendrán con práctica y experiencia. La forma de pensar es una de esas cosas. Cada lenguaje de programación, a pesar de ser solo sintácticamente diferente de otro lenguaje, tiene su propio conjunto de reglas para escribir código. Si está escribiendo código en un idioma, no puede usar la misma forma de pensar para escribir código en otro idioma. Eso es también lo que hace que cada idioma sea importante.

Decide qué quieres desarrollar . Necesitas saber lo que quieres hacer. Es decir, si desea ser un desarrollador web o un desarrollador de aplicaciones móviles o un ingeniero de sistemas o un probador o un ingeniero de redes. Este es un paso muy importante. Si desea aprender por diversión y no quiere una carrera, puede omitir la mayoría de estos perfiles y bajar a desarrollo móvil o desarrollo web. El desarrollo web es comparativamente más fácil que el desarrollo móvil. Dependiendo de su elección, elija un idioma que se adapte a su propósito. Aprende PHP o Python. Es muy fácil familiarizarse con estos idiomas. Uno puede ser realmente productivo en muy poco tiempo usando cualquiera de estos. Aprende JavaScript. Es una parte integral del desarrollo web y conocer solo JavaScript bien puede brindarle muchas oportunidades.

Comience a codificar. Lo entiendo. Mucha gente le sugerirá que lea libros relacionados con la programación. Pero puedo decirte que eso no te llevará lejos. No puedes aprender a nadar a menos que desafíes el agua. Salta directamente a ella. Mire ejemplos simples en el idioma que ha elegido. Cada lenguaje de programación tiene una etapa de ‘Hola Mundo’, por la cual cada programador tiene que pasar. Elija un sitio de blog o tutoriales y sígalo en todo momento. Pon a prueba tus habilidades con ejemplos simples, y luego elige otro sitio, sigue las mismas lecciones nuevamente. Hacer esto solidificará tus fundamentos. Cada blog te enseñará a hacer lo mismo de múltiples maneras. Una vez que se sienta cómodo con esto, puede tomar un libro para leer la teoría sobre cosas en ese lenguaje de programación.

Cometer errores y errores y enfrentarlos. Si no comete errores y crea errores, nunca será un buen programador. En su fase de aprendizaje inicial, es muy probable que enfrente un error tan grave que tenderá a hacer que se dé por vencido. No te desmotives. Busque una respuesta, pregúntele a las personas que podrían saber una respuesta. Prueba soluciones. Todos los programadores en este mundo entero han cometido grandes errores, a veces los que les han costado sus trabajos. Si su código funciona en el primer intento, no lo está haciendo bien.

¡Ve a por ello! En los primeros días de mi carrera, apestaba en mi trabajo. No pude escribir programas simples, a pesar de esforzarme mucho. Incluso pensé en renunciar y elegir otra profesión. Pero luego, un buen día, resolví un problema muy pequeño, y eso me dio el impulso que necesitaba para resolver problemas más grandes. Siempre está ahí, solo necesitas relajarte, pensarlo, escribirlo en palabras simples y ver si surge algo. Nada es imposible.

¡La mejor de las suertes!

Aprendí la vieja escuela:

  • Primero tuve una idea básica sobre electrónica
  • Aprendí un poco de lógica digital
  • BASIC
  • Ensamblador
  • do
  • Delphi
  • C ++
  • JS, Java, C #, python, Scheme, Haskell

Creo firmemente que no saber cómo funciona el hardware debajo es una gran desventaja. Tienes que aprender eso en paralelo con la programación.

Hay muchos sitios de renombre con explicaciones detalladas de cómo funciona el estado del arte: anandtech, lwn, theregister

Habiendo aprendido una cantidad suficiente de idiomas para escribir programas grandes en ellos, aconsejaría comenzar aprendiendo Pascal en lugar de cualquier otra cosa. Puedes usar el ecosistema Lazarus / FreePascal como punto de partida.

Puede preguntarse por qué, después de todo, se supone que Pascal es un idioma de abuelo y que apenas se usa hoy en día.

Primero te diré por qué otros idiomas no son adecuados como primer idioma

  • C no es lo suficientemente disciplinado como para escribir un buen código fácilmente, incluso los programadores expertos en C se equivocan. Es un truco de un idioma.
  • Java, C # y otros lenguajes OO son estúpidos porque necesitas escribir OO para programas simples. La semántica de valor / referencia mixta es muy mental.
  • Python, Ruby, etc. son lenguajes dinámicos y mal escritos, lo peor para comenzar a aprender a programar
  • C ++ es demasiado complejo y poderoso como primer idioma a menos que tenga un mentor experto que le enseñe directamente. En última instancia, si escribe programas enormes y potentes, debe aprender esto
  • Haskell : lenguaje de la torre de marfil que ignora las realidades básicas del hardware y la arquitectura de la computadora, aunque es bueno para expandir su visión de la computación en general.
  • JS – Es una mancha en el término “lenguaje de programación”. Solo debe usarse cuando no existe otra alternativa o es práctica

Ahora te diré por qué Pascal (en sus variantes modernas como Delphi / Lazarus) es una buena idea:

  • Fuertemente tipado
  • Ámbito de bloqueo completo
  • OO es opcional
  • Ensamblador en línea es posible
  • conjuntos de bits, las matrices dinámicas son primitivas
  • Es posible tener estructuras de datos genéricas.
  • Los punteros son posibles
  • Verboso
  • La forma más fácil de desarrollar aplicaciones GUI

Es un lenguaje disciplinado y le enseñará a pensar de manera estructurada.

Una vez que domine esto, puede comenzar a buscar aprender lenguajes de bajo nivel como C y C ++ y también lenguajes de muy alto nivel como Scheme y Haskell. Es mejor aprender informática después de tener una idea básica de cómo codificar.

Ahora, volviendo a los libros, encuentro libros extremadamente formales aburridos e inútiles. Realmente respeto libros como Knuths: el arte de la programación de computadoras, pero es una mala idea para un principiante.

Aconsejaría comenzar con el libro Wirths Algorithms + Data Structures = Programs. Es un libro pequeño que le dará suficientes antecedentes para leer libros más avanzados sobre algoritmos. El 99% del trabajo en el mundo real no involucra algoritmos más allá de los de ese libro.

Debería buscar las video conferencias MIT SICP de Sussman y Abelson

La teoría del lenguaje de programación de aprendizaje, la teoría de la información, los gráficos, los algoritmos, las matemáticas discretas, los aspectos internos del sistema operativo, la criptografía, el aprendizaje automático, las API populares, etc., dependen de su gusto. Debes tratar de aprender al menos los conceptos básicos de todo esto.

Si aprende C, evite K&R y Kanetkar. Elige un libro más moderno.
Si aprende C ++, comience con la programación de Bruce Eckels ” Pensar en C ++ ” o Stroustrups ” – Principios y práctica usando C ++”

Incluso puedo ir tan lejos como para decir que no aprendas C hasta que ya hayas escrito un programa de 5000 líneas que funcione perfectamente en Pascal. Un programador C medio cocido es peor que un programador PHP.

No se limite a creer en foros aleatorios en Internet, no acepte paradigmas y aconseje a nadie que no haya estado en esto por al menos algunos años. Tome cualquier libro o blog escrito por un indio con una pizca de sal (excepto el mío, mi blog tiene bondad)

Debe comenzar a darse cuenta de quiénes son los programadores realmente buenos y quién escribe los mejores blogs y los mejores videos.

Eso es todo lo que puedo pensar ahora.

Bien en la década de 2000, comencé a codificar con Java, aprendí la sintaxis a medias, pasé con gran éxito, luego en la universidad lo mismo pero con C esta vez.

Ahora me colocaron en una empresa de TI, así que estoy volviendo a las raíces para volver a aprender esos idiomas y toda la sintaxis esta vez. Pero en el camino hay estos lenguajes de la “nueva era” que despertaron mi interés, el brillo y el pulido de ellos me atraparon, uno en particular cautiva mi interés por el momento y ese es Python.

Ahora, como principiante, Python es un lenguaje realmente fácil de aprender, la sintaxis es intuitiva y elegante. Realmente no puedo comentar sobre las características avanzadas del lenguaje, porque todavía soy un aficionado.

Mis consejos sobre cómo puede comenzar a aprender a codificar son:

  1. Entiende lo básico, la sintaxis cambiará de un idioma a otro, pero los algoritmos básicos, las estructuras de datos, etc. seguirán siendo los mismos. Así que pula los fundamentos antes de comenzar a preocuparse por la sintaxis.
  2. Te sugiero que comiences con Python. Es un lenguaje muy pulido y está ganando popularidad hoy en día.
  3. Los obstáculos que encuentro con la codificación es que realmente no tengo lo básico cubierto, ya que aprendí un poco con la intención de anotar, realmente no puse mucho valor en practicarlo. Pero estoy progresando lenta pero seguramente con los fundamentos. Además, si tiende a encontrar el bloqueo de un codificador, intente un enfoque diferente para resolver el problema.
  4. Existen varias vías de conocimiento con respecto a la codificación, la mejor fuente es, por supuesto, Internet, pero eso también se limita a la comprensión básica. Una vez que consigas lo básico, te verás sumido en un vacío donde tendrás que seguir practicando por tu cuenta, y aprenderás cosas nuevas solo a través de la experiencia.
  5. Algunos sitios y cosas que encontré útiles son: –
  1. Codecademy: aprende a codificar
  2. Coursera
  3. Este libro (también tiene su canal de youtube): Think Like A Programmer
  4. academia Khan

  • Hacer preguntas
  • No gaste mucho tiempo aprendiendo grandes cantidades de datos

Una vez pasé unas semanas viendo un video curso sobre Ruby. Creo que fueron 12 horas de video o algo así de loco. ¿Conozco a Ruby ahora? Diablos no. Quiero decir, puedo leer algo del código, pero diría que esas horas fueron una pérdida de tiempo. Intentar acumular tanto conocimiento secuencialmente sin codificar simplemente no funciona. Para mí, codificar cuidadosamente un proyecto de ejemplo prefabricado es casi tan malo, ya que se pierde una gran parte del aprendizaje. Aprendo mejor cuando intento hacer algo que me interesa (ver arriba) y me encuentro con problemas al azar. Resuelve un problema sobre el que sientes algo y has aprendido algo nuevo. Mire fijamente la pantalla durante 30 horas y … bueno.

  • Resolver un problema real

La teoría es aburrida. También lo son los problemas teóricos, por lo general. Si solo aprende a codificar para ganar dinero, no estoy seguro de qué tan bien va a funcionar. Pero si tienes una verdadera pasión por construir cosas, construyelas. Entonces, la primera pregunta que probablemente deberías hacerte es “¿por qué quiero aprender esto?” Si esa respuesta es “hacer algo”, bueno, ve a hacer esa cosa. La buena noticia es que el primer paso no requiere que sepas cómo codificar nada: solo tienes que escribir (y preferiblemente, esbozar) cómo se vería esa cosa. ¿Cuál es la aplicación que te estás perdiendo? ¿Qué herramienta no existe, pero realmente necesitas?

  • Elija cuidadosamente su tecnología

¿Deberías codificar tu primer proyecto en ANSI C directo? A menos que tenga una razón muy específica, la respuesta a eso es “probablemente no”. Los buenos programadores saben cómo codificar, en lugar de un idioma específico: pueden aprender cualquier idioma que necesiten para un proyecto determinado en un corto período de tiempo. Pero hacer esto por primera vez no es tan fácil, porque no es el lenguaje que debe dominar, sino los conceptos generales de programación (lógica de programa y control de flujo, tipos de variables y alcance, objetos y todas esas cosas buenas). Por lo tanto, definitivamente debe pasar un tiempo pensando en qué idioma o tecnología desea codificar.

Lea mi respuesta La respuesta de Ashish Kapil a ¿Cuál es el mejor lenguaje de programación para aprender para un niño que no es de programación?

Personalmente, C me ha sido muy útil para aclarar conceptos en el nivel más básico.

mejores fuentes: C Tutorial

Google

si quieres leer el libro entonces ve por E balagurusamy 🙂