miércoles, diciembre 03, 2008

Sobre la crueldad de verdaderamente enseñar ciencias de la computación




Edsger W. Dijkstra.

La segunda parte de esta charla denota algunas de las consecuencias científicas y educacionales provenientes de la idea de que las computadoras representan una novedad radical. Para darle contenidos claros a esta asunción, tenemos que ser mucho más precisos acerca de lo que queremos decir en este contexto con el uso del adjetivo "radical". Lo haremos en la primera parte de esta charla, en la cual vamos a proveer evidencia que respalde nuestra suposición.

La manera usual en la cual hoy planificamos para el mañana es en el vocabulario de ayer. Lo hacemos porque tratamos de avanzar con los conceptos que nos son familiares, los cuales han adquirido un significado en nuestra experiencia pasada. Por supuesto, las palabras y los conceptos no encajan precisamente porque nuestro futuro difiere de nuestro pasado, pero las estiramos un poco. Los lingüistas están bastante familiarizados con el fenómeno en el cual los significados de las palabras evolucionan a través del tiempo, pero también saben que este es un proceso lento y gradual.

Es el método más común cuando se trata de lidiar con la novedad: utilizando metáforas y analogías tratamos de vincular lo nuevo con lo viejo, lo novedoso con lo familiar. Bajo un cambio suficientemente lento y gradual, esto funciona razonablemente bien; en el caso de una discontinuidad aguda, sin embargo, el método colapsa: aunque podemos glorificarlo con el nombre "sentido común", nuestra experiencia pasada ya no es más relevante, las analogías se tornan muy superficiales, y las metáforas se hacen engañosas en vez de reveladoras. Esta es la situación que caracteriza a la novedad "radical".

Lidiar con una novedad radical requiere un método ortogonal. Uno debe considerar su propio pasado, las experiencias recogidas, y los hábitos formados en él como un desafortunado accidente de la historia, y debe acercarse a la novedad radical con la mente en blanco, rechazando conscientemente el intento de vincularla con lo que ya es familiar, debido a que lo familiar es desesperanzadamente inadecuado. Uno debe, con una especie de personalidad dividida, tomar una novedad radical como algo desasociado por propio derecho. Comprender una novedad radical implica crear y aprender un lenguaje extraño, el cual no puede ser traducido a nuestra lengua materna. (Cualquiera que haya aprendido mecánica cuántica sabe a lo que me refiero.) No hace falta decirlo, ajustarse a las novedades radicales no es una actividad muy popular, ya que requiere mucho trabajo. Por la misma razón, las novedad radicales no son por sí mismas bienvenidas.

A esta altura, bien se pueden preguntar por qué he prestado tanta atención y he gastado tanta elocuencia en una noción tan simple y obvia como una novedad radical. Mi razón es muy simple: las novedades radicales son tan perturbantes que tienden a ser suprimidas o ignoradas, al punto que la mera posibilidad de su existencia es generalmente negada antes que admitida.

Voy a ser breve en cuanto a la evidencia histórica. Carl Friedrich Gauss, el Príncipe de los Matemáticos pero algo cobarde, sin duda estaba al tanto del destino de Galileo –y probablemente podría haber predicho las acusaciones a Einstein– cuando decidió suprimir su descubrimiento de la geometría no Euclidiana, dejando que Bolyai y Lobatchewsky recibieran las críticas. Es probablemente más revelador ir un poco más atrás, a la Edad Media. Una de sus características era que "razonar mediante analogías" era descontrolado; otra característica era el total estancamiento intelectual, y ahora vemos porque ambas características van juntas. Una razón para mencionar esto es resaltar que, desarrollando un oído entrenado para las analogías no garantizadas, uno puede detectar una gran cantidad de pensamiento medieval hoy en día.

La otra cosa que no puedo resaltar lo suficiente es que la fracción de la población para la cuál el cambio gradual parece ser cualquier cosa menos el único paradigma de la historia es muy grande, probablemente mucho más grande de lo que esperarían. Ciertamente cuando comencé a observarlo, su número resultó ser mucho mayor de lo que esperaba.

Por ejemplo, la gran mayoría de la comunidad matemática nunca ha confrontado la suposición tácita de que hacer matemáticas va a continuar siendo básicamente el mismo tipo de actividad mental que siempre ha sido: los nuevos temas vendrán, florecerán, e irán como lo han hecho en el pasado, pero siendo lo que es el cerebro humano, nuestras formas de enseñar, aprender, y el entendimiento las matemáticas, la resolución de problemas y el descubrimiento matemático van a continuar siendo básicamente lo mismo. Herbert Robbins expone claramente por qué él descarta un salto cuántico en la habilidad matemática:

"Nadie va a correr 100 metros en cinco segundos, sin importar cuánto se invierta en entrenamiento y máquinas. Lo mismo puede decirse acerca del uso del cerebro. La mente humana no es diferente ahora de lo que era hace cinco mil años. Y cuando se trata de matemáticas, debe darse cuenta de que se trata de la mente humana a un extremo límite de su capacidad".

Mi comentario en el margen fue "¡entonces reduzca el uso del cerebro y calcule!". Usando la propia analogía de Robbins, uno puede resaltar que, para ir rápido desde A hasta B, podrían existir ahora alternativas a la de correr que son órdenes de magnitud más efectivas. Robbins rechaza de llano honrar cualquier alternativa al valioso uso del cerebro llamado "hacer matemáticas", exorcizando así el peligro de la novedad radical mediante el simple método de ajustar sus definiciones a sus necesidades: simplemente por definición, las matemáticas continuarán siendo lo que solían ser. Demasiado para los matemáticos.

Déjenme darles un ejemplo más de la desconfianza generalizada sobre la existencia de las novedades radicales y, por consiguiente, de la necesidad de aprender cómo lidiar con ellas. Es el accionar educacional que prevalece, para el cuál el cambio, casi imperceptible, parece ser el paradigma exclusivo. ¡Cuántos textos educacionales no son recomendados porque apelan a la intuición del estudiante! Constantemente tratan de presentar todo aquello que podría ser una emocionante novedad como algo tan familiar como sea posible. Conscientemente tratan de vincular el material nuevo con lo que se supone es el mundo familiar del estudiante. Ya empieza con la enseñanza de la aritmética. En vez de enseñar 2 + 3 = 5, el horrendo operador aritmético "más" es cuidadosamente disfrazado llamándolo "y", y a los pequeños niños se les dan muchos ejemplos familiares primero, con objetos claramente visibles como manzanas y peras, que lo son, en contraste al uso de objetos numerables como porcentajes y electrones, que no lo son. La misma tonta tradición es reflejada a nivel universitario en diferentes cursos introductorios de cálculo para los futuros físicos, arquitectos, economistas, cada uno adornado con ejemplos de sus respectivos campos. El dogma educacional parece ser que todo está bien siempre y cuando el estudiante no se dé cuenta de que está aprendiendo algo verdaderamente nuevo; generalmente, el presentimiento del estudiante es de hecho correcto. Considero como un serio obstáculo la falencia de una práctica educativa en preparar a la próxima generación para el fenómeno de novedades radicales. [Cuando el Rey Fernando visitó la conservadora universidad de Cervera, el Rector orgullosamente aseguró al monarca con las palabras: "Lejos esté de nosotros, Señor, la peligrosa novedad de pensar". Los problemas de España en el siglo que siguió justifican mi caracterización del problema como "serio"]. Demasiado para la adopción por parte de la educación del paradigma de cambio gradual.

El concepto de novedades radicales es de importancia contemporánea ya que, mientras estamos mal preparados para lidiar con ellas, la ciencia y la tecnología no se han mostrado expertas en influirlas sobre nosotros. Ejemplos científicos antiguos son la teoría de la relatividad y la mecánica cuántica; ejemplos tecnológicos modernos son la bomba atómica y la píldora. Durante décadas, los primeros dos ejemplos dieron lugar a un torrente de corrientes religiosas, científicas o de otra manera cuasi-científicas. Día a día podemos observar el profundo error de enfoque con el cuál los últimos dos ejemplos han sido abordados, ya sea por nuestros políticos y líderes religiosos o por el público en general. Demasiado para el daño hecho a nuestra paz mental por las novedades radicales.

Traje esto a colación debido a mi convencimiento de que las computadoras automáticas representan una novedad radical y de que sólo identificándolas como tal podemos identificar todo lo irrelevante, los conceptos errados y la mitología que las rodea. Una inspección más a fondo revelará que esto es todavía peor, a saber, que las computadoras automáticas engloban no sólo una novedad radical sino dos de ellas.

La primera novedad radical es una consecuencia directa del poder bruto de las computadoras actuales. Todos sabemos como lidiar con algo tan grande y complejo; divide y vencerás, por ejemplo vemos el todo como una composición de partes y tratamos con las partes por separado. Y si una parte es muy grande, repetimos el procedimiento. La ciudad está compuesto por barrios, que están a su vez estructurados por calles, que contienen edificios, que están hechos de paredes y pisos, que están construidas de ladrillos, etc. eventualmente llegando a las partículas elementales. Y tenemos a todos nuestros especialistas sobre el tema, desde el ingeniero civil, pasando por el arquitecto hasta el físico de estado sólido y consiguientes. Ya que, en cierto sentido, el todo es "mas grande" que sus partes, la profundidad de una descomposición jerárquica es algún tipo de logaritmo del cociente entre los "tamaños" del todo y las partes más pequeñas. Desde un bit a cien mega bytes, desde un microsegundo a media hora de cómputos nos confronta con un cociente completamente abrumador de 10^9! El programador está en la posición inigualada en la cual la suya es la única disciplina y profesión donde un cociente tan gigante, lo cual completamente sobrepasa nuestra imaginación, debe ser consolidado por una sola tecnología. Debe poder pensar en términos de jerarquías conceptuales que son mucho más profundas que todas aquellas que debió enfrentar una sola mente alguna vez. Comparado con ese número de niveles semánticos, la teoría matemática promedio es casi plana. Evocando la necesidad de profundas jerarquías conceptuales, la computadora automática nos confronta con un radical desafío intelectual que no tiene precedente histórico.

