tendencias actuales de la programación peña del byte. moderna poesía. viernes 18 de abril de 2003...

37
Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez <[email protected]>

Upload: cruzita-cifuentes

Post on 16-Apr-2015

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Tendencias Actuales de la Programación

Peña del Byte.Moderna Poesía.

Viernes 18 de abril de 2003Profesor: Medardo Rodríguez

<[email protected]>

Page 2: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Aclaración preliminar• La conferencia se presentará a nivel de cultura

general para que sea comprendida por todos sin dejar de ser una guía metodológica para los investigadores y profesionales del tema.

• Tampoco se pretende hacer un análisis de todas las ramas de la programación, sino sólo en la teoría axiomática de la programación formal (o de propósito general).

Page 3: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Objetivos:Exponer:• Los precedentes tecnológicos que han

influenciado el desarrollo de la teoría y herramientas de programación.

• El desarrollo histórico de la programación desde el punto de vista teórico.

• Cómo han evolucionado los lenguajes de programación como respuesta a este desarrollo teórico.

• Un resumen del estado actual de la teoría de programación.

Page 4: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Definición del concepto de programaciónProgramación es la actividad mediante la cual se crean programas de computadoras. Un programa es un modelo funcional que es capaz de resolver un problema humano. Se basa en un conjunto de instrucciones que pueden ser ejecutadas por una computadora.

A los que crean estos programas se les llama Programadores, Ingenieros de Sistemas, Informáticos, entre otros.

Page 5: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

“Ubicuidad” del SoftwareA diferencia de todas las ramas técnicas, los programas de computación son herramientas que se pueden reproducir muy fácilmente a partir de la copia original y por primera vez existe un ingeniería donde la “fábrica” para crear los productos es un producto de la misma cualidad lógica.

Las implicaciones de este análisis llevaría varias conferencias, sólo decir que esto ha producido un cambio cualitativo de la misma magnitud que la máquina de vapor en su tiempo: ha implicado que se enuncie una nueva era del desarrollo humano “La Era de la Información”.

Page 6: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

“Ubicuidad” del SoftwareDesde tiempos ancestrales la humanidad ha descrito planes (programas) para que otras personas los ejecuten. Los antecedentes de las computadoras, y por ende de la programación, tienen que ver con la búsqueda del hombre de poder almacenar estos planes o información en general y principalmente en crear máquinas que pudieran ejecutarlos.

Hagamos una pequeña revisión del desarrollo histórico de la computación.

Page 7: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Desarrollo histórico del HardwareMuchos piensan que la teoría de programación tiene sus inicios a mediados del siglo pasado, sin embargo ese gran honor le corresponde a la Condesa Augusta Ada de Lovelace (1815-1852), hija del ilustre poeta inglés Lord Byron y esposa del noble William King de Lovelace (cuyo único aporte a esta historia es haberle dado el apellido a esta brillante joven).

Page 8: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Desarrollo histórico del HardwareAda y un grupo de amigas adolescentes se reunían en especie de club (bluestockings) para discutir de literatura. Cada cierto tiempo invitaban a hombres de ciencias para que expusieran sus ideas (Ada estaba muy interesada en estos temas debido a que su madre la educó en ciencias matemáticas, considerada una disciplina de hombres en aquellos tiempos).

Page 9: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Desarrollo histórico del HardwareEn una de estas ocasiones Charles Babbage (1791-1871) les expuso su máquina para calcular ecuaciones de polinomios y la posibilidad de almacenar “programas” a los que él le llamaba “planes”. Ada quedó extasiada con la idea de desarrollar estructuras para programar estas máquinas y él muy impresionado con la facilidad con qué entendió su diseño y cómo desarrollo el las ideas para programar su máquina. Esto provocó una relación de nueve años entre ellos.

Page 10: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Desarrollo histórico del HardwareEl desarrollo de la teoría de programación (como en muchas otras ramas de la ciencia y la técnica) ha estado condicionado por el desarrollo del soporte físico (hardware), veamos una pequeña cronología del desarrollo del hardware y de cómo ha sido secundado por estructuras para programar y almacenar estos programas.

Page 11: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Antecedentes 1•500 A.C.: Ábaco en Babilonia (en la forma en que se conoce hoy en China por los 1300)

•1642: Sumador mecánico de Pascal•1670s: Calculadora mecánica de Leibniz•1801: Telar de Jaquard. Perforadora de tarjetas metálicas para almacenar programas.

•1822: Máquina Diferencial. Charles Babbage. Diseñada para calcular polinómios. Podía almacenar programas. Babagge abandonó este proyecto en 1833.

Page 12: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Antecedentes 2•183?: Máquina Analítica. Calculadora algebraica de propósito general. Ada desarrolló estructuras para programar esta máquina y luego de conocer el diseño le presentó a Babbage un “Plan” para calcular los números de Bernoulli, lo que se considera el primer programa de la historia.

•1890: Tabulador para Censo de Herman Hollerith. Máquina para almacenar en tarjetas perforadas los datos de un censo. La empresa que surge de este invento se convirtió en IBM en 1924.

Page 13: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Antecedentes 3•1906: El hijo de Babagge (Henry) intenta construir la máquina de su padre y completa algunas partes.

•1906: Se inventa la válvula de vacío.•1942: Primera Computadora Electrónica. John Atanasoft de la Universidad del estado de Iowa.

•1944: Proyecto “Mark I”. Computadora Electromécanica de Howard Aiken (apoyado por IBM). Implementación de la máquina analítica de Babbage.

Page 14: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Desarrollo 1•1946: ENIAC (Electronic Numerical Integrator and Computer) desarrollada por Eckert y Mauchly de la Universidad de Penn. Usó 18000 válvulas de vacío y ejecutaba las operaciones 1000 veces más rápido que la “Mark I”. Es considerada por muchos la primera computadora real.

•1951: UNIVAC (Universal Automatic Computer) también de Eckert y Mauchly. La primera computadora de propósito general disponible comercialmente.

•1947: Transistores•1958: Circuitos Integrados.•1964: DEC PDP-8•1968: Se funda INTEL

Page 15: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Desarrollo 2•1969: Se crea ARPANET (ancestro de Internet)•1972: Primeras conexiones internacionales de ARPANET

•1971: Primer Microprocesador (INTEL-4004)•1975: Primera microcomputadora MITS Altair•1979-1981: Desarrollo de la PC por IBM y Microsoft•1982: TCP/IP•1985-87: LIM EMS

Page 16: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Desarrollo Histórico del Software•1830s: Ada desarrolla las primeras ideas de la programación.

•1848: George Bool plantea la Lógica Booleana.•1937: Artículo de Turing sobre computabilidad numérica.

•1938: Shannon publica un artículo sobre la posibilidad de describir la Lógica Simbólica usando relays.

•1940s: Rewire Circuits.•1950: Turing declara que un día existirán máquinas que podrán duplicar la inteligencia humana.

Page 17: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Desarrollo Histórico del Software•Principio de los 1950s: Lenguaje de Máquina (ceros y unos).

•1950’s: Lenguaje ensamblador.•1956: Primera Conferencia sobre Inteligencia Artificial.

•1956: Edsger Dijkstra inventó el algoritmo eficiente del camino mínimo en un grafo como una demostración de la potencia de la computadora ARMAC. (Dijkstra también fue el primer teórico de la teoría de Concurrencia, semáforo)

Page 18: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Desarrollo Histórico del Software•Finales de los 1950s: FORTRAN, primer lenguaje de programación de alto nivel.

•1959: COBOL•1960s: Simula, ALGOL•1965: Leyes de Moore, Lógica Fuzzy•1970s: Pascal de Niclaus Wirth, LOGO, C (1972 por Dennis Ritche, uno de los inventores de UNIX, Bell), SmallTalk (PARC), Ada (Jean Ichbiah y un grupo en Honeywell).

•1980’s: C++. Stroustrup y los laboratorios Bell.•1984: Turbo Pascal

Page 19: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Desarrollo Histórico del Software•1989: Tim Berners-Lee inventa “World Wide Web” trabajando para CERN un instituto de física de las partículas en Suiza.

•1989: NCSA Mosaic, primer explorador de Web con posibilidades gráficas.

•1993: Explosión de Web. El tráfico aumentó ese año 300,000%.

•Finales de los 1990’s: Java, Delphi, Lenguajes Scripts, etc.

Page 20: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Fases de la Programación o Ingeniería del SoftwareProgramar es un proceso de comunicación, el programador debe:•Comprender el problema a modelar;•Diseñar cómo va a ser la solución computacional (programa) del mismo;•Implementar esta solución; y•Validar el programa y corregirle posibles errores.

Page 21: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Fases .. Las estructuras lógicas (código) a usar para cualquiera de estas fases han evolucionado en el tiempo y su desarrollo ha estado condicionado al desarrollo del hardware (soporte físico).

Page 22: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Fases .. Los primeros lenguajes usaron estructuras procedurales o aplicativas. Los procedurales se basaban en una serie de instrucciones que usaban reglas lógicas booleanas e iterativas y su orden era importante; las aplicativas se describían a partir de distintos tipos de funciones.

También reciben el nombre de modelos imperativos y declarativos desde otro punto de vista.

Page 23: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Fases ..

Luego emergió con mucha fuerza una metodología que se centra en el significado conceptual de los elementos del problema a modelar. A esta metodología se le conoce como “Programación Orientada a Objetos” (POO).

Page 24: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

POOPor primera vez, y debido a que el desarrollo del hardware permitía la representación de modelos más complejos, se comienza a ver la programación, no como un acto de formulaciones lógico-algebraicas sino, como una metodología de representación del conocimiento.

Page 25: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

POOSus teorías heredan todo el conocimiento de las fases anteriores y de ramas de la ciencia como: Gnoseología, Lógica Formal, Semiótica, etc.

