Archivo mensual: noviembre 2009

Agradecimiento

Como ustedes saben, pocas veces he usado este blog para ventilar asuntos personales que no deberían estar expuestos al voyeurismo de la red de redes; sin embargo, haré una excepción para notificar que el trabajo “Escribir desde la informática: una apreciación” resultó ganador en la categoría de ensayo en el VII Premio Universitario de Cuento, Poesía y Ensayo 2009, convocado por la UABCS.

Agradezco en estas líneas a todas aquellas personas, que en el pasado y en el presente hicieron posible la causa y el motivo que permitieron que un servidor se animara a materializar en el papel su apreciaciòn sobre el oficio de la informática.

Otro post más desde las costas de la Península Barataria.

PS. También tuve la oportunidad de ser entrevistado para el programa “Visión Autónoma” que se transmitirá el próximo día 20 a las 21:30 horas en el canal 8 local. Le encargo a un buen samaritano me haga llegar el video.

 


Escribir desde la informática (3 de 3)

(continúa)

Por ello, puede decirse también que el lenguaje de programación, entendido desde la experiencia del informático cumple con una función dual: la de proporcionar al usuario un canal entre el mundo tangible, expresada en la realidad mental de los modelos lógicos y la representación intangible de la solución al problema, así como la de proveer al usuario de una serie de respuestas inteligibles a la realidad, cuya génesis son los chispazos de unos y ceros citados páginas atrás.

En los compiladores formales de la mayoría de los lenguajes de programación, se pueden distinguir dos componentes que ayudan al procesamiento del texto: el analizador lexicográfico y el analizador sintáctico. El analizador lexicográfico cumple con la función de revisar la “ortografía” de lo que se escribe, mientras que el analizador sintáctico se encarga de la “gramática” y la coherencia respecto a la lógica que permite el funcionamiento adecuado de las reglas del juego.

Si establecemos así que un lenguaje de programación promedio, que cuenta con un léxico exótico provisto de ortografía y gramática, se rige mediante cánones y procedimientos para su uso,es comprensible para un determinado grupo como puede ser una lengua determinada para los hispanoparlantes o los angloparlantes y, finalmente, su uso genera resultados análogos a los del ciclo tradicional de comunicación, ¿no es semejante acaso a “nuestra” manera de comunicar la realidad?; el doctor Humberto González Galván en su ponencia “Presente-pasado y presente-futuro: filosofía y formación en Baja California Sur”[1] señala una distinción entre el hieros-logoe (contar con números) y el hieros-legain (contar con palabras) como el “divorcio” entre una visión lógica del mundo y una visión mitológica o imaginativa del mismo, a raíz del contexto histórico de la invasión doria a Grecia. Este hito histórico, huelga decir, derivó en el cuestionamiento entre los griegos sobre su realidad mitológica y la posterior separación entre la fantasía y el número, reservando la primera a las fábulas y epopeyas del imaginario popular.

Empero, con el paso del tiempo diversos autores advirtieron sobre la necesidad de una reconciliación entre el hieros-logoe y el hieros-legain, en el contexto del creciente proceso de deshumanización derivado de la revolución industrial y el Deus ex machina. Quizá sin proponérselo, el lenguaje de programación se ha erigido desde el punto de vista informático-humanista en el nicho más representativo de la convergencia entre contar con palabras (la imaginación y la creatividad de por medio) y el contar con números, dada la inevitable raigambre tecnificada de la computadora.

Hasta aquí hemos abordado el arte de escribir sólo desde el horizonte de la interacción hombre-máquina, pero ¿la génesis real del proceso empieza en el “paso cero” propuesto por Levine o comienza a gestarse antes? Dicha incógnita, empero, en muchas ocasiones es pasada por alto en el proceso universitario del aspirante a desarrollador. La causa primera de nuestro aprender a leer y escribir comienza, evidentemente, en la formación de estructuras de pensamiento que nos permiten identificar los conceptos que nos rodean y así comprender al mundo; retomando el ejemplo de la palabra “gato”, sólo puedo tener la idea de qué es cuando dispongo del molde mental correspondiente, pero con el tiempo el gato dejará de ser sólo el felino doméstico para ser concebido también como el instrumento para cambiar la llanta de un automóvil o un término despectivo. Por tanto, el concepto se preña de ideas y viceversa, la idea suele remontar a un concepto, creando así una dicotomía que ha sido objeto de estudio de los más diversos eruditos de la lengua.