Nuevamente, debo enfatizar esta novedad radical ya que el verdadero creyente en el cambio gradual y las mejoras incrementales no puede verla. Para él, una computadora automática es algo como una familiar caja registradora, sólo que algo más grande, rápida y más flexible. Pero la analogía es ridículamente superficial: es órdenes de magnitud peor que comparar, como un medio de transporte, el avión supersónico con un bebé que gatea, ya que el cociente de velocidad es sólo de mil.

La segunda novedad radical es que la computadora automática es nuestro primer dispositivo digital de gran escala. Tuvimos un par de notables componentes discretos: Acabo de mencionar la caja registradora y podemos agregar la máquina de escribir con sus teclas individuales: con un sólo golpe podemos escribir puedes escribir una Q o una W pero, aunque las teclas están una al lado de la otra, no una mezcla de las dos. Pero tales mecanismos son la excepción, y la amplia mayoría de nuestros mecanismos son vistos como dispositivos analógicos cuyo comportamiento sobre un amplio rango es una función continua de todos los parámetros involucrados: si presionamos la punta del lápiz un poco más fuerte, obtenemos una línea levemente más gruesa, si el violinista ubica su dedo levemente fuera de su posición correcta, reproduce una nota levemente desafinada. A esto debería agregar que, al punto que nos vemos como mecanismos, nos vemos primordialmente como dispositivos analógicos: si nos esforzamos un poco más esperamos rendir un poco más. A menudo el comportamiento no es solamente una función continua sino también monótona: para ver si un martillo es adecuado sobre un cierto rango de clavos, lo probamos con el más pequeño y el más grande de los clavos del rango, y si el resultado de ambos experimentos es positivo, estamos perfectamente predispuestos a creer que el martillo será apropiado para todos los clavos intermedios.

Es posible, inclusive tentador, ver a un programa como un mecanismo abstracto, como alguna clase de dispositivo. Pero hacerlo, sin embargo, es altamente peligroso: la analogía es muy superficial debido a que un programa es, como mecanismo, totalmente diferente de todos los familiares dispositivos analógicos con los cuáles crecimos. Como toda la información digitalizada, tiene la inevitable e incómoda propiedad de que la menor de las posibles perturbaciones –por ejemplo cambios a un sólo bit– puede tener las más drásticas consecuencias. [Por completitud agrego que la situación no cambia en su esencia por la introducción de la redundancia o la corrección de errores]. En el mundo discreto de la computación, no hay métrica significativa en la cual "pequeños" cambios y "pequeños" efectos vayan de la mano, y nunca los habrá.

Esta segunda novedad radical comparte el destino usual a todas las novedades radicales: es negada, porque su verdad sería demasiado incómoda. No tengo idea lo que esta negación y descreencia específica le cuesta a los Estados Unidos, pero un millón de dólares al día parece una modesta estimación.

Habiendo descripto –en los términos más amplios posibles, lo admito– la naturaleza de las novedades computacionales, debo ahora proveer la evidencia de que tales novedades son, de hecho, radicales. Lo haré explicando una serie de fenómenos que de otra manera serían extraños por la frustrante –pero, como ahora sabemos, condenada– ocultación o negación de su aterradora extrañeza.

Cierta cantidad de estos fenómenos han sido agrupados bajo el nombre de "Ingeniería de Software". Así como la economía es conocida como "La Ciencia Miserable", la ingeniería de software debería ser conocida como "La Disciplina Condenada", condenada porque ni siquiera puede acercarse a su meta, dado que la misma es en sí misma contradictoria. La ingeniería de software, por supuesto, se presenta a sí misma como otra causa valiosa, pero es un colirio: si lee cuidadosamente su literatura y analiza lo que realmente hacen quienes se avocan a ella, descubrirá que la ingeniería de software ha adoptado como su estatuto "Cómo programar si usted no puede".

La popularidad de su nombre es suficiente para hacerla sospechosa. En lo que denominamos "sociedades primitivas", la superstición de que conocer el verdadero nombre de alguien otorga un poder mágico sobre él no es inusual. Difícilmente somos menos primitivos: ¿por qué persistimos en contestar el teléfono con el poco útil "hola" en vez de nuestro nombre? Tampoco estamos por encima de la primitiva superstición de que podemos tener cierto control sobre algún demonio malicioso desconocido llamándolo por un nombre seguro, familiar e inocente, tal como "ingeniería". Pero esto es totalmente simbólico, así como demostró uno de los fabricantes de computadoras de los EE.UU. hace unos años cuando contrató, una noche, cientos de nuevos "ingenieros de software" mediante el simple mecanismo de elevar a todos sus programadores a ese exaltante rango. Demasiado para ese término.

La práctica está impregnada de la confortable ilusión de que los programas son simplemente dispositivos como cualquier otro, la única diferencia que se admite es que su fabricación pueden requerir un nuevo tipo de expertos, a saber: programadores. Desde allí hay sólo un pequeño paso hasta medir la "productividad del programador" en términos de la "cantidad de líneas producidas por mes". Esta es una unidad de medida muy costosa, porque anima a escribir código insípido, pero hoy estoy menos interesado en qué tan tonta es una unidad, aún desde un punto de vista puramente empresarial. Mi punto hoy es que, si deseamos contar líneas de código, no deberíamos verlas como "líneas producidas", sino como "líneas gastadas": el sentido común actual es tan tonto como contabilizar esa cuenta del lado erróneo del balance.

Además de la noción de productividad, también el control de calidad sigue estando distorsionado por la confortable ilusión de que funciona con otros aparatos como lo hace con los programas. Han pasado ya dos décadas desde que se señaló que el testing de programas puede convincentemente demostrar la presencia de errores, pero nunca puede demostrar su ausencia. Después de citar devotamente este comentario bien publicitado, el ingeniero de software vuelve al orden del día y continúa refinando sus estrategias de testing, tal como el alquimista de antaño, quien continuaba refinando sus purificaciones crisocósmicas.

Un profundo malentendido es luego revelado por el término "mantenimiento de software", como resultado del cual muchas personas siguen creyendo que los programas –e inclusive los mismísimos lenguajes de programación– están sujetos a desgaste y ruptura. Su auto también necesita mantenimiento, ¿no es así? Es famosa la historia de la empresa petrolera que creía que sus programas PASCAL no durarían tanto como sus programas FORTRAN "porque PASCAL no estaba mantenido".

En el mismo sentido debo llamar la atención sobre la sorprendente facilidad con que se ha aceptado la sugerencia de que los males de la producción de software de deben, en gran medida, a la falta de "herramientas de programación" apropiadas. (Pronto aparecería la frase "banco de trabajo del programador".) Nuevamente, la chatura de la analogía subyacente se debe a la Edad Media. Las confrontaciones con las insípidas "herramientas" del tipo de "animación de algoritmos" no ha suavizado mi juicio; por el contrario, ha confirmado mi sospecha inicial de que estamos tratando principalmente con otra dimensión del negocio del aceite de serpientes.

Finalmente, para corregir la posible impresión de que la inhabilidad de enfrentar la novedad radical está confinada al mundo industrial, déjenme ofrecerles una explicación de la –al menos americana– popularidad de la Inteligencia Artificial. Uno esperaría que la gente se sintiera aterrorizada por los "cerebros gigantes de máquinas que piensan". De hecho, la atemorizante computadora se vuelve menos atemorizante si es utilizada solamente para simular una no-computadora que nos es familiar. Estoy seguro de que esta explicación seguirá siendo controvertida por bastante tiempo, dado que la Inteligencia Artificial como imitadora de la mente humana prefiere verse a sí misma como a la vanguardia, mientras mi explicación la relega a la retaguardia. (El esfuerzo de utilizar máquinas para imitar la mente humana siempre me ha parecido bastante tonto: las usaría para imitar algo mejor.)

Hasta aquí la evidencia de que las novedades computacionales son, de hecho, radicales.

Y ahora viene la segunda –y más difícil– parte de mi charla: las consecuencias educativas y científicas de lo anterior. Las consecuencias educativas son, por supuesto, las más engorrosas, por lo tanto pospongamos su discusión y quedémonos mientras tanto con las ciencias de la computación en sí mismas. ¿Qué es la computación? ¿Y de qué se trata la ciencia de la computación?

Bien, una vez que todo está dicho y hecho, la única cosa que las computadoras pueden hacer por nosotros es manipular símbolos y producir resultados de tales manipulaciones. De nuestras observaciones previas, deberíamos recordar que este es un mundo discreto y, más aún, tanto los números como los símbolos involucrados así como la cantidad de manipulaciones realizadas son varios órdenes de magnitud mayores que los que podemos concebir: desconciertan totalmente nuestra imaginación y por lo tanto no debemos tratar de imaginárnoslos.

