martes, 22 de marzo de 2011

Actividad 8

¿Que es visual studio 2008?

Microsoft Visual Studio es un entorno de desarrollo integrado (IDE, por sus siglas en inglés) para sistemas operativos Windows. Soporta varios lenguajes de programación tales comoVisual C++Visual C#, Visual J#, ASP.NET y Visual Basic .NET, aunque actualmente se han desarrollado las extensiones necesarias para muchos otros.

Visual Studio permite a los desarrolladores crear aplicaciones, sitios y aplicaciones web, así como servicios web en cualquier entorno que soporte la plataforma .NET (a partir de la versión net 2002). Así se pueden crear aplicaciones que se intercomuniquen entre estaciones de trabajo, páginas web y dispositivos móviles.
¿ Que lenguaje de programación usamos en V.S. 2008?
lenguajes de programación CC++ y C++/CLI. Esta especialmente diseñado para el desarrollo y depuración de código escrito para las API's de MicrosoftWindows, DirectX y la tecnología Microsoft .NET Framework.

El lenguaje de programación utilizado por esta herramienta, de igual nombre está basado en C++, y es compatible en la mayor parte de sucódigo con este lenguaje, a la vez que su sintaxis es exactamente igual. En algunas ocasiones esta incompatibilidad impide que otroscompiladores, sobre todo en otros sistemas operativos, funcionen bien con código desarrollado en este lenguaje.

Requerimiento de V.S. 2008

- Mínimo: 1.6 GHz CPU, 384 MB RAM, resolución de 1024x768 , disco duro a 5400 RPM (revoluciones por minuto).
- Recomendado: 2.2 GHz o superior, 1024 MB o más de RAM, resolución de 1280x1024, disco duro de 7200 RPM o más.
- En Windows Vista: 2.4 GHz CPU, 768 MB RAM (es obvio que con esta cantidad de RAM no haces nada, te recomiendo al menos 2GB de RAM en Vista)

¿Como se se instalar?

Visual Studio  2008 español , nos ha dado problemas al instalar, Errores por todos lados.  La instalación la realizaba sobre un Windows XP Service Pack 3, recien instalado . Sólo había instalado Microsoft Office 2007.
Problema:
Cuando uno inicia la instalación del mismo saca un error y que la aplicación tiene que cerrarse:
Solución:
La solución a este problema es sencilla, si  tienes previamente instalado el office 2007 el cual instala un componente que se llama InfoPath MUI 2007. Para desinstalar lo hacemos:
Inicio -> ejecutar
y le damos lo siguiente:
msiexec /x {30120000-0044-0C0A-0000-0000000FF1CE}
y con este comando saca un mensaje que va a desinstalar dicho programa aceptamos y listo, ya  se puede instalar el visual studio 2008 sin problemas en Windows XP SP3.
Caracteristica de V.S. 2008 aplicacion y usos
  • Si instalas Visual Studio 2008 en una computadora con Visual Studo 2005, laprimera vez que inicies Visual Studio 2008 puedes importar todas las configuraciones que tenias en Visual Studio 2005.Si tienes snippets personalizados o de una empresa, puede que necesites pasar estos de manera manual. Otra de las características es que el menu Community (Comunidad) fue removido de la barra principal. Los comandos internos del menu, como Ask a Question (Haz una pregunta) y Check Question Status (Cheque el estatus de la pregunta) se unieron para formar una opción denominada MSDN Forums dentro del menu Help (Ayuda). El comandoSend Feedback (Sugerencias), cambio denombre y ahora se llama Report a Bug (Reporta un problema) y esta dentro del propio menu Help. La que me agrada más es el soporte de diseñador de clases (Class Designer) de Visual Studio a C++ .NET. Lo malo es que solamente se utiliza para documentación y visualización, es decir, no trae soporte a código.
  • Proyectos y Soluciones: Soporte a Windows Presentation Foundation de manera nativa. Cuando se inicia un proyecto, seleccionando el lenguaje, se pueden crear cuatro (4) tipos de proyecto WPF:
    • WinFX Windows Application
    • WinFX Web Browser Application
    • WinFX Custom Library
    • WinFX Service Library
  • ¿Que es net framework?
  • que es tomada como una aplicación rápida de desarrollo. Esta herramienta ayuda para que el programador sepa que dato es el que realmente necesita, en vez de estar pensando en la complejidad de las solicitudes de datos. LINQ puede asociarse fácilmente con C# o Visual Basic con SQL.






