You are on page 1of 18

Paradigma de programación

De Wikipedia, la enciclopedia libre

Saltar a navegación, búsqueda

Un paradigma de programación representa un enfoque particular o filosofía para la construcción del


software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas. También hay
situaciones donde un paradigma resulta más apropiado que otro.

Tipos de paradigmas de programación más comunes [editar]

• El paradigma imperativo o por procedimientos es considerado el más común y está representado,


por ejemplo, por el C o por BASIC.
• El paradigma funcional está representado por la familia de lenguajes LISP (en particular
Scheme), ML o Haskell.
• El paradigma lógico, un ejemplo es PROLOG.
• El paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es Smalltalk.

Programación imperativa

De Wikipedia, la enciclopedia libre

Saltar a navegación, búsqueda

La programación imperativa, en contraposición a la programación declarativa es un paradigma de


programación que describe la programación en términos del estado del programa y sentencias que
cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al
computador cómo realizar una tarea.

La implementación de hardware de la mayoría de computadores es imperativa; prácticamente todo el


hardware de los computadores está diseñado para ejecutar código de máquina, que es nativo al
computador, escrito en una forma imperativa. Esto se debe a que el hardware de los computadores
implementa el paradigma de las Máquinas de Turing. Desde esta perspectiva de bajo nivel, el estilo del
programa está definido por los contenidos de la memoria, y las sentencias son instrucciones en el lenguaje
de máquina nativo del computador (por ejemplo el lenguaje ensamblador).

Los lenguajes imperativos de alto nivel usan variables y sentencias más complejas, pero aún siguen el
mismo paradigma. Las recetas y las listas de revisión de procesos, a pesar de no ser programas de
computadora, son también conceptos familiares similares en estilo a la programación imperativa; cada
paso es una instrucción, y el mundo físico guarda el estado (Zoom).

Los primeros lenguajes imperativos fueron los lenguajes de máquina de los computadores originales. En
estos lenguajes, las instrucciones fueron muy simples, lo cual hizo la implementación de hardware fácil,
pero obstruyendo la creación de programas complejos. Fortran, cuyo desarrollo fue iniciado en 1954 por
John Backus en IBM, fue el primer gran lenguaje de programación en superar los obstáculos presentados
por el código de máquina en la creación de programas complejos.

Algunos lenguajes imperativos [editar]

• ASP
• BASIC
• C
• C#
• C++
• Fortran
• Pascal
• Java
• Perl
• PHP
• Lua

Programación declarativa

De Wikipedia, la enciclopedia libre

Saltar a navegación, búsqueda

La Programación Declarativa, es un paradigma de programación que está basado en el desarrollo de


programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones,
restricciones, ecuaciones o transformaciones que describen el problema y detallan su solución. La
solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo
encontrarla. No existen asignaciones destructivas, y las variables son utilizadas con Transparencia
referencial

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

La Programación funcional es un paradigma de programación declarativa basado en la utilización de


funciones matemáticas.

Contenido

[ocultar]

• 1 Historia
• 2 Utilidad
• 3 Características
• 4 Lenguajes funcionales
• 5 Véase también

• 6 Referencias

Historia [editar]

Sus orígenes se remontan al cálculo lambda (o λ-cálculo), una teoría matemática elaborada por Alonzo
Church como apoyo a sus estudios sobre computabilidad. Un lenguaje funcional es, a grandes rasgos,
azúcar sintáctica para el Cálculo Lambda.

Utilidad [editar]

El objetivo es conseguir lenguajes expresivos y matemáticamente elegantes, en los que no sea necesario
bajar al nivel de la máquina para describir el proceso llevado a cabo por el programa, y evitando el
concepto de estado del cómputo. La secuencia de computaciones llevadas a cabo por el programa se
regiría única y exclusivamente por la reescritura de definiciones más amplias a otras cada vez más
concretas y definidas, usando lo que se denominan "definiciones dirigidas".
Características [editar]

Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de
funciones, entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como
funciones puramente matemáticas, en las que se verifican ciertas propiedades como la transparencia
referencial (el significado de una expresión depende únicamente del significado de sus subexpresiones), y
por tanto, la carencia total de efectos laterales.

Otras características propias de estos lenguajes son la no existencia de asignaciones de variables y la falta
de construcciones estructuradas como la secuencia o la iteración (lo que obliga en la práctica a que todas
las repeticiones de instrucciones se lleven a cabo por medio de funciones recursivas).

Existen dos grandes categorías de lenguajes funcionales: los funcionales puros y los híbridos. La
diferencia entre ambos estriba en que los lenguajes funcionales híbridos son menos dogmáticos que los
puros, al admitir conceptos tomados de los lenguajes imperativos, como las secuencias de instrucciones o
la asignación de variables. En contraste, los lenguajes funcionales puros tienen una mayor potencia
expresiva, conservando a la vez su transparencia referencial, algo que no se cumple siempre con un
lenguaje funcional híbrido.

Lenguajes funcionales [editar]

Entre los lenguajes funcionales puros, cabe destacar a Haskell y Miranda. Los lenguajes funcionales
híbridos más conocidos son Scala, Lisp, Scheme, Ocaml, SAP y Standard ML (estos dos últimos,
descendientes del lenguaje ML). Erlang es otro lenguaje funcional de programación concurrente. R
también es un lenguaje funcional dedicado a la estadística.1 Recientemente Microsoft Research está
trabajando en el lenguaje F# (Functional#).

