lunes, 9 de marzo de 2020

Plan de estudio

Bueno si lo que deseas aprender es a programar, puedes encontrar confuso el como empezar, ya que en programación hay cientos de lenguajes y enfoques, una de las preguntas más comunes es:

¿Con cual lenguaje debo empezar?.

Encontrarás todo tipo de respuestas para esta pregunta, en mi opinión, el lenguaje con el que aprendas es poco importante, así que no deberías preocuparte por eso, yo recomiendo empezar con herramientas que faciliten la comprensión y el desarrollo de la lógica de la programación.


Siguiendo esta línea de pensamiento en español tenemos una herramienta increíblemente potente para aprender, que te permite programar en español y te da acceso a código y diagramas de flujos, con todo tipo de configuraciones para imitar programación de muchos lenguajes, y un transformador de código a los lenguajes más populares. Pseint

Así que esta guía se enfocará en desarrollar tus habilidades lógicas y de pseudocódigo, para que después puedas migrar este conocimiento al lenguaje de tu eleccion sin ningun problema.

Ahora viene otra pregunta, ¿Que vamos a aprender?.

Bueno si bien mencioné que hay cientos de lenguajes y muchos enfoques, lo único que necesitamos es desarrollar la capacidad lógica y de transformar nuestros pensamientos en instrucciones entendibles por la máquina.

Esto es independiente del lenguaje o enfoque, cuando se domine esto, el resto será relativamente sencillo y solo cambiara las palabras con las que escribimos y el cómo ordenamos los algoritmos, pero no el que escribimos, esto seguirá siendo lo mismo y no tomará mucho tiempo, así que es relativamente sencillo.

Dicho esto, para poder transformar nuestras ideas a instrucciones que pueda entender la computadora,
¿Cuántos temas hay que dominar?.

Bueno dejare una lista con los temas que necesitamos aprender, los términos que utilizaré son propios es probable que lo encuentres con otros nombres en otros sitios:

1) Instrucciones secuenciales: básicamente son los algoritmos más sencillos, que es una lista de acciones simple que se ejecuta una tras otra sin variación, aqui lo que hay que aprender es:

- Las variables.
- Las instrucciones Leer y Escribir.
- Operaciones numéricas

Básicamente es como cuando un mago, crea un artefacto que cuando se activa con maná lanza una bola de fuego (o cualquier otro hechizo).

Sin mencionar que podríamos encadenar la cantidad de hechizos que deseemos, cualquier cantidad, el ahorro energético es considerable. 😀

La unica pega, es que no podemos elegir que hechizo se ejecutaría en determinada situación, ni elegir entre muchos objetivos, aparte que los hechizos muy largos aún costarian mucho maná.

2) Las condiciones, esto como casi todo en programación viene de las matemáticas, más concretamente este tema viene de Lógica Matemática.

Si tu tienes la capacidad de resolver acertijos o deducir cosas ya tienes esta habilidad, solo es necesario pulirla y usarla de forma consciente. Si no la tienes no te preocupes, no es tan complicado como parece.

Hay gente que se frustra mucho con este tema, pero creo que es porque se explica mal, este tema es bastante importante, porque será el que nos permita controlar y manipular el flujo de la información.
Los temas que se verán son:

- Tabla de verdad.
- Condiciones simples.
- Condiciones anidadas.
- Concatenación de condiciones.
- El según (Swich o When)

Esto implica que podríamos hacer que el artefacto mágico se activará solo, según lo que deseemos sin necesidad de pasarle maná, y que pueda atacar solo a los que deseemos 😈

También podemos hacer que un mismo artefacto active un sin fin de hechizos segun la situacion de forma automática. 😋, aunque bueno hechizos muy largos tomarían mucho de nuestro maná.

3) Los ciclos: los ciclos nos permiten indicarle a la máquina que repita una acción hasta que deseemos.

Los temas que se ven aquí, son los tipos de estructuras, y dos herramientas que nos permiten interactuar con los ciclos:

- Contador y Acumulador.
- Ciclo para (For)
- Ciclo mientras (while)
- Ciclo repetir (do while)

Aquí un mago ya seria capaz de usar miles de hechizos sin gastar apenas maná, con sus artefactos, e incluso distinguir a quién va cuantas bolas de fuego, esto es over power ningún mago medieval podría hacer esto 😱.

La única limitante es que no podríamos elegir a muchos objetivos al tiempo.

4) Las listas: estas nos permiten interactuar con grandes cantidades de información. Tan simple y poderoso como suena, podemos mover toda la cantidad de datos que queramos. Sin embargo este es el tema más complejo que hay, es más muy pocos programadores logran dominarlo.

Aquí solo veremos un nivel muy básico, que es el nivel bastante simple, pero que vamos los ingenieros de google hacen esto a otro nivel, y hay miles de formas de optimizar las interacciones con las mismas.

No entraré en mucho detalle, ya que en general a no ser que te dediques a optimizar códigos te bastará con el uso que te explicare aquí (en toda mi experiencia profesional no he necesitado ahondar más allá de lo superficial).

Los temas aquí serían:

4.1) Vectores o Listas de una dimensión (Arrays).
-Inicializar la lista
-Agregar elementos a la lista
-Actualizar elementos
-Eliminar elementos
-Invertir lista
-Ordenar listas numéricas.
-Ordenar listas de texto

4.2) Matrices o Listas de dos dimensiones.

-Agregar elementos
-Actualizar elementos
-Eliminar elementos
-Invertir Matrices
-Ordenar Matrices numéricas.
-Ordenar Matrices de texto

Aquí ya podríamos encargarnos de hordas de enemigos, distribuyendo hechizos de forma eficiente entre todos los objetivos, ya esto es un nivel casi de Dios 😇

Esto ya sería todo, como pueden ver en realidad no son tantísimos temas, y la mayoría son bastantes sencillos de entender, digamos que lo complejo empieza en los ciclos, antes de eso es relativamente fácil, pero intentaré que puedas aprender de la forma más fácil y sencilla de comprender, apoyándome en los diagramas de flujo de datos para poder visualizar los conceptos de forma más gráfica.

Bueno cualquier duda o sugerencia no duden en ponerla en los comentarios.