Aprender a programar

“Quiero aprender a programar”, es una expresión que he visto en muchísimos lugares, y en el puerto (digital) ya he leído varios posts de gente pidiendo consejo para ello: por donde arrancar, que lenguaje, que paradigma, que metodología utilizar, etc… En este post, pretendo tirarles unas líneas para que al menos sepan por donde arrancar y no se caigan en el intento.

Primero: hay mucho, muchísimo por aprender. Y todo el mundo cree saber o estar en condiciones de indicarle al mundo lo que debe aprender (incluso yo, por esto este post😀 ). Pero bueno, cada quien adaptará su aprendizaje a su ritmo, sus ganas, su inteligencia y su tiempo (no necesariamente en ese orden).

Vamos por partes dijo Jack. Programar es simplemente indicar una serie de pasos que la computadora debe realizar para lograr una tarea. Es como escribir una receta: primero haces esto, luego aquello y finalmente lo otro. Y puede haber repeticiones fijas (agregar 3 huevos, o repetir 3 veces agregar un huevo) o condicionales (mientras que el merengue no esté bien blanco, batir; luego, agregar el azucar) y tareas que se realizarán si se cumple alguna condición (si el merengue no ha levantado bien, agregar una pizca de sal). A esta secuencia de pasos se lo conoce como algoritmo.

¿Parece simple no? Bueno, lo es. La única diferencia entre lo que tenemos en el párrafo anterior y los programas reales es que estos pasos se deben escribir en un idioma que comprenda la computadora (en realidad, que comprenda un programa y lo traduzca a algo que la computadora entienda: esto se llama compilar/interpretar). Y aquí comienza la milonga; los lenguajes de programación nos permiten especificar las órdenes que queremos que se ejecuten, el orden (quizás pueden ser tareas paralelas), controlar condiciones de error, etc…

Hay muchos, realmente muchos lenguajes de programación; algunos de propósito general (sirven básicamente para hacer casi cualquier tipo de programas), y otros más específicos (por ejemplo, para resolver problemas matemáticos, para realizar simulaciones, para programar chips embebidos de aparatos – como un lavarropas o una tv-, etcétera). Una aclaración: hacer páginas web no es programar. El lenguaje HTML no es un lenguaje de programación, sino que sirve para descipción de contenidos. Aquí les dejo algunas recomendaciones:

Recomendación 1: desde ya, conviene empezar por un lenguaje de proposito general.

Recomendación 2: arrancar por uno más bien básico. Pascal es una muy buena opción, sino C puede ser una alternativa viable. El punto aquí es tomar uno que no tenga demasiados chiches, pues será muy facil perder el foco y dispersarse con cualquier cosa; por ejemplo, Delphi (basado en Pascal), Visual C++ o Visual Basic tienen componentes visuales muy lindos y fáciles de incorporar a nuestros programas, pero de nada nos servirá si no podemos darle un sentido lógico a lo que hay que hacer cuando hacemos clic en el botoncito.

Recomendación 3: Es necesario tener conocimientos de matemática y álgebra (estructuras, conjuntos y cosas así). Hay personas que no opinan lo mismo, pero yo estoy 100% convencido que esto es así; no es necesario ser un matemático experimentado, con los contenidos de cualquier colegio secundario debería alcanzar.

Recomendación 4: Además de la matemática, se debe tener idea de lógica. Conceptos sobre tipos de datos lógicos (booleanos, verdadero o falso, 0 o 1, encendido o apagado), negación, conjunción y disyunción y algunas leyes básicas de la lógica son imprescindibles. Esto se utiliza para escribir condiciones, la base de los programas.

Recomendación 5: Tomar el paradigma secuencial para arrancar. Con el tiempo, verán que se habla mucho de programación orientada a objetos (POO), de programación funcional, programación lógica, programación concurrente, entre otras. Todas tienen lo suyo, y de hecho en la vida real se programa usualmente con alguno de estos paradigmas. Pero para arrancar, es demasiada información junta, y no tiene sentido entrar con esos asuntos a esta temprana altura. Es como querer aprender matemática, y arrancar por derivas e integrales de funciones de múltiples variables.

Recomendación 6: Pensar antes de programar, hacer un diseño modular muy simple, separando el problema en problemas más pequeños (se llama diseño top-down). Por ejemplo:

problema Contruir una casa.

Lo dividimos en problemas menores:

  • contruir las bases
  • contruir las paredes
  • construir el techo.

Ahora tomamos estos problemas y los seguimos dividiendo. Por ejemplo, para contruir las bases necesitamos:

  • nivelar el terreno
  • hacer los pozos
  • rellenarlos
  • dejar que seque bien

Y podríamos seguir… pero creo que se entiende el punto. Dividir todo en módulos, los problemas, los programas, la documentación. TODO! y documentar los programas, al menos con comentarios entre el código.

Recomendación 7: Ir de los más simple a lo más complejo. Nunca es bueno arrancar por lo dificil, ya que será muy facil desmotivarnos.

Recomendación 8: tener mucha paciencia. La informática es una ciencia dura, y como tal a veces es muy dura. Como dicen por ahi, al principio duele pero luego esta bueno.

Recomendación 9: leer, leer y leer. Buscar en foros, documentación, google, wikipedia… Yo recomiendo http://www.puerto-digital.net, tiene dos foros para programación (uno para programación web y otro para programación tradicional).

Recomendación 10: nunca quedarse en los laureles. Siempre hay más para aprender, y es un mundo fascinante. El problema es que hay tanto para aprender que uno se puede marear muy facilmente. Por ejemplo, una vez que sabemos como escribir programas más o menos complejos en Pascal, podemos pasar a Delphi y agregarle cositas visuales. Y luego, podemos aprender POO y utilizar Delphi nuevamente para eso (delphi soporta objetos). Y luego, concurrencia mediante threads, y luego programación web.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: