La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tendencias Actuales de la Programación

Presentaciones similares


Presentación del tema: "Tendencias Actuales de la Programación"— Transcripción de la presentación:

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

2 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).

3 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.

4 Definición del concepto de programación
Programació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.

5 “Ubicuidad” del Software
A 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”.

6 “Ubicuidad” del Software
Desde 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.

7 Desarrollo histórico del Hardware
Muchos 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 ( ), 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).

8 Desarrollo histórico del Hardware
Ada 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).

9 Desarrollo histórico del Hardware
En una de estas ocasiones Charles Babbage ( ) 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.

10 Desarrollo histórico del Hardware
El 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.

11 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.

12 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.

13 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.

14 Desarrollo 1 1946: ENIAC (Electronic Numerical Integrator and Computer) desarrollada por Eckert y Mauchly de la Universidad de Penn. Usó 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

15 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 : Desarrollo de la PC por IBM y Microsoft 1982: TCP/IP : LIM EMS

16 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.

17 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)

18 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

19 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.

20 Fases de la Programación o Ingeniería del Software
Programar 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.

21 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).

22 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.

23 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).

24 POO Por 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.

25 POO Sus 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.

26 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.

27 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”.

28 Relaciones entre Objetos
Los 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.

29 Relaciones entre Clases:
Se forman estructuras más abstractas apareciendo la relación de “Herencia” que es la fundamental. La definición de una Clase puede usar la definición de otras “Relación de Uso”. Relación de Metclase.

30 Metaclase Como 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.

31 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.

32 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.

33 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).

34 Otras Tendencias más actuales
Design Patterns Aspect Oriented Programming Intencional Programming (¿?)

35 Conclusiones Web 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.

36 Conclusiones Ademá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: El almacenamiento de información (Bases de Datos) La creación de Componentes de Software (Componentware) que permitan la extensibilidad y la portabilidad de las aplicaciones. La creación de una norma para única para representar y transmitir la información (XML). La implementación de ambientes distribuidos (COM+, Corba, SOAP).

37 Conclusiones Tambié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.


Descargar ppt "Tendencias Actuales de la Programación"

Presentaciones similares


Anuncios Google