Showing posts with label Dahl. Show all posts
Showing posts with label Dahl. 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

Kristen Nygaard Premio Turing - ACM 2001

KRISTEN NYGAARD + Ole-Johan Dahl
A.M. Turing Award 
Norway - 2001
Original: https://amturing.acm.org/award_winners/nygaard_5916220.cfm




KRISTEN NYGAARD + Ole-Johan Dahl 



CITACIÓN al Premio A. M. Turing 2001 
Con Ole-Johan Dahl, para 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.

Kristen Nygaard es reconocido internacionalmente como el co-inventor con Ole-Johan Dahl de la programación orientada a objetos y el lenguaje de programación SIMULA. Además, fue pionero del diseño participativo y de la "escuela escandinava de desarrollo de sistemas".

El campo original de Nygaard era la investigación de operaciones. Al principio de su carrera se dio cuenta de que las simulaciones por computadora serían una herramienta útil. Colaboró ​​estrechamente con Ole-Johan Dahl quien, en palabras de Kristen, "tenía un talento excepcional para la programación". Esta colaboración condujo al primer lenguaje Simula, SIMULA I, basado en el lenguaje ALGOL-60. SIMULA I Originalmente se  consideraba un lenguaje de descripción y simulación, no un lenguaje de programación general. Dahl y Nygaard se dieron cuenta rápidamente de que sus conceptos de simulación podían aplicarse para la programación en general. Como resultado de esta idea, diseñaron Simula 67, más tarde simplemente llamada SIMULA. Es un lenguaje de programación de propósito general y, como SIMULA I, contiene Algol-60 como un subconjunto.

SIMULA contiene el núcleo de los conceptos ahora disponibles en lenguajes
convencionales y orientados a objetos  como C ++, Eiffel, Java y C #:

  1. Clase y objeto. El concepto de clase como plantilla para crear instancias (objetos).
     
  2. Subclase Las clases pueden organizarse en una jerarquía de clasificación por medio de subclases.
     
  3. Métodos virtuales Una clase SIMULA puede definir métodos virtuales que se pueden redefinir en subclases.
     
  4. Objetos activos. Un objeto en SIMULA puede ser la cabeza de un hilo activo; técnicamente es una co-rutina.
     
  5. Combinación de acción. SIMULA tiene una construcción interna para combinar las partes de acción de una clase y su subclase.
     
  6. Procesos y planificadores. SIMULA facilita la escritura de nuevas abstracciones de concurrencia, incluidos los planificadores.
     
  7. Marcos. SIMULA proporcionó el primer marco orientado a objetos en forma de simulación de clase, el mecanismo que utilizó para implementar su simulación.
     
  8. Gestión automática de memoria, incluida la recolección de basura.

Una excepción a la adopción generalizada de los conceptos de SIMULA es la noción de un objeto activo con su propia secuencia de acción, que, curiosamente, no se ha adaptado a otros lenguajes. Para Dahl y Nygaard, tener objetos activos era una instalación esencial para poder simular procesos concurrentes del mundo real.

Antes de que el concepto de orientación a objetos se popularizara, SIMULA influyó en el desarrollo de nuevos tipos de datos abstractos. Como resultado de estas ideas, Simula se amplió con construcciones como modificadores públicos, privados y protegidos, originalmente propuestos por Jakob Palme.

