DSN_XP y el pensamiento de Floyd

Codificar como análisis

Desarmar para comprender

Informe de Stanford, 7 de noviembre de 2001 
Robert Floyd, pionero en la programación informática, muere a los 65 años

DAWN LEVY

... "En los viejos tiempos, los programadores simplemente jugaban con los programas hasta que parecían funcionar", dice el profesor emérito de El arte de la programación informática, Donald Knuth. 

Este primer enunciado, nos evidencia la presencia del modelo codificar y corregir como el modelo de desarrollo más básico asociado a la programación, lo mismo que descubrimos con DSN_XP 

"Floyd demostró que había una manera de probar que los programas funcionarían". Su enfoque de casar las matemáticas con la informática fue "una revelación para el campo", dice Knuth.

"El método de invariantes de la década de 1960 de Floyd, en el que las afirmaciones se adjuntan a puntos en un programa de computadora, sigue siendo la base de mucho trabajo para demostrar que los programas de computadora cumplen con sus especificaciones", dice John McCarthy, profesor emérito de ciencias de la computación.

En el mirar de Floyd, entendemos algunos de los criterios con los cuales fuimos formados como analistas programadores bajo la malla curricular insertada en el modelo educativo del Ecuador, debido a la necesidad de observar a la programación como un flujo de estados y eventos que determinan el comportamiento de lo que se ha programado en base a las restricciones del lenguaje de programación y consecuentemente, del paradigma de diseño requerido para el proceso de abstracción y transformación en código programable.

Biografía 

Robert Floyd, pionero de la programación
Nacido en Nueva York el 8 de junio de 1936, Floyd fue reconocido como un niño prodigio a los 6 años; se saltó tres grados y terminó la escuela secundaria a los 14 años. Una beca le permitió estudiar en la Universidad de Chicago, donde recibió una licenciatura en artes liberales en 1953 a los 17 años. Después de eso, se mantuvo a sí mismo y obtuvo otra licenciatura en física. en 1958.

Toda su carrera en computación se basó en esfuerzos autodidactas”, recuerda su segunda ex esposa, Christiane Floyd, científica informática de la Universidad de Hamburgo en Alemania. 
"Comenzó como operador en el turno de noche, aprendió por sí mismo a programar, comenzó a publicar a principios de la década de 1960 y volvió a ingresar a la academia como profesor asociado en Carnegie Mellon a la edad de 27 años. Tenía solo 32 años cuando obtuvo su título". cátedra completa en Stanford".

Aunque nunca realizó los trámites para obtener un doctorado, antes de su nombramiento como profesor asociado de informática en Stanford en 1968, había escrito al menos una docena de artículos considerados superiores a cualquier tesis doctoral en informática en ese momento. Uno de los temas más candentes en informática en ese momento era el lenguaje de programación de computadoras. Dice Knuth: "Solo hubo cuatro buenos artículos sobre el tema, todos de Floyd".

Su investigación incluyó el diseño y análisis de algoritmos para encontrar las rutas más cortas en una red, analizar (descomponer) lenguajes de programación, calcular cuantiles, imprimir tonos de gris en una impresora de puntos, clasificar información y seleccionar permutaciones y combinaciones aleatorias.

Sin embargo, su logro científico más importante fue ser pionero en métodos sistemáticos de verificación de programas. Su artículo seminal de 1967, "Asignación de significados a los programas", abrió el campo de la verificación de programas. Su idea básica era adjuntar las llamadas "etiquetas" en forma de aserciones lógicas a declaraciones o ramas de programas individuales que definirían los efectos del programa en función de una definición semántica formal del lenguaje de programación. 
Muchos investigadores en métodos formales de computación en todo el mundo adoptaron este método. Una de las influencias más importantes fue la de CAR Hoare, quien en 1969, a partir del trabajo de Floyd, desarrolló su cálculo de la semántica de precondiciones y poscondiciones para programas de computadora.

