Finalmente estoy aprendiendo a codificar y no comencé con un curso de programación
La necesidad de aprender algo nuevo es una gran sensación, y si estás pensando en aprender a codificar, considérate animado a hacerlo. Pero cuando se trata de estudiar, empezar puede ser una verdadera lucha, y lo sé por experiencia. Algunas personas se lanzan y comienzan a piratear cosas hasta que funcionan, pero ese no soy yo.
Abrir VS Code parecía aterrador y, más que eso, inútil. Claro, probablemente podría hacer que la computadora imprima "Hola, mundo" copiando algo que vi en Reddit, pero ¿qué sentido tiene exactamente si no tengo la más mínima idea de por qué funciona o cómo sucedió? La programación es un tema tan extraño para alguien que no es un experto en tecnología como yo, y sumergirse sin saber nada sobre cómo funciona o cómo funcionan las computadoras me pareció una locura.
Entonces, después de un poco de desánimo y postergación general, decidí abordar las cosas desde una dirección diferente.
La forma divertida es la mejor.
Me gusta mucho estudiar y, dado que para mí es un pasatiempo, es natural para mí hacer lo que me parezca más divertido. Sin embargo, es bastante común que las personas vayan en la dirección opuesta y quieran hacer sólo lo más eficiente. En todas las comunidades de aprendizaje que frecuento, veo estas preguntas para principiantes todo el tiempo sobre "la mejor manera de aprender".
En mi opinión, la forma divertida es siempre la mejor. La persona que logra aprender algo nuevo nunca es la persona que “estudia el camino correcto”, sino simplemente la persona que sigue adelante. Incluso si te pierdes algo importante en las primeras etapas, mientras sigas adelante, llegarás a un punto en el que necesitarás llenar ese vacío para progresar. Así que lo llenarás y seguirás adelante, y al final, el cómo y el cuándo ni siquiera importarán.
Cuando pensé por primera vez en aprender a codificar, me sentí más seguro de cómo no quería hacerlo que de cómo sí quería hacerlo. Sabía que no quería empezar a escribir programas cuando no tenía idea de qué hacía que esos programas funcionaran. Sabía que el misterio que encierra simplemente me molestaría y me distraería, y también creía que comprender un poco sobre las computadoras también me ayudaría a comprender la programación en el futuro.
Entonces encontré un libro llamado "Código: el lenguaje oculto del hardware y software informático" de Charles Petzold . Hubo buenas críticas tanto de estudiantes como de programadores experimentados, y pareció comenzar desde el principio, lo cual me gustó. Pero cuando miré los temas tratados en los diferentes capítulos (códigos binarios, lógica con interruptores, bytes y hexadecimal, suma con puertas lógicas, registros y buses, señales de control de CPU, etc.), todavía me sentí un poco abrumado. Sabía que quería leerlo, pero todavía sentía que necesitaba comenzar un poco más en mi zona de confort.
Afortunadamente, hay un tema que me resulta cómodo y que se puede aplicar a casi cualquier tema: la historia. Lo disfruté en la escuela, lo estudié en la universidad y me encanta un buen libro de historia o un drama histórico. También hay algunas figuras bastante conocidas mezcladas con la historia de las computadoras que ya conocía: nombres como Charles Babbage, Ada Lovelace , George Boole y Alan Turing. Entonces, decidí dejar el libro del Código a un lado y adentrarme en el mundo de la informática leyendo sobre sus inicios.
La computadora universal: el camino de Leibniz a Turing