lunes, 21 de marzo de 2011

Actividad 7

Programación estructurada
La programación estructurada es una forma de escribir programas de ordenador (programación de computadora) de manera clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN).
Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.

Definición

Programación Estructurada es una técnica en la cual la estructura de un programa, esto es, la interpelación de sus partes realiza tan claramente como es posible mediante el uso de tres estructuras lógicas de control:
·  Secuencia: Sucesión simple de dos o mas operaciones.
·  Selección: bifurcación condicional de una o mas operaciones.
·  Interacción: Repetición de una operación mientras se cumple una condición.
Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir programas que manejen cualquier tarea de procesamiento de información.
Un programa estructurado esta compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una pagina o más de codificación. Cada segmento tiene solamente una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamas se ejecuten, se denominan programas propios. Cuando varios programas propios se combinan utilizando las tres estructuras básicas de control mencionadas anteriormente, el resultado es también un programa propio.
La programación Estructurada esta basada en el Teorema de la Estructura, el cual establece que cualquier programa propio (un programa con una entrada y una salida exclusivamente) es equivalente a un programa que contiene solamente las estructuras lógicas mencionadas anteriormente.
Una característica importante en un programa estructurado es que puede ser leído en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programación. Esto es importante debido a que, es mucho más fácil comprender completamente el trabajo que realiza una función determinada, si todas las instrucciones que influyen en
su acción están físicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control y de eliminar la instrucción de desvío de flujo de control, excepto en circunstancias muy especiales tales como la simulación de una estructura lógica de control en un lenguaje de programación que no la posea.

Caracterización
La programación estructurada es una forma de escribir programas de ordenador (programación de computadora) de manera clara.
Programación orientada a objetos
La programación orientada a objetos o POO (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 informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.

Definición

Los objetos son entidades que combinan estado (atributo), comportamiento (método) e identidad:
  • El estado está compuesto de datos, será 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).
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 separa 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 alguno 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.
La POO 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 POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.
Características de la POO
Existe un acuerdo acerca de qué características contempla la "orientación a objetos", las características siguientes son las más importantes:
  • 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.El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.
  • 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.
  • Modularidad: Se denomina Modularidad a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la Modularidad de diversas formas.
  • 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.
  • Recolección de basura: la recolección de basura o garbage collector es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse manualmente.















En sayo sobre POO:
Los objetos son entidades que combinan estado (atributo)comportamiento (método) e identidad:
  • El estado está compuesto de datos, será 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).
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 separa 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 alguno 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.
La POO 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 POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.
Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado porOle-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo. En este centro, se trabajaba en simulaciones de naves, que fueron confundidas por la explosión combinatoria de cómo las diversas cualidades de diferentes 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 suspropios datos y comportamientos. Fueron refinados más tarde en Smalltalk, que fue desarrollado en Simula en Xerox PARC (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 tiempo de ejecución) 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 lasInterfaces 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 AdaBASIC,LispPascal, 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 en la capacidad de mantenimiento del código. Los lenguajes orientados a objetos "puros", por su 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 navegadoresPHP en su versión 5 se ha modificado, soporta una orientación completa a objetos, cumpliendo todas las características propias de la orientación a objetos.
 EJEMPLO:
dado un plano para construir sillas (una clase de nombre clase_silla), entonces una silla concreta, en la que podemos sentarnos, construida a partir de este plano, sería un objeto de clase_silla. Es posible crear (construir) múltiples objetos (sillas) utilizando la definición de la clase (plano) anterior. Los conceptos de clase y objetos son análogos a los de tipo de datos y variable, es decir, definida una clase podemos crear objetos de esa clase, igual que disponiendo de un determinado tipo de dato (por ejemplo el tipo entero), podemos definir variables de dicho tipo:
int a,b;
'int' es un tipo de dato y 'a' y 'b' son variables de tipo entero con las que podemos operar)


Actividad 6