Al principio, Knuth y Floyd encontraron sus intercambios académicos tan productivos que decidieron que tenían que estar en la misma institución, y ambos vinieron a Stanford. Los dos estaban en comunicación constante cuando Knuth estaba trabajando en su libro El arte de la programación informática (originalmente destinado a ser un volumen), que se suponía que reuniría todos los algoritmos interesantes que la informática tenía para ofrecer. Pero Knuth no pudo terminar su libro. Mientras escribía, tenía que lidiar constantemente con algoritmos nuevos y elegantes que necesitaba acomodar. Floyd, el principal revisor previo a la publicación del libro y la persona citada más que nadie en el libro, fue el principal "culpable".

Floyd puede haber sido el primer defensor de la refactorización: la reescritura de programas de trabajo desde cero, reutilizando solo las ideas esenciales. La refactorización es ahora una práctica estándar entre los programadores de computadoras. Al buscar continuamente formas más simples de hacer lo mismo, Floyd pretendía mejorar no solo los programas, sino también las habilidades y la comprensión de los programadores.

En Stanford, enseñó cursos algorítmicos, incluidos "Clasificación y búsqueda". Con su antiguo alumno de posgrado Richard Beigel, escribió un libro de texto titulado El lenguaje de las máquinas: una introducción a la computabilidad y los lenguajes formales (Computer Science Press, 1994).

Floyd fue presidente del Departamento de Ciencias de la Computación de 1973 a 1975, un período de gran crecimiento del departamento cuando Ciencias de la Computación se mudó de Forsythe Hall a Margaret Jacks Hall, ubicado en un lugar más céntrico. Floyd pudo usar el prestigio de su puesto junto con Amnistía Internacional y un cuadro internacional de científicos de sistemas para ayudar a salvar al exministro de Educación de Chile, Fernando Flores, quien fue relegado por el gobierno de Pinochet a uno de los peores campos de prisioneros de Chile. Sobre la base de una invitación para estudiar en Stanford, emitida por Floyd, a Flores se le permitió salir del país con su familia;

En 1978, Floyd ganó el Premio Turing de la Asociación de Maquinaria de Computación (ACM), el más alto honor en ciencias de la computación, "por tener una clara influencia en las metodologías para la creación de software eficiente y confiable, y por ayudar a fundar los siguientes importantes subcampos de la informática: la teoría del análisis sintáctico, la semántica de los lenguajes de programación, la verificación automática de programas, la síntesis automática de programas y el análisis de algoritmos".

En 1991, la Sociedad de Computación del Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) le otorgó a Floyd su premio Computer Pioneer por su trabajo en los primeros compiladores. (Un compilador es un software que traduce un programa de computadora como un todo en un código de máquina que se guarda para su ejecución posterior en el momento deseado).

Floyd, quien se retiró de Stanford en 1994, fue miembro de la Academia Estadounidense de las Artes y las Ciencias, la Asociación Estadounidense para el Avance de la Ciencia y la ACM.

DSN_XP y la semántica

Semántica y el lenguaje

Estudio de la estructura del lenguaje

DSN_XP recurre a investigar sobre el concepto semántica para entender el concepto de lenguaje y con ello asociar el paradigma de programación.

Semántica

Parte del estudio filosófico e investigación realizada por DSN_XP a la ingeniería del software, requería que se traten temas como el uso de los lenguajes de programación como herramientas necesaria para el proceso de abstracción.

En la Teoría de lenguajes de programación, la semántica es el campo que tiene que ver con el estudio riguroso desde un punto de vista matemático del significado de los lenguajes de programación. Esto se hace evaluando el significado de cadenas sintácticamente legales definidas por un lenguaje de programación específico, mostrando el proceso computacional involucrado. En el caso de que la evaluación fuera de cadenas sintácticamente ilegales, el resultado sería no-cómputo. La semántica describe el proceso que una computadora sigue cuando ejecuta un programa en ese lenguaje específico. Esto se puede mostrar describiendo la relación entre la entrada y la salida de un programa, o una explicación de cómo el programa se ejecutará en cierta plataforma, y consecuentemente creando un modelo de computación.(Wikipedia)

De los diversos estudios relacionados con la semántica, nuestra primera referencia fue tratada respecto a los modelos matemáticos utilizados en las bases de la ciencias de la computación que nos permitieron comprender el estudio de los compiladores y de los procesadores, factores que coexisten en el tipo de computación que se espera del modelo matemático de procesamiento.