Showing posts with label Nygaard. Show all posts
Showing posts with label Nygaard. Show all posts

Monday, December 30, 2019

Com s'ha arribat fins a la Programació Orientada a Objectes?

Com s'ha arribat fins a la Programació Orientada a Objectes?
Per. Maurici Carbó



       Estem rodejats d'ordinadors, telèfons i tauletes. Aquests aparells realment són petits computadors que també n'hi diem maquinari (hardware en anglès) i funcionen dirigits per un programari (software en anglès) i ho considerem una cosa de la vida de cada dia.

      Però tot això és molt nou. Els fets més importants han passat els darrers anys: a partir de 1970, no s'ha inventat a casa nostra, i gairebé no ens n'hem assabentat de res, ni tampoc sabem com hem arribat fins aquí. Això és el que voldria explicar aquí.

      Tot ve de la necessitat de l'ésser humà des dels temps més antics de preveure què passarà, i quan passarà en el futur. Tan per a poder situar-se al món com per construir calendaris precisos.

      Els antics Grecs ja van construir les primeres màquines amb engranatges per a preveure la situació previsible del sol, la lluna els planetes i les estrelles al cel en una data concreta. L'exemple més conegut i sorprenent per la seva antiguitat és l'Anticitera.

Anticitera (de l'any 100 aC):



Reconstrucció dels mecanismes de l'Anticitera

      I al llarg de la Història es van anar fent màquines cada cop més complicades per a poder preveure fets cada cop més detallats: Per exemple, per preveure les marees. Són les màquines d'anàl·lisi harmònic. 
 Màquina d'Anal·lisi Harmònic
Tide Predicting Machine nº2:



En la màquina anterior a aquesta, s'entraven les dades amb unes targetes perforades que eren les mateixes que usaven els telers Jacquard.


  Charles Babbage


Ada Lovelace



 

Per això una de les frases més famoses de Ada Lovelace és:
La Màquina Analítica teixeix patrons algebraics de la mateixa manera que el teler Jacquard teixeix flors i fulles”. (Ada Lovelace)


Teler Jacquard: Teixit i fitxes perforades.

Carta d'agraïment de Charles Babbage a Ada Lovelace 
per la feina que havia fet amb la màquina analítica.  Ell li diu a ella: 
Forget this world and all its troubles and if possible 
its multitudinous Charlatans—every thing 
in short but the Enchantress of Number ” 
(Encantadora de números)




     La màquina més famosa que es conserva encara de tot aquets temps és la “Màquina Diferencial” de Charles Babbage i Ada Lovelace. I aquí per primer cop es va veure que per a fer anar aquestes màquines es necessitaven dos oficis diferents: Construir la màquina, que va ser el que va fer Charles Babbage, i fer-la funcionar, que va ser la feina que va fer Ada Lovelace. El producte del treball dels dos va ser la impressió de llibres de llistats logaritmes que en aquella època eren imprescindibles per a calcular-ho tot.
I al Segle XX, a la Segona Guerra Mundial va sorgir un nou repte: saber què farien els exèrcits enemics espiant i decodificant els seus missatges secrets encriptats amb una màquina (la màquina Enigma). Treballant inicialment a mà, Alan Turing i tot l'equip de Bletchley Park (a Buckingamshire UK), van construir una màquina anomenada “Bombe” que va aconseguir desxifrar els missatges secrets de l'Enemic. Però tot i amb aquest èxit, el més important que va fer Alan Turing va ser entendre que algun dia hi podria haver una màquina que podés fer qualsevol càlcul sense haver-la de fer a mida per a cada problema. Això el converteix en el fundador del la Ciència de les Computadores.



 Code Breakers” de Bletchley Park





      Totes les màquines que s'havien fet fins aleshores eren dedicades a fer una feina concreta que començava i s'acabava. Però al pensar en màquines generals, el que ara se'n diuen “Màquines de Turing” el primer que va preocupar a Turing va ser saber abans de començar si per a fer un càlcul qualsevol, la màquina s'acabaria parant i donant un resultat, o no: Va deduïr que una màquina de les seves no podria saber mai això abans.



Funcionament d'una màquina de Turing.
(amb el programa anomenat: el Castor ocupat)

      Una màquina de Turing és l'equivalent a qualsevol computador que es pugui construir. Però és només un experiment mental que dona la imatge més senzilla possible d'una computadora. I que a la vegada ben programada seria capaç de fer el que faci qualsevol d'elles. És només una cinta infinita en la que un capçal pot anar escrivint i esborrant uns i zeros seguint unes regles preestablertes: Un programa.
Un cop establert el que havia de ser una computadora equivalent a la de Turing, als anys 1950 es van construir moltes màquines d'aquestes arreu del Món. Però els primers èxits que van tenir ressò es van aconseguir a Holanda, on es va construir la màquina ARMAC (1956) i Electrologica X1 amb l'assessorament de EW Dijkstra que va poder fer una demostració en públic del seu algorisme per a Trobar el camí més curt entre dues ciutats de les 64 més importants d'Holanda fet amb el llenguatge per a computadores anomenat ALGOL que Dijkstra va ajudar a crear (publicat el 1959). 



 Edsger Dijkstra (a l'esquerra) 1953 a Amsterdam


     I aleshores es va entrar en la primera explosió de la informàtica. Una batalla impossible per a controlar unes màquines cada cop més grans poderoses i ràpides, i que de vegades paraven sense avisar i els seus programadors amb les mateixes eines que al principi, clamant per assolir una major abstracció: La dificultat del desenvolupament de programes creixia amb la dimensió dels programes i de les màquines.

(Desenvolupant els Objectes per a SIMULA language)


      Cap al 1968 dos noruecs Dahl i Nygaard van inventar els Objectes, quan desenvolupaven un llenguatge de Computadora que es va dir 'SIMULA' pensat per a fer simulacions de física. 




     El 1972 es va publicar el llibre "Structured Programming" escrit per EW Dijkstra Ole-Johan Dahl i C.A.R Hoare.
 
      Finalment, als Estats Units i sota el marc de la investigació en Intel·ligència Artificial al MIT dirigit per Minsky, va produïr els primers processadors de text i es van fer els darrer passos: El Principi de Substitució de Liskov, Que va funcionar per primer cop el 1978 al llenguatge CLU. en referència a la seva autora: Barbara Liskov, autora que posteriorment va fonamentar també la computació distribuïda com a diàleg entre objectes.

 
BarbaraLiskov (Autora de: The Liskov Substitution Principle) 
 
      La combinació dels primers llenguatges d'Ordinador estructurats, amb els Objectes dels noruecs que van desenvolupar el SIMULA, i el Principi de Substitució de Liskov i el diàleg entre objectes de la Computació distribuida van ser el fonament de les abstraccions necessaries per a arribar al que son ara els llenguatges de programació de computadores (Java, C++, C# etc.) i van fer possible tota la complexitat que ha arribat a tenir l'internet actualment. És el que s'anomena Programació Orientada a Objectes.

Monday, December 2, 2019

OLE-JOHAN DAHL Premio Turing 2001

OLE-JOHAN DAHL + Kristen Nygaard
A.M. Turing Award 
Norway - 2001
Original:  https://amturing.acm.org/award_winners/dahl_6917600.cfm





OLE-JOHAN DAHL & Kristen Nygaard


CITACIÓN al Premio A. M. Turing 2001

Ole-Johan Dahl & Kristen Nygaard c
onjuntamente, por las ideas fundamentales para el surgimiento de la programación orientada a objetos, a través del diseño de los lenguajes de programación Simula I y Simula 67.

La programación orientada a objetos es un paradigma de programación dominante en esta era. Fundamental para la aparición de este paradigma fueron los conceptos centrales como objetos, clases y herencia con cantidades virtuales, todos claramente establecidos en el lenguaje de simulación de eventos discretos de Ole Johan Dahl y Kristen Nygaard, Simula I y el lenguaje de programación general Simula 67. Los objetos integran datos, aspectos de secuencia de acción procesal y cooperativa en una entidad unificadora muy general y poderosa.

Al incorporar estos conceptos centrales en un lenguaje diseñado tanto para la descripción del sistema como para la programación, Dahl y Nygaard proporcionaron una base lógica y notacional para las ideas. El software podría construirse en capas de abstracción, cada una de las cuales dependería de la descripción y la plataforma conceptual implementada por las capas anteriores. Al definir Simula 67 como una extensión de un lenguaje estándar internacional, Algol-60, este medio de expresión fue accesible y disponible para toda la comunidad investigadora. Simula dio forma y aceleró el surgimiento de la programación orientada a objetos y la disciplina de gestión que la acompaña por muchos años. 

Ole-Johan Dahl nació el 12 de octubre de 1931 en Mandal, un pequeño pueblo en la costa sur de Noruega. Aunque ahora es un centro turístico, los residentes de Mandal históricamente habían mirado al mar para ganarse la vida, y Dahl descendía por ambos lados de una larga lista de capitanes y marineros. Pronto se hizo evidente que Dahl no continuaría con esa tradición, porque sus primeros intereses eran leer, las matemáticas y tocar el piano. Su madre era ama de casa, y ni su hermana ni su hermano tenían una inclinación académica. 

Cuando tenía siete años, su familia se mudó a Drammen, al sur de Oslo. Cuando tenía trece años, su primo mayor fue asesinado a tiros por los nazis y toda la familia huyó a Suecia. En consecuencia, se perdió el último año de la escuela primaria y comenzó directamente en la escuela secundaria después de tomar el examen de ingreso como candidato externo. Debido a que fue capaz de ayudar a su maestro a explicar las matemáticas a los otros alumnos, pronto fue apodado "el profesor". 

Dahl escuchó música clásica por primera vez cuando tenía 3 años y quedó cautivado por ella. Su pasión por la música permaneció con él durante toda su vida, pero parece que decidió bastante temprano hacer su carrera en otro lugar. Eligió una carrera académica centrada en las matemáticas, porque la música era un asunto personal y privado utilizado para enriquecer su vida y la de sus amigos, en lugar de un campo para ser utilizado como profesión.

Dahl estudió matemática numérica en la Universidad de Oslo. Durante su tiempo en la Universidad, también trabajó a tiempo parcial en el Establecimiento de Investigación de Defensa de Noruega (NDRE), al que fue asignado en 1952 para su servicio militar obligatorio. Continuó trabajando allí a tiempo completo después de graduarse. Fue en NDRE donde tuvo contacto por vez primera con las computadoras. También tuvo la suerte de caer bajo la influencia de Jan Garwick (a menudo llamado el "padre de la informática" en Noruega), quien fue capaz de estimular y fomentar el talento de Dahl. En 1954, Dahl se convirtió en asistente de Garwick.


Ferranti Mercury - 


Hacia 1957, el NDRE había obtenido una de las primeras computadoras Ferranti Mercury. Dahl diseñó e implementó lo que entonces se consideraba un lenguaje de alto nivel para Mercury, llamado MAC (Mercury Automatic Coding). El título universitario de Dahl, aunque oficialmente en el área de análisis numérico, era en realidad sobre ciencias de la computación: el título de su tesis era "Múltiples conteos de índice en la computadora Ferranti Mercury".

En NDRE, Dahl también se encontró con Kristen Nygaard, y la asociación entre estos dos hombres iba a cambiar la imagen de la informática. Nygaard había estado trabajando en cálculos relacionados con el diámetro de las barras de uranio para el primer reactor nuclear de Noruega. En 1949, NDRE comenzó a usar la simulación de Monte Carlo, con los cálculos realizados a mano, en lugar de intentar resolver las ecuaciones exactamente. "En ese modelo [de simulación] se generaron las rutas físicas y las historias de un gran número de neutrones y se utilizó un análisis estadístico de sus propiedades para estimar la elección adecuada del diámetro de la barra" [Nyggard 1986]. Más tarde, Nygaard aplicó el mismo enfoque a otros problemas, cambiando su enfoque a la investigación operativa, y en 1956 obtuvo una maestría en ciencias con una tesis sobre teoría de la probabilidad. 

En 1960, Nygaard se mudó al Norwegian Computing Center (NCC), un instituto de investigación semi-gubernamental que se había establecido en 1958. Su objetivo era expandir las capacidades de investigación del NCC en informática e investigación operativa. Escribió: “Muchas de las tareas civiles resultaron presentar el mismo tipo de problemas metodológicos [que su trabajo militar anterior]: la necesidad de usar simulación, la necesidad de conceptos y un lenguaje para la descripción del sistema, la falta de herramientas para generar programas de simulación ''. En 1961 comenzó a diseñar un lenguaje de simulación como una forma de atacar esos problemas.

En enero de 1962, Nygaard escribió una carta describiendo sus progresos, dirigida a Charles Salzmann, un especialista francés en investigación operativa. Nygaard escribió:
 

 
"El estado del lenguaje de simulación (compilador de Monte Carlo) es que tengo ideas bastante claras sobre cómo describir los sistemas de colas, y he desarrollado conceptos que creo que permiten una descripción razonablemente fácil de grandes clases de situaciones. Creo que estos resultados tienen algún interés incluso aislados del compilador, ya que las formas actualmente utilizadas de describir tales sistemas no son muy satisfactorias. ..." [7]

"El trabajo en el compilador no pudo comenzar antes de que el lenguaje estuviera bastante bien desarrollado, pero esta etapa parece haberse alcanzado. El programador experto que esté interesado en esta parte del trabajo se reunirá conmigo mañana. Ha sido bastante optimista durante nuestras reuniones anteriores". 


El "programador experto" fue Ole-Johan Dahl. Trabajando con Nygaard, Dahl produjo las ideas iniciales para la programación orientada a objetos, que ahora es el estilo dominante de programación para aplicaciones comerciales e industriales. Dahl se unió al NCC en 1963 y permaneció allí hasta 1968, cuando fue invitado a ser profesor titular en la Universidad de Oslo.

Los lenguajes que Dahl y Nygaard desarrollaron juntos fueron, primero (1962-1964) un lenguaje de simulación llamado SIMULA, ahora generalmente conocido como SIMULA I, y posteriormente un lenguaje de propósito general llamado SIMULA 67. 


SIMULA I estaba destinado a ser utilizado tanto para describir sistemas complejos como para programar simulaciones de su comportamiento. Nygaard escribió:

"SIMULA [I] debería dar a sus usuarios un conjunto de conceptos en términos de los cuales podrían comprender el sistema considerado, y un lenguaje para una descripción precisa y completa de sus propiedades. Por lo tanto, debe ser una herramienta tanto para la persona que escribe la descripción como para las personas con las que desea comunicarse sobre el sistema".

"Al mismo tiempo, esta descripción del sistema debería, con la información necesaria de entrada / salida y análisis de datos agregados, ser compilable en un programa de simulación por computadora, proporcionando información cuantitativa sobre el comportamiento del sistema".
[8]

Aunque diseñado como un lenguaje de simulación, casi desde el principio SIMULA I se utilizó no solo para la simulación sino también para la programación de uso general. Introdujo a sus usuarios la idea de organizar sus programas como un sistema de interacción, ejecución de componentes, y esta idea resultó útil para una amplia gama de aplicaciones. Estos componentes interactivos se convirtieron en los "objetos" de SIMULA 67.

SIMULA 67 fue diseñado desde el principio como un lenguaje de propósito general, pero Dahl y Nygaard inventaron un mecanismo (prefijo de clase) que hizo que las características específicas de simulación de SIMULA I estuvieran disponibles en SIMULA 67 como un tipo especial de biblioteca. Los prefijos se podrían usar de dos maneras diferentes, lo que ha dado lugar a dos de las ideas más importantes en los lenguajes de programación modernos: la herencia, que facilita la reutilización del código de formas imprevistas, y los módulos, que se utilizan para ampliar el vocabulario de un lenguaje de programación.


Estas ideas (objetos, herencia y modularidad) se encuentran entre las principales contribuciones de Dahl y Nygaard a la disciplina de la programación. SIMULA también contribuyó con el concepto de proceso, que permitió a los programadores expresar las actividades que se desarrollan simultáneamente. Con una economía maravillosa, todas estas ideas se realizaron como usos variantes de un solo mecanismo lingüístico, la clase.


Parte del éxito de Dahl y Nygaard en la creación de ideas de orientación a objetos se debe claramente a sus extraordinarios talentos. Pero parte también se debe a sus antecedentes muy diferentes, que hicieron que cada característica del lenguaje propuesta por uno fuera objeto de críticas por parte del otro. Una historia cuenta que en la primavera de 1967, un nuevo empleado le dijo al operador de la centralita con voz sorprendida: “Dos hombres están luchando violentamente frente a la pizarra en el pasillo de arriba. ¿Qué debemos hacer? ”El operador salió de la oficina, escuchó por unos segundos y luego dijo:“ Relájate. Solo Dahl y Nygaard discuten sobre SIMULA.


Después de que Dahl se mudó a la Universidad de Oslo, dejó de trabajar deliberadamente en el desarrollo de SIMULA y asumió la responsabilidad, casi con una sola mano, de desarrollar la informática en Noruega como disciplina académica. Durante los primeros 10 años fue el único profesor de informática en la Universidad. Enseñó durante el día, escribió libros de texto por la noche y supervisó hasta 20 estudiantes graduados a la vez. Trabajó en metodología de programación y produjo, con Tony Hoare, un capítulo llamado "Estructuras de programas jerárquicos" que se convirtió en parte del famoso libro "Programación estructurada" [2]



El trabajo posterior de Dahl fue influenciado por el sistema de Hoare para razonar matemáticamente sobre los programas. Comenzó a usar y enseñar estas técnicas de razonamiento, y sintió que mejorarían incluso los programas producidos informalmente. En 1992, Dahl publicó la Programación verificable, que incluye muchos de sus propios resultados de investigación. [9] En la década de 1990 regresó a la programación orientada a objetos a través del diseño del lenguaje ABEL y su investigación sobre el razonamiento sobre sistemas orientados a objetos.

Dahl murió en 2002 después de una larga batalla contra el cáncer linfático. Él y su esposa Tove tuvieron dos hijos, Fredrik e Ingrid.



Ole-Johan Dahl en la Web

Muchos artículos sobre Dahl están disponibles en la red mundial. Algunos de ellos han sido utilizados como fuentes en la preparación de este artículo.


La página de Ole-Johan Dahl

Bertrand Meyer, “In memory of Ole-Johan Dahl and Kristen Nygaard”, and Nygaard's own eulogy for Dahl.


Virtual Exhibition. In People Behind Informatics.


ACM press release about the 2001 Turing award





Autor: Andrew P. Black