Ingeniería en Desarrollo de Software

Lógica de Programación (parte 2)

«Una vez que se han introducido instrucciones en el ordenador y traducido al lenguaje máquina, un programa se puede arrancar o ejecutar.» p 8.

«La tarea de un programador se puede dividir en seis pasos de programación:

1. Entender el problema.

2. Plantear la lógica.

3. Codificar el programa.

4. Traducir el programa a lenguaje máquina.

5. Probar el programa.

6. Poner el programa en producción.» p. 10.

Entender el problema es importante no sólo para cuestiones de programación sino para cualquier tipo de cuestión. Entender el problema es más de la mitad del proceso para su resolución. Los programadores cobran por hacer programas que ayudan a otros a realizar ciertas tareas obteniendo ciertos resultados pero no es raro encontrarse con que el cliente del programador no sabe en sí qué quiere obtener. El programador es igual en cierto sentido que otros diseñadores, le va dando consejos al cliente así como va también tratando de entenderlo. Nosotros como futuros programadores tenemos que ser muy cuidadosos en este punto porque el cliente es el que paga. Hay qué hacer lo que el cliente pida ni más ni menos.

En lo que toca a plantear la lógica del programa es cuando se ve quién es el verdadero programador. Aquí hay que plantear los pasos que se van a seguir para la resolución del problema como el orden de ellos. Es lo que muchos llaman como «desarrollar el algoritmo» que es una secuencia de pasos necesaria para resolver un problema. Hay dos formas típicas de plantear la lógica del problema: con pseudocódigo y con diagramas de flujo.

Aquí el programador no se preocupa por la sintaxis, no se preocupa por el lenguaje de programación, sólo se preocupa por plantear la secuencia de sucesos que le llevarán a los datos de salida deseados dado unos determinados datos de entrada.

Codificar el programa se refiere a escribirlo en un lenguaje de programación. Aquí si que seremos cuidadosos en la sintaxis.

Para traducir el programa a lenguaje máquina se utiliza un traductor (como en el caso de los lenguajes JAVA o Basic, «sólo gracias a que alguien ha escrito un programa traductor (un compilador o intérprete) que cambia el lenguaje de alto nivel (similar al inglés) con el que el programador escribe a lenguaje de bajo nivel que el ordenador entiende». Un compilador no razona, vamos que no siempre sabe qué le queremos decir ni cuál sería la corrección adecuada en caso de tener un error en la sintaxis, pero sí sabe cuando esta última tiene algo erróneo.

Por último hay que probar el programa. Puede que nuestro programa esté libre de todo error de sintaxis, pero como ya dijimos, puede que aún así tenga errores lógicos y entonces nos dará algo a la salida diferente de lo que queríamos. Hay que probar el programa con muchos datos y hay que saber elegir qué datos utilizaremos para probar.

Y ya una vez probado el programa, el cliente lo podrá usar. Este proceso puede ser de un instante o tardar meses o años, cuando hay que sustituir a programas viejos en grandes organizaciones y hay que hacer todo tipo de adaptaciones, incluida la incorporación de nuevo hardware.

 

 

enero 29, 2012 Posted by | Lógica de Programación | , , , , , , , , | 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