Pero antes de que una computadora esté lista para realizar alguna clase de manipulación con sentido –o cálculo, si se prefiere– debemos escribir un programa. ¿Qué es un programa? Varias respuestas son posibles. Podemos ver a un programa como lo que transforma una computadora de propósito general en un manipulador de símbolos de propósito específico, y lo hace sin necesidad de cambiar un solo cable (Esto fue una enorme mejora respecto de las máquinas con paneles de cables dependientes del problema.) Prefiero describirlo de la otra manera: un programa es un manipulador de símbolos abstracto, que puede convertirse en uno concreto suministrándole una computadora. Después de todo, el propósito de los programas ya no es más instruir a nuestras máquinas; en estos días, el propósito de las máquinas es ejecutar nuestros programas.

Por lo tanto, tenemos que diseñar manipuladores de símbolos abstractos. Todos sabemos cómo se ven: se ven como programas o –para usar una terminología más general– usualmente fórmulas de algún sistema formal un tanto elaboradas. Realmente ayuda ver a un programa como una fórmula. Primero, pone la tarea del programador en la perspectiva correcta: tiene que derivar esa fórmula. Segundo, explica por qué el mundo de las matemáticas ha ignorado el desafío de la programación: los programas eran fórmulas mucho más largas que las usuales, al punto que ni siquiera las reconocieron como tales. Ahora, de vuelta al trabajo del programador: tiene que derivar esa fórmula, tiene que derivar ese programa. Sabemos de una única forma confiable de hacerlo, mediante la manipulación de símbolos. Y ahora el círculo está cerrado: construimos nuestros manipuladores de símbolos mecánicos mediante la manipulación de símbolos humana.

Por lo tanto, la ciencia de la computación está –y siempre estará– relacionada con la interacción entre la manipulación de símbolos mecanizada y humana, usualmente llamadas "computación" y "programación", respectivamente. Un beneficio inmediato de esta visión es que revela a la "programación automática" como una contradicción en términos. Un beneficio posterior es que nos da una clara indicación acerca de dónde ubicar la ciencia de la computación en el mapa de las disciplinas intelectuales: en la dirección de la matemática formal y la lógica aplicada, pero finalmente mucho más allá de donde se encuentra actualmente, dado que la ciencia de la computación se interesa en el uso efectivo de los métodos formales en una escala mucho, mucho mayor de la que hemos sido testigos hasta ahora. Dado que ningún emprendimiento es respetable por estos días sin una STL (Sigla de Tres Letras) propongo que adoptemos para la ciencia de la computación IMF (Iniciativa de los Métodos Formales), y, para estar del lado seguro, mejor sigamos los brillantes ejemplos de nuestros líderes y hagamos de ella una Marca Registrada.

En el largo plazo espero que la ciencia de la computación trascienda a sus disciplinas padres, matemática y lógica, efectivamente realizando una parte significativa del Sueño de Leibniz de proveer un cálculo simbólico como una alternativa al razonamiento humano. (Por favor, note la diferencia entre "imitar" y "proveer una alternativa a": a las alternativas se les permite ser mejores.)

De más está decirlo, esta visión acerca de qué trata la ciencia de la computación no es universalmente aplaudida. Por el contrario, ha encontrado oposición –y a veces hasta violenta– desde todo tipo de direcciones. Menciono como ejemplos:

(0) la comunidad matemática, que quisiera continuar creyendo que el Sueño de Leibniz es una ilusión irreal

(1) la comunidad empresarial, quienes, habiéndoseles vendido la idea de que las computadoras harían la vida más simple, no están mentalmente preparados para aceptar que sólo resolvieron los problemas más simples al precio de crear uno mucho más difícil

(2) la subcultura del programador compulsivo, cuya ética prescribe que una idea tonta y un mes de codificación frenética deberían bastar para hacerlo millonario de por vida

(3) los ingenieros en computación, quienes quisieran continuar actuando como si fuera solamente cuestión de mayor flujo de bits o más flops por segundo

(4) la milicia, quienes están hoy totalmente absorbidos por el negocio de usar computadoras para transformar partidas de miles de millones de dólares en la ilusión de seguridad automática

(5) todo tipo de ciencias para las cuales la computación ahora actúa de alguna especie de refugio interdisciplinario

(6) el negocio educativo que siente que, si tiene que enseñar matemática formal a los estudiantes de Ciencias de la Computación, también debería cerrar sus escuelas.

Y con este sexto ejemplo he alcanzado, imperceptiblemente pero también inevitablemente, la parte más engorrosa de esta charla: consecuencias educativas.

El problema con la política educativa es que es difícilmente influenciada por consideraciones científicas derivadas de los tópicos dictados, y casi completamente determinada por circunstancias ajenas a la ciencia tales como las expectativas conjugadas de los estudiantes, sus padres y sus futuros empleadores, y el enfoque prevaleciente del rol de la universidad: el acento está en formar sus graduados para los trabajos de nivel inicial de hoy o en proveer a su alumnado con el bagaje intelectual y las actitudes que perduraran por otros 50 años? ¿Le damos rencorosamente a las ciencias abstractas solo un rincón lejano en el campus, o las reconocemos como el motor indispensable de la industria de alta tecnología? Aún si hacemos esto último, ¿reconocemos una industria de alta tecnología como tal si su tecnología pertenece principalmente a las matemáticas formales? ¿Proveen las universidades a la sociedad el liderazgo intelectual que necesita o sólo el entrenamiento que demanda?

La retórica académica tradicional está perfectamente dispuesta a dar a estas cuestiones las respuestas tranquilizadoras, pero no creo en ellas. A modo de ilustrar mis dudas, en un artículo reciente en "¿Quién gobierna Canadá?", David H. Flaherty groseramente establece que "Además, la élite de los negocios descarta a los académicos e intelectuales como ampliamente irrelevantes e impotentes."

Así, si miro en mi borrosa bola de cristal hacia el futuro de la educación en ciencias de la computación, veo sobrecogedoramente la deprimente imagen del "Negocio acostumbrado". A las universidades les seguirá faltando el coraje de enseñar ciencia dura, continuará orientando mal a los estudiantes, y cada nuevo escalón de infantilización del currículum será exaltado como progreso educativo.

Hace un buen rato que tengo mi borrosa bola de cristal. Sus predicciones son invariablemente melancólicas y usualmente correctas, pero estoy bastante acostumbrado a eso y no me impiden darles unas pocas sugerencias, aún si es meramente un ejercicio vano cuyo único efecto es hacerlos sentir culpables.

Podemos, por ejemplo, comenzar limpiando nuestro lenguaje no denominando a un bug un bug, sino denominándolo un error. Es mucho mas honesto porque pone manifiestamente la culpa donde corresponde, es decir, en el programador que cometió el error. La metáfora animada del bug que se introdujo maliciosamente mientras el programador no estaba mirando es intelectualmente deshonesta ya que disfraza el hecho de que el error es propia creación del programador. Lo agradable de este simple cambio de vocabulario es que tiene un profundo efecto: mientras, antes, un programa con sólo un error solía ser "casi correcto", después de ello un programa con un error es simplemente "erróneo" (porque tiene un error).

Mi próxima sugerencia lingüística es más rigurosa. Se trata de confrontar el síndrome de "si-este-tipo-quiere-hablarle-a-ese-tipo": nunca se refieran a partes de programas o piezas de equipo en una terminología antropomórfica, ni permitan hacerlo a sus estudiantes. Esta mejora lingüística es mucho más difícil de implementar de lo que podrían pensar, y su departamento puede considerar la introducción de multas para las violaciones, digamos veinticinco centavos para estudiantes de grado, cincuenta centavos para estudiantes de postgrado y cinco dólares para miembros de la facultad: para final del primer semestre del nuevo régimen, habrán recolectado suficiente dinero para dos becas.

La razón para esta última sugerencia es que la metáfora antropomórfica –por cuya introducción podemos culpar a John von Neumann– es una enorme desventaja para cada comunidad informática que la ha adoptado. He encontrado programas que quieren cosas, saben cosas, esperan cosas, creen cosas, etc., y cada vez eso generaba confusiones evitables. La analogía que subyace a esta personificación es tan superficial que no es solamente engañosa sino también paralizante.

Es engañosa en el sentido que sugiere que podemos lidiar con el desconocido discreto en términos del familiar continuo, es decir, nosotros mismos, quod non. Es paralizante en el sentido que, debido a que las personas existen y actúan en el tiempo, su adopción efectivamente impide un despegue de la semántica operacional y fuerza así a la gente a pensar sobre los programas en términos de comportamientos computacionales, basados en un modelo computacional subyacente. Esto es malo, porque el razonamiento operacional es un tremendo desperdicio de esfuerzo mental.

Déjenme explicarles la naturaleza de ese tremendo desperdicio, y permítanme tratar de convencerlos de que el término "tremendo desperdicio de esfuerzo mental" no es una exageración. Por un breve lapso, me tornaré altamente técnico, pero no se acobarden: es el tipo de matemáticas que uno puede hacer con las manos en los bolsillos. El punto a comunicar es que si tenemos que demostrar algo respecto de todos los elementos de un conjunto grande, es desesperanzadamente ineficiente tratar con todos los elementos del conjunto individualmente: el argumento eficiente no se refiere a elementos individuales en lo absoluto y se lleva a cabo en términos de la definición del conjunto.

