Diferencia entre revisiones de «Barbara-Liskov»

De WIAragón
Saltar a: navegación, buscar
(Libros)
(Premios)
Línea 78: Línea 78:
 
Premio Turing 2008
 
Premio Turing 2008
  
[[Archivo:Premio Turing.jpg|100px|150x]]  [[Archivo:Premio-turing00.jpg|150px|200x]]
+
[[Archivo:Premio Turing.jpg|75px|125x]]  [[Archivo:Premio-turing00.jpg|150px|200x]]
  
  
 
Medalla Jhon von Neumann 2004
 
Medalla Jhon von Neumann 2004
 +
 +
[[Archivo:Neumann.jpg|75px|125x]]
  
 
==Libros==
 
==Libros==

Revisión del 12:46 9 abr 2017

GPower

Barbara Liskov
Barbara_liskov.jpg
Nombre principal Barbara Jane Huberman
Nacimiento 7 de noviembre de 1939, California, Estados Unidos
Nacionalidad estadounidense
Campo Científica y Programadora
Lugar de profesión Instituto Tecnológico de Massachusetts
Creaciones Principio de sustitución de Liskov y CLU
Trabajo notable Computación distribuida
Alma Mater Universidad de Stanford
Libros

Abstractions and specification in program development

Program development in Java
Premios Premio Turing 2008 y Medalla Jhon von Neumann 2004

Barbara Jane Huberman (nacida el 7 de noviembre de 1939), más conocida como Barbara Liskov, es una científica y programadora estadounidense, líder del Grupo de Metodologia de Programación y profesora del Tecnológico de Massachusetts. En la actualidad tiene 77 años.

Biografía

En 1970, se casó con Nathan Liskov, y su hijo, Moses Liskov, nació en 1975.


Investigaciones

Principio de sustitución de Liskov

  • Se basa en lenguajes OO como C# o VB.NET, la clave para conseguir la abstracción y polimorfismo de entidades es mediante la herencia, y es precisamente en esta característica en la que se basa el Principio de Sustitución de Liskov (Liskov Substitution Principle, LSP). Cuáles son los fundamentos básicos de diseño que debe seguir la herencia en un caso particular, o cuál es la mejor forma de crear jerarquías de herencia entre clases, son algunas de las preguntas a las que responde dicho principio.
  • Un ejemplo de este principio:

275x

CLU

  • El CLU es un lenguaje de programación creado por Barbara Liskov y sus estudiantes del MIT en los años 1974 y 1975, orientado a usar constructores para los tipos de datos abstractos que se incluyeron en el código, un paso adelante en la programación orientada a objetos (POO).
  • CLU es un lenguaje imperativo compilado con características extensas para definir y emplear tipos de datos abstractos. Se diseñó para el desarrollo general de aplicaciones, y también como un vehículo de investigación en el diseño de lenguaje informático para experimentar con la abstracción de datos y otros problemas de diseño de lenguaje.
El nombre "CLU" es la abreviatura de "CLUster", esto fue elegido porque un programa CLU normalmente consiste en procedimientos,clústeres e interactores. CLU apoyó una serie de características avanzadas para los lenguajes estructurados en su día, incluyendo un recolector de basura iteradores,y en el manejo de excepciones entre otros. Algunas de sus ideas, especialmente en el área de manejo de excepciones, han sido adoptadas en :lenguajes más recientes como Ada y Java.
Todos los objetos de un programa CLU viven en el montón, y la administración de memoria es automática. Este tipo de enfoque elimina gran :parte de la complejidad semántica asociada con múltiples formas de almacenamiento de objetos administrados por el programador observadas :en C ++.
  • Un ejemplo de código CLU:
    % Driver and function to compute factorials
    % from the PCLU distribution.
    start_up = proc ()
       pi: stream := stream$primary_input()
       po: stream := stream$primary_output()
       while true do
           stream$puts(po, "Enter an integer (or RETURN to exit): ")
           s: string := stream$getl(pi)
           if string$empty(s) then break end
           n: int := int$parse(s)
              except when bad_format:
                           stream$putl(po, "Illegal integer")
                     end
           stream$putl(po, int$unparse(n) || "! = " || int$unparse(factorial(n)))
              except when negative:
                          stream$putl(po, "Integer must be positive")
                     when overflow:
                          stream$putl(po, "Overflow")
                     end
           end
       end start_up

    factorial = proc (n: int) returns (int) signals (negative, overflow)
       if n < 0 then signal negative end
       if n = 0 then return(1) end
       return(n*factorial(n-1))
          resignal overflow
       end factorial

Premios

Premio Turing 2008

125x 200x


Medalla Jhon von Neumann 2004

125x

Libros

Abstractions and specification in program development

150x

Program development in Java

150x

Referencias

Enlaces externos