Español
Recientemente, me he inclinado por la idea de aprender cosas nuevas. Una de ellas y de las que más aprensiones me causaban, era la programación. Básicamente, porque no tenía idea de qué es programar. Hasta cierto punto lo que se me venía a la cabeza cuando se nombraba el tema eran:
- Internet
- Nerds
- Hackers
- Computadoras
Sí, puede que sí tenga algo que ver con alguna de estas cosas, pero aun así nos quedamos MUY cortos.
Pero he ido aprendiendo una y otra cosa, mis ideas se han aclarado y mis ojos se han abierto ante una realidad abrumadoramente enorme y, porque no, divertida. He descubierto en el mundo de la programación un impulso de aprender, hacer, crear, descubrir, rearmar y jugar como cuando era un niño. De hecho, ando tan emocionado con el tema que, no solo me animé a escribir sobre ello, sino que hasta los códigos de Markdown los escribo de "memoria" y no con el usual copia y pega que acostumbraba. (No se rían, es en serio).
Sin embargo, todo se me hace un poco complicado todavía y como enseñar es aprender dos veces, quisiera compartir con ustedes mis apuntes de lo que voy estudiando. De ese modo, asimilaré mejor los contenidos y posiblemente pueda ser de utilidad para alguno.
Entonces...
¿Qué es la Programación?
Ya se me complicó todo. Mientras más leo, la programación resulta ser cada vez más cosas. Pero si lo llevamos a lo esencial:
Programar es resolver problemas
Me explico.
Imaginemos que queremos construir una casa. Ese es el objetivo. Suponiendo que tengamos todas las herramientas y materiales, lo que necesitamos es ponernos manos a la obra siguiendo los planos de esa casa.
Entre el problema, que es necesitar la casa, y la solución, que es tener la casa, existe, precisamente, el proceso de construcción.
De este último podemos desprender dos cosas; los planos, que guiarán al ingeniero, los obreros y todos los implicados. Y la ejecución de la obra; batir mezcla, pegar ladrillos, etc.
De ese modo, tenemos:
- El problema, que es aquello que queremos o necesitamos hacer.
- La solución, que es lo que suplirá esa necesidad.
- Los planos o, mejor, las instrucciones para llegar a esa solución
- Y la ejecución de esas instrucciones.
Ahora, enfoquémonos en estos dos últimos.
Los planos son el programa. Quien escribe esos planos (programa), es el programador. Ahora es muy obvio, ¿no?
Entonces, ¿Quién ejecuta el programa?
La Máquina
Cuando se dice que la programación está en todas partes, créeme, es en serio. Teléfonos, computadoras, calculadoras, Smart Tvs, neveras, aviones, drones, motores de búsqueda, sitios webs, videojuegos, ¡TODO!
Pero para no abrumarnos con las tantas aplicaciones de la programación, sinteticemos todo como "la máquina". Pues es algún dispositivo, real o virtual, quien ejecutará nuestro programa.
Como de lo que se trata es decirle a la máquina lo que tiene que hacer para resolver un problema, en la mayoría de los cursos que he visto se suele decir que las máquinas (las computadoras) son tontas. Pero volvamos a nuestro ejemplo.
Ya empezaron las obras de construcción y los obreros están enfocados en sus tareas. Pero hace calor y tienen sed; les da hambre y deben comer; el trabajo es pesado y se cansan. Las obras son cada vez más lentas y se cometen más errores. Lo normal.
Ahora supongamos que lo que tenemos a nuestra disposición no son obreros humanos, sino robots. No se cansan, no necesitan comer o beber agua y son mucho más precisos a la hora de trabajar.
Vale, no quiero iniciar una discusión sobre el valor de la mano de obra humana o los derechos y deberes de los robots. Es hipotético. Pero podemos acordar que comparados en esos términos, las máquinas son bastante útiles para realizar tareas mejor y más rápido.
Por ejemplo, sería difícil para la mayoría competir en un torneo de cálculo con una computadora. Y no es que sean tontas, es que son herramientas. Como un martillo, pero con algo más de utilidad.
Lógica de Programación
¿Cómo le dirían a sus empleados robots que construyan una casa?
Vayan, construyanme una casa.
Podría ser, pero ni tenemos empleados robots ni la programación es tan sencilla.
Construir una casa lleva muchos pasos. Tanto para construir sus diferentes partes como para preparar cada material a utilizar. Así, cada paso lleva dentro de sí numerosas tareas pequeñas.
Pensemos, por ejemplo, en hacer mezcla de concreto.
¿Cuántos pasos tienes que dar?
- Buscar arena
- Agregar cemento
- Agregar agua
- Mezclar
¡Y listo!
¿Cierto?
Pues no. Debemos detallar un poco más.
- Buscar arena
1.1 ¿Está cernida? (Si/No)
1.2 Cernir arena (Si/No) - Calcular arena
2.1 ¿Es suficiente? (Si/No) - Agregar cemento
3.1 ¿Es suficiente? (Si/No) - Mezclar
4.1 ¿Necesita más arena? (Si/No)
4.2 ¿Necesita más cemento? (Si/No) - Corregir medidas
- Agregar agua
6.1 ¿Es suficiente agua? (Si/No) - Mezclar
- Verificar consistencia
- Revisar proporciones
9.1 ¿Más arena?
9.2 ¿Más cemento?
9.3 ¿Más agua? - Verter mezcla
Esto sería algo más cercano. Pero mientras más lo veo, más pasos intermedios me imagino.
Algo más o menos así piensa una máquina. Y nosotros también, solo que ese proceso se hace de forma más "automática". Por lo que en el ejercicio de la programación, debemos extraer y esquematizar todos estos pasos y las decisiones que debemos tomar.
Ahora, piensa en cualquier tarea que hagas: Tomar un vaso de agua de la nevera, cambiar una bombilla, encender una vela, limpiar una mancha... Y trata de dividir estas tareas específicas en los pasos que debes hacer. Luego, ve si puedes alargar la lista con aún más pasos XD
Es un buen ejercicio que nos ayudará a pensar de forma lógica y que, por lo tanto, nos acercará más al lenguaje de programación.
Bueno, esto sería todo por ahora. Los espero en los comentarios. Pueden dejar, si quieren, algun ejercicio que hayan hecho y así lo comentamos todos.
¡Hasta la próxima! 😁
English
Recently, I have been inclined to the idea of learning new things. One of them, and one of those that caused me the most apprehension, was programming. Because I had no idea what programming was. The truth is that what came to my mind when the subject was mentioned were:
- Internet
- Nerds
- Hackers
- Computers
Yes, maybe it has something to do with some of these things, but we still fall WAY short.
But I've been learning one thing and another, my ideas have become clearer and my eyes have been opened to an overwhelmingly huge and, why not, fun reality. I have discovered in the world of programming an impulse to learn, make, create, discover, reassemble and play like when I was a kid. I'm so excited about the subject that not only I'm encouraged to write about it, but even the Markdown codes are written from "memory" and not with the usual copy and paste that I used to do. Just for fun.
However, everything is still a bit complicated for me and since teaching is learning twice, I would like to share with you my notes of what I am studying. That way, I will assimilate the contents better and possibly it can be useful for some of you.
So...
What is Programming?
Everything is just complicated right now. The more I read, the more programming turns out to be. But if we take it down to the basics:
Programming is problem-solving.
Let me explain.
Let's imagine we want to build a house. That's the goal. Assuming we have all the tools and materials, what we need is to get down to work following the plans for that house.
Between the problem, which is to need the house, and the solution, which is to have the house, there is precisely the process of construction.
From the latter we can derive two things; the plans, which will guide the engineer, the workers, and all those involved. And the execution of the work; beating the mixture, gluing bricks, etc.
Thus, we have:
- The problem, which is what we want or need to do.
- The solution, which is what will meet that need.
- The plans or, better, the instructions to reach that solution.
- And the execution of those instructions.
Now, let's focus on the last two.
The plans are the program. Who writes those plans (program), is the programmer. Now that's pretty obvious, huh?
So, who executes the program?
The Machine
When people say that programming is everywhere, believe me, they mean it. Phones, computers, calculators, Smart TVs, refrigerators, airplanes, drones, search engines, websites, video games, EVERYTHING!
But so as not to overwhelm us with the many applications of programming, let's summarize everything as "the machine". Because it is some device, real or virtual, that will execute our program.
Since the point is to tell the machine what to do to solve a problem, in most of the courses I have seen it is often said that machines (computers) are dumb. But back to our example.
Construction work has started and the workers are focused on their tasks. But it is hot and they are thirsty; they are hungry and must eat; the work is heavy and they get tired. The work is getting slower and slower and more mistakes are being made. The usual.
Now let's suppose that what we have at our disposal are not human workers, but robots. They don't get tired, they don't need to eat or drink water, and they are much more precise when working.
Okay, I don't want to start a discussion about the value of human labor or the rights and duties of robots. It's hypothetical. But we can agree that compared to those terms, machines are quite useful in performing tasks better and faster.
For example, it would be difficult for most to compete in a calculus tournament with a computer. And it's not that they're dumb, it's that they're tools. Like a hammer, but with a little more utility.
Programming Logic
How would you tell your robot employees to build a house?
Go ahead, build me a house.
Could be, but we don't have robot employees, nor is the programming that simple.
Building a house takes many steps. Both to build its different parts and to prepare each material to be used. Thus, each step carries within it numerous small tasks.
Think, for example, of making the concrete mix.
How many steps do you have to take?
- Find sand
- Add cement
- Add water
- Mix
And that's it!
Right?
Well, no. We need to go into a little more detail.
- Search for sand
1.1 Is it sifted? (Yes/No)
1.2 Sift sand (Y/N) - Measure sand
2.1 Is it sufficient? (Y/N) - Add cement
3.1 Is it enough? (Y/N) - Mix
4.1 Do you need more sand? (Yes/No)
4.2 Do you need more cement? (Yes/No) - Correct measurements
- Add water
6.1 Is water sufficient? (Yes/No) - Mix
- Check consistency
- Check proportions
9.1 More sand?
9.2 More cement?
9.3 More water? - Pour mix
This would be something closer. But the more I look at it, the more intermediate steps I imagine.
Something more or less like that a machine thinks. So do we, only that process is done in a more "automatic" way. So in the programming exercise, we must extract and schematize all these steps and the decisions we must make.
Now, think of any task you do: take a glass of water from the fridge, change a light bulb, light a candle, clean a stain... And try to break these specific tasks down into the steps you need to do. Then, see if you can extend the list with even more steps XD
This is a good exercise that will help us think logically and thus bring us closer to the programming language.
Well, that's all for now. I'll be waiting for you in the comments. You can leave, if you want, any exercise you have done and we can all comment on it.
See you next time! 😁
The rewards earned on this comment will go directly to the person sharing the post on Twitter as long as they are registered with @poshtoken. Sign up at https://hiveposh.com.
Para esto de determinar los pasos necesarios para resolver un problema, lo siguiente seria aprender sobre como dibujar los diagramas de flujo; o sea, una forma mas visual de entender como tomar las decisiones segun lo que vaya sucediendo en el programa. Por ejemplo, encontre este ejemplo:
Jajajaja lo imprimiré y lo colgaré en mi cuarto.
Por otro lado, es cierto. Lo siguiente sería aprender diagramas de flujo. Puede que lo incluya en la próxima publicación.
Congratulations @chentebass! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s):
Your next target is to reach 500 comments.
You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOP
Support the HiveBuzz project. Vote for our proposal!