Professional Documents
Culture Documents
Programación imperativa
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.
• ASP
• BASIC
• C
• C#
• C++
• Fortran
• Pascal
• Java
• Perl
• PHP
• Lua
Programación declarativa
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
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.
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
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.
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.
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).
La programación lógica permite formalizar hechos del mundo real, por ejemplo:
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
Introducción [editar]
• 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.
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.
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:
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.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
• 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]
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.
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.
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Alan Turing
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.
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Gödel
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
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.
Contenido
[ocultar]
• 6 Enlaces externos
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.
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
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 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:
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:
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.
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.
¿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.
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:
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.
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.
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.
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.