En el contexto de la informática, tanto la presente como la pasada y por supuesto la futura, la unidad de medida en la balanza del quehacer del desarrollo de software trasciende la frialdad  de los bits y los bytes. La solución, parafraseando a Giordano Bruno, se erige como la causa, el principio y el uno [2] como el asunto inicial del proceso de hacer el programa o la página Web, como base para el proceso de resolución de la duda o la problemática planteada y como molde unívoco donde se plantea la culminación del trabajo. Así, la solución se levanta conceptualmente en forma de una idea. ¿Cual es la necesidad final del cliente? La respuesta, casi siempre suele ser variopinta y suele ir desde la simple proyección personal hasta la necesidad pecuniaria de lucro, pero el concepto que engloba la idea de la solución es el mismo del que se nutre la concepción capitalista del mundo: la globalización.

En el siglo XXI, la globalización se ha erigido como uno de los motores centrales de las actividades económicas y sociales del ser humano, expresado en conceptos de cercanía como los de “aldea global” de Mc Luhan o el de “convergencia” en las comunicaciones. Dicha explosión, se debe en gran parte a la creciente automatización de los procesos productivos, primero en la milicia, luego en el trabajo cotidiano y por último en la esfera de nuestra vida diaria.

Así, en aras de deshacer el mar a puñetazos y en una errada lógica de que rapidez implica necesariamente eficiencia y eficacia a la vez, se ha enquistado en el programador nonato una falsa idea sobre el cómo programar, puesto que se aborda más desde el punto de vista técnico (el hieros-logoe) la solución de los problemas, dejando de lado la paciencia y el arte de orfebrería que en realidad debería tener (el hieros-legain); si hacemos un rápido recuento de las cosas que han revolucionado la ciencia y la tecnología han tenido históricamente más de imaginación o mito que de técnica pura desde su nacimiento.

La propuesta, por tanto, consiste en formar la reconciliación entre el contar con números y el contar con palabras en el quehacer informático mediante la reimplantación de esquemas más cercanos a la filosofía pura y racional que al simple lassez-faire emergente que ha puesto en boga la globalización. A final de cuentas, si observamos a nuestro alrededor podemos constatar como los castillos de naipes creados por la panacea de dejar todo al libre albedrío del mercado se están yendo abajo. Si contamos con la herramienta de unión involuntaria del discurso del mito y el logos en los paradigmas de programación que hacen que la mayoría de los dispositivos electrónicos para nuestro divertimento funcionen, la revolución del software en nuestra vida diaria debería aprovecharse más allá de la simple funcionalidad y pasar a ser una actitud de comprensión del mundo tangible fuera de la computadora, para abandonar el tradicional banquillo del escriba y enarbolar la bandera del programador racional, que se apropia de lo mejor del mundo tangible y el intangible, y por tanto, capaz de volar al mismo tiempo con las alas del Pegaso de la fantasía y los pies del Mercurio alado de precisión matemática y exacta.


[1] González Galván, Humberto. “Presente-pasado y presente-futuro: filosofía y formación en Baja California Sur”, Ponencia presentada en el 3er Encuentro Estatal de Antropología e Historia, en La Paz, Baja California Sur, 23 de octubre de 2009. El trabajo fue facilitado por el autor.

 

[2] Una de las obras de Giordano Bruno (1548-1600) tenía este nombre: Causa, principio y uno.


Escribir desde la informática (2 de 3)

(continúa)

El oficio del informático, así podría dividirse en dos clases: como aquellos que se limitan a ser escribas de léxicos tan exóticos como híbridos del inglés y otros, los menos, que no sólo son escribas: tratan de aprehender lo que están haciendo. Esto se debe, en gran medida , a una de las más graves vicisitudes del transcribir un software: el tiempo. Los que sabemos como se hace un programa y los pasos a seguir, en la práctica muchas veces desdeñamos la importancia de un análisis somero sobre el problema a tratar, debido a que los problemas que se plantean en el ambiente universitario son muy distintos a lo que se espera fuera de las aulas: se da más prioridad a salir del paso y cumplir con el requisito que a comprender qué es lo que se pide.

Por ello, el informático, debido a la naturaleza de su trabajo, debería ser más orfebre que obrero, puesto que si un jarrón o una escultura requieren de tiempo y de paciencia para su culminación, el software de manera análoga tendrá que ser provisto del ingrediente original propio de las obras de arte: la creatividad, aunado a la técnica y al método. Para subsanar el obstáculo del tiempo, connotados académicos en la ciencia de la computación, crearon una especie de recetas de cocina que conocemos como metodologías o pasos a seguir.

Guillermo Levine en su obra “Computación y programación moderna” hace mención de un “paso cero” en la creación de software: entender el problema o la situación1,esto es, previamente a pasar a la construcción del programa tratar de establecer los parámetros sobre los que se va a trabajar con el fin de lograr un panorama más amplio. Parafraseando a las ideas de Platón, formar “el molde” sobre el cual vamos a imaginar, comprender y después resolver la problemática que se nos propone.

