Diferencia entre revisiones de «Barbara-Liskov»

De WIAragón
Saltar a: navegación, buscar
(Premios)
(CLU)
Línea 42: Línea 42:
 
===CLU===
 
===CLU===
 
*El '''[https://es.wikipedia.org/wiki/CLU CLU]''' es un '''[https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n lenguaje de programación]''' creado por '''Barbara Liskov''' y sus estudiantes del '''MIT''' en los años [https://es.wikipedia.org/wiki/1974 1974] y [https://es.wikipedia.org/wiki/1975 1975], orientado a usar constructores para los tipos de '''datos abstractos''' que se incluyeron en el '''código''', un paso adelante en la '''[https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos programación orientada a objetos (POO)]'''.
 
*El '''[https://es.wikipedia.org/wiki/CLU CLU]''' es un '''[https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n lenguaje de programación]''' creado por '''Barbara Liskov''' y sus estudiantes del '''MIT''' en los años [https://es.wikipedia.org/wiki/1974 1974] y [https://es.wikipedia.org/wiki/1975 1975], orientado a usar constructores para los tipos de '''datos abstractos''' que se incluyeron en el '''código''', un paso adelante en la '''[https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos programación orientada a objetos (POO)]'''.
 +
*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==
 
==Premios==

Revisión del 09:28 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:

350x

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

150x 200x


Medalla Jhon von Neumann 2004

Libros

Abstractions and specification in program development

Program development in Java

Referencias

Enlaces externos