Ok, ok. Sabemos que el título de este tutorial es tremendamente sensacionalista, algo extremo y hará que más de alguno no quiera hacer click en el vinculo “Leer más”, pero nos arriesgaremos.
Dando vuelta por Internet, nos dimos cuenta de que, a pesar de estar lleno de manuales sobre lenguajes de programación (C, C++, Java, PHP, ASP, .NET, etc), muy pocos sitios se enfocan a dar información para las personas que les interesa adentrarse en el mundo de la programación y desean saber como hacerlo y por donde partir.
Es por esto que hoy, con el apoyo de nuestro buen Topher, damos inicio a una saga polémica y complicada que esperamos hacer muy completa y lo más simple que se pueda sobre como aprender a programar, desde una introducción con los conceptos más básicos hasta entrar de lleno a la programación en sí.
Lo que buscamos en el fondo es que quienes esten interesados, a través de estas guías puedan aprender a programar y no solo aprender a hacer programas.
¿Están listos?, el viaje es largo y hoy solo es la primera parada, así que busquen algo para comer, para tomar, armen una mochila de campamento y empaquen un par de calcetines, ya que nadie sabe lo que nos espera por delante.
Toda la información, como siempre (y si se atreven), después del salto.
Antes de comenzar, para dejar todo bien claro:
Nota: En Como Lo Hago no somos ni gúrus ni profesionales de la programación, por lo que no nos atreveríamos a ofrecer estas guías como un método seguro llame sha, 100% garantizado, un abdomen más plano en 7 días ni infalible. No utilizamos ninguna guía ni manual oficial para redactar esto, pero lo haremos lo más completo posible, a partir de las experiencias personales de como aprendimos a programar e intentaremos traspasar todo eso en las siguientes líneas, por lo que están en todo su derecho de disputar los contenidos de este y los tutoriales siguientes y obviamente de seguir sus propios métodos si los estiman convenientes.
Con eso claro, veamos lo que cubriremos en la primera parte de este tutorial:
Puede parecer poco, pero creanme que no lo es. Así que ya con todo eso definido, no hay más excusas, vamos. Esto es como andar en bicicleta, una vez que se aprende nunca se olvida.
Hum… que pregunta más amplia. La verdad es que definir que es la programación puede enfocarse desde una serie de aspectos: Desde uno netamente técnico hasta uno más abstracto o conceptual, pero veamos.
Mirandolo desde un aspecto netamente técnico o computacional, la programación es la realización de programas (dah!), es decir, la realización de una serie de instrucciones que interactuarán tanto con el hardware de nuestro computador, como con otras aplicaciones y/o el usuario que las maneje.
En aspectos más simples aún, al programar en la mayoría de los casos lo que hacemos queda tan reducido como a preparar una serie de instrucciones y operaciones que nos permitan hacer una recolección de datos, operar con esos datos de alguna forma y luego presentar una serie de resultados producto de esas operaciones.
Y finalmente mirandolo desde un aspecto más conceptual, la programación se refiere netamente a la resolución de problemas. Cuando programamos lo que queremos hacer es otorgar una solución a una inquietud, abordando aquel problema desde distintos puntos de vista hasta encontrar la respuesta más óptima y/o efectiva. De a poco iremos comprendiendo más esta definición.
En los computadores, todo se maneja a base de números binarios (1’s y 0’s), por lo que cuando por ejemplo queremos realizar una suma, nuestro equipo no entiende si le decimos “suma 2 + 2” sino que entendería una instrucción o serie de instrucciones en binario que le permita realizar la operación. Por eso cuando nosotros programamos, lo que hacemos es crear un intermediario entre el usuario que usa un lenguaje “real” y nuestro equipo que utiliza un lenguaje “de máquina”.
¿Cómo hacemos esto?, bueno muy fácil (aunque no tanto): Los entornos de programación (tema que abordaremos más adelante en detalle) se encargan de realizar esa traducción de lenguaje real a lenguaje de máquina de las instrucciones que programamos y luego de vuelta la traducción de lenguaje máquina a lenguaje real de los resultados de las operaciones. Así que cuando vemos el resultado “4” en pantalla es que nuestro equipo ha mandado el mensaje en binario y ha sido traducido por el programa que hicimos.
Hasta ahora hemos visto conceptos algo complejos, pero no se preocupen, de a poco se irán entendiendo y en el fondo si no llegan a entender eso no limitará su capacidad de programación.
Bueno… tiempo.
Hablando un poco más en serio, podemos definir las necesidades en 2 tipos: las físicas y las “personales”.
a) Necesidades físicas:
¿Físicas?, ¿Say what?, ¿Es un concurso de popularidad?. No, en verdad por necesidades físicas nos referímos de cierta forma a “implementos reales o computacionales” que se utilizarán para empezar a programar. Para las primeras guías solo necesitaremos de nosotros mismos y a lo más una hoja de papel y un lápiz. (para jugar al gato en los ratos de ocio. No, ya verán porque). Eventualmente cuando nos adentremos más necesitaremos de estas cosas:
Como pueden apreciar, no necesitamos nada de otro mundo. Son cosas que están accesibles a solo unos clicks de distancia (a menos que no tengan computador, ya que no pueden ir clickeando por la vida para comprarse uno. O sea pueden, pero cuesta más). Pero en todo caso no se preocupen por esos ítems aún, ya lo veremos con más calma cuando sea necesario.
b) Necesidades “personales”:
Personales es un término que utilizamos con bastante cuidado, ya que en verdad a lo que nos referimos es a una serie de características y habilidades (natas y/o adquiridas) personales que ayudan mucho en el aprendizaje. Si bien el no tener alguna de estas puede que termine por no ser un impedimento si sirve de mucho tenerlas. Nos referimos a:
Es por esto que en las carreras relacionadas con el área de la computación e informática, previo a la programación siempre nos pasan (muchas veces odiandolo y sin entender bien porque) Cálculo y Álgebra. El primero nos enseña a expandir la mente y mirar los problemas desde distintos puntos y el segundo nos enseña a establecer una estructura de pensamiento. Así que ya saben, a dejar de odiar a esos viejos pelados (¿referencia personal?) que nos llenan de funciones, sistemas de ecuaciones y gráficos.
Y finalmente un detalle a siempre tener en consideración: En la programación, siempre hay más de una forma de resolver los problemas.
Si hemos aguantado leer los primeros extensos parrafos llegamos al punto de: Ok, creo que tengo todo. Ahora ¿Cómo parto?. Bueno partamos con una pregunta que quizás no nos hemos hecho hasta ahora:
¿Cualquier persona puede aprender a programar?
Bueno, si y no. Según muchos “expertos”, hay gente que no sirve para programar. Si bien tienen razón hasta cierto punto creo, sin considerarme en lo más mínimo experto en el tema, que cualquier persona que tenga el interés y deseo de aprender puede llegar a hacerlo. Quizás no se puede garantizar a que llegue a ser realmente bueno, pero creo que teniendo las ganas, la paciencia, la perseverancia y el espíritu de superación se puede llegar muy cerca. Eso y harta práctica, que bueno, como para todo en la vida, nunca está demás.
Entonces, ¿Por donde partimos?, por el principio por lo más básico. Partimos por empezar a preguntarnos ¿Cómo funcionan las cosas?. Me explico: Debemos empezar a entrenar nuestra mente y forma de pensar a descubrir como funcionan las cosas y como se resuelven los problemas. Para hacer esto hay una serie de formas y métodos, pero en el fondo debemos encontrar el que más nos acomode. Desde sentarnos en la vereda y ver como un conductor está haciendo funcionar su automóvil hasta abrir la calculadora de Windows y ver como es el modo de interpretar una operación que le indiquemos realizar. No necesitamos intentar descifrar el procedimiento exacto y detallado, si no que plantearnos esas inquietudes y ver como funcionan.
Por ejemplo, cuando le decimos a la calculadora de Windows que realice una suma y le damos los datos, esta lo que hace es leer los datos que le dimos, interpretar cuales son números y cuales signos. En base al signo, ve la factibilidad de realizar la operación y la hace. Así de “simple”.
Una vez que empecemos a entrenar nuestra forma de pensar de esa manera, podemos empezar a entrar a cosas mucho más concretas como el punto que viene a continuación.
¿Los algo-qué?. Algoritmos. Chanfle.
Los algoritmos son la base de la programación. Antes de entrar de lleno, pasemos a una definición:
¿Qué es un algoritmo?
Muchas veces se tiende a confundir un algoritmo con algo netamente computacional o tecnológico. En el fondo no es así.
Un algoritmo es básicamente una lista definida, ordenada y finita que nos indica como resolver un problema determinado (¡Grande Wikipedia!), o sea un how-to bien básico y definido para una operación determinada.
Si no quedó muy claro, utilizaremos otro ejemplo que nos ocurrió en la Universidad:
El mismo profesor que nos indicó la estupidez de nuestros queridos computadores, el día que nos quisó enseñar lo que eran los algoritmos, nos pidió el primer día de clases y sin darnos explicación alguna que definieramos el algoritmo para hacer un huevo frito.
La cara de duda era unánime en los rostros presentes, ya que todos nosotros, sin experiencia previa, relacionabamos los algoritmos con procesos netamente computacionales, entonces no tenía lógica alguna. Luego nos otorgó la ayuda necesaria diciendonos: “Lo que necesito es que me definan lo que Uds. harían desde un principio para hacer un huevo frito”.
Fue ahí donde nos dimos cuenta que uno puede definir algoritmos para cualquier tipo de procesos, desde los de la vida misma hasta cosas más evolucionadas y tecnológicas.
Ahora, a diferencia de como uno ve los problemas en la vida real, al realizar un algoritmo sobre cualquier cosa, siempre es bueno plantearse los supuestos de cualquier problema que pudiese ocurrir y que soluciones se pueden establecer al respecto.
¿A qué vamos con esto?, a darnos cuenta de que los algoritmos son la premisa básica de cualquier solución de programación que vayamos a implementar. Con sus operaciones, sus supuestos, su contingencia y su desarrollo estructurado. Mientras más completos sean los algoritmos que nos planteamos, mejor será nuestra programación propiamente tal.
Veamos un ejemplo, ¿les parece?, ya que después de tanta teoría vamos a marearnos un poco. Viendo la misma historia antes mencionada, intentemos hacer un algoritmo (básico) de como haríamos un huevo frito:
Algoritmo para hacer un huevo frito:
Si bien tenemos los pasos básicos establecidos de forma correcta, podemos empezar a ver de que nuestro algoritmo tiene ciertas fallas, como por ejemplo: ¿Qué pasa si no hay huevos?, ¿Qué pasa si no hay aceite?, ¿Qué pasa si no hay gas?. Pueden ser preguntas y respuestas algo básicas, pero reflejan lo que decíamos de plantearnos supuestos. Cuando programamos siempre tenemos que cubrir todos los aspectos necesarios, ya que por muy bien que conozcamos nuestro programa, el usuario puede no saberlo todo, y es por esto que debemos estar preparados para cubrir cualquiera de estas situaciones. Una versión mejorada del algoritmo sería:
Algoritmo para hacer un huevo frito 2.0:
Creo que la idea se entiende. Si, es cierto, puede parecer excesivo ponerse en todos los supuestos y quizás estemos cubriendo aspectos sumamente extraños, pero mientras más situaciones que puedan ocurrir consideremos y tengamos soluciones presentes para eso, más completo será nuestro algoritmo y por ende nuestro programa.
En el fondo siempre debemos pensar que existe la “mala intención de los usuarios”, un concepto que más adelante veremos en detalle y que es una de las cosas más importantes a tener en consideración por parte de los programadores.
Es una excelente práctica empezar con el tema de los algoritmos. Empezar a plantearnoslos para resolver distintas situaciones, desde la vida cotidiana, hasta situaciones computacionales, linguísticas, de lógica, matemática, en realidad para todo. Siempre que hay un problema, hay un algoritmo que se pueda realizar para encontrar la solución.
Así que los instamos a practicar un poco este tema, mientras nosotros vamos desarrollando la que será la segunda parte de esta guía para aprender a programar y no morir en el intento.
Por ahora lo dejaremos hasta aquí, ya que hemos cubierto los aspectos más básicos y necesarios y han leído bastante. Es momento de descansar la vista un poco y seguir pensando, que es la mejor práctica posible.
En la próxima edición de “Como aprender a programar y no morir en el intento”:
Todo, a la misma batihora, en el mismo baticanal.
Como siempre, este tutorial ha sido desarrollado mediante un complejo algoritmo y documentado (no hemos podido determinar su efectividad en general, al menos con nosotros funcionó), por el equipo de Como Lo Hago, por lo que cuenta con nuestro infalible, siempre seguro, con un poquito de gusto a limón y establecido Sello de Garantía. Cualquier problema, duda o comentario, sientanse libres de realizarlos en el área habilitada a continuación. Asistiremos sus dudas a la brevedad posible.
Esperamos que este tutorial haya sido de utilidad para Uds.
Muchas gracias por leer y será hasta una próxima oportunidad.
8:30:05 pm
la verdad yo no tenia ni idea de la forma en la cual en lo poco que he leido he aprendido muchisimo . y espero aprender mucho mas. felicidades era lo que havia estado buscando .
8:32:27 pm
la verdad es que ni yo me lo creo he leido poco y ciento que esto es de mucha ayuda ahora comprendo .un poco mejor los algoritmos . felicidades son mui buenos espero aprender mas de ustedes .
1:33:00 am
Hola, a mi me encanta la programación, de hecho quiero estudiarla espero no sea tarde, tengo 27 años y estudié dos carreras, diseño gráfico y publicidad. Pero hoy quiero aprender a programar, mi cabeza es creativa, no estructurada como la de un programador. Mi hermano es Ing. Informático, pero me da la duda si seré capaz de aprender, almenos, sé que el deseo y todas las ganas las tengo.
5:29:38 pm
pq no hicieron un archivo txt o pdf o cualquier otro formato d texto, pero igual esta excelente.los felicito
12:13:34 am
felicidades son excelentes explicando, les entendi muy claro y me ayudaron mucho a entender el tema, muchas gracias!!
7:51:38 pm
no se nada de esto al respecto lei la primera y me parecio que esta hecha para gente como yo, me parecio muy buena muchas gracias, ayudan bastante entre aca con una meta y creo que la cumplire.
12:32:57 pm
Gracias..
5:52:22 pm
Bendiciones, le agradeszo realmente esta guia, acabo de encontrarla y me parece facinante, me gradue de programacion hace 5 años y no he ejercido la carrera siempre me han pedido experiencia y no la tengo y deseo empesar y repasar todo lo dado en la universidad. Voy a leer todos los manueles y se q sere la mejor en el nombre de Jesus bendiciones.
5:29:13 pm
[…] […]
5:19:35 pm
me gustaria saber en que lenguaje es la programacion del tutorial?