Este libro es de Martin Davis y está disponible como libro electrónico a través de Amazon . Si te gusta la historia, te recomiendo encarecidamente que la leas, pero también es útil leerlo incluso si no eres un gran aficionado a la historia. Si parece que no puedes comenzar con todo este asunto de la programación, leer un libro sobre el tema es una excelente manera de comenzar técnicamente a estudiar sin sentir realmente que estás estudiando.
El libro se vuelve bastante matemático en algunos puntos, ya que se centra mucho en los matemáticos cuyo trabajo eventualmente se convirtió en parte integral de la invención de las computadoras. No soy una persona de matemáticas en absoluto, realmente soy bastante terrible con los números, pero las matemáticas son uno de esos temas en los que comprender lo poco que entiendes es algo útil en sí mismo.
Vayamos aquí por la tangente. Creo que las matemáticas representan una gran barrera para las personas cuando piensan en computadoras y programación. Ciertamente puede parecer un campo en el que ni siquiera deberías molestarte en intentar entrar si no eres bueno en matemáticas, y probablemente hubo un momento en que eso fue cierto (aunque fue hace bastante tiempo). De cualquier manera, ya no es cierto.
Las matemáticas y las ciencias son las que construyen las computadoras; de eso no hay duda. Pero la programación es diferente. Cuando escribes programas o diseñas software, las matemáticas son más una elección que una necesidad.
La razón de esto se puede reducir a una palabra que probablemente escucharás mucho si empiezas a estudiar: abstracción. Comprender las computadoras implica lidiar con diferentes niveles de abstracción, lo que esencialmente significa poner las cosas en cajas y olvidarse de ellas. Parece una broma, pero es verdad.
Por ejemplo, cualquier libro de programación o curso de informática probablemente comenzará explicando qué es el binario: los pequeños 1 y 0 de The Matrix. Aprenderá qué son, por qué existen y para qué los usamos, y luego pondrá todo ese conocimiento en una caja y cerrará la tapa. Porque cuando empieces a escribir código, no estarás pensando en binario. No lo escribes, no haces cálculos binarios y realmente solo pensarás en bytes (grupos de 8 dígitos binarios) en lugar de bits (un dígito binario).
Trabajar con binario es un trabajo súper especializado que la mayoría de los programadores nunca harán, por lo que cierran la tapa de la caja binaria y se concentran en otras cosas. El uso de las matemáticas en la programación es similar: las personas que son buenas en ellas se encargarán de las matemáticas por usted y las colocarán en un cuadro llamado "función".
Puedes echar un vistazo dentro de la caja y ver qué está pasando si quieres, pero no es necesario. Simplemente "llamas" a la función cuando quieras usarla. Supongamos que desea saber cuántos caracteres hay en una cadena de texto; se necesita mucho más esfuerzo para hacer que una computadora resuelva esto en comparación con un humano que simplemente mira y cuenta "1, 2, 3". Pero no necesita pensar en todo eso: simplemente llame a la función strlen()
(longitud de la cadena) y ella hará el conteo por usted. De todos modos, así se llama la función en C. En Python es len()
y en Java es length()
. Idioma diferente, palabras diferentes.
La cuestión es que las matemáticas se solucionan de una forma u otra. Está escondido en funciones y bibliotecas, y si sospecha que podría necesitar algo matemático para solucionar su problema, es una práctica estándar buscar la información en línea.
Si realmente odias los números, también puedes limitarte a la programación de alto nivel. Cuanto más alto sea el nivel, más lejos estarás de los 1 y 0, y menos tendrás que pensar en matemáticas. Todo esto es para decir: no dejes que las matemáticas te ahuyenten de la programación. ¡Puedes evitarlo mientras codificas tal como puedes evitarlo en la vida!
De todos modos, leí este libro sobre la historia de las computadoras . Aprendí todo sobre estos matemáticos y lo que lograron (sin entender nada sobre las matemáticas reales, por supuesto) y lo disfruté muchísimo.
Código: el lenguaje oculto del hardware y software informático

A continuación, necesitaba ponerme un poco más manos a la obra, lo que significaba leer el libro sobre cómo funcionan las computadoras. Como dije antes, este libro me dio un poco de miedo al principio. Es grande y detallado, y no voy a fingir que entendí cada palabra que leí. Pero no llegamos a ninguna parte dejando que lo "bueno" sea enemigo de lo "perfecto". Comprender el 80% de un libro es mucho mejor que entender el 0% porque decidiste no leerlo.
Además, al final no quedó tan mal. Está escrito de una manera amigable, conversadora y divertida, lo que realmente ayuda a que las partes complicadas sean más fáciles de entender. También tiene un sitio web con diagramas interactivos y versiones funcionales de las “mini computadoras” que fabrica a lo largo del libro. Y, lo más importante, no comienza con cosas complicadas.
Ni siquiera comienza con las computadoras: los primeros capítulos cubren algunos temas bastante aleatorios como el código Morse y el braille. O, al menos, se sienten aleatorios por un tiempo hasta que avanzas más y te das cuenta de que el Sr. Autor te ha estado proporcionando a escondidas los conceptos que necesitarás saber más adelante en el libro.
Definitivamente es una de esas experiencias de “confianza en el proceso”, pero puedo asegurarle que es un libro bien escrito y bien estructurado, y no importa lo difíciles que le parezcan las partes difíciles, de todos modos saldrá sabiendo más sobre computadoras de lo que jamás creyó posible.
Cuando haya terminado, puede sacar otra caja y guardar toda la información dentro, porque realmente no necesitamos pensar en "cómo funciona una computadora" cuando codificamos. Sin embargo, ahora que tiene esa información guardada en algún lugar, en ocasiones le resultará útil. Naturalmente, ciertos conceptos de programación tendrán más sentido para usted y, cuando el conocimiento sea relevante para lo que está haciendo, aparecerá convenientemente listo para usar.
¿Y la mejor parte? Cuando comiences tu curso de programación y empieces a hablar sobre binario, ya sabrás qué es el binario. El curso también le brindará mucha información nueva, pero tener ese contexto existente en su cabeza ayudará a que las cosas se sientan un poco más familiares y manejables. Esto le ayudará a concentrarse en la programación, en lugar de distraerse con cada concepto nuevo y preguntarse si necesita entenderlo o no.
De todos modos, eso es lo que sentí por mí, y estoy tan mal formado para la programación como sea humanamente posible. Fui pésimo en matemáticas en la escuela, estudié historia y literatura inglesa en la universidad, escribo para ganarme la vida, estudio japonés como pasatiempo y hasta hace poco ni siquiera había tenido una PC de escritorio , y sin embargo todo va bien. Si yo puedo hacerlo, honestamente, cualquiera puede hacerlo.