Consideren la figura plana Q, definida como el cuadrado de 8 por 8 del cual, en dos esquinas opuestas, han sido quitados dos cuadrados de 1 por 1. El área de Q es 62, que equivale al área combinada de 31 dominós de 1 por 2. El teorema es que la figura Q no puede ser cubierta por 31 de tales dominós.

Otra manera de exponer el teorema es que si comienza con papel cuadriculado y se cubre este ubicando cada siguiente dominó en dos nuevos recuadros adyacentes, ninguna distribución de 31 dominós dará como resultado la figura Q.

Así, una posible manera de probar el teorema es generando todas las posibles distribuciones de dominós y verificando para cada distribución que no da como resultado la figura Q.

El argumento simple, sin embargo, es como sigue. Pinte los recuadros del papel cuadriculado como un tablero de ajedrez. Cada dominó, cubriendo dos recuadros adyacentes, cubre 1 recuadro blanco y 1 negro, y , por consiguiente, cada distribución cubre tantos recuadros blancos como recuadros negros. En la figura Q, sin embargo, el número de recuadros blancos y el número de recuadros negros difiere en 2 –esquinas opuestas sobre la misma diagonal– y por consiguiente ninguna disposición de dominós da como resultado la figura Q.

No sólo es el simple argumento previo muchos órdenes de magnitud más corto que la investigación exhaustiva de las posibles distribuciones de 31 dominós, es también esencialmente más poderosa, dado que cubre la generalización de Q reemplazando el cuadrado original de 8 por 8 por cualquier rectángulo con lados de longitud par. Siendo infinito el número de tales rectángulos, el método previo de exploración exhaustiva es esencialmente inadecuada para probar nuestro teorema generalizado.

Y esto concluye mi ejemplo. Ha sido presentado porque ilustra de un tirón el poder de las matemáticas terrenales; no hace falta decirlo, la negación de explotar este poder de las matemáticas terrenales escala al suicidio intelectual y tecnológico. La moraleja de la historia es: tratar con todos los elementos de un conjunto ignorándolos y trabajando con la definición del conjunto.

Volvamos a la programación. La aseveración de que un programa dado cumple una cierta especificación escala a una aseveración sobre todos los cálculos computacionales que podrían ocurrir bajo el control de ese programa dado. Y dado que este conjunto de cálculos está definido por el programa dado, nuestra reciente moraleja dice: trate con todas los cálculos posibles bajo control de un programa dado ignorándolas y trabajando con el programa. Debemos aprender a trabajar con el texto de los programas mientras (temporalmente) se ignora que admiten la interpretación de código ejecutable.

Otra manera de decir la misma cosa es la siguiente. Un lenguaje de programación, con su sintaxis formal y las reglas de demostración que define su semántica, es un sistema formal para el cual la ejecución del programa provee solamente un modelo. Es bien conocido que los sistemas formales deberían ser tratados por derecho propio, y no en términos de un modelo específico. Y, de nuevo, el corolario es que deberíamos razonar sobre los programas sin siquiera mencionar su posible "comportamiento".

Y esto concluye mi excursión técnica en el motivo por el cual el razonamiento operacional sobre la programación es "un tremendo desperdicio de esfuerzo mental" y por qué, en consecuencia, en la ciencia de la computación debería prohibirse la metáfora antropomórfica.

No todo el mundo comprende esto suficientemente bien. Recientemente fui expuesto a una demostración de lo que pretendía ser software educativo para un curso introductorio de programación. Con sus "visualizaciones" en la pantalla era un caso tan obvio de infantilización del currículum que su autor debería ser acusado de su "menosprecio del cuerpo estudiantil", pero esto era sólo un daño menor comparado con para qué se usaban las visualizaciones: ¡se usaban para mostrar todo tipo de características de cálculos computacionales evolucionando bajo el control del programa del estudiante! El sistema remarcaba precisamente aquello que el estudiante tiene que aprender a ignorar, reforzaba precisamente lo que el estudiante tiene que desaprender. Dado que quitarse los malos hábitos, más que adquirir nuevos, es la parte más dura del aprendizaje, debemos esperar de ese sistema un daño mental permanente para la mayoría de los estudiantes expuestos.

No hace falta decirlo, ese sistema ocultaba completamente el hecho de que, por sí sólo, un programa no es más que la mitad de una conjetura. La otra mitad de la conjetura es la especificación funcional que se supone que satisface el programa. La tarea del programador es presentar las conjeturas completas como teoremas demostrados.

Antes de irnos, me gustaría invitarlos a considerar la siguiente forma de hacer justicia a las novedades radicales de la computación en un curso introductorio a la programación.

Por un lado, enseñamos algo que se parece al cálculo de predicados, pero lo hacemos de manera muy distinta a los filósofos. A fin de entrenar al programador novato en la manipulación de fórmulas sin interpretar, lo enseñamos más como álgebra booleana, familiarizando al estudiante con todas las propiedades algebraicas de los conectivos lógicos. Para romper aún más los vínculos con la intuición, renombramos los valores {verdadero, falso} del dominio booleano como {negro, blanco}

Por otro lado, enseñamos un lenguaje de programación imperativo simple y claro, con un skip y una asignación múltiple como sentencias básicas, con una estructura de bloque para variables locales, el punto y coma como operador para composición de sentencias, una bonita construcción alternativa, una bonita repetición y, si se quiere, una llamada a procedimiento. A esto agregamos un mínimo de tipos de datos, digamos booleanos, enteros, caracteres y cadenas. Lo esencial es que, para lo que sea que introduzcamos, la semántica correspondiente está definida por las reglas de demostración que la acompañan.

Desde el comienzo, y a través de todo el curso, enfatizamos que la tarea del programador no es sólo escribir un programa, sino que su tarea principal es dar una prueba formal de que el programa que propone cumple la especificación funcional (igualmente formal). Mientras se diseñan demostraciones y programas conjuntamente, el estudiante adquiere una amplia oportunidad de perfeccionar su destreza manipulativa con el cálculo de predicados. Finalmente, para hacer llegar el mensaje de que este curso introductorio a la programación es principalmente un curso en matemáticas formales, nos encargamos de que el lenguaje de programación en cuestión no haya sido implementado en el campus de manera que los estudiantes estén protegidos de la tentación de probar sus programas. Y esto concluye el esbozo de mi propuesta para un curso introductorio a la programación para estudiantes de primer año.

Esta es una propuesta seria, y sumamente sensible. Su única desventaja es que es demasiado radical para muchos, quienes, siendo incapaces de aceptarla, se ven forzados a inventar alguna justificación rápida para desestimarla, no importa cuan inválida sea. Les daré unas pocas de esas justificaciones.

No necesitan tomar mi propuesta seriamente porque es tan ridícula que estoy obviamente desconectado del mundo real. Pero ese barrilete no va a volar, ya que conozco el mundo real demasiado bien: los problemas del mundo real son principalmente aquellos con los que ustedes se quedan después de negarse a aplicar sus efectivas soluciones. Así que, probemos de nuevo.

No necesitan tomar seriamente mi propuesta porque es sumamente surrealista intentar enseñar tal material a alumnos de primer año. ¿No sería esa una salida fácil? Acaban de postular que esto sería por lejos muy difícil. Pero ese barrilete tampoco va a volar, dado que el postulado se ha demostrado falso: desde principios de los '80, se ha dado tal curso introductorio a la programación a cientos de estudiantes de primer curso de grado cada año. [Porque, en mi experiencia, decir esto no es suficiente, la sentencia previa debería repetirse al menos otras dos veces]. Así que, intentemos de nuevo.

Admitiendo renuentemente que podría quizás enseñarse a estudiantes suficientemente dóciles, todavía rechazan mi propuesta porque tal curso se desviaría tanto de lo que los estudiantes de 18 años están habituados y esperan, que inflingírselos sería un acto de irresponsabilidad educativa: sólo frustraría a los estudiantes. No hace falta decirlo, ese barrilete tampoco va a volar. Es cierto que el estudiante que nunca ha manipulado fórmulas sin interpretar se da rápidamente cuenta que se confronta con algo totalmente distinto a cualquier cosa que haya visto antes. Pero afortunadamente, las reglas de manipulación son en este caso tan pocas y simples que muy poco después hace el excitante descubrimiento de que está comenzando a dominar el uso de una herramienta que, en toda su simplicidad, le da un poder que sobrepasa sus sueños más audaces.

Enseñar a jóvenes desprevenidos el uso efectivo de los métodos formales es uno de los placeres de la vida porque es extremadamente gratificante. En pocos meses, encuentran su camino en un mundo nuevo con justificado grado de confianza, que es radicalmente novedoso para ellos; en pocos meses, su concepto de cultura intelectual ha adquirido una dimensión radicalmente novedosa. Para mi gusto y estilo, esto es de lo que se trata la educación. Las universidades no deberían temer a enseñar novedades radicales; por el contrario, es su llamado dar la bienvenida a la oportunidad de hacerlo. Su disposición a hacerlo es nuestra principal salvaguarda contra las dictaduras, sean del proletariado, del establishment académico, o de la élite corporativa.

Austin, 2 de Diciembre de 1988

prof. dr. Edsger W. Dijkstra

Departamento de Ciencias de la Computación

Universidad de Texas

Austin, TX 78712-1188

USA


Traducción: Javier Smaldone y Billy Biset.

Transcripción original: Javier Smaldone.

Última revisión: 5 de agosto de 2006 (11:45 am).

Última versión y actualizaciones: http://www.smaldone.com.ar/documentos/ewd.shtml