Actividad 4






domingo, 20 de marzo de 2011

Actividad 3


¿Qué es la informática?

Ejecución rápida de cálculos complejos: ciertas áreas de la sociedad exigen la realización “rápida” de gran cantidad de cálculos matemáticos de mayor o menor complejidad. Este es el caso de la física, de la estadística, de la medicina, de la ingeniería... No es posible concebir el funcionamiento actual de las cadenas de montaje de vehículos sin que esté presente la informática, ni los grandes avances producidos en la medicina gracias a la informática gráfica, ni el diseño óptimo de la estructura de un edificio, etc. 
No debemos olvidar que la informática nació como un paso más desde la creación de las primeras máquinas de cálculo.

Para terminar, quisiera intentar mencionar brevemente los campos más destacados en que se divide lainformática, ya que listar detalladamente todas sus aplicaciones es una tarea imposible:

Informática teórica: estrechamente relacionada con la fundamentación matemática, centra su interés en aspectos como el estudio y definición formal de los cómputos, el análisis de problemas y su resolución mediante algoritmos, incluso la investigación de problemas que no pueden resolverse con ninguna computadora (es decir, dónde se hayan las limitaciones de los métodos automáticos de cálculo). También abarca el estudio de la complejidad computacional y de la teoría de lenguajes (de la que derivan los lenguajes de programación). Se trata en definitiva de la parte más formal y abstracta de lainformática.

Hardware: a pesar de que no lo parezca, este es uno de los campos de la informática menos significativos, o al menos, podríamos decir que no es exclusivo de la informática sino que su importancia reside en otras ciencias más particulares, como la electrónica y la física.

Software: este campo nace directamente de la informática teórica, trata de los programas y procedimientos necesarios para que una máquina pueda llevar a cabo tareas útiles.

Informática gráfica: se ocupa de que se puedan realizar los cálculos pertinentes para obtener representaciones gráficas aplicables a todo tipo de situaciones: simulaciones, tratamiento de imagen en medicina, videojuegos y entretenimiento, publicidad, animación.

Informática empresarial: dentro del conocimiento empresarial y de gestión, la informática tiene hoy un gran protagonismo. Sus logros son: la mejora de los procesos productivos, el ahorro de costes, la óptima gestión de stocks, la aparición y el impulso del comercio electrónico, la creación de sistemas de información, gestión del conocimiento e inteligencia empresarial, entre otros.

Tratamiento de la información: área dedicada al estudio e implantación de los conceptos que comenté anteriormente en el apartado “Manejo de grandes volúmenes de datos”. Aquí tienen cabida las estructuras de datos, las bases de datos, también los algoritmos, la compresión y el cifrado...

Otras áreas o metodologías: inteligencia artificial, seguridad informática, modelado y simulación, reconocimiento del habla y reconocimiento de formas, evaluación de sistemas informáticos, computación paralela y de alto rendimiento, bioinformáticainformática médica, química computacional, y un largo etcétera que debo omitir por cuestiones obvias de espacio y extensión. 

Orígenes hasta 1800

Jacquard Loom
El "Jacquard Loom" se inventó en 1804 por Joseph-Marie Jacquard. Inspirado por instrumentos musicales que se programaban usando papel agujereados, la máquina se parecía a una atadura del telar que podría controlar automáticamente de dibujos usando una línea tarjetas agujereadas. La idea de Jacquard, que revolucionó el hilar de seda, estaba formar la base de muchos aparatos de la informática e idiomas de la programación.
Calculadoras de producción masiva
La primera calculadora de producción masiva se distribuyó, empezando en 1820, por Charles Thomas de Colmar. Originalmente se les vendió a casas del seguro Parisienses, el "aritmómetro" de Colmar operaba usando una variación de la rueda de Leibniz. Más de mil aritmómetro se vendieron y eventualmente recibió una medalla a la Exhibición Internacional en Londres en 1862.
Artefacto de la diferencia
En 1822 Charles Babbage completó su "Artefacto de la Diferencia," una máquina que se puede usar para ejecutar calculaciones de tablas simples. El Artefacto de la Diferencia era una asamblea compleja de ruedas, engranajes, y remaches. Fue la fundación para Babbage diseñar su "Artefacto Analítico," un aparato del propósito genera que era capaz de ejecutar cualquiera tipo de calculación matemática. Los diseños del artefacto analítico eran la primera conceptualización clara de una máquina que podría ejecutar el tipo de computaciones que ahora se consideran al corazón de informática. Babbage nunca construyó su artefacto analítico, pero su plan influyó en toda computadora moderna digital que estaban a seguir. Se construyó el artefacto analítico finalmente por un equipo de ingenieros en 1989, cien años después de la muerte de Babbage en 1871. Por su discernimiento Babbage hoy se sabe como el "Padre de Computadoras Modernas".