En la actualidad se conocen más de 170 lenguajes de POO.

La base axiomática de la Teoría de POO se basa en el concepto de objeto, de clase de objeto, relaciones entre objetos y relaciones entre clases.

Page 26: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Objeto:Es todo lo que puede ser comprendido por la conciencia humana en una forma tal que se identifiquen fronteras lógicas entre los mismos. Todo proceso de percepción parte de un punto de vista muy bien definido. Lo Objetos tienen Identidad, Estado y Comportamiento.

El Estado expresa los atributos de los objetos y sus valores en un instante de tiempo.

El Comportamiento expresa los cambios de estado en el tiempo. Se define con modelos muy similares a los usados en las metodologías de programación estructurada. A éstos se les llama Métodos.

Page 27: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Clase:Desde que nacemos comprendemos la realidad exterior a través de representaciones abstractas que expresan las características comunes de conjuntos de objetos. A estas representaciones abstractas se les conoce como “Clases de Objeto”.

Page 28: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Relaciones entre ObjetosLos Objetos se relacionan unos con otros. Los conceptos de toda relación son su semántica, persistencia y cardinalidad. Por ejemplo, en la oración “El Mago es Novio de la Cocinera”, se identifican dos objetos con la relación cuya semántica es “Novio de”, se infiere la cardinalidad “de 1 a 1” y el hecho de que “el tiempo de vida de ninguno depende del tiempo de vida del otro” define la persistencia.

Page 29: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Relaciones entre Clases:

1. Se forman estructuras más abstractas apareciendo la relación de “Herencia” que es la fundamental.

2. La definición de una Clase puede usar la definición de otras “Relación de Uso”.

3. Relación de Metclase.

Page 30: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

MetaclaseComo Objeto es todo lo que puede ser comprendido por la mente humana entonces una clase también lo es por definición. Esto hace que las clases tienen una dualidad conceptual: son al mismo tiempo Objeto y Clase. Todos los Objetos son instancias de una Clase y por la tanto se establece el concepto de Clase de una Clase cuando ésta se ve como Objeto; Es decir Si “O” es un objeto y “CO” es su clase, entonces veamos a “COo” como “CO” en su rol de objeto, entonces la clase de este objeto sería sería “CCOo” y entonces se dice que “CCOo” es Metaclase de “CO”.Este concepto introduce el problema lógico de la metacircularidad infinita.

Page 31: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Teoría de Tipos (Interfaces)La POO tradicional (centrada en la clasificación) sólo permite definir el protocolo de comunicación con que los demás objetos se comunicarán con él en la declaración de las clases.

Nota: Los conceptos de, “Tipo” y “Interfaz” son intercambiables.

Page 32: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Teoría de Tipos (Interfaces)Esto es un problema metodológico grave porque un mismo objeto puede requerir distintas interfaces para distintas relaciones. Por ejemplo “María” tiene un “Hijo” y un “Esposo”. María es de la clase “Mujer” y tanto el Hijo como el Esposo son ambos de la clase “Hombre” pero las peticiones de actividades (invocación de métodos) que cada uno le pide a María son muy distintas y deben ser definidas con estructuras asociadas directamente con la semántica de las relaciones en sí mismas.

Page 33: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Teoría de Tipos (Interfaces)A estas estructuras independientes que se usan para definir un Protocolo de Comunicación entre dos objetos se les llama “Tipos” o “Interfaces”.

Esta nueva metodológica de programación hace énfasis en los Tipos y no en la clasificación pura como la POO tradicional. Hasta donde conozco, los primeros lenguajes que tenían estructuras formales para definir Interfaces fueron el Java y el Delphi, tecnológicamente hablando existían desde mucho antes (COM, CORBA, etc).

Page 34: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

Otras Tendencias más actuales1. Design Patterns

2. Aspect Oriented Programming

3. Intencional Programming (¿?)

Page 35: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

ConclusionesWeb como plataforma ha sido una gran revelación, además de en el campo de la información, en el campo del desarrollo y distribución de las aplicaciones.

Page 36: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

ConclusionesAdemás de en las estructuras formales de modelación, la teoría de programación se ha desarrollado en la creación de herramientas tecnológicas para:

1.El almacenamiento de información (Bases de Datos)

2.La creación de Componentes de Software (Componentware) que permitan la extensibilidad y la portabilidad de las aplicaciones.

3.La creación de una norma para única para representar y transmitir la información (XML).

4.La implementación de ambientes distribuidos (COM+, Corba, SOAP).

Page 37: Tendencias Actuales de la Programación Peña del Byte. Moderna Poesía. Viernes 18 de abril de 2003 Profesor: Medardo Rodríguez

ConclusionesTambién existe una competencia muy fuerte entre las plataformas de desarrollo y de hosting de tecnologías de programación. En este momento existe una gran controversia alrededor de .NET que es el nuevo producto de Microsoft en este campo y que ofrece tecnologías para todas las capas de las aplicaciones modernas, principalmente distribuidas orientas a Internet.