Nota de los traductores: La versión HTML contiene el texto original en forma de comentarios, para simplificar su corrección.

martes, noviembre 25, 2008

La estadística apaleada

Una estadística bien apaleada confiesa lo que quieras...


Habla también de estadística, expresión que fue utilizada por primera vez en 1770 y era una traducción de la palabra alemana staatenkunde. Uno de sus pioneros, Adolphe Quetelet manifestó: Podemos decir cuántos individuos mancharán sus manos con la sangre de sus vecinos, cuántos de ellos cometerán falsificaciones y cuántos se convertirán en envenenadores casi con la misma precisión que podemos predecir el número de muertes y nacimientos. La sociedad contiene dentro de ella el germen de todos los crímenes que se cometerán.

Nos previene de las conclusiones que podamos extraer de ellas. Por ejemplo: un reciente estudio demuestra que el 99% de aquellas personas que consumieron pepinillos en 1910 han muerto; y si la probabilidad de morir es alta comiendo pepinillos, imaginad de la de morir en un hospital: mucho mayor que en cualquier otro lugar. También es gracioso afirmar que la Ciudad del Vaticano tiene dos papas por kilómetro cuadrado.


---


Hace unos años se organizó un congreso sobre el corazón en Barcelona.

En todos los telediarios nacionales apareció la sorprendente noticia generada en el congreso.

(no recuerdo los números, así que los invento)

"Fumar protege del infarto de corazón"

La demostración es estadística.

El 56% de los no fumadores mueren al padecer un infarto de corazón, mientas que sólo mueren el 46% de los fumadores.

CONCLUSIÓN. FUMAR PROTEGE EN CASO DE INFARTO.

Olvidaron mencionar que los fumadores sufren un infarto 15 años antes de promedio. Y lógicamente olvidaron comentar que quizá son esos 15 años los que reducen la mortandad. Además de que si fumas, es mucho más fácil que sufras un infarto y mucho antes.

Todavía quedan conjeturas

Sí, se demostró el último teorema de Fermat, pero aún quedan conjeturas...


Aun así, si queríais haceros famosos solucionando un problema famoso como el del Ultimo Teorema de Fermat no penséis que Wiles os ha quitado la sabrosa oportunidad. Todavía hay problemas abiertos que, si resuelve algunos de vosotros, se os garantiza la fama (respecto la riqueza, no pondría la mano en el fuego). En 1742, Christian Goldbach escribió una carta a Leonhard Euler en la que le planteaba que todo número par mayor que 5 puede expresarse como la suma de dos números primos. Si alguno de vosotros se anima a intentar demostrar que es así, sabed, para empezar, que hace unos 270 años que no se ha logrado; y si queréis buscar un contraejemplo (que invalidaría la conjetura), sabed que en 1993 se estudiaron los números pares hasta 4*1011 sin encontrar alguno que no cumpliera la conjetura.

Último teorema de Fermat, utilidad práctica

http://www.historiasdelaciencia.com/?p=322


Si pensáis que las matemáticas no son capaces de enganchar, tenéis que saber qué le sucedió a Paul Wolfskehl allá por el año 1908. Era un industrial de Darmstad que un día fue rechazado por la mujer de sus sueños. Se deprimió hasta tal punto que consideró suicidarse. Como era un hombre muy meticuloso, quiso dejar todas las cosas en orden hasta que llegara el día exacto en el que debía volarse la tapa de los sesos. Una vez arreglados sus asuntos, faltaban unas pocas horas para enfrentarse al destino escogido por él y se fue a su biblioteca a hojear libros de matemáticas. En uno de ellos se encontró con el último teorema de Fermat y empezó a intentar resolver el problema. Se enfrascó tanto que perdió la noción del tiempo y, cuando volvió al mundo real, ya había pasado la hora en que debía suicidarse. En aquel momento tomó la decisión que enfrentarse a problemas matemáticos valía más la pena que el amor de una mujer difícil (al menos, para él). Se convirtió en un aficionado matemático que instituyó un premio de 100.000 marcos para quien lograra resolver el problema planteado por Fermat.

Euler y demostración existencia de Dios

No todas las referencias coinciden, pero algo de verdad habrá en esta anécdota.



Fellmann narra como estando en San Petersburgo, en el año 1773, Euler coincidió con el filósofo francés Denis Diderot que, ateo convencido, se jactaba de poder refutar cualquier argumento que demostrara la existencia de Dios. Euler sabía que al filósofo no le interesaban las matemáticas, así que durante una cena y ante muchos testigos, Euler le dijo: “a más b elevada a la n, todo sobre n, igual a x; por consiguiente, Dios existe. Responder”. Al no saber que decir, Diderot se sintió tan ridiculizado que a los dos días regresó a Francia.


http://www.divulgauned.es/spip.php?article55

Euler y números periódicos

http://divulgamat.ehu.es/weborriak/Historia/AsiLoHicieron/Euler/InprimaketaEuler.asp


Números decimales periódicos

LEAD Technologies Inc. V1.01

Leonardo Euler nació en Basilea (Suiza) en 1707.

Su padre, pastor calvinista, se preocupó de que la formación intelectual de su hijo fuese de gran calidad. Leonardo estudió matemáticas con Jean Bernoulli, física, astronomía, medicina, teología y lenguas orientales.

En 1727, animado por sus amigos y compatriotas Daniel y Nicolás Bernoulli, ingresó en la Academia de San Petersburgo. En 1730 ocupó la cátedra de filosofía natural y a los veintisiete años, después de que Nicolás y Daniel dejasen San Petersburgo, se convirtió en el matemático más relevante de la Academia. A los veintiocho años perdió la vista de su ojo derecho.

En 1741 se incorporó a la Academia de Berlín, pero en 1766 volvió a Rusia. En 1771 se quedó ciego pero ello no impidió que Euler siguiera publicando e investigando.

Leonhard murió en 1783 mientras se estaba tomando una taza de té y jugando con uno de sus nietos.

Se cuenta que cuando el filósofo ateo D. Diderot visitó la corte rusa fue informado de que un matemático suizo había demostrado la existencia de Dios mediante razonamientos de tipo algebraico. Interesado por dicha noticia y esperando rebatir tales argumentos, Diderot concertó una entrevista con Leonardo. Puesto en contacto con Euler, éste le dijo: “Señor (a + bn)/n = x, entonces Dios existe”. Diderot, cuyos conocimientos de álgebra eran nulos, se quedó sin respuesta y regresó a Francia.

Euler escribió sobre temas relativos a todas las ramas de las matemáticas. A lo largo de su vida publicó más de quinientos libros y artículos y fue padre de trece hijos.

Entre sus numerosísimas contribuciones destacamos las referentes al simbolismo matemático. Así, Euler introdujo el símbolo e para la base de los logaritmos naturales; p para la razón de la circunferencia al diámetro; i para la unidad imaginaria; a, b, c para los lados de un triángulo; A, B, C para los ángulos de un triángulo; para la suma; f(x) para una función de x.

En geometría elemental es famosa su fórmula c + v = a + 2, que relaciona el número de caras (c), vértices (v) y aristas (a) de cualquier poliedro convexo.

La expresión eπi + 1 = 0, que aparece en su Introductio in analysin infinitorum (1748), incluye los cinco números más importantes de las matemáticas.

Además de sus numerosas aportaciones a las Matemáticas, Euler también escribió algunos manuales para la enseñanza de esta disciplina dirigidos a un público no matemático. Así, en 1738 publicó un libro sobre aritmética elemental (Einleitung zur Rechenkunst) para los escolares de San Petersburgo.

Más tarde vieron la luz sus famosos Elementos de Álgebra que, sin duda alguna, pueden incluirse entre los textos más famosos y populares del siglo XVIII. Exceptuando los Elementos de Euclides, es el libro de Matemáticas con mayor difusión de todos los tiempos. El original fue escrito en alemán sobre el año 1765. No obstante, se publicó por primera vez en dos volúmenes por la Real Academia de Ciencias de San Petersburgo como una traducción rusa (1770).

El objetivo de Euler al redactar esta obra fue que cualquier aprendiz, sin otra ayuda, pudiera convertirse en un maestro de Álgebra.

En las líneas que siguen, respetando la numeración de los parágrafos del texto original, presentamos un procedimiento para el cálculo de la fracción generatriz de un número decimal periódico puro, contenido en los Elementos de Álgebra.

§531

Se puede probar de una manera todavía más fácil que la fracción decimal que hemos encontrado1 es exactamente igual a 1/7, dado que designando su valor por la letra f se tiene que:

f = 0,142857142857142857 etc.
10f = 1, 42857142857142857 etc.
100f = 14, 2857142857142857 etc.
1000f = 142, 857142857142857 etc.
10000f = 1428, 57142857142857 etc.
100000f = 14285, 7142857142857 etc.
1000000f = 142857, 142857142857 etc.
Restando f = 0,142857142857142857 etc.
––––––––––––––––––––––––––––––––––––
999999f = 142857

Y dividiendo por 999999, tendremos que f = 142857 / 999999 = 1/7.
Entonces, la fracción decimal que era = f, es = 1/7.

§537

Hay un gran número de fracciones decimales en las que una, dos o más cifras se repiten constantemente y prosiguen de esta manera hasta el infinito (...).
Supongamos, en primer lugar que sólo se repite una cifra, a la que designaremos por a, de modo que f = 0,aaaaaaa. . . Entonces, tendremos que:

