Ingeniería en Desarrollo de Software

Programando (programming)

Hace mucho que no había escrito en este blog. La razón es que había abandonado el intento de aprender a programar. Sin embargo he regresado y tengo muchas cosas que contar. Los voy a poner al día y después haré algunas entradas particulares relativas a lo que exponga en este post.

programan do

Pues bien, me decidí a volver a la programación por instinto, por gusto. He intentado muchas veces programar, pero ¿saben? La programación es difícil, dura, tediosa. He leído a varias personas que se convirtieron en programadores exitosos, que hablaban de esto mismo. Incluso tengo amigos que dicen que la programación es tediosa. Tienen razón, sin embargo me decidí a aprender. Yo sabía que en el tiempo que no había programado algo debía haber pasado y claro que pasó, surgieron muchos recursos nuevos para aprender a programar de manera más efectiva, menos tediosa e incluso hasta divertida. Revisando testimonios de programadores encontré algunos sitios dedicados al asunto que ya probé: http://www.codeacademy.com, http://www.teamtreehouse.com, http://www.codeschool.com y http://www.codeavengers.com.

En otro post hablaré de estos sitios, hoy les diré que me renovaron el gusto por la programación y es por una sencilla razón: la calidad de los maestros. Inicié mi primer intento de «regreso» en un sitio diferente a los que mencioné, y fue http://www.coursera.org. Coursera es un sitio donde muchas universidades del mundo imparten cursos online. Inicialmente me enrolé en un curso de temas científicos, en otro de temas demográficos y dos relativos a la programación. He de decir que no terminé ninguno pero los relativos a la programación me hicieron recapacitar. Después buscando más fue que encontré los sitios que ya mencioné arriba.

Ahora bien, hablaba de la calidad de los profesores. He mencionado en otras entradas que soy alumno de la UNAD y que en dicha universidad curso la carrera de Ingeniería en Desarrollo de Software. En la UNAD uno entra a las lecciones y hace las tareas y exámenes que se piden y salvo porque es a distancia, el sistema es muy similar al clásico de universidad. He llevado algunas materias de dudosa calidad y lo relativo al software es bueno a secas pero podría ser mejor. Aquí es donde se separan esos sitios que mencioné arriba de todo lo demás. Estos sitios de verdad están comprometidos con que uno aprenda a programar y no sólo eso sino que existe una férrea competencia entre ellos, lo cual redunda en mejor contenido para los alumnos. Cada sitio cuanta con maestros que a su manera se desviven por enseñar lo mejor que pueden. En estos sitios aprendí en un mes lo que nunca aprendí en mi estancia en la UNAD y de paso en ningún libro. Nada de tonterías, directo a programar, a experimentar, a observar los resultados. Pueda ser que en este punto ya sentía la determinación por aprender código y esto afectó mi forma de aprovechar las clases, pero a esta determinación contribuyó la determinación de los creadores de estos sitios por enseñar código a sus alumnos. Cada uno de estos sitios, como proyecto, tiene sus propias características, pero detrás de ellos está la gran pasión por lo que hacen.

Les decía que me decidí y estos sitios me cayeron como anillo al dedo. Por primera vez no me desanimé, no me atoré en nada, todo pude resolverlo. De hecho pude lograr una racha de 30 días sin dejar de escribir al menos unas líneas de código. Estos 30 días me metieron de lleno en la dinámica del que desarrolla software y me hizo sentir que en efecto, tenía madera de programador y que el tedio para mí no era tal y que si había desertado antes una y otra vez no era por falta de ganas sino era por ausencia de buenos maestros y buenos contenidos. Pero ya no pasa eso más ya que hay gente buenísima por ahí tratando de que aprendamos código.

Sin duda que esta etapa en mi carrera como desarrollador de software es de las mejores que he tenido y apenas estoy comenzando.

May 19, 2014 Posted by | coding | , , , , , , , , | Deja un comentario

Lógica de Programación (parte 1)

Fui a comprar unas cosas al centro de la ciudad y aproveché el trayecto para leer el otro librito de programación que ya había mencionado. Es un poco más amplio y habla más en general de la programación. Se especializa en el establecimiento de la lógica de programación, paso antes de escribir el código. Pienso que es correcto el que me enfoque en querer dominar la lógica de la programación, es como aprender teoría musical, composición, relaciones entre sonidos, entre acordes, todo eso.

El libro del que hablo se llama Iniciación a la Programación. Lógica y Diseño y está escrito por Joyce Farrel. He leído parte del capítulo 1 que se llama Visión General de los Ordenadores y la Lógica.

Sé que puede parecer arduo aprender lógica, aunque para el caso de programación no se aprenden silogismos ni esas cosas, más bien se aprende a plantear un problema, a ver sus partes, sus interrelaciones, a plantear una solución, a probarla. Seguramente muchos de mis futuros compañeros tratarán de evitar esta parte pero pues allá ellos, lo mismo ocurre en todos los campos del conocimiento, estoy seguro, sobre todo en las ciencias sociales. Yo como estudiante de las ciencias sociales me topo muy seguido con planteamientos románticos pero absurdos en torno a la sociedad. Esos planteamientos no pasan ni las más mínimas leyes lógicas, ya esbozadas por Parménides el Grande hace más de 25 siglos. De verdad que mucho esfuerzo, mucha hambre y mucha sangre se ahorraría la humanidad si los supuestos científicos sociales se pusieran a analizar lógicamente sus teorías. Del lado de la programación no hay falla, o sea, cuando te contraten como programador o das la solución o no la das, es como saber inglés, o lo sabes o no. Puede ser que tengas un título, un certificado, una bendición, pero lo debes demostrar y una de las cosas que tiene la programación es que además de la comprobación lógica tenemos la comprobación empírica (funciona tu programa o no). Bueno pasemos al capítulo 1 del libro. Antes debo decir que si escribo lo que voy aprendiendo es fundamentalmente para que yo mismo lo vaya estudiando y mi aprendizaje sea significativo, además de que cuando me pidan los conceptos sólo haré copy/paste y pues no podrá decirme el facilitador que lo copié porque no te puedes copiar a ti mismo.