Entre otros lenguajes que se podrían utilizar para programación funcional se podrían incluir a Perl, pues,
aunque es un lenguaje de propósito muy general, se pueden realizar programas usando exclusivamente
funciones definidas por el usuario. Así como Python, como lenguaje que incorpora el paradigma
funcional.

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&6

Programación lógica

De Wikipedia, la enciclopedia libre

Saltar a navegación, búsqueda

La programación lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño
de lenguajes de programación; no debe confundirse con la disciplina de la lógica computacional.

La programación lógica comprende dos paradigmas de programación: la programación declarativa y la


programación funcional. La programación declarativa gira en torno al concepto de predicado, o relación
entre elementos. La programación funcional se basa en el concepto de función (que no es más que una
evolución de los predicados), de corte más matemático.

Contenido

[ocultar]

• 1 Motivación
• 2 Campos de aplicación
• 3 Fundamentos
• 4 En qué consiste (ejemplo)
• 5 Lenguajes
• 6 Bibliografía
• 7 Véase también

• 8 Enlaces externos

Motivación [editar]

Históricamente, los ordenadores se han programado utilizando lenguajes muy cercanos a las
peculiaridades de la propia máquina: operaciones aritméticas simples, instrucciones de acceso a memoria,
etc. Un programa escrito de esta manera puede ocultar totalmente su propósito a la comprensión de un ser
humano, incluso uno entrenado. Hoy día, estos lenguajes pertenecientes al paradigma de la Programación
imperativa han evolucionado de manera que ya no son tan crípticos.

En cambio, la lógica matemática es la manera más sencilla, para el intelecto humano, de expresar
formalmente problemas complejos y de resolverlos mediante la aplicación de reglas, hipótesis y teoremas.
De ahí que el concepto de "programación lógica" resulte atractivo en diversos campos donde la
programación tradicional es un fracaso.

Campos de aplicación [editar]

La programación lógica encuentra su hábitat natural en aplicaciones de inteligencia artificial o


relacionadas:

• Sistemas expertos, donde un sistema de información imita las recomendaciones de un experto


sobre algún dominio de conocimiento.
• Demostración automática de teoremas, donde un programa genera nuevos teoremas sobre una
teoría existente.
• Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con
limitaciones) la información contenida en una expresión lingüística humana.
• Etc.

La programación lógica también se utiliza en aplicaciones más "mundanas" pero de manera muy limitada,
ya que la programación tradicional es más adecuada a tareas de propósito general.

Fundamentos [editar]

La mayoría de los lenguajes de programación lógica se basan en la teoría lógica de primer orden, aunque
también incorporan algunos comportamientos de orden superior. En este sentido, destacan los lenguajes
funcionales, ya que se basan en el cálculo lambda, que es la única teoría lógica de orden superior que es
demostradamente computable (hasta el momento).

En qué consiste (ejemplo) [editar]

La programación lógica permite formalizar hechos del mundo real, por ejemplo:

las aves vuelan


los pingüinos no vuelan
"pichurri" es un ave
"sandokan" es un perro
"alegría" es un ave
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

Programación orientada a objetos

De Wikipedia, la enciclopedia libre

Saltar a navegación, búsqueda

La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de
programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora.
Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su
uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de
programación que soportan la orientación a objetos.

Contenido

[ocultar]

• 1 Introducción
• 2 Origen
• 3 Conceptos fundamentales
• 4 Características de la POO
• 5 Resumen

• 6 Lenguajes orientados a objetos

Introducción [editar]

Los objetos son entidades que combinan estado, comportamiento e identidad:

• El estado está compuesto de datos, serán uno o varios atributos a los que se habrán asignado
unos valores concretos (datos).
• El comportamiento está definido por los procedimientos o métodos con que puede operar dicho
objeto, es decir, qué operaciones se pueden realizar con él.
• La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras,
es su identificador (concepto análogo al de identificador de una variable o una constante).

La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que
colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de
escribir, mantener y reutilizar.

De esta forma, un objeto contiene toda la información que permite definirlo e identificarlo frente a otros
objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores
bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción
llamados métodos que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el
cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles,
en las que no se separan ni deben separarse el estado y el comportamiento.

Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de
conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los
que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor
importancia a ninguno de ellos, hacerlo podría producir el hábito erróneo de crear clases contenedoras de
información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se
estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a
objetos.
Esto difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están
separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para
obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en
términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos
procedimientos manejan. En la programación estructurada sólo se escriben funciones que procesan datos.
Los programadores que emplean éste nuevo paradigma, en cambio, primero definen objetos para luego
enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.