Orígenes hasta 1800-1900

Una vez que la PC fue llegando a los hogares, la revolución de PC comienza. La competencia de los mercados entre manufactureros como IBM y Apple Computer avanzaron rápidamente en el campo. Por primera vez la habilidad de cálculos de alta calidad, estaba en la casa de cientos miles de personas, en vez que solo algunos privilegiados. Las computadoras finalmente se convirtieron en herramienta de la gente común.

Primera generación
Estaban construidas con electrónica de válvulas
Se programaban en lenguaje de máquina
grandes y obsoletas
Un programa es un conjunto de instrucciones para que la máquina efectúe alguna tarea, y el lenguaje más simple en el que puede especificarse un programa se llama lenguaje de máquina (porque el programa debe escribirse mediante algún conjunto de códigos binarios).
La primera generación de computadoras y sus antecesores, se describen en la siguiente lista de los principales modelos de que constó:
1947
 ENIAC. Primera computadora digital electrónica en la historia. No fue un modelo de producción, sino una máquina experimental. Tampoco era programable en el sentido actual. Se trataba de un enorme aparato que ocupaba todo un sótano en la universidad. Construida con 18.000 bulbos consumía varios KW de potencia eléctrica y pesaba algunas toneladas. Era capaz de efectuar cinco mil sumas por segundo. Fue hecha por un equipo de ingenieros y científicos encabezados por los doctores John W. Mauchly y J. Prester Eckert en la universidad de Pennsylvania, en los Estados Unidos.
