¿Debo aprender primero “el lenguaje de programación que elegí” o “algoritmo y estructura de datos”?

Eso depende de si te gusta estar extremadamente aburrido o no. Si lo hace (como debería), es mejor comenzar leyendo los volúmenes I a III de “Algoritmos y estructuras de datos, un enfoque abstracto” del Dr. Patrick Cummings del Advanced College of Algorithms, Ohio.

Solo cuando haya leído los tres volúmenes puede considerarse apto incluso para tocar el teclado de una computadora. E incluso entonces, debe limitarse exclusivamente a los símbolos y no usar letras ni números durante los primeros diez años.

Es muy importante que al principio solo programes en Smalltalk o Ada usando el peor editor de texto disponible para la humanidad. Necesita uno que coloque automáticamente los corchetes en el lugar equivocado y no se parezca a nada utilizado por los profesionales. Cualquier otra cosa y tus habilidades de programación serán destruidas para siempre.

Te advierto que lleva treinta años convertirte en un programador informático competente, momento en el que estás completamente desempleado ya que en estos días las empresas solo emplean a adolescentes que tienen doctorados y han leído el trabajo del Dr. Cumming cuando tenían tres años. La mayoría de las personas no pueden aprender a programar porque son demasiado estúpidas. Afortunadamente, generalmente se dan cuenta de esto rápidamente y se abstienen de perder el tiempo haciendo más codificación. Al igual que con la neurocirugía, practicar tiende a empeorar cada vez más. Naciste siendo muy bueno en neurocirugía, o de lo contrario no hay ninguna posibilidad de aprender. La única diferencia es que la programación es mucho más difícil que la cirugía cerebral o la ciencia espacial.

Nada es peor que un tonto sobresaltado que cree que puede programar solo porque ha escrito un software que se usa en todo el mundo y le ha hecho ganar millones, pero que no sabe absolutamente nada del Teorema de la complejidad NZT de Frimble y ni siquiera puede establecer la dimensión fractal de un simple biconconectado grupo de nodos con un núcleo SPIV de ocho capas.

¿Tratarías de aprender a andar en bicicleta subiéndote y probando? Por supuesto no. Primero debe leer extensamente sobre la mecánica y la historia de las bicicletas. Es lo mismo con la programación.

Lo que es aún más triste es que algunas personas piensan que pueden aprender a programar siguiendo los tutoriales y escribiendo código y haciéndolo funcionar. No parecen darse cuenta de que la esencia de aprender a codificar es leer sin fin, mirar videos sobre programación, idolatrar a Steven Jobs y tener cuidado de no escribir ningún programa hasta que comprenda total y completamente al menos ocho idiomas de computadora con solo leer libros sobre ellos y haciendo notas extensas.

Si no le gusta aburrirse y quiere poder usar algoritmos y estructura de datos, entonces aprenda a programar, priorizando realmente tratando de hacer que los programas funcionen por encima de todo lo demás, y más tarde comience a aprender gradualmente sobre estructuras de datos y algoritmos, una vez puedes escribir programas hasta cierto punto.

Sin embargo, no lo recomiendo porque podría resultar en que consigas un trabajo o escribas software utilizado por el público en general sucio y sucio. Los programadores reales pasan la mayor parte de su tiempo pensando y leyendo, y se limitan a cinco pulsaciones de teclas cada seis meses.

Mucho mejor pasar al menos diez años leyendo primero. Cuando finalmente esté listo para comenzar a programar, necesitará una computadora con al menos cincuenta mil gigabytes de RAM, un disco duro de estado sólido basado en la nube que es esencialmente de extensión infinita, y al menos doce pantallas separadas. Uso ochenta y tres IDE a la vez y una computadora normal simplemente no está a la altura. Las computadoras que ves a la venta en las tiendas son solo juguetes, y en realidad no pueden ejecutar programas informáticos.

Actualmente estoy trabajando en un programa en Scalin Enterprise Pro. Después de eliminar el código redundante, ahora consta de solo dos caracteres. Es completamente funcional y no utiliza variables en absoluto. Nadie sabe lo que realmente hace, porque es demasiado profundo para que la mente humana lo capte. Nunca hubiera podido lograr esto sin tomar cuatro doctorados en ciencias de la computación y permitirme solo usar la tecla de asterisco durante los primeros ocho años.

Un amigo mío aprendió a codificar simplemente jugando tratando de escribir programas, buscando cosas en Google todo el tiempo. Lamentablemente, ahora trabaja para una importante empresa de TI, como la vil puta de dinero que es, desarrollando software para algún propósito comercial sórdido que involucra la banca en línea. ¡Qué degradante!

[Nota: esta respuesta sarcástica es solo que soy tonto. No es una pregunta estúpida. Algunas personas sienten que en realidad debería leer sobre algoritmos antes de hacer cualquier programación. Simplemente no estoy de acuerdo con ellos, ya que no creo que la mayoría de nosotros estemos en su liga intelectual, ciertamente yo no.]

Aunque técnicamente podría hacerlo, su conocimiento de algoritmos y estructuras de datos solo llegará hasta cierto punto si elige hacerlo primero. En realidad, aprender a implementar ciertas estructuras de datos o algoritmos lo llevará lejos como programador. Además, ¿no deberíamos saber lo que sucede debajo del capó?

Yo diría esto:

  1. Asegúrese de tener una buena comprensión de los conceptos básicos de su lenguaje (bucles, variables, manipulación de matrices / listas, modificación de cadenas, etc.). ¡También debes entender la recursividad!
  2. Comience a estudiar el pseudocódigo de cómo se implementan las estructuras de datos comunes y sus métodos (tablas de hash, árboles, montones, LinkedList) y luego los algoritmos más importantes (Quicksort / Mergesort / Heapsort, Binary Search, Breadth and Depth First Search, etc.), porque muchas implementaciones de algoritmos populares en realidad utilizan las estructuras de datos que aprenderá primero.
  3. Una vez que comprenda mentalmente, intente implementar su propia versión de estos programas, en el idioma que elija. No tiene que ser bonito. Siempre puede encontrar ayuda cuando la necesite.

Esto también sigue la estructura general de muchos planes de estudio universitarios. ¡Enlaces más inclusivos están abajo! Deben darle una buena base (pero no exhaustiva).

Estructuras de datos – GeeksforGeeks

Algoritmos [Algorithm Wiki]

Cualquier buen curso en algoritmos y estructuras de datos mostrará cómo esos algoritmos y estructuras de datos se implementan utilizando alguna forma de lenguaje de programación, incluso si es solo un seudocódigo. Se espera que escriba programas que usen esos algoritmos y estructuras de datos. Para eso, necesitará un lenguaje de programación real.

Como tal, la mayoría de las clases introductorias en algoritmos y estructuras de datos también enseñarán un lenguaje de programación, al menos lo suficiente para hacer el trabajo en la clase. La mayoría de los libros de texto introductorios en algoritmos y estructuras de datos se configurarán de la misma manera.

Es probable que lo remitan a otras fuentes sobre cómo configurar su entorno de programación (compiladores instalados, cómo usar un IDE, etc.), pero los libros y cursos cubrirán suficiente lenguaje para hacer el trabajo.