Origen [editar]

Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado
para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego
en Oslo. Al parecer, en este centro, trabajaban en simulaciones de naves, y fueron confundidos por la
explosión combinatoria de cómo las diversas cualidades de diversas naves podían afectar unas a las otras.
La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable
cada clase de objetos de definir sus propios datos y comportamiento. Fueron refinados más tarde en
Smalltalk, que fue desarrollado en Simula en Xerox PARC (y cuya primera versión fue escrita sobre
Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear
y modificar "en marcha" en lugar de tener un sistema basado en programas estáticos.

La programación orientada a objetos tomó posición como el estilo de programación dominante a


mediados de los años ochenta, en gran parte debido a la influencia de C++, una extensión del lenguaje de
programación C. Su dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario,
para las cuales la programación orientada a objetos está particularmente bien adaptada. En este caso, se
habla también de programación dirigida por eventos.

Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese
tiempo, incluyendo Ada, BASIC, Lisp, Pascal, entre otros. La adición de estas características a los
lenguajes que no fueron diseñados inicialmente para ellas condujo a menudo a problemas de
compatibilidad y a la capacidad de mantenimiento del código. Los lenguajes orientados a objetos "puros",
por otra parte, carecían de las características de las cuales muchos programadores habían venido a
depender. Para saltar este obstáculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en
métodos orientados a objetos, pero permitiendo algunas características imperativas de maneras "seguras".
El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos pero
ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparición de Internet, y a la
implementación de la máquina virtual de Java en la mayoría de navegadores. PHP en su versión 5 se ha
ido modificando y soporta una orientación completa a objetos, cumpliendo todas las características
propias de la orientación a objetos.

Conceptos fundamentales [editar]

La programación orientada a objetos es una nueva forma de programar que trata de encontrar una
solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya
conocidos. Entre ellos destacan los siguientes:

• Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La


instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.
• Herencia: (por ejemplo, herencia de la clase D a la clase C) Es la facilidad mediante la cual la
clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y
operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos
métodos y variables publicas declaradas en C. Los componentes registrados como "privados"
(private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al
programador y solo pueden ser accesado a través de otros métodos publicos. Esto es así para
mantener hegemónico el ideal de OOP.
• Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento
o funcionalidad (métodos). Se corresponde con los objetos reales del mundo que nos rodea, o a
objetos internos del sistema (del programa). Es una instancia a una clase.
• Método: algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se
desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es
lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del
objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.
• Evento: un suceso en el sistema (tal como una interacción del usuario con la máquina, o un
mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al
objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar
un objeto, es decir la acción que genera.
• Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos
con ciertos parámetros asociados al evento que lo generó.
• Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de
objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus
características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún
método.
• Estado interno: es una variable que se declara privada, que puede ser únicamente accedida y
alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para
el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.
• Componentes de un objeto:atributos, identidad, relaciones y métodos.
• Representación de un objeto: un objeto se representa por medio de una tabla o entidad que esté
compuesta por sus atributos y funciones correspondientes.

En comparación con un lenguaje imperativo, una "variable", no es más que un contenedor interno del
atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método
del objeto.

Características de la POO [editar]

Hay un cierto desacuerdo sobre exactamente qué características de un método de programación o


lenguaje le definen como "orientado a objetos", pero hay un consenso general en que las características
siguientes son las más importantes (para más información, seguir los enlaces respectivos):

• Abstracción: Denota las características esenciales de un objeto, donde se capturan sus


comportamientos.Cada objeto en el sistema sirve como modelo de un "agente" abstracto que
puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el
sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los
métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son
requeridas para ampliar una abstracción.
• Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la
cohesión de los componentes del sistema. Algunos autores confunden este concepto con el
principio de ocultación, principalmente porque se suelen emplear conjuntamente.
• Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo
de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los
objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación
por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto
pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno
de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones
inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos
del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se
reduce a un agregado o rompecabezas de objetos.
• Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el
mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al
objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos
pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una
referencia producirá el comportamiento correcto para el tipo real del objeto referenciado.
Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación
tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en
"tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de
operadores de C++.
• Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de
clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las
que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento
permitiendo a los objetos ser definidos y creados como tipos especializados de objetos
preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a
implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en
árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de
una clase se dice que hay herencia múltiple.

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&

Partes de un compilador [editar]

Normalmente los compiladores están divididos en dos partes:

• Front End: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de
derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente de la
plataforma o sistema para el cual se vaya a compilar.
• Back End: es la parte que genera el código máquina, específico de una plataforma, a partir de los
resultados de la fase de análisis, realizada por el Front End.

Esta división permite que el mismo Back End se utilice para generar el código máquina de varios
lenguajes de programación distintos y que el mismo Front End que sirve para analizar el código fuente de
un lenguaje de programación concreto sirva para generar código máquina en varias plataformas distintas.

El código que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser
enlazado por un programa enlazador (linker)

Historia [editar]

En 1946 se desarrolló el primer ordenador digital. En un principio, estas máquinas ejecutaban


instrucciones consistentes en códigos numéricos que señalaban a los circuitos de la máquina los estados
correspondientes a cada operación, lo que se denominó lenguaje máquina.

Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas
mediante claves más fáciles de recordar que esos códigos; al final, todas esas claves juntas se traducían
manualmente a lenguaje máquina. Estas claves constituyen los llamados lenguajes ensambladores.

Pese a todo, el lenguaje ensamblador seguía siendo el de una máquina, pero más fácil de manejar. Los
trabajos de investigación se orientaron hacia la creación de un lenguaje que expresara las distintas
acciones a realizar de una manera lo más sencilla posible para una persona. El primer compilador fue
escrito por Grace Hopper, en 1952 para el lenguaje de programación A-0, En 1950 John Backus dirigió
una investigación en IBM sobre un lenguaje algebraico. En 1954 se empezó a desarrollar un lenguaje que
permitía escribir fórmulas matemáticas de manera traducible por un ordenador; le llamaron FORTRAN
(FORmulae TRANslator). Fue el primer lenguaje de alto nivel y se introdujo en 1957 para el uso de la
computadora IBM modelo 704.

Surgió así por primera vez el concepto de un traductor como un programa que traducía un lenguaje a otro
lenguaje. En el caso particular de que el lenguaje a traducir es un lenguaje de alto nivel y el lenguaje
traducido de bajo nivel, se emplea el término compilador.
La tarea de realizar un compilador no fue fácil. El primer compilador de FORTRAN tardó 18 años-
persona en realizarse y era muy sencillo. Este desarrollo de FORTRAN estaba muy influenciado por la
máquina objeto en la que iba a ser implementado. Como un ejemplo de ello tenemos el hecho de que los
espacios en blanco fuesen ignorados, debido a que el periférico que se utilizaba como entrada de
programas (una lectora de tarjetas perforadas) no contaba correctamente los espacios en blanco.

El primer compilador autocontenido, es decir, capaz de compilar su propio código fuente fue el creado
para Lisp por Hart y Levin en el MIT en 1962. Desde 1970 se ha convertido en una práctica común
escribir el compilador en en mismo lenguaje que este compila, aunque Pascal y C han sido alternativas
muy usadas.

Crear un compilador autocontenido genera un problema llamado bootstrapping, es decir el primer


compilador creado para un lenguaje tiene que o bien ser compilado por un compilador escrito en otro
lenguaje o bien compilado al ejecutar el compilador en un intérprete.

Tipos de compiladores [editar]

Esta taxonomía de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que
se adscriban a varias categorías:

• Compiladores cruzados: generan código para un sistema distinto del que están funcionando.
• Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero
manteniendo la funcionalidad del programa original.
• Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del
código fuente.
• Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder
producir el código máquina.
• Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código
según se necesitan.

Pauta de creación de un compilador: En las primeras épocas de la informática, el software de los


compiladores era considerado como uno de los más complejos existentes.

Los primeros compiladores se realizaron programándolos directamente en lenguaje máquina o en


ensamblador. Una vez que se dispone de un compilador, se pueden escribir nuevas versiones del
compilador (u otros compiladores distintos) en el lenguaje que compila ese compilador.

Actualmente existen herramientas que facilitan la tarea de escribir compiladores ó intérpretes


informáticos. Estas herramientas permiten generar el esqueleto del analizador sintáctico a partir de una
definición formal del lenguaje de partida, especificada normalmente mediante una gramática formal y
barata, dejando únicamente al programador del compilador la tarea de programar las acciones semánticas
asociadas.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Alan Turing

De Wikipedia, la enciclopedia libre

Saltar a navegación, búsqueda


Estatua de Alan M. Turing en Whitworth Gardens de Manchester, Inglaterra.

Alan Mathison Turing (23 de junio de 1912 - 7 de junio de 1954). Fue un matemático, informático
teórico, criptógrafo y filósofo inglés.

Es considerado uno de los padres de la Ciencia de la computación siendo el precursor de la informática


moderna. Proporcionó una influyente formalización de los conceptos de algoritmo y computación: la
máquina de Turing. Formuló su propia versión de la hoy ampliamente aceptada Tesis de Church-Turing,
la cual postula que cualquier modelo computacional existente tiene las mismas capacidades algorítmicas,
o un subconjunto, de las que tiene una máquina de Turing. Durante la Segunda Guerra Mundial, trabajó
en romper los códigos nazis, particularmente los de la máquina Enigma; durante un tiempo fue el director
de la sección Naval Enigma del Bletchley Park. Tras la guerra diseñó uno de los primeros computadores
electrónicos programables digitales en el Laboratorio Nacional de Física del Reino Unido y poco tiempo
después construyó otra de las primeras máquinas en la Universidad de Manchester. Entre otras muchas
cosas, también contribuyó de forma particular e incluso provocativa al enigma de si las máquinas pueden
pensar, es decir a la Inteligencia Artificial.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Gödel

De Wikipedia, la enciclopedia libre

Kurt Gödel ([kuɹtˈgøːdl]) (28 de abril, 1906 Brno (Brünn), Austria-Hungría (ahora República Checa) –
14 de enero, 1978 Princeton, New Jersey) fue un lógico, matemático y filósofo austriaco-estadounidense.

Reconocido como uno de los más importantes lógicos de todos los tiempos, el trabajo de Gödel ha tenido
un impacto inmenso en el pensamiento científico y filosófico del siglo XX. Gödel, al igual que otros
pensadores como Bertrand Russell, A. N. Whitehead y David Hilbert intentó emplear la lógica y la teoría
de conjuntos para comprender los fundamentos de la matemática. A Gödel se le conoce mejor por sus dos
teoremas de la incompletitud, publicados en 1931 a los 25 años de edad, un año después de finalizar su
doctorado en la Universidad de Viena.

El más célebre de sus teoremas de la incompletitud establece que para todo sistema axiomático recursivo
auto-consistente lo suficientemente poderoso como para describir la aritmética de los números naturales
(la aritmética de Peano), existen proposiciones verdaderas sobre los naturales que no pueden demostrarse
a partir de los axiomas. Para demostrar este teorema desarrolló una técnica denominada ahora como
numeración de Gödel, el cual codifica expresiones formales como números naturales.

También demostró que la hipótesis del continuo no puede refutarse desde los axiomas aceptados de la
teoría de conjuntos, si dichos axiomas son consistentes. Realizó importantes contribuciones a la teoría de
la demostración al esclarecer las conexiones entre la lógica clásica, la lógica intuicionista y la lógica
modal.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Konrad Zuse

De Wikipedia, la enciclopedia libre


Saltar a navegación, búsqueda
Konrad Zuse

Nacimiento: 22 de junio de 1910


Berlín, Alemania

Fallecimiento: 18 de diciembre de 1995


Hünfeld, Hesse, Alemania

Konrad Zuse (22 de junio de 1910 - 18 de diciembre de 1995) fue un ingeniero alemán y un pionero de
la computación. Su logro más destacado fue terminar la primera computadora controlada por programas
que funcionaba, la Z3 en 1941. Esta puede que haya sido la "primera computadora", aunque hay
discrepancias en este sentido pues, si se consideran algunas sutilezas, como por ejemplo que la máquina
de Zuse no era de propósito general, tal vez no lo sea. También diseñó un lenguaje de programación de
alto nivel, el Plankalkül, supuestamente en 1945, aunque fue una contribución teórica, pues el lenguaje no
se implementó en su vida y no tuvo ninguna influencia directa en los primeros lenguajes desarrollados.
También fundó la primera compañía de ordenadores en 1946 y construyó la Z4, que se convirtió en 1950
en la primera computadora en ser comercializada. Debido a la Segunda Guerra Mundial, el trabajo inicial
de Zuse pasó desapercibido fuera de Alemania. Posiblemente la primera influencia documentada de Zuse
en una compañía extranjera fue la adquisición de patentes por parte de IBM en 1946.

Hay una réplica de la Z3 y la Z4 en el Deutsches Museum de Múnich.

Contenido

[ocultar]

• 1 Trabajo anterior a la Segunda guerra mundial y la Z1


• 2 Los años de guerra, Z2, Z3 y Z4
• 3 Posguerra
• 4 Véase también
• 5 Referencias

• 6 Enlaces externos

Trabajo anterior a la Segunda guerra mundial y la Z1 [editar]


Z1

Nacido en Berlín, Alemania, Zuse se graduó como ingeniero civil de la Technische Hochschule Berlin-
Charlottenburg (hoy la Technische Universität Berlin o Universidad Técnica de Berlín) en 1935. Durante
sus estudios de ingeniería, Zuse debió hacer muchos cálculos rutinarios a mano, lo que él encontró
aburrido. Esta experiencia lo llevó a soñar con una máquina que pudiera hacer cálculos.

Comenzó a trabajar en la fábrica de aviones de Henschel en Dessau, pero sólo un año después renunció a
su trabajo para construir una máquina programable. Trabajó en el departamento de sus padres en 1938
hasta lograr su primer intento, llamado Z1 y que era una calculadora mecánica binaria operada con
electricidad y de programabilidad limitada. Leía instrucciones desde una cinta perforada. La Z1 nunca
funcionó bien, en parte debido a que no tenía suficientes partes precisas. La Z1 y sus planos originales
fueron destruidos durante la Segunda Guerra Mundial.

Los años de guerra, Z2, Z3 y Z4 [editar]

La guerra hizo imposible e indeseable para Zuse y los científicos de la computación alemanes
contemporáneos entrar en contacto con científicos extranjeros. En 1939 Zuse fue llamado al servicio
militar, pero logró convencer al ejército de que lo dejaran regresar a construir sus computadoras. En 1940
logró el apoyo del Aerodynamische Versuchsanstalt (Instituto de investigaciones aerodinámicas) que
utilizó su trabajo para la producción de bombas planeadoras. Zuse construyó la Z2, una versión revisada
de su máquina, a partir de relevadores telefónicos. Ese mismo año, inició una compañía, la Zuse
Apparatebau (Ingeniería de aparatos Zuse), para manufacturar sus computadoras programables.

Satisfecho con la funcionalidad básica de la máquina Z2, inicio la construcción de la Z3 que terminó en
1941. Era una calculadora binaria que tenía programabilidad con ciclos pero sin saltos condicionales, con
memoria y una unidad de cálculo basada en relevadores telefónicos. A pesar de la ausencia de saltos
condicionales como instrucciones convenientes, la Z3 era una computadora Turing completo (ignorando
el hecho de que ninguna computadora física puede ser verdaderamente Turing completa debido a su
tamaño de almacenamiento limitado). Sin embargo, su completitud de Turing nunca fue vista por Zuse
(que tenía en mente sólo sus aplicaciones prácticas) y sólo fue demostrada a finales de ese siglo.

Zuse nunca recibió el apoyo oficial que los pioneros de las computadoras en los países aliados recibieron,
como Alan Turing. Los relevadores telefónicos utilizados en sus máquinas eran en gran parte recogidos
como desperdicios.

Posguerra [editar]
Monumento a Zuse en Hesse.

La compañía de Zuse fue destruida en 1945 por un ataque aliado, junto con la Z3. La parcialmente
terminada, basada en relevadores, la Z4 había sido llevada a un lugar más seguro con anterioridad. Zuse
diseñó un lenguaje de programación de alto nivel el Plankalkül, supuestamente entre 1941 y 1945, aunque
no lo publicó hasta 1972. Ningún compilador o intérprete estuvo disponible para el Plankalkül hasta que
un equipo de la Universidad Libre de Berlín lo implementó en el año 2000, cinco años después de la
muerte de Zuse.

En 1946 Zuse fundó la primera compañía de computadoras del mundo: la Zuse-Ingenieurbüro Hopferau.
Consiguió capital de riesgo a través de ETH Zürich y una opción de IBM sobre las patentes de Zuse.

Zuse fundó otra compañía, Zuse KG en 1949. La Z4 fue terminada y entregada a una compañía en Suiza
en septiembre de 1950. En ese momento, era la única computadora funcionando en el continente europeo,
y la primera computadora del mundo que fue vendida, superando a la Ferranti Mark I por cinco meses y a
la UNIVAC I por diez meses. Otras computadoras, todas numeradas con una Z inicial, fueron construidas
por Zuse y su compañía. Son notables la Z11, que fue vendida a la industria de la óptica y a las
universidades y la Z12 que fue la primera computadora con una memoria basada en cinta magnética.

En 1967, Zuse KG había construido un total de 251 computadoras. Debido a problemas financieros, fue
vendida a la compañía Siemens AG. Ese mismo año Zuse sugirió que el universo en sí mismo es una
retícula de computadoras (Física computacional), en 1969 publicó el libro Rechnender Raum.

Entre 1987 y 1989, Zuse recreó la Z1 y sufrió un ataque cardiaco durante el proyecto. El resultado final
tenía 30,000 componentes, costó 800,000 DM, y requirió de cuatro personas (incluyendo a Zuse) para
construirla. Los fondos para este proyecto de retrocomputación fueron provistos por Siemens y un
consorcio de alrededor de cinco compañías.

Zuse recibió varios premios por su trabajo. Después de su retiro, se enfocó en su afición, la pintura. Zuse
murió el 18 de diciembre de 1995 en Hünfeld, Hesse.

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&

David Hilbert

De Wikipedia, la enciclopedia libre

Saltar a navegación, búsqueda


David Hilbert

Nacimiento 23 de enero de 1862


Königsberg, Prusia Oriental
Muerte 14 de febrero de 1943
Göttingen, Hanover (Alemania)
Residencia Alemania
Nacionalidad/es Alemana
Campo/s Matemático
Instituciones Universidad de Königsberg
Universidad de Göttingen
Alma máter Universidad de Königsberg
Supervisor doctoral Ferdinand von Lindemann
Estudiantes Wilhelm Ackermann
destacados Otto Blumenthal
Richard Courant
Max Dehn
Erich Hecke
Hellmuth Kneser
Robert König
Emanuel Lasker
Erhard Schmidt
Hugo Steinhaus
Teiji Takagi
Hermann Weyl
Ernst Zermelo
Conocido por Teorema de la Base de Hilbert
Axiomas de Hilbert
Problemas de Hilbert
Programa de Hilbert
Acción Einstein-Hilbert
Espacio de Hilbert

David Hilbert (23 de enero de 1862, Königsberg, Prusia Oriental – 14 de febrero de 1943, Göttingen,
Alemania) fue un matemático alemán, reconocido como uno de los más influyentes del siglo XIX y
principios del XX. Estableció su reputación como gran matemático y científico inventando o
desarrollando un gran abanico de ideas, como la teoría de invariantes, la axiomatización de la geometría y
la noción de espacio de Hilbert, uno de los fundamentos del análisis funcional. Hilbert y sus estudiantes
proporcionaron partes significativas de la infraestructura matemática necesaria para la mecánica cuántica
y la relatividad general. Fue uno de los fundadores de la teoría de la demostración, la lógica matemática y
la distinción entre matemática y metamatemática. Adoptó y defendió vivamente la teoría de conjuntos y
los números transfinitos de Cantor. Un ejemplo famoso de su liderazgo mundial en la matemática es su
presentación en 1900 de un conjunto de problemas que establecieron el curso de gran parte de la
investigación matemática del siglo XX.

Algunos historiadores siempre han creído que David Hilbert descubrió las ecuaciones correctas para la
relatividad general antes que Einstein. Sin embargo esto nunca ha sido probado.

Contenido

[ocultar]

• 1 Vida
• 2 El teorema de finitud
• 3 Axiomatización de la geometría
• 4 Los 23 problemas
• 5 Formalismo
• 6 El programa de Hilbert
o 6.1 El trabajo de Gödel
• 7 La escuela de Göttingen
• 8 Análisis funcional
• 9 Física
• 10 Teoría de números
• 11 Charlas, ensayos y contribuciones misceláneas
• 12 Últimos años
• 13 Notas, referencias y enlaces
o 13.1 Notas
o 13.2 Referencias
• 14 Véase también

• 15 Enlaces externos

Vida [editar]

Hilbert nació en Königsberg, en Prusia Oriental (actual Kaliningrado, Rusia). Se graduó en el liceo de su
ciudad natal y se matriculó en la Universidad de Königsberg ("Albertina"). Obtuvo su doctorado en 1885,
con una disertación, escrita bajo supervisión de Ferdinand von Lindemann, titulada Über invariante
Eigenschaften specieller binärer Formen, insbesondere der Kugelfunctionen ("Sobre las propiedades
invariantes de formas binarias especiales, en particular las funciones circulares"). Hermann Minkowski
coincidió con Hilbert en la misma universidad y momento como doctorando, y llegaron a ser amigos
íntimos, ejerciendo uno sobre el otro una influencia recíproca en varios momentos de sus carreras
científicas.

Hilbert permaneció como profesor en la Universidad de Königsberg de 1886 a 1895, cuando, como
resultado de la intervención en su nombre de Felix Klein, obtuvo el puesto de Catedrático de Matemática
en la Universidad de Göttingen, que en aquél momento era el mejor centro de investigación matemática
en el mundo, donde permanecería el resto de su vida.

El teorema de finitud [editar]

El primer trabajo de Hilbert sobre funciones invariantes le llevó en 1888 a la demostración en su famoso
teorema de finitud. Veinte años antes, Paul Gordan había demostrado el teorema de la finitud de
generadores para formas binarias usando un complejo enfoque computacional. Los intentos de generalizar
este método a funciones con más de dos variables fallaron por la enorme dificultad de los cálculos
implicados. Hilbert se dio cuenta de que era necesario seguir un camino completamente diferente. Como
resultado, demostró el Teorema de la Base de Hilbert: mostrar la existencia de un conjunto finito de
generadores, para las invariantes de cuánticas en cualquier número de variables, pero de forma abstracta.
Esto es, demostró la existencia de dicho conjunto, pero no de forma algorítmica sino mediante un teorema
de existencia.

Hilbert envió sus resultados a los Mathematische Annalen. Gordan, el experto en teoría de invariantes
para la Mathematische Annalen, no fue capaz de apreciar la naturaleza revolucionaria del teorema de
Hilbert y rechazó el artículo, criticando la exposición porque era insuficientemente comprensiva. Su
comentario fue:

Esto es teología, ¡no matemática!

Klein, por otro lado, reconoció la importancia del trabajo y se aseguró de que fuese publicado sin
alteraciones. Animado por Klein y los comentarios de Gordan, Hilbert extendió su método en un segundo
artículo, proporcionando estimaciones sobre el grado máximo del conjunto mínimo de generadores, y lo
envió una vez más a los Annalen. Tras leer el manuscrito, Klein le escribió, diciendo:

Sin duda éste es el trabajo más importante en álgebra general que los Annalen han publicado
nunca.

Más adelante, cuando la utilidad del método de Hilbert había sido reconocida universalmente, el propio
Gordan diría:

He de admitir que incluso la teología tiene sus méritos.

Axiomatización de la geometría [editar]

Artículo principal: Axiomas de Hilbert

El texto Grundlagen der Geometrie (Fundamentos de la geometría) que Hilbert publicó en 1899 sustituye
los axiomas de Euclides tradicionales por un conjunto formal de 21 axiomas. Evitan las debilidades
identificadas en los de Euclides, cuyos trabajos seguían siendo usados como libro de texto en aquél
momento. El estudiante estadounidense de 19 años Robert Lee Moore publicó de forma independiente y
contemporánea un conjunto equivalente de axiomas. Algunos de ellos coinciden, mientras que algunos de
los axiomas del sistema de Moore son teoremas en el de Hilbert, y viceversa.

El enfoque de Hilbert marcó el cambio al sistema axiomático moderno. Los axiomas no se toman como
verdades evidentes. La geometría puede tratar de cosas, sobre las que tenemos intuiciones poderosas,
pero no es necesario asignar un significado explícito a los conceptos indefinidos. Como dice Hilbert, los
elementos tales como el punto, la recta, el plano y otros, se pueden sustituir con mesas, sillas, jarras de
cerveza y otros objetos. Lo que se discute son sus relaciones definidas.

Hilbert comienza enumerando los conceptos sin definición: punto, recta, plano, incidencia (una relación
entre puntos y planos), estar entre, congruencia de pares de puntos y congruencia de ángulos. Los
axiomas unifican la geometría plana y la sólida de Euclides en un único sistema.

Los 23 problemas [editar]

Artículo principal: Problemas de Hilbert

Hilbert propuso una lista muy influyente de 23 problemas sin resolver en el Congreso Internacional de
Matemáticos de París en 1900. Se reconoce de forma general que ésta es la recopilación de problemas
abiertos más exitosa y de profunda consideración producida nunca por un único matemático.
Tras reescribir los fundamentos de la geometría clásica, Hilbert podía haberlo extrapolado al resto de las
matemáticas. Este enfoque difiere, sin embargo, de los posteriores 'fundacionalista' Russel-Whitehead o el
'enciclopedista' Nicolas Bourbaki, y de su contemporáneo Giuseppe Peano. La comunidad matemática al
completo podría embarcarse en problemas que él identificó como aspectos cruciales en las áreas de la
matemática que él considero como claves.

Lanzó el conjunto de problemas en la conferencia "Los problemas de la matemática" presentada durante


el curso del Segundo Congreso Internacional de Matemáticos celebrado en París. Ésta es la introducción a
la conferencia de Hilbert:

¿Quién entre nosotros no estaría contento de levantar el velo tras el que se esconde el futuro;
observar los desarrollos por venir de nuestra ciencia y los secretos de su desarrollo en los
siglos que sigan? ¿Cual será el objetivo hacia el que tenderá el espíritu de las generaciones
futuras de matemáticos? ¿Qué métodos, qué nuevos hechos revelará el nuevo siglo en el vasto y
rico campo del pensamiento matemático?

Presentó menos de la mitad de los problemas en el Congreso, que fueron publicados en las actas.
Extendió el panorama en una publicación posterior, y con ella llegó la formulación canónica actual de los
23 Problemas de Hilbert. El texto al completo es importante, dado que la exégesis de las cuestiones puede
seguir siendo materia de debate inevitable, cada vez que se preguntan cuántas han sido resueltas.

Algunos se resolvieron en poco tiempo. Otros se han discutido durante todo el siglo XX, y actualmente se
ha llegado a la conclusión de que unos pocos son irrelevantes o imposibles de cerrar. Algunos continúan
siendo actualmente un reto para los matemáticos.

Formalismo [editar]

Siguiendo la tendencia que se había convertido en estándar a mitad de siglo, el conjunto de problemas de
Hilbert también constituía una especie de manifiesto, que abrió la vía para el desarrollo de la escuela
formalista, una de las tres escuelas matemáticas más importantes del siglo XX. De acuerdo al formalismo,
la matemática es un juego carente de significado en el que uno juega con símbolos carentes de significado
de acuerdo a unas reglas formales establecidas de antemano. Por tanto es una actividad de pensamiento
autónoma. Sin embargo, hay margen para la duda al respecto de si la propia visión de Hilbert era
simplistamente formalista en este sentido.

El programa de Hilbert [editar]

En 1920 propuso de forma explícita un proyecto de investigación (en metamatemática, como se llamó
entonces) que acabó siendo conocido como programa de Hilbert. Quería que la matemática fuese
formulada sobre unas bases sólidas y completamente lógicas. Creía que, en principio, esto podía lograrse,
mostrando que:

1. toda la matemática se sigue de un sistema finito de axiomas escogidos correctamente; y


2. que tal sistema axiomático se puede probar consistente.

Parecía tener razones técnicas y filosóficas para formular esta propuesta. Esto afirmaba su disgusto por lo
que se había dado a conocer como ignorabimus, que aún era un problema activo en su tiempo dentro del
pensamiento alemán, y que podía rastrearse en esa formulación hasta Emil du Bois-Reymond.

El programa sigue siendo reconocible en la filosofía de la matemática más popular, donde se le llama
normalmente formalismo. Por ejemplo, el grupo Bourbaki adoptó una versión selectiva y diluida como
adecuada para los requisitos de sus proyectos gemelos de (a) escribir trabajos fundamentales
enciclopédicos, y (b) dar soporte al sistema axiomático como herramienta de investigación. Este enfoque
ha tenido éxito e influencia en relación con el trabajo de Hilbert en el álgebra y el análisis funcional, pero
no ha conseguido cuajar igual con sus intereses en física y lógica.

El trabajo de Gödel [editar]


Hilbert y los matemáticos de talento que trabajaron con él en esta empresa estaban dedicados al proyecto.
Su intento de dar soporte a la matemática axiomatizada con principios definidos, que eliminaría las
incertidumbres teóricas, iba sin embargo a acabar en derrota.

Gödel demostró que no se podía demostrar la completitud de ningún sistema formal no contradictorio que
fuera suficientemente amplio para incluir al menos la aritmética, sólo mediante sus propios axiomas. En
1931 su teorema de la incompletitud mostró que el ambicioso plan de Hilbert era imposible tal como se
planteaba. El segundo requisito no podía combinarse con el primero de forma razonable, mientras el
sistema axiomático sea genuinamente finitario.

Sin embargo, el teorema de completitud no dice nada al respecto de la demostración de la completitud de


la matemática mediante un sistema formal diferente. Los logros posteriores de la teoría de la
demostración como mínimo clarificaron la relación de la consistencia con las teorías de interés principal
para los matemáticos. El trabajo de Hilbert había empezado lógico en su camino a la clarificación; la
necesidad de entender el trabajo de Gödel llevó entonces al desarrollo de la teoría de la recursividad y
después de la lógica matemática como disciplina autónoma en la década de 1930-1940. De este 'debate'
nació directamente la base para la informática teórica de Alonzo Church y Alan Turing.

La escuela de Göttingen [editar]

Entre los estudiantes de Hilbert se encontron Hermann Weyl, el campeón de ajedrez Emanuel Lasker,
Ernst Zermelo y Carl Gustav Hempel. John von Neumann fue asistente suyo. En la Universidad de
Göttingen, Hilbert se encontró rodeado por un círculo social constituido por algunos de los matemáticos
más importantes del siglo XX, como Emmy Noether y Alonzo Church.

Análisis funcional [editar]

Alrededor de 1909, Hilbert se dedicó al estudio de ecuaciones diferenciales e integrales; su trabajo tuvo
consecuencias directas en partes importantes el análisis funcional moderno. Para poder llevar a cabo estos
estudios, Hilbert introdujo el concepto de un espacio euclídeo de infinitas dimensiones, llamado más tarde
espacio de Hilbert. Su trabajo en esta parte del análisis proporcionó la base de importantes contribuciones
a la matemática de la física en las dos décadas siguientes, aunque en direcciones que por entonces no se
podían anticipar. Más tarde, Stefan Banach amplificó el concepto, definiendo los espacios de Banach. El
espacio de Hilbert es por sí misma la idea más importante del análisis funcional, que creció a su alrededor
durante el siglo XX.