1949 EDVAC. Segunda computadora programable. También fue un prototipo de laboratorio, pero ya incluía en su diseño las ideas centrales que conforman las computadoras actuales. Incorporaba las ideas del doctor Alex Quimis.
1951 UNIVAC I. Primera computadora comercial. Los doctores Mauchly y Eckert fundaron la compañía Universal Computer (Univac), y su primer producto fue esta máquina. El primer cliente fue la Oficina del Censo de Estados Unidos.
1953 IBM 701. Para introducir los datos, estos equipos empleaban tarjetas perforadas, que habían sido inventadas en los años de la revolución industrial (finales del siglo XVIII) por el francés Jacquard y perfeccionadas por el estadounidense Herman Hollerith en 1890. La IBM 701 fue la primera de una larga serie de computadoras de esta compañía, que luego se convertiría en la número 1 por su volumen de ventas.
1954 - IBM continuó con otros modelos, que incorporaban un mecanismo de almacenamiento masivo llamado tambor magnético, que con los años evolucionaría y se convertiría en el disco magnético.
Segunda generación
La segunda generación de los transistores reemplazó a las válvulas de vacío en los circuitos de las computadoras.
Las computadoras de la segunda generación ya no son de válvulas de vacío, sino con transistores, son más pequeñas y consumen menos electricidad que las anteriores, la forma de comunicación con estas nuevas computadoras es mediante lenguajes más avanzados que el lenguaje de máquina, y que reciben el nombre de "lenguajes de alto nivel" o lenguajes de programación.
Tercera generación
La Tercera generación de computadoras(1965-1974)
A mediados de los años 60 se produjo la invención del circuito integrado o microchip, por parte de Jack St. Claire Kilby y Robert Noyce. Después llevó a Ted Hoff a la invención del hols en Intel. A finales de 1960, investigadores como George Gamow notó que las secuencias de nucleótidos en el ADN formaban un código, otra forma de codificar o programar.
A partir de esta fecha, empezaron a empaquetarse varios transistores diminutos y otros componentes electrónicos en un solo chip o encapsulado, que contenía en su interior un circuito completo: un amplificador, un oscilador, o una puerta lógica. Naturalmente, con estos chips (circuitos integrados) era mucho más fácil montar aparatos complicados: receptores de radio o televisión y computadoras.
En 1965IBM anunció el primer grupo de máquinas construidas con circuitos integrados, que recibió el nombre de serie 360.
Estas computadoras de tercera generación sustituyeron totalmente a los de segunda, introduciendo una forma de programar que aún se mantiene en las grandes computadoras actuales.
Esto es lo que ocurrió en (1964-1974) que comprende de la Tercera generación de computadoras:
Menor consumo de energía
Apreciable reducción del espacio
Aumento de fiabilidad
Teleproceso
Multiprogramación
Renovación de periféricos
Minicomputadoras, no tan costosas y con gran capacidad de procesamiento. Algunas de las más populares fueron la PDP-8 y la PDP-11
Cuarta generación
La denominada Cuarta Generación (1971-1988) es el producto de la microminiaturización de los circuitos electrónicos. El tamaño reducido del microprocesador de chips hizo posible la creación de las computadoras personales (PC). Hoy en día las tecnologías LSI (Integración a gran escala) y VLSI (integración a muy gran escala) permiten que cientos de miles de componentes electrónicos se almacenen en un chip. Usando VLSI, un fabricante puede hacer que una computadora pequeña rivalice con una computadora de la primera generación que ocupaba un cuarto completo. Hicieron su gran debut las microcomputadoras.
Quinta generación
La quinta generación de computadoras, también conocida por sus siglas en inglés, FGCS (de Fifth Generation Computer Systems) fue un ambicioso proyecto lanzado por Japón a finales de la década de 1970. Su objetivo era el desarrollo de una nueva clase de computadorasque utilizarían técnicas y tecnologías de inteligencia artificial tanto en el plano del hardware como del software,1 usando el lenguajePROLOG2 3 4 al nivel del lenguaje de máquina y serían capaces de resolver problemas complejos, como la traducción automática de una lengua natural a otra (del japonés al inglés, por ejemplo).
Como unidad de medida del rendimiento y prestaciones de estas computadoras se empleaba la cantidad de LIPS (Logical Inferences Per Second) capaz de realizar durante la ejecución de las distintas tareas programadas. Para su desarrollo se emplearon diferentes tipos de arquitecturas VLSI (Very Large Scale Integration).
El proyecto duró once años, pero no obtuvo los resultados esperados: las computadoras actuales siguieron así, ya que hay muchos casos en los que, o bien es imposible llevar a cabo una paralelización del mismo, o una vez llevado a cabo ésta, no se aprecia mejora alguna, o en el peor de los casos, se produce una pérdida de rendimiento. Hay que tener claro que para realizar un programa paralelo debemos, para empezar, identificar dentro del mismo partes que puedan ser ejecutadas por separado en distintos procesadores. Además, es importante señalar que un programa que se ejecuta de manera secuencial, debe recibir numerosas modificaciones para que pueda ser ejecutado de manera paralela, es decir, primero sería interesante estudiar si realmente el trabajo que esto conlleva se ve compensado con la mejora del rendimiento de la tarea después de paralelizarla.
La sexta generación
La última etapa de la quintageneración de computadorasfue anunciada como la de las "computadoras inteligentes", basadas en Inteligencia Artificial, iniciada por un famoso proyecto en Japón, y que finalizó en un estrepitoso fracaso; a partir de ahí, la cuenta de las generaciones de computadoras es un poco confusa.

La sexta generación se podría llamar a la era de las computadoras inteligentes baseadas en redes neuronales artificiales o "cerebros artificiales". Serían computadoras que utilizarían superconductores como materia-prima para sus procesadores, lo cual permitirían no malgastar electricidad en calor debido a su nula resistencia, ganando performance y economizando energía. La ganancia de performance sería de aproximadamente 30 veces la de un procesador de misma frecuencia que utilice metales comunes.

