miércoles, 29 de agosto de 2012

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 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.

No hay comentarios:

Publicar un comentario