Posteriormente, el autor plantea hacer un análisis, ya en función de variables y constantes propias de la programación lineal, ya en función de los objetos y procedimientos que propone la POO, cuyo resultado es un esbozo casi siempre esquematizado del cómo resolver el problema. En este paso, huelga decir que se asume que se ha imaginado y comprendido lo que se desea hacer; lo que sigue es en sí mismo un juego de idas y vueltas: el esquema se hace de manera inteligible a un determinado software compilador, que al momento de ejecutar el programa, traduce del compilador a “lenguaje intermedio” y de ahí, a unos y ceros el resultado final, requiriendo incluso de un desdoblamiento hacia el compilador y viceversa. Programa habemus.

Y de ahí surge la paradoja del oficio: si sabemos que la aplicación de prácticamente cualquier ciencia lleva consigo el inevitable sendero de seguir un método que, evidentemente, implica tiempo y esfuerzo, ¿no es una ironía que gracias al mismo tiempo muchas de las veces el método no se siga al pie de la regla?

Hay muchas metodologías al respecto de como se debe hacer un software, tantas que un espacio como éste sería insuficiente para abarcar todas, pero huelga hacer mención de dos técnicas que han estado en boga desde hace algunos años: la programación extrema (o eXtreme Programming en inglés) que en teoría pinta como para facilitar las cosas al informático promedio al dar prioridad al hacer sobre el indagar, pero en la práctica considero una apuesta arriesgada, debido a que se puede lograr funcionalidad en el software sacrificando el “paso cero” debido a la premura del procedimiento, y si un programa cojea del pie del “paso cero”, todo lo demás será en vano.

La otra técnica, cuyo uso particular se centra en el desarrollo de sistemas en Web es el ciclo de vida denominado sashimi, en analogía a la presentación del sushi en forma de rodajas que se traslapan unas con otras. Así, los diferentes pasos del procedimiento suelen mezclarse unos con otros, pudiendo hacer el “paso cero” junto con el análisis e inclusive codificar durante el diseño conceptual, por lo que sobra hacer mención de las serias dificultades que implica el programar hasta la anarquía.

Tanto la “extreme programming” como el ciclo de vida sashimi, ejemplifican de manera contundente las desventajas del hacer sobre el indagar, ya que no sólo el tiempo se muestra como obstáculo, sino que entra en juego un factor más: la confianza entre dos partes, la que toma las decisiones sobre lo que quiere, encarnada por el cliente y la otra que debe cubrir los requerimientos, encarnada en el programador de carne y hueso. ¿Qué pasa cuando no hay acuerdo entre lo que se quiere y lo que se tiene?

Por consiguiente, no debe concebirse la metodología como una panacea para eficientar el proceso de escribir, sino inducir al programador a hacer previamente un análisis detallado y tomar de ahí los elementos contingentes para plasmar, en un léxico exótico, lo que se desea hacer. El detalle es que, de acuerdo a Levine, en la formación superior del informático este es un aspecto que se cuida poco, dando prioridad al “codificar” cayendo en el síndrome del simple escriba sobre el “programar” mediante una serie de pasos rigurosos.

Otro aspecto a señalar tocante al quehacer informático es el siguiente: ¿Dónde empieza el desarrollador a aprehender el léxico en el que está trabajando? En el lenguaje de programación, como en la vida, puede haber más de una manera de decir las cosas. ¿Cómo determino yo, programador, que debo usar un “for” en vez de un “while” para hacer y dejar hacer que una instrucción se ejecute correctamente?; la elección quizás se reduzca a una mera cuestión de estética o de eficiencia. Esta constituye una analogía crucial entre el escribir con dígitos y el escribir con palabras, puesto que en el desarrollo de software hay más de una vía para expresar una idea, al igual que en el ámbito humano.

Tomemos como ejemplo la palabra “gato”. Dicha palabra por sí sola me remitiría al concepto que muchos de nosotros tenemos de estos animales: del género felino, domesticables, que maullan, entre otras características. Aunque también alude al instrumento para cambiar las llantas de los automóviles, hay una exigencia de por medio: representar, mediante una palabra, el mismo concepto del gato como felino; así tenemos las palabras minino, micifuz, etc.

En la programación promedio, nuestro “gato” sería aquello que el cliente nos solicita que haga o deje de hacer el software o página de Internet que nos ha encomendado. A diferencia de las metodologías, que tienen en común un trayecto casi semejante para hacer las cosas, el programador cuenta con el libre albedrío de llegar al quid de lo que se pide por el camino que desee, siempre y cuando cuente con el respaldo de los cánones del lenguaje que está explotando.

