sábado, noviembre 29, 2008

El juego de los abalorios I

En algunos siglos hemos inventado y perfeccionado el juego de abalorios como una lengua y un método universal para expresar todos los valores y los conceptos espirituales y artísticos y llevarlos a una medida común.
Hermann Hesse, El Juego de los Abalorios

El lenguaje apareció en la infancia de la humanidad, y hasta podríamos decir, no ya que la humanidad creó el lenguaje, sino que el lenguaje creó a la humanidad. Ahora sabemos que los niños ya nacen con cierta predisposición (ya vienen con el cableado, o para usar terminología computacional, ya vienen con el hardware) para hablar un lenguaje (1), y sabemos cual es el área exacta del cerebro donde se ubica esta habilidad, el cerebro de Broca. Un corolario válido podría ser que, si reunieramos un grupo de niños a los que se les evitaría cualquier contacto con el mundo exterior, seguramente producirían su propio lenguaje. De hecho algo semejante ya pasó con el llamado Idioma de Señas de Nicaragua. Obviamente este tipo de experimentos violan todas las reglas de la moral y de los derechos humanos, y no pueden llevarse a cabo de forma intencional. Se supone también que todas las lenguas que se hablan o se han hablado en el mundo provienen de un proto-lenguaje, que posiblemente apareció hace unos 70,000 años en el Africa oriental. Ha sido objeto de mucho estudio como este proto-lenguaje se diversificó hasta formar todos los cientos o tal vez miles de lenguajes diferentes que han existido, algunos ya extintos, y hasta tenemos un referente mitológico muy conocido, la historia de la Torre de Babel.

Esta historia es muy sugestiva. Uno puede ver sin siquiera salir del medio en que se desenvuelve, como la práctica de diferentes profesiones y gremios obliga a sus miembros a comunicarse en lenguajes que son abstrusos para los demás. Los médicos, los ingenieros civiles, los ganaderos y los campesinos y los albañiles y los marineros tienen su propio lenguaje. Los informáticos, además de tener nuestro propio lenguaje para referirnos a cuestiones técnicas de nuestra profesión, pero basándonos en nuestra lengua maternal, como el español o el inglés, llevamos las cosas un poco más lejos. Hemos desarrollado lenguajes que no se basan en los ya existentes de la humanidad, sino en los más abstractos de las matemáticas. Estos lenguajes tienen nombres raros, tales como Java, BASIC, Ruby o C++, y como sus pares de la vida cotidiana, también tienen sus sustantivos y sus verbos, sus sujetos y predicados, su léxico y su sintáxis.

Pueden llegar a ser bastante oscuros. Después de años de familiaridad con uno de ellos, una vez me volví conciente, de repente, de lo complicado que podía ser cuando, mientras tecleaba en mi computadora algo así como

Print #1, " " & tblAux!Fecha & " " & tblAux!clavemov & " " & tblAux!ClavePoliza & " " & tblAux!SucOr & " " & Concepto & " " & Format(Dep, "#,##0.00") & " " & Format(Ret, "#,##0.00") & " " & Format(Inte, "#,##0.00") & " " & Format(tblAux!MontoISR, "#,##0.00") & " " & Format(tblAux!MontoIDE, "#,##0.00") & " "

una amiga que acababa de llegar de visita, escandalizada a mas no poder, me dijo que si eso era mi trabajo, era una cosa de locos. Me pregunto que hubiera dicho si viera algunas de las más complejas sentencias SQL que llegamos a usar en mi trabajo.

Así como el lenguaje español, o para el caso, cualquier lenguaje, les permite a los hombres comunicarse entre si, obteniendo la mayoría de las veces un placer incomparable (la consumación del deseo de expresarse), hasta un gozo estético, así mismo los que usamos lenguajes de computadora obtenemos este mismo tipo de placeres, y algunos más que son vedados para los que no se comunican con las computadoras. El más grande de ellos a mi parecer es el que yo llamaría placer frankensteiniano, el placer de crear un ente que, una vez terminado, probado, limpiadas las impurezas (debug), cobra vida propia y da sus propios pasos, sin ninguna intervención de nuestra parte mas que la mirada atenta y orgullosa. Piensen por ejemplo en un programador que después de teclear unas cuantas instrucciones de un abstracto y lacónico lenguaje, obtiene en su pantalla un listado con los números de Fibonacci, o los factoriales de los primeros enteros, o los primeros cien o mil números primos. Cálculos instantáneos que de ser llevados a mano le hubieran tomado horas, dias o hasta semanas de árdua labor. Se siente uno lleno de una avasalladora sensación de poder.

Aprender un lenguaje de computadora es una labor ardua. Quizá no tanto por aprender el léxico, las palabras necesarias, como cuando aprende uno inglés o francés, sino por acceder, subir, a un nuevo nivel de abstracción. Lo más difícil es lograr esta etapa, deshacerse de la mala costumbre de nuestro lenguaje cotidiano de ser bastante ambiguos. Si tengo hambre yo puedo ordenarle a alguien que ponga un poco de aceite en la sartén y a continuación fría un bisteck a término medio. En el país de las máquinas necesito ser mucho más específico. Cuánto aceite, a que temperatura, y cuánto tiempo hay que cocinar el bisteck, son datos indispensables. También necesitaríamos definir que es bisteck, o hasta que es sartén, que es aceite. No hay espacio para la ambiguedad, todo es matemáticamente exacto. Una vez les dije a mis alumnos de bachillerato que la computación era una rama de las matemáticas. Creo que no pasó a mayores, pero por algunos momentos pensé que me iban a llamar de la dirección, tendría que reportarme a las oficinas centrales, o bien firmar mi renuncia de una vez. Tuve que guardarme mis reflexiones filosóficas para mis adentros (o para cuando tuviera un blog) pero lo cierto es que una buena instrucción matemática, principalmente lo que tiene que ver con ese maravilloso invento árabe llamado álgebra, es indispensable antes de abordar el estudio de estos lenguajes. Subir a este nivel de abstracción es el meollo del asunto. Quizá el alumno ya lo halla logrado con el aprendizaje de las matemáticas, y en esa caso accederá al mundo de la computación como pez en el agua.

Todo este esfuerzo de aprendizaje tiene para mi objetivos claros y definidos y socialmente útiles, pero este punto lo trataré en otro post.

2 comentarios:

Caminante dijo...

Los niños aislados y sin estimulación desarrollan un cerebro atrofiado, neuronas que no se usan, se mueren y se pierden funciones o en este caso no se desarrollan.

Champy dijo...

Woaoooo.

Batallo hasta para publicar una foto en mi blog!!!!

Soy un ignorante asumido.