10f = a,aaaaaaa. . .
y restando f = 0,aaaaaaa. . .
––––––––––––––––––––
tendremos 9f = a; por tanto f =
a/9

Cuando se repiten dos cifras, digamos ab, se tiene f = 0,abababab... Entonces, 100f = ab,ababab..., y si se le resta f, queda 99f = ab. Por tanto, f = ab/99.
Cuando se repiten tres cifras, como abc, tenemos f = 0,abcabcabc... Por consiguiente, 1000f = abc,abcabcbabc..., y restándole f queda 999f = abc. Luego, f = abc/999. Y así sucesivamente.


Referencias bibliográficas:

EULER, L. (1795). Élémens d’algèbre (traduits de l’allemand, avec des notes et des additions). Lyon: Bruyset.

Nota:
1 Se refiere al número decimal periódico puro 0,142857142857142857....Volver a Euler

lunes, noviembre 24, 2008

Historia de los logaritmos

http://www.gobiernodecanarias.org/educacion/3/Usrn/penelope/es_conflefort.htm


HISTORIA DE LOS LOGARITMOS

Un ejemplo del desarrollo de un concepto en matemáticas

No se debe ver la historia de las matemáticas como una marcha triunfal a lo largo de una avenida sin obstáculos. Al contrario, esta historia presenta numerosas interrupciones, y el camino seguido raramente se parece a una línea recta, encontrándose incluso a veces en un callejón sin salida....Hubo avances bruscos debidos a nuevos conceptos, que respondieron a problemas a veces muy alejados de las cuestiones iniciales que los habían generado.

Los logaritmos son un ejemplo de este desarrollo caótico y fecundo a la vez. Partiendo de una idea simple, pero cuya puesta en práctica necesitaba un gran trabajo (la construcción de las tablas), han sido en primer lugar el motor de un desarrollo de las matemáticas aplicadas, antes de revelarse como la solución de un problema geométrico. Objeto de estudios teóricos seguidos de profundizaciones, han sido también una herramienta indispensable para la modelización de múltiples fenómenos físicos.

La presentación pedagógica tradicional de los logaritmos privilegia el logaritmo llamado "neperiano". Se lo introduce como la función primitiva de la función inversa que se anula para el valor 1 de la variable. Aunque esta introducción sea matemáticamente satisfactoria se halla muy lejos de ser evidente para los estudiantes y su propiedad fundamental queda oculta. Por supuesto, el problema histórico que llevó a concebir los logaritmos también está ausente, mientras que su uso para presentar esta nueva noción tiene la ventaja de la simplicidad: se trata sencillamente de construir una tabla que permita realizar rápidamente multiplicaciones, divisiones y potencias.

Hoy la utilización de los logaritmos para el cálculo está en desuso, pero el concepto sigue siendo fundamental en la cultura matemática básica y están presentes tanto en física como en química. Su historia es sin duda un capítulo modesto, pero su ejemplaridad, incluso su riqueza dan testimonio del desarrollo de las Matemáticas.

PROBLEMÁTICA:

El origen del concepto de logaritmo se encuentra en un problema matemático, sin duda, pero en un problema de matemáticas aplicadas: se trata de simplificar la pesada tarea de los calculadores, excesivamente complicada en cuanto implica multiplicaciones, divisiones, incluso potencias o extracción de raíces.

En los siglos XIV, XV y XVI (y seguramente antes) los campos implicados no son tanto las cuestiones económicas como los problemas de agrimensura, y sobre todo, la astronomía, en particular en sus aplicaciones a la navegación. Estas operaciones exigen ahora cierta precisión . Si los progresos de la numeración han podido hacer avanzar las cosas, como la utilización de las cifras llamadas árabes, los algoritmos de multiplicación y de división son desconocidos; los números racionales, sistemáticamente escritos en forma de parte entera más una fracción de la unidad, convierten incluso a la suma en una operación muy complicada.

Se debe al matemático árabe IBN JOUNIS el haber propuesto, en el siglo XI, un método, llamado prostaféresis , para reemplazar la multiplicación de dos senos por una suma de las mismas funciones, y este método permanecerá mucho tiempo en vigor. La multiplicación de senos (y su división) es una operación esencial, ya que todo cálculo en geometría, en particular la resolución de triángulos, es una operación sobre longitudes no medibles, obtenidas a partir de la medida de ángulos.

A ARQUÍMEDES se debe la idea fundamental que generaría los logaritmos:

"Cuando varios números están en proporción continua a partir de la unidad, y algunos de estos números se multiplican entre si, el producto estará en la misma progresión, alejado del más grande de los números multiplicados tantos números como el más pequeño de los números multiplicados lo está de la unidad en la progresión, y alejado de la unidad la suma menos uno de los números de lugares que los números multiplicados están alejados de la unidad"

(Arenario, trad. VERECKE)

Sea: Image82.gif (1064 bytes) con Image83.gif (918 bytes) o sea: Image84.gif (905 bytes)

La idea de ARQUÍMEDES vuelve a aparecer en los trabajos de CHUQUET y de STIFEL, en el siglo XV, pero, ni uno ni otro han tenido suficiente influencia para imponer la comparación de una progresión geométrica con una progresión aritmética como medio de cálculo, o como nuevo campo de investigación matemática.

NAPIER Y BRIGGS

John NAPIER (escrito también NEPER) nació en 1550. Procedente de la baja nobleza escocesa, mostró toda su vida un espíritu curioso y dinámico, a pesar de una vida alejada de los centros culturales de la época. La introducción de los logaritmos no es su único título de gloria, puesto que escribió también un texto sobre las ecuaciones e imaginó además un sistema de cálculo por medio de regletas graduadas (Rabdología)

En 1614 publicó el "Mirifici logarithmorun canonis descriptio..." donde, utilizando una aproximación cinemática, pone en relación una progresión geométrica con una progresión aritmética. La primera es la de las distancias recorridas con velocidades proporcionales a ellas mismas, la segunda, la de las distancias recorridas con velocidad constante; éstas son entonces los "logaritmos" de las primeras ( el neologismo es de NAPIER). La unidad elegida es 107, y la obra comprende una tabla de logaritmos de senos, cuya importancia hemos mencionado anteriormente, con los ángulos variando de minuto en minuto. En 1619 apareció una segunda obra, "Mirifici logarithmorum canonis constructio...." donde el autor explica cómo calcular los logaritmos. Esta obra es póstuma, puesto que NAPIER murió en 1617.

Mientras tanto, un eminente matemático de Londres, Henry BRIGGS, había descubierto la importancia de estos trabajos y viajó a Escocia para encontrarse con el autor. Retomando la idea fundamental, pero considerando una progresión geométrica simple, la de las potencias de 10, publica en 1617 una primera tabla, con 8 decimales. El logaritmo de un número x es por lo tanto definido como el exponente n de 10, tal que x sea igual a 10 elevado a n.

Siguieron otras tablas que permitieron la difusión del método, en particular en el continente. En realidad, la idea estaba en el aire; un colaborador de KEPLER, el suizo BÜRGI, proponía en la misma época, para simplificar los cálculos que debía realizar, hacer corresponder una progresión aritmética (números rojos) y una progresión geométrica (números negros); sin embargo sus trabajos no fueron publicados hasta 1620.

PRIMERAS UTILIZACIONES

Es en Alemania donde se van a desarrollar los logaritmos. Al principio de 1617, KEPLER, que se hallaba fortuitamente en Viena, tiene la ocasión de consultar la primera obra de NEPER. Hojeándola rápidamente, comete un error de interpretación. El año siguiente hará partícipe de ello a un amigo en una carta:

" Un barón escocés del que no recuerdo su nombre, propone un brillante trabajo en el que reemplaza la necesidad de la multiplicación y de la división, por la simplicidad de la suma y de la sustracción, sin emplear los senos: en cambio, necesita la regla de las tangentes; y la cantidad, la amplitud y la pesadez de la adición y de la sustracción sustituyen la dificultad de la multiplicación y la división"

Ahora bien KEPLER utiliza evidentemente la regla de los senos, tanto en un triángulo plano como esférico; para él, el trabajo de NEPER no tiene interés. En el transcurso de 1618, dispone, sin embargo, de la obra de Benjamín URSINUS: "Trigonometría Logarithmica John Neperi"; reconoce entonces su error y se muestra entusiasta de este nuevo cálculo. En 1619, por fin, el libro "Mirifici Logarithmorum descriptio" llega a Linz, a KEPLER, el cual emprende rápidamente la tarea de modificar el concepto para adaptarlo a sus necesidades. Su adhesión es tal que dedica sus efemérides de 1620 ( aparecidas al final de 1619) al "célebre y noble señor JOHN NEPER, barón de MERCHISTON"

La difusión en el continente de esta nueva noción se debe sobre todo a las tablas publicadas por el flamenco Adrien ULACQ, en 1628, retomando las tablas de BRIGGS. El objetivo era realizar un tratado de cálculo práctico, en particular para uso de los agrimensores. Las primeras tablas fueron seguidas por otras, cada vez más precisas, y en ellas se menciona que su principal aplicación son los cálculos trigonométricos.

El método para la construcción de las tablas pasa primero, evidentemente, por la determinación de los logaritmos de los números primos; los demás se calculan entonces por simple suma. Se trata de hecho de tomar "o bien medias proporcionales o bien raíces cuadradas". EULER escribirá en 1748:

"Así tomando medias proporcionales, se llega a encontrar Z=5,000000, a lo que responde el logaritmo buscado 0,698970, suponiendo la base logarítmica = 10. En consecuencia 1069897/100000 = 5 aproximadamente. Es de esta manera como BRIGGS y ULACQ han calculado la tabla ordinaria de logaritmos, aunque se haya encontrado después métodos más expeditivos."

EL ÁREA BAJO LA HIPÉRBOLA

La etapa esencial del desarrollo matemático del concepto se encuentra en su relación con la hipérbola. Esta relación se debe al jesuita GREGOIRE DE SAINT-VINCENT, nacido en Brujas en 1584. Había acabado la redacción de un "Opus geometricorum...." en 1630, en el cual pretendía haber resuelto los problemas de la cuadratura del círculo y de la hipérbola. Esta obra no fue publicada hasta 1647, y aunque fue un fracaso en cuanto a la cuadratura del círculo, puso en evidencia que las áreas bajo la hipérbola se parecen a los logaritmos.

El trabajo de este autor no se sitúa en una perspectiva ligada específicamente a los logaritmos, sino más bien en un intento de resolución de problemas generales de cuadraturas, muy de moda en esta época y en un estilo completamente tradicional; el aspecto innovador reside en la utilización de cierto paso al infinito para justificar la primera parte de su demostración. Estamos sin embargo antes de la era de LEIBNIZ y de NEWTON.

La relación del cálculo del área bajo la hipérbola con los logaritmos no es pues de GREGOIRE DE SAINT - VINCENT; su obra, en principio desconocida, ha sido objeto de críticas, fundadas por otra parte en lo que concierne a la cuadratura del círculo. Será uno de sus defensores, el jesuita SARASSA quien mencionará que " las áreas hiperbólicas pueden tener relación con los logaritmos"

El cálculo de GREGOIRE DE SAINT - VINCENT se apoya sobre el hecho de que cuando las abscisas están en progresión geométrica, las áreas están en progresión aritmética. Tomemos la hipérbola más simple, de ecuación x.y=1, referida a un sistema de referencia ortonormal. A, B, C, .....serán puntos del eje de abscisas (eje de las "x") en progresión geométrica; D, E, G, .....serán entonces los puntos de la hipérbola correspondientes a estas abscisas. GREGOIRE DE SAINT - VINCENT muestra en primer lugar que las áreas entre la curva y DE por una parte, y entre EG y la curva, por otra, son iguales; al tener los trapecios ADEB y BEGC la misma superficie, las áreas bajo la hipérbola son iguales.

Se encontrará algunos años más tarde, en ciertos manuales de geometría, tal como el de PARDIES (1671), el enunciado del resultado encontrado por DE SAINT - VINCENT, lo que distaba de ser el caso general, ¡ y PARDIES era también un jesuita!

ESTATUS MATEMÁTICO

Si el aspecto analítico del logaritmo, en otros términos, el estatus de función, había sido ya considerado por KEPLER, corresponde a TORRICELLI, seguido por HUYGENS, estudiar la curva logarítmica, y a WALLIS, después de un primer trabajo de MERCATOR, proponer un desarrollo en serie (1667). Esta técnica es nueva y es sin duda uno de los raros atractivos de la obra de MERCATOR; en efecto, este autor no parece haber sabido desarrollar la idea inicial, a saber, la integración de la serie:

En

Log (1+x) image80a.gif (239 bytes)

Este nuevo aspecto permite entonces un cálculo más fácil de los logaritmos de los números y se encontrará en lo sucesivo en los manuales del siglo XVIII.

En lo que concierne a la curva de la función logarítmica, llamada "curva logarítmica", TORRICELLI propone la gráfica desde 1646, en algunas cartas a sus corresponsales, pero su muerte en 1647 retrasa la difusión. Será a HUYGENS a quien corresponderá exponer sus propiedades en el "Discurso sobre la causa de la gravedad", aparecido en 1690. HUYGENS estaba interesado desde 1651 por los logaritmos y por su cálculo, en particular en el marco de la cuadratura de la hipérbola; había retomado el problema mucho más tarde (1666) cuando participaba en los trabajos de la nueva Academia Real de Ciencias de París, y había utilizado la noción en cuestiones de probabilidad y de combinatoria.

Los logaritmos en esa época forman parte realmente del corpus matemático; no se trata de un simple método de cálculo, sino de un dominio completo. Se hallan en numerosas obras sin que su estatus teórico suponga ningún problema.

LA HERRAMIENTA LOGARÍTMICA

Los logaritmos en cuanto herramienta serán de gran ayuda para el nacimiento de la física matemática a finales del siglo XXVII. Así ocurre con el "Discurso sobre la causa de la gravedad" de HUYGENS, y también con los diferentes trabajos sobre la presión atmosférica, en particular los de MARIOTTE.

Es preciso ver la utilización de los logaritmos siguiendo cuatro directrices:

- la primera es la que los genera, a saber, el cálculo de fórmulas geométricas, utilizadas en astronomía y aplicacadas en navegación, y también, de modo más simple, en agrimensura. Se publicarán muchas tablas con formato de bolsillo para su utilización sobre el terreno o a bordo de los navíos. Estas tablas irán precedidas de un manual de uso, e incluirán también una tabla de logaritmos de senos.

- la segunda, más simple aún, es la de la aplicación a todo cálculo multiplicativo. Condujo a la construcción de "reglas de cálculo", al empleo por todo estudiante de bachillerato de una tabla para cualquier operación en ciencias físico - químicas y a la elaboración de algoritmos para las máquinas de calcular contemporáneas.

- la tercera consiste en conjeturar a partir de experiencias con modelos donde los logaritmos entraron en juego por comparación de valores. Poner de manifiesto una relación entre medidas en progresión aritmética con otra serie en progresión geométrica conducirá a considerar el primer fenómeno como un logaritmo del segundo. Las escalas logarítmicas son hoy día moneda corriente....

- la última es totalmente teórica; la introducción por LEIBNIZ y NEWTON del cálculo diferencial e integral permitirá numerosos razonamientos analíticos, concernientes a fenómenos físicos o químicos, pudiendo conducir por simple integración de los inversos a los resultados logarítmicos.

Los logaritmos utilizados en los tres primeros casos serán los de BRIGGS, es decir los logaritmos decimales; por el contrario, la integración introduce los logaritmos "naturales", llamados "neperianos" en honor al padre fundador.

EXPLORACIÓN MATEMÁTICA

En el campo de las matemáticas puras, los logaritmos introducen nuevas magnitudes trascendentes. Contribuyen por consiguiente a ampliar el campo de comprehensión de los números; sin embargo, no se puede hablar de función, de función logarítmica en el sentido moderno, antes de que intervenga EULER en la segunda mitad del siglo XVIII. Esto no impide a LEIBNIZ y a NEWTON utilizar las relaciones: (escritas con notación moderna)

Image87.gif (971 bytes) Image88.gif (972 bytes)

como lo atestigua un manuscrito del primer autor fechado en 1675.

Es EULER quien de nuevo, en las "Institutions de calcul integral" publicadas de 1668 a 1770 tratará de manera magistral la integración de los logaritmos. La utilización de la integración por partes es sistemática y conduce a una última operación, sea directamente integrable o bien desarrollable en serie entera.

Además al principio del siglo XVIII , LEIBNIZ y JEAN BERNOULLI sostienen una controversia sobre la existencia de los logaritmos de los números negativos, e incluso de los imaginarios. EULER, en 1749 cerrará el debate abandonando el carácter unívoco del logaritmo; un número tiene una infinidad de logaritmos (complejos) de los cuales sólo uno es real.

Finalmente, es necesario evocar la exponencial, que según se admite fue introducida por LEIBNIZ y JEAN BERNOULLI, en el marco de sus trabajos en análisis. Esta nueva noción será desarrollada por EULER, y le permitirá resolver el problema de la catenaria en su "Iniciación al análisis infinitesimal" de 1748.

CONCLUSIÓN

Desde su introducción, los logaritmos pueden encontrarse tanto en los manuales de aritmética como en los de análisis. Objeto y método, no sólo han participado del desarrollo de las Matemáticas, sino también de la historia de las ciencias físico - químicas. La ph - metría, por ejemplo, no habría podido ser concebida a principios del siglo XX sin la ayuda de este concepto matemático. Surgidos de una idea de hecho muy simple, los logaritmos continúan siendo un instrumento tal vez modesto, pero a pesar de todo esencial para el conocimiento científico.

lunes, octubre 20, 2008

Qué es firebird?

http://ibdeveloper.blogspot.com/2008/10/what-is-firebird.html


I’d like to clarify some facts about Firebird and Firebird Foundation. I think right now is a correct time to remind how all these things are organized, because some messages about "crisis, firebird's death, low finances" and so on being spreaded around.
It seems that many people think that Firebird Foundations owns Firebird, makes development strategic/tactic decisions or something like this. This is not real, in fact the Firebird Foundation is an institution to collect donations and sponsors money and grant them to people, related with Firebird development. To understand exactly who is who we need to look at the current situation with Firebird.

First of all, Firebird does not exist as an entity. There is no such thing as Firebird company/organization.
We can say that Firebird as virtual entity contains 2 parts: 1) set of material assets and 2) people who perform different activities.