Finalmente, para agotar el punto relativo a las experiencias del proceso de programación, cabría hacer mención también del como el aspirante a desarrollador aprende a codificar las instrucciones, siendo este punto sin duda uno de los más cruciales para llevar a buen término en el arte de plasmar en el léxico exótico las soluciones. La interpretación que se puede construir respecto al lenguaje, a diferencia del ámbito formal de la comunicación escrita, es unívoca y cerrada, lo que constituye una peculiaridad de la programación por si misma. Tomo otro ejemplo trivial: si yo digo “el perro azul corre por la pradera”, el léxico exótico reconoce varias clases de perros pero ninguno azul, por lo que descarta la expresión. Así, el lenguaje de programación se asemeja al humano en la construcción de vías para decir las cosas, pero deja de lado la metáfora, quedando sólo en el plano de la realidad.

 


Escribir desde la informática (1 de 3)

El presente post es un intento de ensayo para efectos de un concurso interno que habrá en la UABCS de expresión literaria. Por lo pronto, el lector podrá hacer 3 distinciones:

1. Contexto histórico: el número versus la palabra

2. La actividad del informático: el quehacer al escribir el software

3. La programación como cohesión de la palabra y el número

A continuación, la primera parte y el resto en los posts siguientes.

El proceso de la expresión oral y escrita en la vida real conlleva una serie de reglas y cánones a los que, por regla general, hay que apegarse para una mejor consecución de las ideas a través de los significados. Sin embargo, hay otras clases de expresión en nuestra vida diaria, entre ellas una con la que estamos en contacto durante casi todo el tiempo: el software.

El software, a imagen y semejanza de nuestra expresión real, también se sirve de reglas y parámetros sintácticos cuyo resultado final es el programa, la página Web, el mecanismo, el funcionamiento tangible de la tecnología entendida en términos de hardware. ¿Es análoga la generación de ideas a partir de la máquina a nuestra percepción de ideas a partir de significados?

Comencemos, literalmente hablando, con la piedra angular donde el ser humano comenzó a construir su particular visión del mundo: las cavernas. No podría entenderse nuestra concepción de la historia sin escritura, por lo que hay un antes y un después desde que el homo sapiens sapiens plasmó escenas de caza o recolección en las paredes o simplemente comenzó a esbozar el concepto de Dios. De ahí surgió otra necesidad: la de cuantificar, con conceptos fijos más que con ideas al vuelo los mamuts que había cazado o los frutos producto de su faena diaria. Con la idea de cuantificar, surgió el número.

Una tarea relativamente sencilla en un principio, que podía hacerse con la suma de los dedos de las manos, y en casos extremos también los de los pies, terminó haciéndose cada vez más compleja y le fueron insuficientes al hombre los instrumentos con los que contaba en ese momento, por lo que, a la par del desarrollo del arco y la flecha y los aditamentos de labranza, se inventó para si mismo un sistema para expresar los dígitos. Por tanto, el alma mater del cómputo moderno no necesariamente se le atribuiría a la Lady Lovelace del XIX, sino a cualquier caverna perdida en el anonimato de los tiempos.

Después de milenios de historia, se inicia la transición de la piedra a materiales más maleables, tales como el cuero o el papiro hasta llegar al papel. Al mismo tiempo, la escritura comenzó a adquirir un nuevo orden: de los dibujos primitivos se pasaría a sistemas establecidos de caracteres, y en muchas culturas occidentales hasta el alfabeto.¿y la otra inquietud, la de contar? También se incorporó al concierto de las revoluciones de la época mediante otra clase de caracteres, sólo que ya no expresaban ideas, sino algo más pragmático: del dígito, cuyo padre eran los dedos de la mano etimológicamente hablando se daba el salto al número, que al igual que Cronos en el mito de la Teogonía, tomaría el poder del Júpiter del pre-conocimiento matemático1. Se comienza a distinguir, pues, entre el contar con palabras y el contar, así a secas, con números.

Como muchas cosas en la vida, las definiciones de contar fueron víctimas de la metamorfosis de los tiempos, y el uso del papel y la tinta por si mismos no iba a llenar la inquietud que siguió: el hacer los procesos de una manera más expedita, no sólo por rapidez y conveniencia simple, sino para construir una evolución de las ideas que expresaban. Gutenberg y Pascal, respectivamente, harían posible la evolución mediante la revolución expresada en la imprenta y la Pascalina.

¿Qué seguiría después? La historia es de todos conocida: el triunfo de la Pascalina como una de las bases para la revolución industrial, y posteriormente, el inicio de la era conocida como “de la información”. A pesar de que se cree, en este contexto, que la escritura parecía quedarse desfasada frente al número, ambas convergerían en un instrumento más: la computadora. Así mismo, surgiría otro Zeus que derribaría el poder del número desnudo, el dígito, pero ya no en función de los dedos de las manos, sino en señales degeneradas a unos y ceros.

Otro post más desde las costas de la Península Barataria.