domingo, 23 de marzo de 2014

¿Qué debo saber?

Ok, ok, sé que el titulo no suena demasiado interesante y mucho menos prometedor, pero el propósito de esta entrada no tiene relación con programación en si, lo que pretendo es ayudar al lector a sumergirse en este maravilloso mundo del desarrollo, dígase desarrollo generalizado, pues si bien hay bastantes lenguajes de programación cada cual con un objetivo y características específicas todos tienen el mismo fin “Realizar tareas que simplifiquen y automaticen procesos que otorguen un beneficio para el usuario”.


Una analogía de lo que es un proceso

Está imagen muestra de manera clara lo que son los procesos, en la cual tenemos una entrada que nos regresa una salida después de pasar por algunos cambios en su estructura, pero esté ejemplo bien pudo haber tenido varias entradas y entregarnos una salida, "pero que digo" esto puede ser viceversa tener una sola entrada que nos entregue muchas salidas.

Vaya, tal parece que todo esta limitado únicamente por nuestra imaginación, ¡Por razones como esta es que me apasiona tanto este mundo del desarrollo!, como dice KEN ROBINSON he encontrado mi elemento.

Bueno después de una breve charla quiero entrar en materia, hablando estrictamente de mi experiencia y anécdotas personales me he dado cuenta de que se tiene un estigma sobre lo que es la programación, algo muy similar a lo que se cree de las matemáticas (son difíciles, complicadas, aburridas) pero más bien creo que se nos hacen difíciles por que no les damos el enfoque adecuado, yo por ejemplo pienso que la "gimnasia artística" es para personas fuera de este mundo, es espectacular la forma que en que dominan su cuerpo, ni una marometa de carrito puedo hacer.  A lo que voy con esto es que sino hacemos algo que nos gusta difícilmente vamos a sobresalir aunque eso no es lo peor, eso viene después cuando tu vida se convierte en una rutina, creo que cuando eso te pasa estas acabado.

Para todas aquellas personas que quieran entrar en el mundo del desarrollo les digo que no es algo fácil, pero tampoco difícil, es como TODAS las disciplinas, lo único que requiere es esfuerzo y dedicación.



Si eres nuevo en todo esto del desarrollo te recomiendo que lo veas de una forma, "Llevar el mundo real a lo virtual", ¿A que me refiero con esto? ¡Ah! pues me refiero a que todo lo que hacemos en nuestras vidas cotidianas lo podemos implementar en la programación. ¿No me crees?, Ok te pongo un ejemplo.

Te ha pasado que vas a la escuela y uno te tus amigos te dice ¡Vamos a mi casa, voy a tener una fiesta! (Sino te ha pasado no te preocupes, a mi tampoco pero me pareció un buen ejemplo).
¿Qué es lo que haces? pues claro como todo buen hijo llegas a tu casa y le pides permiso a tu mamá para ir a la fiesta de tu amigo, y ella ¿que te contesta?  ¡Puedes ir, solo "SI" antes terminas toda tu tarea!


Ya sabia que mi día no podía ser tan perfecto, mi mamá me puso una condición para ir a la fiesta. Bueno pues esto mismo puedes aplicar en la programación, creo que el punto medular de la programación son las condiciones, ellas son la raíz de todo. Ya viste que no es complicado, solo debemos saber cuando usar una condición, todo el mundo muchas veces al día usamos condiciones.


Si, ya se que este ejemplo no es suficiente, bueno vayamos por otro.




Para este paso quiero que al leer estas lineas te acuerdes de ese momento en el que no quieres saber nada de nadie y lo único que quieres es seguir haciendo lo que estas haciendo, exacto me refiero a cuando te despiertas 

Después de una pelea con el despertador ¿Qué es lo que haces?


  1. Te das un baño
  2. Desayunas 
  3. Te lavas los dientes 
  4. Te vas al trabajo o escuela 
  5. Regresas a tu casa
  6. Cenas 
  7. Y por ultimo te vas a dormir 
y ahora cuéntame  ¿Qué haces al siguiente día?  (martes) ¡Oh haces los mismos pasos!


bueno y ¿El Miércoles?  ¡Haces lo mismo!
¿El Jueves? ¡Otra vez lo mismo!
Ok entonces estarás de acuerdo con migo que repetimos lo mismo día a día ¿Podríamos inferir que es un ciclo que se repite? algo así como el ciclo del agua.

Vaya cosas, en la programación también podemos crear ciclos y estos nos permiten realizar diferentes tareas un determinado número de veces, para terminar un ciclo simplemente debemos usar condiciones (Como las que vimos hace unas lineas)

Repite esto los primeros 300 días del año
      SI es un día hábil 
          Párate de la cama y ve a trabajar o a la escuela
      SiNo es un día habil
          Sigue de flojo

Creo que vamos bien, ya vimos que podemos crear condicionales y ciclos dentro de la programación (cosas que vivimos a diario TODAS las personas en nuestras vidas cotidianas). pero ¿Qué más podemos hacer?