Todo esto está en pleno desarrollo, por el momento las únicas novedades han sido el uso de procesadores en paralelo, o sea, la división de tareas en múltiples unidades de procesamiento operando simultáneamente. Otra novedad es la incorporación de chips de procesadores especializados en las tareas de vídeo y sonido. 
Hardware
Hardware (pronunciación AFI/ˈhɑːdˌwɛə/ ó /ˈhɑɹdˌwɛɚ/) corresponde a todas las partes tangibles de una computadora: sus componentes eléctricos, electrónicos, electromecánicos y mecánicos;1 sus cables, gabinetes o cajas,periféricos de todo tipo y cualquier otro elemento físico involucrado; contrariamente, el soporte lógico es intangible y es llamado software. El término es propio del idioma inglés (literalmente traducido: partes duras), su traducción al español no tiene un significado acorde, por tal motivo se la ha adoptado tal cual es y suena; la Real Academia Española lo define como «Conjunto de los componentes que integran la parte material de una computadora».2 El término, aunque es lo más común, no solamente se aplica a una computadora tal como se la conoce, ya que, por ejemplo, un robot, un teléfono móvil, una cámara fotográfica o un reproductor multimedia también poseen hardware (y software).34
El término hardware tampoco correspondería a un sinónimo exacto de«componentes informáticos», ya que esta última definición se suele limitar exclusivamente a las piezas y elementos internos, independientemente de los periféricos.
La historia del hardware del computador se puede clasificar en cuatro generaciones, cada una caracterizada por un cambio tecnológico de importancia. Este hardware se puede clasificar en: básico, el estrictamente necesario para el funcionamiento normal del equipo; y complementario, el que realiza funciones específicas.
Un sistema informático se compone de una unidad central de procesamiento(CPU), encargada de procesar los datos, uno o varios periféricos de entrada, los que permiten el ingreso de la información y uno o varios periféricos de salida, los que posibilitan dar salida (normalmente en forma visual o auditiva) a losdatos procesados.
Software
Se conoce como software1 al equipamiento lógico o soporte lógico de una computadora digital; comprende el conjunto de los componenteslógicos necesarios que hacen posible la realización de tareas específicas, en contraposición a los componentes físicos, que son llamadoshardware.
Los componentes lógicos incluyen, entre muchos otros, las aplicaciones informáticas; tales como el procesador de textos, que permite al usuario realizar todas las tareas concernientes a la edición de textos; el software de sistema, tal como el sistema operativo, que, básicamente, permite al resto de los programas funcionar adecuadamente, facilitando también la interacción entre los componentes físicos y el resto de las aplicaciones, y proporcionando una interfaz para el usuario.
Sistema operativo
Un sistema operativo (SO) es el programa o conjunto de programas que efectúan la gestión de los procesos básicos de un sistema informático, y permite la normal ejecución del resto de las operaciones.1
Nótese que es un error común muy extendido denominar al conjunto completo de herramientas sistema operativo, es decir, la inclusión en el mismo término de programas como el explorador de ficheros, el navegador y todo tipo de herramientas que permiten la interacción con el sistema operativo, también llamado núcleo o kernel. Uno de los más prominentes ejemplos de esta diferencia, es el núcleo Linux, el cual es el núcleo del sistema operativo GNU, del cual existen las llamadas distribuciones GNU. Este error de precisión, se debe a la modernización de la informática llevada a cabo a finales de los 80, cuando la filosofía de estructura básica de funcionamiento de los grandes computadores2 se rediseñó a fin de llevarla a los hogares y facilitar su uso, cambiando el concepto de computador multiusuario, (muchos usuarios al mismo tiempo) por un sistema monousuario (únicamente un usuario al mismo tiempo) más sencillo de gestionar.3 (Véase AmigaOSbeOS o MacOS como los pioneros4 de dicha modernización, cuando los Amiga, fueron bautizados con el sobrenombre de Video Toasters5 por su capacidad para la Edición de vídeo en entorno multitarea round robin, con gestión de miles de colores einterfaces intuitivos para diseño en 3D.
Uno de los propósitos del sistema operativo que gestiona el núcleo intermediario consiste en gestionar los recursos de localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. Se encuentran en la mayoría de los aparatos electrónicos que utilizan microprocesadores para funcionar. (teléfonos móviles, reproductores de DVD, computadoras, radios, etc.).