Tips interesantes del libro:

  • «… para poder escribir buenos programas, debes aprender primero alguna terminología básica sobre ordenadores, y luego debes construirte una base firme en la lógica de la programación» p. 5.

Ni qué decir, es como en economía, la gente común ve los libros de economía, llenos de números y planteamientos matemáticos y se imagina que es mucho muy difícil aprender los fenómenos del mercado pero nada más lejos de la realidad. Si aprendes los principios básicos de la acción humana, puedes analizar prácticamente cualquier fenómeno del mercado y llegar a conclusiones correctas. Una ley importante en economía es la «ley de la utilidad marginal decreciente». Por sí misma esta ley explica la mayoría de los fenómenos del mercado. Para una comprensión rápida chéquense la Nueva introducción a la escuela austriaca de Gabriel Zanotti.

  • «El software de ordenador consiste en odas las instrucciones que controlan la entrada de los datos, cómo se procesan y la forma en que salen o son almacenados» p. 7.
  • «Las instrucciones para la máquina se escriben en un lenguaje de programación […] Algunos programadores trabajan exclusivamente en un lenguaje; otros conocen varios y utilizan el que parece más apropiado para la tarea en cuestión» p. 7.

Mucho tiempo me debatí en qué lenguaje de programación aprender. Mi conclusión con respecto a esto y después de haber leído cientos de foros es que depende qué quieras hacer. En la ESAD aprenderemos al principio C++ y pues mejor me voy por ahí. Es mucho más importante poder plantear la solución lógica a un problema de programación que aprender un lenguaje aunque en primera instancia parece al revés. Esto es algo así como la serie House; en ella el dr. House puede que no sea tan hábil como sus colaboradores para tareas muy específicas en la medicina, pero él es el gran generalista que tiene la visión para poder reunir los cachos de información que tiene de las enfermedades junto con las opiniones de expertos y eventualmente saber qué mal le aqueja al enfermo y en su caso determinar una cura. Algún día atraeré hacia mí un grupo de programadores y tal vez otros especialistas, entonces es mejor que aprenda muy bien las bases, mucho mejor que cualquier otro. Otra cosa que sé muy bien es que siempre siempre siempre siempre se necesita un equipo, no hay quien salga solo y espero encontrarme a gente mucho muy superior a mí en campos específicos de la programación y de redes y de contabilidad y de diseño y poder reunir todos los esfuerzos para como yo digo, sólo me den el pase de gol.

  • «No importa qué lenguaje de programación utiliza un programador: el lenguaje tendrá reglas que gobiernan la utilización de las palabras y la puntuación. A estas reglas se les llama sintaxis del lenguaje […] A menos que la sintaxis sea perfecta, el ordenador no puede interpretar el lenguaje de programación en absoluto». p 7.

Las máquinas no son como los humanos, a veces decimos cosas en las que se nos patina un poco la sintaxis o escuchamos cosas donde la sintaxis falló, también donde falla la ortografía, pero no obstante sabemos qué es lo que quisimos o quiso decir alguien. El ser humano tiene una súper destreza para interpretar; nuestra mente constantemente está interpretando el medio. Estaba leyendo un libro que decía que recibimos unos 11 millones de datos por segundo. A los ordenadores hay que hablarles claro, exacto.

  • «Cada ordenador trabaja con la circutería, que consta de millones de interruptores on-off. Cada lenguaje de programación utiliza un fragmento de software para traducir el lenguaje de programación específico al lenguaje de la circutería on-off del ordenador, o lenguaje máquina. El lenguaje de traducción de software se llama compilador o intérprete, e indica si ha utilizado el lenguaje de programación incorrectamente. Por esto, los errores de sintaxis son relativamente fáciles de localizar y corregir.». p7.
  • «Para que un programa funcione correctamente, usted debe proporcionar las instrucciones al ordenador en una secuencia específica, no debe olvidarse instrucciones, y no debe añadir instrucciones extrañas. A esto se le llama desarrollar la lógica del programa».
  • «Los errores lógicos son mucho más difíciles de localizar que los errores de sintaxis; es más fácil darse cuenta de si huevos está escrito incorrectamente en una receta que decir si hay demasiados huevos o se han añadido demasiado pronto». p. 7.
  • «La lógica es la misma en cualquier lenguaje» p. 8.

Esto que parece tan lleno de sentido común en muchas áreas del conocimiento se olvida. Ahí tienen al pobre Marx diciendo que hay varias lógicas y que el capitalista tiene su lógica y que el proletariado tiene otra. A esa teoría de las varias lógicas se le llama polilogismo y no es más que la salida de Marx para no ver que su sistema se colapsaba porque no pasaba ni las más mínimas reglas de la lógica, ¡qué granuja! Lo malo es que muchos le compraron ese discurso tan barato.

Seguimos en la segunda parte.

enero 29, 2012 Posted by | Lógica de Programación | , , , , , , , | Deja un comentario