Vamos por un ejemplo más...

¿Cuantas veces has prendido tu televisor?  ¿Te has preguntado como funciona?

Por lo regular solo sabemos que si conectamos el cable de corriente y la antena vamos a poder ver nuestros programas, sabemos que hay en su interior muchas cosas que trabajan en conjunto (pero no sabemos cada cosa que es lo que hace) lo único que tenemos bien claro es que si tenemos antena + corriente nos da como resultado nuestros programas, dicho en otras palabras podríamos decir que esa caja negra (Televisor)   recibe de entrada 2 datos (antena, corriente) y de salida nos regresa nuestros "Programas de televisión".
Entonces, podemos decir que esa caja negra hace una "FUNCIÓN" y esa función es entregarnos entretenimiento,  BIEN ahora te cuento que en la programación también podemos realizar funciones, me refiero a que podemos crear "ALGO" que haga "determinada" cosa, pero que SIEMPRE NOS VA A REGRESAR UN RESULTADO. 
Esto es una prueba más de que todo lo que hacemos en la vida cotidiana, con un poco de modificaciones lo podemos programar. Todos en algún momento del día realizamos funciones osea que no es un termino que sea nuevo para alguien.

Bueno un ejemplo más para terminar.

Todas las personas tenemos familia, abuelos, tíos, papás, suegros, etc. quizá en algún momento uno de nuestros familiares (abuelos) decida heredarnos su casa. todos conocemos lo que es la herencia, es ese proceso donde una persona le entrega todo lo que "ESPECIFICA"  en su testamento a una o varias personas. Creo que no hay nada de nuevo en este concepto, significa que una vez que nuestro abuelo nos hereda su casa  nosotros vamos a poder ocupar su casa y realizar muchas acciones sobre ella, vivir en ella, pintarla etc.  Esto es algo muy interesante y ademas potente, pues significa que nosotros no vamos a tener que construir una nueva casa desde cero, no vamos a tener que gastar nuestros recursos (dinero) en mandar a hacer una casa, vamos a reutilizar un pedazo de terreno (en el cual esta construida) y muchas ventajas más que nos proporciona la herencia.

Pues si como te imaginas, en la programación también existe la herencia y esta nos provee los mismos beneficios que acabamos de platicar. ¿No crees que es fascinante?


Esto significa que en programación vamos a poder crear "ALGO" que va a hacer "Diferentes cosas" y que después este "ALGO"  lo vamos a poder heredar a todos nuestros parientes entregandoles todos los beneficios que haga nuestro "ALGO".

Bueno, hay muchas, pero muchas cosas más de las que podría poner ejemplos pero ese no es el objeto de este contenido. Lo que quería es mostrar que la programación no es nada del otro mundo, más bien es TODO de este mundo por que como vimos todo lo que hacemos en nuestras vidas cotidianas lo podemos implementar en programación, la única LIMITAN TE es nuestra imaginación.

Ya como ultimo punto quiero comentar algo, muchos me pueden decir que esto es lo más fácil del mundo,
que lo difícil es meterte con un lenguaje de programación y eso es respetable cada quien tiene su punto de vista. Pero yo creo que la parte difícil de la programación es saber cuando combinar los diferentes tipos de ciclos, con los diferentes tipos de condicionales, cuando utilizar funciones etc. en pocas palabras lo difícil es tener una buena lógica de programación, meterte con un lenguaje de programación es tan difícil como preguntarle a Google lo siguiente


  1. cómo hacer un condicional en java 
  2. cómo hacer un condicional en C#


  1. cómo hacer un ciclo en java
  2. cómo hacer un ciclo en C#


  1. cómo hacer herencia en java
  2. cómo hacer herencia en C#
Bueno ya me entendieron la idea.

Nota: Quiero aclarar que meterte a programar (en un lenguaje de programación) tampoco es tan fácil y mucho menos es para cualquier persona, saber en profundidad todas las características de un lenguaje de programación es difícil (Esta es la parte que requiere mucho esfuerzo) pero todo esta en la Web y casi para todo "San Google" nos tiene la solución, simplemente hay que ser dedicados y tener claro que esto es lo que nos gusta hacer.  

También quiero aclarar que hay demasiadas cosas que no toque en este articulo, pues  una persona que sepa de programación se va a dar cuenta de que son cosas muy superficiales las que toque, lo único que pretendía es hacer ver a aquellos que se inician es este mundo que no es "NADA" del otro mundo, y que les espera un largo, muy largo camino por recorrer.

Por ultimo pido disculpas por la mala redacción que pueda tener, es el primer post que creo ¡se que esto no es excusa para no entregar cosas de calidad! pero les aseguro que me esforzare más para una siguiente entrada. 

Por supuesto que todas las criticas son bienvenidas. 


Gracias por leerme.