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.
7:23:02 am
Un buen sistema para aprender a programar son las webs de cursos específicos de programación. Recomiendo echarle un vistazo a Codeacademy y Treehouse. Especialmente la segunda, muy orientada a la creación de proyectos concretos.
2:08:29 pm
hola ! muchas gracias por el tuto la verdad que yo no tengo ninguna experiencia con la programacion pero vamos a ver como me va xD
9:33:02 am
muchas gracias por el tutorial, esta chevere. es facil, cencillo y muy practico.
una consulta: que paso con la parte 2, no le he podido encontrar. si pudiesen enviarme los tutoriales a mi correo se los agradeceria mucho.
hugotufrien_08@hotmail.com
9:01:12 pm
la verdad me encanto ya quiero ver las demas partes voy solo por la primera ricien
4:06:41 am
Saludos:
Muy bueno que se encuentre este tipo de conocimientos en la internet.
No tengo experiencia en programación, a lo mucho en la escuela aprendi algo de LOGO, y algunas cositas en el BASIC de Atari.
Como podría empezar este curso?
Saludos,
Miguel Gibu
1:41:12 pm
esta bueno:)
8:50:17 pm
maricones sudacas yo aprendi a programar mi pene y tener multiorgasmos XD
8:50:58 pm
pene
8:11:54 pm
Me podrian regalar los link de los siguientes tutoriales?? me interesa bastante este tema!
10:30:15 pm
@Greyvin
Te dejamos las partes 2 y 3 por ahora:
http://www.comolohago.cl/2008/09/10/como-aprender-a-programar-y-no-morir-en-el-intento-parte-2/
http://www.comolohago.cl/2008/10/12/como-aprender-a-programar-y-no-morir-en-el-intento-parte-3/
Saludos!