Three main assets of Firebird are: source code and installers stored in Sourceforge.net CVS, website firebirdsql.org and set of services for maintaining bugs and feature requests. Source code is controlled by Project admins awharrison, bellardo, dchri, dimitr, helebor, pcisar, seanleyne, skywalker (http://sourceforge.net/projects/firebird/)
You may notice that some of them are working at Sun :-). Probably this list was not updated for some time. Of course, there are contributors granted by admins who can submit code to CVS and perform other activities with files at sourceforge.net repository.
The second Firebird asset is web site firebirdsql.org. Domain is owned by Helen Borrie according to the DNS records. The site itself is located at the dedicated server (according to tracert) in Canada.
The third asset is Firebird tracker dedicated server, also somewhere in Canada. It would be interesting to see a photo of these computers :-)
Not so much? But it stands more than 5000 visits every day and log more than 1000 installations at Windows platform per day (!), according to the statistics of the installer’s 'landing page'. Also there are more than 1 mln downloads of all Firebird installers and other files per year from the sourceforge:
http://sourceforge.net/project/stats/?group_id=9028&ugn=firebird&type=&mode=year

Groups of people are involved into Firebird projects are much more interesting. There are 102 developers listed at Sourceforge home of Firebird.
As you can understand, not all of them are performing equally. Many people listed there did not submit anything for a long time ago, but there are always a small active group of people who perform 99% of R&D (research and development) and other work. Some members of these groups are migrating slowly: people come and leave, as their interests and life goals are changing.

How these people are compensated by its work? There are two sources of money: people work at “usual job” and dedicate part of time in fact paid by employer, to the Firebird development (the brightest example of this approach is IBPhoenix), and the second source is granting from Firebird Foundation or from other organizations.

How are decisions made in such structure? Firebird development decisions are made by projects admins and leading contributors (they know each other personally) - they discuss and issue roadmaps and perform tasks assignments (using tracker.firebirdsql.org), and perform actual coding and testing.

Web site is made by efforts of Helen Borrie and Pavel Cizar (may be someone else is involved too, not sure).

Finance decisions of Firebird – well, there are no finance decisions in Firebird itself, as it is a virtual entity.
Firebird Foundation considers developers' work and allocates grants according the amounts they have, IBPhoenix and other companies, who employ developers of Firebird, pay to them according to some internal reasons.

Since source code of Firebird is under IPL and IDPL licenses, it’s not possible to sell Firebird itself.

HR decisions – I mean who should make this or that or who takes this (virtual) position. In development area this decisions are made in democracy style: currently most active developers (now leaded by core developer Dmitry Yemanov) consider and discuss a person and its work/commitment. For other activities like web site and documentation there are a few volunteers who make everything, from decisions to implementation (there are always not enough skilled documentation writers).

This is the current situation. Of course, it has some advantages and disadvantages. The biggest advantage that Firebird as a distributed entity is virtually immortal in terms of close of sources. Many people are still afraid that someone will “own” Firebird, close its sources and make it proprietary. According to IPL and IDPL this scenario is not possible, and Firebird will live even with the single person who will perform basic activities.
The biggest disadvantage is the reflection of distributed structure of virtual Firebird entity - is not suitable for large investments of money and volunteers efforts.

To be continued…

jueves, octubre 02, 2008

Razón específica de la crisis financiera

En este vídeo está la clave.

Condensada en una frase, atención


http://es.youtube.com/watch?v=H4T53bqJruc

sábado, septiembre 27, 2008

Opiniones programadores

No están todos los que son pero no está nada mal


http://www.logadmin.net/2008/09/5-gran-preguntas-5-de-los-grandes.html


5 gran preguntas a 5 de los grandes programadores

Coge las direcciones de correo públicas de respetables programadores y envíales un correo con una pequeña entrevista con preguntas como; ¿como aprendieron a programar?, ¿les sirvio de algo la Universidad?, ¿qué es lo que más valoran de un programador?, ¿sirven de algo las matemáticas o físicas para programar?, ¿cuál será el próximo boom en programación?, eso es lo que hizo Stiff.

(este es un pequeño resumen de lo que me ha parecido más interesante)

Estrellas invitadas:

Linus Torvalds
- Autor del Linux kernel





Peter Norvig- Director de desarrollo de Google, famoso Lisper, autor de famosos (en algunos circulos al menos) sobre IA. Su página personal.



Guido Van Rossum- El creador del lenguaje Python






Bjarne Stroustrup - El creador de C++ , su página web aquí





James Gosling - El creador del lenguaje Java





PREGUNTAS

1. ¿Cómo aprendiste a programar?

Linus Torvalds: No aprendí a programar en la Universidad. Lo hice leyendo libros y programando (al principio con un Commodore VIC-20 y luego con un Sinclair QL).

Peter Norvig: Realicé cursos en el instituto y en la Universidad, pero siempre sentí que aprendí más por mi cuenta.

Guido Van Rossum: Fuí a la Universidad donde había un gran mainframe y había varios cursos de programación.

Bjarne Stroustrup: En la Universidad (Aarhus y después Cambridge).

James Gosling: Inicialmente yo era autodidacta. Tuve mi primer trabajo de programador antes incluso de ir a la Universidad. Me divertí mucho.


2. ¿Te sirvio de algo la Universidad?

Linus Torvalds: Especialmente pienso que la Universidad fue muy útil. En lugar de ir a una escuela de Ingeniería, fuía a la Universidad de Helsinki, que es muy teórica, por lo que la enseñanza no se centraba mucho en la programación (que era sólo una pequeña parte, y en la que termine trabajando más), la mayoría de los cursos eran sobre conceptos fundamentales y cosas como análisis complejos.

Lo cual puede parecer aburrido e incluso un gasto de esfuerzo muchas veces, pero creo que fue útil, y muchas veces me divertía. Y creo que soy un mejor programador por ello.

Peter Norvig: Creo que aprendía más por mi cuenta.

Guido Van Rossum: Fue muy importante para mí.

Bjarne Stroustrup: Las Universidades me enseñaron mucho que era útil, incluido muchas de las bases de mi futuro trabajo. Además aprendí también programación por dinero, donde la comprensión de los problemas del mundo real, correciones, mantenimiento, entrega a tiempo, etc, era más estresante que en el entorno Universitario.

James Gosling: Estuve en la Universidad hasta que finalicé el PhD.


3. ¿Cual piensas que es la habilidad más importante que todo programador debiera tener?

Linus Torvalds: Es algo que yo llamo "gusto".

Tiendo a juzgar a la gente con la que trabajo no por su eficiencia a la hora de trabajar: mucha gente puede tirar mucho código, sino por como reaccionan al código de otra gente, y obviamente también al tipo de código que escriben y que enfoques toman. Esto me indica si tienen "buen gusto" o no, y el tema es que, una persona sin "buen gusto" a menudo no es muy buena juzgando el código de otra gente y su propio código termina siendo malo.

Pero esta no es la única cosa. Algo que es muy útil, especialmente en un proyecto Open Source es simplemente la habilidad de comunicar bien lo que vas a hacer, y como lo vas a hacer. La habilidad de explicar a los otros "por qué" vas a hacer algo de tal modo, es muy importante, y no todo el mundo tiene esa habilidad.

Peter Norvig: No creo que haya una, pero diré concentracíon.

Guido Van Rossum: Sus cuestiones son un tanto generales y difíciles de contestar. :-) Supongo que ser capaz de cocinar un huevo para desayunar es algo incalculable.

Bjarne Stroustrup: La habilidad para pensar claramente: Un programador tiene que comprender problemas y mostrar soluciones.

James Gosling: Ser capaz de motivarse a si mismo. Para ser realmente bueno, tienes que amar lo que haces.


4. ¿Crees que las matemáticas o física es una destreza importante para un programador?, ¿Por qué?

Linus Torvalds: Personalmente creo que una buena base de matemáticas viene muy bien. No estoy tan seguro que con física también, pero estoy convencido que sabiendo matemáticas y teniendo una buena base ayuda a ser un mejor programador. Ya sea solamente porque los modelos mentales son similares.

Peter Norvig: Sí. Muchas de las ideas son inherentemente matemáticas: inducción, recursión, lógica, etc.

Guido Van Rossum: Matemáticas, sí (alguna parte; No me importan las ecuaciones diferenciales, pero la álgebra y lógica son importantes). La física, no creo excepto que es siempre útil interesarse por muchas cosas.

Bjarne Stroustrup: Depende del programador y de las tareas de programación. Algunas partes de matemáticas son frecuentemente útiles, la física menos que ella, pero aprender física es una de las mejores maneras de aprender matemáticas prácticas.

James Gosling: Sí. Te enseñan lógica y dedución. Y a tener un ojo análitico. Y no hay nada que sustituya a las matemáticas cuando se trata de analizar los algoritmos.

5. ¿Cual crees que sera la próxima gran innovación en programación?

Linus Torvalds: No creo que veamos un "gran salto". Hemos visto un montón de herramientas que nos facilitan las tareas diarias - con los lenguajes de alto nivel y quizás la integración de bases de datos simples en los lenguajes serán una de ellas. Pero la mayoría de lo que se ha comentado publicamente ha sido de un uso muy limitado.

Peter Norvig: Procesamiento distribuido a larga escala.

Guido Van Rossum: Lo siento, no soy una persona con una bola de cristal. Predije el CGI unos 5 años despues de que hubiera sido inventado. :-)

Bjarne Stroustrup: No lo se, no me gustan las suposiciones.

James Gosling: Los dos temas por los que estoy ocupado ahora son la copia con paralelismo y complejidad.