Un resultado inesperado fue que la gente a menudo descubrió que hacer un modelo en Simula es más útil que los resultados reales de la simulación. El proceso de describir la aplicación proporcionó una información valiosa en sí misma. Esto llevó a Kristen a formular uno de sus aforismos favoritos: "programar es comprender". Pensó que la programación no debería considerarse una disciplina técnica de bajo nivel diseñada solo para realizar una tarea específica, Sino que escribir un programa debería mejorar la comprensión del dominio del problema y las soluciones.
El siguiente avance de Nygaard fue el desarrollo, con Petter Håndlykken y Erik Holbæk-Hansen, de DELTA. No era un lenguaje de programación, sino un lenguaje de descripción del sistema utilizado para ayudar a modelar sistemas del mundo real. Fue diseñado para el uso colaborativo de desarrolladores y usuarios juntos: delta significa participar en Noruego. DELTA se basó en SIMULA, pero se extendió con ecuaciones para describir tanto los cambios de estado discretos como los cambios continuos a lo largo del tiempo.
Cuando Kristen era profesor visitante en Aarhus, Dinamarca, comenzó a trabajar con Bent Bruun Kristensen, Ole Lehrmann Madsen y Birger Møller-Pedersen en el lenguaje de programación BETA. BETA es un lenguaje para describir modelos del mundo real, pero, en la tradición de SIMULA, también fue útil como lenguaje de implementación. En el diseño del lenguaje de programación BETA, un criterio para agregar cualquier nueva construcción al lenguaje era que fuera significativo tanto para el modelado como para la programación. 
A finales de los años sesenta, el Sindicato de Trabajadores del Hierro y el Metal de Noruega contactó con Kristen para obtener ayuda con las nuevas tecnologías informáticas. Kristen y otros desarrollaron cursos y libros sobre tecnologías de la información para el Sindicato. El proyecto desarrolló el primer "acuerdo de datos" entre un sindicato y una empresa, y más adelante se incluyeron elementos del acuerdo en la legislación Noruega.
El proyecto Iron and Metal fue el primero de una serie de proyectos de investigación escandinavos que involucraron a usuarios en el diseño de sistemas de TI. Nygaard fue motivado por el deseo de capacitar a los usuarios para que tengan más influencia en estos diseños. Introducir la participación de los usuarios en el desarrollo de sistemas fue, durante muchos años, considerado político. Hoy, sin embargo, las empresas se dan cuenta de que al involucrar directamente a los usuarios en el proceso de diseño, los sistemas resultantes a menudo son mejores. Los métodos para involucrar a los usuarios en el diseño de sistemas de TI ahora se conocen como diseño participativo, y muchos grupos de todo el mundo los enseñan y practican.
Kristen también fue uno de los pocos filósofos de la informática, derivado de sus primeros trabajos sobre simulación. Para poder crear un modelo de fenómenos del mundo real, es necesario tener un marco conceptual sólido para comprender y organizar el conocimiento. Las capacidades de modelado siempre fueron fundamentales para su diseño de lenguajes. Un ejemplo famoso de esto es el mecanismo de subclase, desarrollado para representar las jerarquías de especialización del concepto de dominio. 
Kristen estaba encantado con el enorme éxito del enfoque orientado a objetos de la programación. Durante una visita a Xerox PARC, Alan Kay demostró el sistema Smalltalk, y Kirsten quedó muy impresionado al ver cómo las ideas de SIMULA habían inspirado al equipo de Smalltalk. Se alegró de ver estas ideas más adaptadas por lenguajes como Flavors, Loops, C ++, Eiffel, Java, C# y muchos otros. Nunca participó en la crítica de posibles deficiencias de otros idiomas; por el contrario, respetaba a sus creadores y reconocía su influencia en el desarrollo de la orientación a objetos.
Se escribieron cientos de libros sobre orientación a objetos, pero Kristen descubrió que la mayoría de estos libros no hacían un buen trabajo al enseñar los conceptos fundamentales. Estaba muy preocupado por la educación, pero frustrado por lo que consideraba una falta de calidad. El objetivo de su último proyecto (COOL: Comprehensive Object-Oriented Learning) fue desarrollar material de enseñanza de primera clase sobre programación orientada a objetos. Acababa de establecer un equipo internacional de participantes y estaba listo para comenzar el trabajo cuando murió en 2002.
Kristen inició una investigación sobre diseño participativo y programación orientada a objetos en la Universidad de Aarhus. En la Universidad de Oslo, inició una investigación sobre diseño participativo; Ole-Johan Dahl ya había establecido un grupo de investigación sobre orientación a objetos. Su trabajo en el desarrollo de sistemas y en los impactos sociales de la tecnología informática se convirtió en la base de la Escuela Escandinava en Desarrollo de Sistemas y el campo del diseño participativo.
Pero Kristen no fue solo un pionero e investigador en informática. Era un ciudadano social y político comprometido, involucrado en varios aspectos de la sociedad, incluida la política. Durante la intensa lucha política antes del Referéndum de 1972 sobre si Noruega debería convertirse en miembro del Mercado Común Europeo, trabajó como coordinador para la gran mayoría de las organizaciones juveniles que trabajaron en contra de ser miembro de la UE. También fue el líder (1990-1995) del No a Noruega al movimiento de la UE, que argumentó en contra de la pertenencia de Noruega a la Unión Europea y les condujo a la victoria en el referéndum de 1994.  
Se puede obtener más información sobre Kirsten Nygaard en:
 
1.- Memorial site for Kristen Nygaard tiene mas información.

2.- Meyer, Bertrand (ed.), “In memory of Ole-Johan Dahl and Kristen Nygaard,” Journal of Object-Technology, Vol. 1, Num. 4, September-October 2002.

3.- Berntsen, Drude, Knut Elgsaas, and Håvard Hegna, “The Many Dimensions of Kristen Nygaard, Creator of Object-Oriented Programming and the Scandinavian School of System Development,” History of Computing: Learning from the Past, Proceedings of IFIP WG 9.7 International Conference, HC 2010, held as Part of World Computer Congress 2010, Brisbane, Australia, September 20-23, 2010, Tatnall, Arthur (Ed.) ISBN: 978-3-642-15198-9, Springer Berlin Heidelberg New York 2010.

4.- Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen: The When, Why and Why Not of the BETA Programming Language, ACM History of Programming Languages III, San Diego, June 2007.

    Autor: Ole Lehrman Madsen