bienvenidos

bienvenidoemptyaemptyemptymiemptyemptyblogsemptydeemptyinformatica

dietas para adelgazar

ImageChef.com

ImageChef Custom Images
blog de jesyka blog de jesyka cometen con sinseridad

sábado, 30 de octubre de 2010

martes, 26 de octubre de 2010

INTRODUCCION DE EXCEL 2007

Excel2007 es una hoja de cálculo integrada en Microsoft Office. Esto quiere decir que si ya conoces otro programa de Office, como Word, Access, Outlook, PowerPoint, ... te resultará familiar utilizar Excel, puesto que muchos iconos y comandos funcionan de forma similar en todos los programas de Office.
Probablemente no te sirva de mucho saber que Excel es una hoja de cálculo, no te preocupes, ahora te lo explicamos. Una hoja de cálculo es un programa que es capaz de trabajar con números de forma sencilla e intuitiva. Para ello se utiliza una cuadrícula donde en cada celda de la cuadrícula se pueden introducir números, letras y gráficos.biblia de excel

martes, 19 de octubre de 2010

¿QUE ES INTERNET?


Introduccion
Internet es la combinacion de 4 culturas que se apoyan mutuamente: la cultura universitaria de investigacion, la cultura hacker de la pasion de crear, la cultura contra cultural de inventar nuevas formas sociales y la cultura empresarial de hacer dinero a traves de la innovacion. Y todas ellas, con un comun denominador: la cultura de la libertad.
Internet se ha convertido hoy en una herramienta indispensable en multiples procesos economicos, sociales, etc. Esto hace que Internet sea un componente necesario para el crecimiento y la competitividad de la economi­a.
El crecimiento de Internet se debe al gran valor añadido que dan sus aplicaciones a los usuarios.
Internet NO es:
  • Internet no es sinonimo de World Wide Web (WWW o “la Web”)
  • Internet no es parte de la Red Telefónica Pública
  • Internet no es Google
  • Internet no es Internet Explorer
¿Que es Internet?
  • Internet es un conjunto descentralizado de redes de comunicacion interconectadas, que utilizan la familia de protocolos TCP/IP, garantizando que las redes fi­sicas heterogeneas que la componen funcionen como una red logica unica, de alcance mundial.
  • La Internet es una coleccion de miles de redes de ordenadores. Tambien se le conoce como “Superautopista de la Informacion”.
  • Gran red descentralizada de ordenadores, de ambito global y publicamente accesible, que proporciona una gran cantidad de servicios de comunicacion de varios tipos, incluyendo la World Wide Web, el correo electronico y muchos otros.
  • INTER (Internacional) y NET (Red). Red mundial que conecta entre si a computadoras del mundo mediante protocolos TCP/IP y proporciona diversos servicios de intercambio de informacion.
  • INTerconnected NETworks. La red de redes.
Referencias:
  • Wikipedia. Internet. Wikipedia. Enero 2007
  • Wiktionary. Internet. Wiktionary. Enero 2007

¿QUE ES EL LENGUAJE UNIFICADO DE MODELO?

  1. Lenguaje Unificado de Modelado (UML): Lenguaje estandar para el modelado de software lenguaje para visualizar, especificar, construir y documentar los artefactos de un sistema con gran cantidad de software. Lenguaje usado por el Proceso Unificado. Lenguaje que permite a los desarrolladores visualizar el producto de su trabajo (Artefactos) en esquemas o diagramas estandarizados.
  2. Caso de Uso: Una descripcion de un conjunto de secuencias e acciones, incluyendo variaciones, que un sistema lleva a cabo yq ue conduce a un resultado observable de interes para un actor determinado. Un caso de uso es en esencia un interaccion tipica entre un usuario y un sistema de computo.
  3. Diagrama: Un representacion grafica de un conjunto de elementos, usualmente representado como un grafo conectado de vertices (elementos) y arcos (relaciones).
  4. Diagrama de Caso de Uso: Un diagrama que muestra un conjuntos de casos de uso y de actores y sus relaciones, los diagramas de casos de uso muestran los casos de uso de un sistema desde un punto de vista estatico.
  5. Diagrama de Clases: Un diagrama que muestra un conjunto de clases, interface y colaboraciones y las relaciones entre estos, los diagramas de clases muestran el diseño de un sistema desde un punto de vista estatico, un diagrama que muestra una coleccion de elementos (estaticos) declarativos.
  6. Diagrama de Objetos: Un diagrama de muestra un conjunto de objetos y sus relaciones en un momento determinado; los diagramas de objetos muestran el diseño o los procesos de un sistema desde un punto de vista estático.
  7. Diagrama de Interaccion: Un diagrama que muestra un interaccion, consiste en un conjunto de objetos y sus relaciones, incluyendo los mensajes que pueden ser enviados entre ellos, los diagramas de interaccion trata la vista dianmica de un sistema, un termino generico que se aplica a varios tipos de diagramas que enfatizan las interacciones de objetos, incluyendo diagramas de secuencia, diagramas de colaboracion y diagramas de actividad.
  8. Diagrama de Secuencia: Un diagrama de interaccion, que hace enfasis en la ordenacion temporal de los mensajes.
  9. Diagrama de Colaboracion: Un diagrama de interaccion que enfatiza la organizacion estructural de los objetos que envian y reciben mensajes, un diagrama que muestra las instrucciones organizadas alrededor de instancias y de los enlaces entre ellas.
  10. Diagrama de Paquetes: Muestra grupos de clases y las dependencias entre ellos.
  11. Diagrama de Estados: Un diagrama que muestra una maquina de estados; los diagramas de estados tratan la vista dinamica de un sistema.
  12. Diagrama de Actividades: Un diagrama que muestra un flujo de actividad a actividad. Los diagramas de actividad tratan la vista dinámica de un sistema. Un caso especial de diagrama de estados en el cual casi todos los estados son estados en acción y en el cual todos o casi todos los estados son estados de acción y en el cual todas o casi todas las transiciones son disparadas por la terminación de las acciones en los estados origen.
  13. Diagrama de Despliegue: Un diagrama que muestra un conjunto de nodos y sus relaciones, un diagrama de despliegue muestra el despliegue de un sistema desde el punto de vista estatico. Muestra la disposicion fisica de los componentes en los nodos de hardware y software.
  14. Diagrama de Componentes: Un diagrama que muestra un conjunto de componentes y sus relaciones, los diagramas de componentes muestran los componentes de un sistema desde un punto de vista estatico.
Fuente Original:
Grady Booch, Ivar Jacobson, James Rumbaugh. El Lenguaje Unificado de Modelado. Addison Wesley. 2000

¿QUE ES LA INGENIERIA DE SOFTWARE?


  Introduccion
La Ingenieria del Software es una disciplina o area de la informatica o ciencias de la computacion, que ofrece metodo y tecnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. Hoy dia es cada vez mas frecuente la consideracion de la Ingenieria del Software como un nueva area de la ingenieria, y el Ingeniero del Software comienza a ser una profesion implantada en el mundo laboral internacional, con derechos, deberes y responsabilidades que cumplir, junto a una, y reconocida consideracion social en el mundo empresarial y, por suerte, para esas personas con brillante futuro.
Definicion: Ingenieria
La ingeniería es el estudio y la aplicación de las distintas ramas de la tecnología. El profesional en este ámbito recibe el nombre de ingeniero.
La actividad del ingeniero supone la concreción de una idea en la realidad. Esto quiere decir que, a través de técnicas, diseños y modelos, y con el conocimiento proveniente de las ciencias, la ingeniería puede resolver problemas y satisfacer necesidades humanas.
La ingeniería también supone la aplicación de la inventiva y del ingenio para desarrollar una cierta actividad. Esto, por supuesto, no implica que no se utilice el método científico para llevar a cabo los planes.
Definicion: Software
Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación. [Std. 729, IEEE]
El software no son solo programas, sino todos los documentos asociados y la configuracion de datos que se necesitan para hacer que estos programas operen de manera correcta. Un sistema de software consiste en diversos programas independientes, archivos de configuracion que se utilizan para ejecutar estos programas, un sistema de documentacion que describe la estructura del sistema, la documentacion para el usuario que explica como utilizar el sistema y sitios web que permitan a los usuarios descargar la informacion de productos recientes. [Sommerville, 2004]
El software de computadora es el producto que los ingenieros de software construyen y despues mantienen en el largo plazo. El software se forma con (1) las instrucciones (programas de computadora) que al ejecutar se proporcionan las caracteristicas, funciones y el grado de desempeño deseados; (2) las estructuras de datos que permiten que los programas manipulen informacion de manera adecuada; y (3) los documentos que describen la operacion y uso de los programas. [Pressman, 2005]
Definiciones: Ingenieria del Software
  • Ingenieria del Software es el estudio de los principios y metodologias para desarrollo y mantenimiento de sistemas de software. [Zelkovitz, 1978]
  • Ingenieria del Software es la aplicacion practica del conocimiento cientifico en el diseño y construccion de programas de computadora y la documentacion asociada requerida para desarrollar y operar (funcionar) y mantenerlos. Asi como tambien desarrollo de software o produccion de software. [Bohem, 1976]
  • La Ingenieria del Software es el establecimiento y uso de principios solidos de la ingenieria para obtener economicamente un software confiable y que funcione de modo eficiente en maquinas reales. [Bauer, 1972]
  • Ingenieria de Software es la aplicacion de un enfoque sistematico, disciplinado y cuantificable al desarrollo operacion (funcionamiento) y mantenimiento del software: es decir, la aplicacion de ingenieria al software. [IEEE, 1993]
  • La Ingenieria de Software es una disciplina de la ingenieria que comprende todos los aspectos de la produccion de software desde las etapas iniciales de la especificacion del sistema hasta el mantenimiento de este despues que se utiliza. [Sommerville, 2004]
  • La Ingenieria de Software es una disciplina que integra el proceso, los metodos, y las herramientas para el desarrollo de software de computadora. [Pressman, 2005]
Principales areas de estudio y/o investigacion
Referencias:

¿QUE ES LA PROGRAMACION ORIENTADA A OBJETO?

Programacion Orientada a Objetos (POO): Metodo de Implementacion en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son miembros de una jerarquia de clases unidas mediante relaciones de herencia. En tales programas las clases suelen verse estaticas, mientras que los objetos suelen tener una naturaleza mucho mas dinamica, promovida por la evidencia de la ligadura dinamica y el polimorfismo.
Objeto: Algo a lo cual se le puede hacer cosas. Un objeto tiene un estado, comportamiento e identidad; la estructura y comportamiento de objetos similares se definen en una clase comun. Los terminos instancia y objeto son intercambiables.
Clase: Conjunto de objetos que comparten una estructura comun y un comportamiento comun. Los terminos y clase y tipo suelen ser (no siempre) equivalentes; una clase es un concepto ligeramente diferente del de un tipo, en el sentido de que enfatiza la clasificacion de estructura y comportamiento.
Encapsulación: El proceso de introducir en el mismo comportamiento los elementos de abstraccion que constituyen su estructura y comportamiento; el encapsulamiento sirve para separar el interfaz contractual de una abstraccion y su implantacion.
Abstraccion: Las caracteristicas esenciales de un objeto que lo distiguen de todos los demas objetos y proporcionan asi fronteras conceptuales definidas con nitidez en relacion con la prespectiva del observador; el proceso de centrarse en las caracteristicas esenciales de un objeto. La abstraccion es uno de los elementos fundamentales del modelo de objetos.
Herencia: Relacion entre clases, en la que una clase comparte la estructura y comportamiento definido en otra (herencia simple) u otras (herencia multiple) clases. La herencia define una relacion “de tipo” entre clases en la que una subclase hereda de una o mas superclases generalizadas, una subclase suele especializar a sus superclases aumentando o refinando la estructuras y comportamiento existentes.
Polimorfismo: Un concepto de teoria de tipos, de acuerdo con el cual un nombre (como declaracion de una variable) puede denotar objetos de muchas clases diferentes que se relacionan mediante alguna superclase comun; asi todo objeto denotado por este nombre es capaz de responder a algun conjunto comun de operaciones de diferentes modos.
Ligadura dinámica y estatica: Ligadura denota asociacion de un nombre (como un declaracion de un variable) con una clase; ligadura dinamica es una ligadura en la que la asociacion nombre/clase no se realiza hasta que el objeto designado por le nombre se crea en tiempo de ejecucion; ligadura estatica es una ligadura en la que la asociacion nombre/clase se realiza cuando se declara el nombre (en tiempo de compilacion) pero antes de la creacion del objeto se designa el nombre.
Mensaje: Operacion que un objeto realiza sobre otro. Los terminos mensaje, metodo o operacion suelen ser equivalentes.
Metodo: Operacion sobre un objeto, definida como parte de la declaracion de una clase; todos los metodos son operaciones, pero no todas las operaciones son metodos. Los terminos mensaje, metodo o operacion suelen ser equivalentes.
Comportamiento: Como actua y reacciona un objeto, en terminos de sus cambios de estado y su paso de mensajes; la actividad exteriormente visible y comprobable de un objeto.
Clase abstracta: Una clase que no tiene instancias. Una clase abstracta se escribe con la intencion de que sus subclases concretas añadan elementos nuevos a sus estructura y comportamiento, normalmente implementas en operaciones abastractas.
Clase base: La clase mas generalizada en una estructuras de clases. La mayoria de las aplicaciones tienen muchas de tales clases raiz. Algunos ejemplos definen una clase base primitiva, que sirve como la superclase ultima de todas las clases.
Clase concreta: Clase cuya implementacion esta completa y por tanto puede estar instanciada.
Clase contenedor (container): Clases que sirve como plantilla para otras clases, en las que la plantilla puede denotar colecciones homogeneas (todos los objetos de la coleccion son de la misma clase) o heterogeneas (cada uno de los objetos de la coleccion puede ser una clase diferente, aunque generalmente todos deben comportir un superlcase comun). Las clases contenedor se definen la mayoria de las veces como clases parametrizadas, en las que algun parametro designa la clase de los objetos contenidos.
Clase generica: Clase que sirve como plantilla para otras clases, en las que la plantilla puede parametrizarse con otras clases objetos y/o operaciones. Un clase generica debe ser instanciada (rellenados sus parametros) antes de que puedan crearse objetos. Las clases genericas se usan tipicamente como clases contenedor. Los terminos clase generia y clase parametrizada son intercambiables.
Jerarquia: Clasificacion u ordenacion de abstracciones. Las dos jerarquias mas habituales en un sistema complejo son su estructura de clases (que incluye jerarquia “de tipo”) y sus estructura de objetos (que incluye jerarquia “de partes” y de colaboracion); pueden encontrarse tambien jerarquias en las arquitecturas de modulos y procesos de un sistema complejo.
Operacion: Algun trabajo que un objeto realiza sobre otro con el fin de provocar una reaccion. Todas las operaciones sobre un objeto concreto pueden encontrarse en forma de subprogramas libres y funciones miembros o metodos. Los terminos mensaje, metodo y operacion son intercambiables.
Constructor: Operacion que crea un objeto y/o inicializa su estado.
Destructor: Operacion de libera el estado de un objeto y/o destruye el propio objeto.
Fuente Original:
  • Grady Booch. Analisis y Diseño Orientado a Objetos con Aplicaciones. Addison Wesley, 1996
  • Bertrand Meyer. Construccion de Software Orientado a Objetos. Prentice-Hall, 1998

¿QUE ES LA PROGRAMACION?

Introduccion:
La Programacion ha pasado a tener un papel importantisimo en la vida diaria, gracias a ella podemos programar los ordenadores, electrodomesticos, robots y otras maquinas. La Programacion intenta resolver ciertos problemas que nos surgen todos los dias basandose en una metodologia.
El conjunto de problemas que son resolubles utilizando un computador es indudablemente, muy extenso. El concepto de algoritmo es fundamental para la actividad de resolver problemas con computadoras, por lo que necesitamos adquirir un conocimiento firme sobre lo que es y no es con objeto de llevar a cabo de forma eficaz la actividad de resolver problemas ya que este es el proposito de escribir algoritmos.
Definiciones:
  • Un programa de computador es un conjunto de instrucciones ordenes dadas a la maquina que producirán la ejecución de una determinada tarea. A la persona que escribe programas se le denomina Programador, al proceso de escribir programas se denomina Programacion.
  • En informática, la programacion es un proceso por el cual se escribe (en un lenguaje de programacion), se prueba, se depura y se mantiene el código fuente de un programa informático.
  • La Programacion es la accion de escribir un conjunto de instrucciones escritas en un determinado lenguaje, que dirigen a un ordenador para la ejecución de una serie de operaciones, con el objetivo de resolver un problema que se ha definido previamente.
  • La Programacion es un conjunto de tecnicas utilizadas para desarrollar programas que sean faciles de leer, depurar (poner a punto) y modificar o mantener.
Programacion y Algoritmos
Un programador no solo debe aprender la tarea que realiza cada instruccion sino que ademas debe saber combinar estas instrucciones para realizar un tarea en particular. Al considerar este problema desde un punto de vista diferente, un programador primero debe resolver el problema paso a paso y luego tratar de encontrar las instrucciones (o series de instrucciones) apropiada que resuelva el problema. La solucion paso a paso se conoce como algoritmo. Los algoritmos juegan un papel muy importante en la ciencia de la computacion.
Programacion y Ingenieria de Software:
Al principio la programacion de ordenadores se veia como un arte, todo era cuestion de dominar un lenguaje de programacion y aplicar habilidades personales de resolucion de problemas.
En la actualidad no es aceptable escribir un programa que realiza una tarea sin seguir principios y metodos de ingenieria de software para obtener programas confiables.
Una buena formacion en programacion no solo debe incluir el estudio de los esquemas algoritmicos, y estructuras de datos mas importantes, el analisis de algoritmos y el paradigma orientado a objetos. Una buena formacion en programacion tambien deberia incluir, una formacion en ingenieria de software y estudiar ingenieria de requisitos, metodos de desarrollo de software, gestion de proyectos, y sobre todo, adquirir experiencia practica participando en proyectos de software.
Programacion y Creatividad
La programacion es una actividad en la que la creatividad juega un papel crucial, por ello un buen programador ademas de tener una buena formacion academica es una persona muy creativa y con una gran capacidad de abstraccion, esencial para la resolucion de problemas. Los programadores siempre deben tener presente que se enfrentan a una actividad muy compleja y deben desconfiar de los lenguajes, metodos o herramientas que se ofrecen como soluciones magicas para construir software de forma casi automatica y sin apenas esfuerzo, sin dejar lugar a la creatividad. Ellos deben saber, de acuerdo a Brooks, que las tecnologias abordan problemas accidentales. Pero los problemas esenciales pueden ser abordados a traves de solidos principios software. El buen programador debe ser un persona que sabe trabajar en equipo, que conoce la importancia del trabajo metodico, y que no se comporta como un programador complusivo que se plantea la programacion como una batalla a muerte contra la maquina, sin tregua ni cuartel.
Referencias:
  • Behrouz A. Forouzan. Introducción a la Ciencia de la Computacion. Thomson Paraninfo 2003
  • Jesús J. García Molina, Francisco J. Montoya Dato, José L. Fernández Alemán, Mª José Majado Rosales. Una Introducción a la Programacion. Un Enfoque Algorítmico. Thomson Paraninfo 2005
  • Wikipedia. Programacion. Febrero 2007

¿QUE ES ALGORITMO?

Definicion: Algoritmo
Podemos encontrar muchas definiciones de algoritmo en los textos de programacion, todas ellas muy similares:
  • Conjunto ordenado y finito de pasos que permite hallar la solución de un problema.
  • Una secuencia de pasos que conducen a la realización de una tarea.
  • Descripción exacta de la secuencia en que se ha de realizar un conjunto de actividades tendientes a resolver un determinado tipo de problema o procedimiento.
  • Conjunto de sentencias / instrucciones en lenguaje nativo, los cuales expresan la lógica de un programa.
  • Es un sistema por el cual se llega a una solución, teniendo en cuenta que debe de ser definido, finito y preciso.
  • Toda receta, proceso, rutina, método, procedimiento, técnica, formula que resuelven un determinado problema.
  • Conjunto de instrucciones concretas y detalladas mediante el cual se consigue una acción determinada.
  • Conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas.
  • Descripción precisa de una sucesión de instrucciones que permite llevar a cabo un trabajo en un número finito de pasos.
  • Un conjunto de símbolos y procedimientos usados en la realización de un cálculo.
Las definiciones mas completas o formales:
  • Secuencia finita de instrucciones, reglas o pasos que describen de forma precisa las operaciones de un ordenador debe realizar para llevar a cabo un tarea en un tiempo mas finito. [Donald E. Knuth, 1968]
  • Descripcion de un esquema de comportamiento expresado mediante un reportorio finito de acciones y de informaciones elementales, identificadas, bien comprendidas y realizables a priori. Este repertorio se denomica lexico [Pierre Scholl, 1988]
  • Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado. [Rodolfo Quispe-Otazu, 2004]
Caracteristicas:
Las características fundamentales que debe cumplir todo algoritmo son:
  • Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación.
  • Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos.
  • Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende.
  • Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo.
  • Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución.
Historia:
La palabra algoritmo proviene del nombre del matemático llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi (hay muchas variantes para el nombre al usar el alfabeto latin, tales como Al-Khorezmi, Al-Khwarizmi, Al-Khawarizmi, Al-Khawaritzmi o Al-Khowarizmi) que vivió entre los siglos VIII y IX.
Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil comprensión, de ahí que su principal valor no fuera el de crear nuevos teoremas o nuevas corrientes de pensamiento, sino el de simplificar las matemáticas a un nivel lo suficientemente bajo para que pudiera ser comprendido por un amplio público. Cabe destacar cómo señaló las virtudes del sistema decimal indio (en contra de los sistemas tradicionales árabes) y cómo explicó que, mediante una especificación clara y concisa de cómo calcular sistemáticamente, se podrían definir algoritmos que fueran usados en dispositivos mecánicos similares a un ábaco en vez de las manos. También estudió la manera de reducir el numero de operaciones necesarias que formaban el cálculo.
Por esta razón, aunque no haya sido él el inventor del primer algoritmo, merece que este concepto esté asociado a su nombre. Al-Khorezmi fue sin duda el primer pensador algorítmico.
Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador. La autora fue Ada Byron, en cuyos escritos se detallaban la máquina analítica en 1842. Por ello que es considerada por muchos como la primera programadora aunque, desde Charles Babbage, nadie completó su máquina, por lo que el algoritmo nunca se implementó.
La idea de resolver un problema o de disponer de un algoritmo es bastante antigua, tal es así, que existía la errada creencia que no había problema que no se pudiera resolver y en base a ello, el matemático David Hilbert quiso descubrir un algoritmo para los algoritmos. Hoy en dia gracias a los trabajos de Kurt Gödel, Alonzo Church (calculo lamba), Alan Turing (maquina de turing), se sabe que dentro del universo de problemas, una pequeña parte es computable, luego que el objetivo que perseguia David Hilbert no era computable, es lo que se ha denominado como la computabilidad de los algoritmos.
Referencias:

¿QUE ES LA COMPUTACION?

Motivacion
Es probablemente justo decir que la mayoria de las personas sabe que es una computadora, y lo sabe usar muy bien como herramienta de trabajo o estudio. Pero no muchos, por no decir mas de la mitad de los estudiantes que creen estar estudiando esta carrera, no son conscientes de la palabra COMPUTACION esto es en parte debido al hecho que la Computacion e Informatica es una disciplina muy incipiente en el Peru.
En este articulo intentare explicar mi punto de vista de lo que significa realmente COMPUTACION como un intento de tratar de sensibilizar a los estudiantes que creen estar estudiando esta carrera y a los entes competentes.
La Computación NO es:

  • conocer que computadora comprar
  • arreglar computadoras
  • edición y procesamiento de textos
  • instalación de software
  • navegar por la web
  • uso de paquetes de software comercial
  • diseñar paginas web
  • conocer mas de 6 diferentes lenguajes de programacion
  • administrar cabinas de internet
  • administrar empresas
  • llenar libros de contabilidad
  • diseño grafico publicitario
  • secretariado computarizado
Definicion: Computación e Informática (¿Que es la Computacion?)
  • La Computación es la disciplina que busca establecer una base científica para resolver problemas mediante el uso de dispositivos electrónicos y sistemas computacionales.
  • La Computación es el estudio de métodos algorítmicos para representar y transformar la información, incluyendo su teoría, diseño, implementación, aplicación y eficiencia. Las raíces de la computacion e informatica se extienden profundamente en la matemática y la ingeniería. La matemática imparte el análisis del campo y la ingeniería imparte el diseño.
  • La Computacion se define como el conjunto de conocimientos científicos y técnicos (bases teóricas, métodos, metodologías, técnicas, y tecnologías) que hacen posible el procesamiento automático de los datos mediante el uso de computadores, para producir información útil y significativa para el usuario.
  • La Computación e Informática es la ciencia del tratamiento automático de la información mediante un computador (llamado también ordenador o computadora).
  • El concepto fundamental de la Computación es el concepto de ALGORITMO.
Diferencia entre Computación e Informática
Informática es un vocablo inspirado en el francés informatique, formado a su vez por la conjunción de las palabras information y automatique, para dar idea de la automatización de la información que se logra con los sistemas computacionales.
Esta palabra (Informatica) se usa principalmente en España y Europa. Computación se usa sobre todo en América y proviene de cómputo (o cálculo).
Principales areas de estudio

  • Algoritmos y Estructuras de Datos: Esta area estudia algoritmos específicos y las estructuras de datos asociadas para solucionar problemas específicos. La parte de esto implica análisis matemático para analizar la eficacia del algoritmo en el uso de tiempo y memoria.
  • Teoria de la Computacion: En esta area se categorizan los problemas segun la naturaleza de los algoritmos para resolverlos, algunos problemas tienen algoritmos rapidos, alguno solamente tienen algoritmos muy lentos (tales problemas se consideran a veces dificilmente insuperables), algunos no tienen ningún algoritmo.
  • Lenguajes de Programacion: La meta del área de lenguajes de programacion es diseñar bien los lenguajes de programación mejores y mas naturales y los compiladores más rapidos y eficientes.
  • Sistemas Operativos: Esta area implica el diseño y implementacion de nuevos y mejores sistemas operativos.
  • Arquitectura del Computador: La meta de esta area es diseñar y construir computadoras mejores y mas rapidas, esto incluye el CPU, memorias, dispositivos de entrada y salida
Adicionales areas de estudio
  • Inteligencia Computacional
  • Computacion Grafica
  • Sistemas de Bases de Datos
  • Redes de Computadoras
  • Matematica Computacional
  • Ingenieria de Software
  • Ingenieria de Computacion
  • Robotica
  • Computacion Cientifica
  • Computacion Simbolica
  • Sistemas de Informacion
  • Ingenieria Web
  • Recuperacion de Informacion
  • Vision Computacional
  • Bioinformatica
  • Biologia Computacional
  • Linguistica Computacional
  • Computacion Acustica
Aplicaciones en nuestra sociedad:
  • Reconocimiento de Voz
  • Reconocimiento de Imagenes
  • Reconocimiento Facial
  • Reconocimiento de Huellas Digitales
  • Procesamiento de Imagenes Medicas
  • Procesamiento Automatico de Textos
  • Simulacion de Trafico Vehicular
  • Generacion de Animaciones
  • Entre Otros.
Referencias:

martes, 21 de septiembre de 2010

Historia de la computación y Conceptos InformáticosDel Ábaco a la tarjeta perforada:
EL ABACO; quizá fue el primer dispositivo mecánico de contabilidad que existió. Se ha calculado que tuvo su origen hace al menos 5000 años y su efectividad ha soportado la prueba del tiempo.
LA PASCALINA; El inventor y pintor Leonardo Da Vinci (1452-1519) trazó las ideas para una sumadora mecánica. Siglo y medio después, el filósofo y matemático francés Blaise Pascal (1623-1662) por fin inventó y construyó la primera sumadora mecánica. Se le llamo Pascalina y funcionaba como maquinaria a base de engranes y ruedas. A pesar de que Pascal fue enaltecido por toda Europa debido a sus logros, la Pascalina, resultó un desconsolador fallo financiero, pues para esos momentos, resultaba más costosa que la labor humana para los cálculos aritméticos.
LA LOCURA DE BABBAGE, Charles Babbage (1793-1871), visionario inglés y catedrático de Cambridge, hubiera podido acelerar el desarrollo de las computadoras si él y su mente inventiva hubieran nacido 100 años después. Adelantó la situación del hardware computacional al inventar la "máquina de diferencias", capaz de calcular tablas matemáticas. En 1834, cuando trabajaba en los avances de la máquina de diferencias Babbage concibió la idea de una "máquina analítica". En esencia, ésta era una computadora de propósitos generales. Conforme con su diseño, la máquina analítica de Babbage podía suma r, substraer, multiplicar y dividir en secuencia automática a una velocidad de 60 sumas por minuto.
El diseño requería miles de engranes y mecanismos que cubrirían el área de un campo de fútbol y necesitaría accionarse por una locomotora. Los escépticos le pusieron el sobrenombre de "la locura de Babbage". Charles Babbage trabajó en su máquina analítica hasta su muerte. Los trazos detallados de Babbage describían las características incorporadas ahora en la moderna computadora electrónica. Si Babbage hubiera vivido en la era de la tecnología electrónica y las partes de precisión, hubiera adelantado el nacimiento de la computadora electrónica por varías décadas. Irónicamente, su obra se olvidó a tal grado, que algunos pioneros en el desarrollo de la computadora electrónica ignoraron por completo sus conceptos sobre memoria, impresoras, tarjetas perforadas y control de programa secuencial.
LA PRIMERA TARJETA PERFORADA; El telar de tejido, inventado en 1801 por el Francés Joseph-Marie Jackard (1753-1834), usado todavía en la actualidad, se controla por medio de tarjetas perforadas. El telar de Jackard opera de la manera siguiente: las tarjetas se perforan estratégicamente y se acomodan en cierta secuencia para indicar un diseño de tejido en particular. Charles Babbage quiso aplicar el concepto de las tarjetas perforadas del telar de Jackard en su motor analítico. En 1843 Lady Ada Augusta Lovelace sugirió la idea de que las tarjetas perforadas pudieran adaptarse de manera que propiciaran que el motor de Babbage repitiera ciertas operaciones. Debido a esta sugerencia algunas personas consideran a Lady Lovelace la primera programadora.
Herman Hollerit (1860-1929) La oficina de censos estadounidense no terminó el censo de 1880 sino hasta 1888. La dirección de la oficina ya había llegado a la conclusión de que el censo de cada diez años tardaría mas que los mismo 10 años para terminarlo. La oficina de censos comisionó al estadístico Herman Hollerit para que aplicara su experiencia en tarjetas perforadas y llevara a cabo el censo de 1890. Con el procesamiento de las tarjetas perforadas y el tabulador de tarjetas perforadas de Hollerit, el censo se terminó en sólo 3 años y la oficina se ahorró alrededor de $5,000,000 de dólares.
Así empezó el procesamiento automatizado de datos. Hollerit no tomó la idea de las tarjetas perforadas del invento de Jackard, sino de la "fotografía de perforación" Algunas líneas ferroviarias de la época expedían boletos con descripciones físicas del pasajero; los conductores hacían orificios en los boletos que describían el color de cabello, de ojos y la forma de nariz del pasajero. Eso le dio a Hollerit la idea para hacer la fotografía perforada de cada persona que se iba a tabular. Hollertih fundó la Tabulating Machine Company y vendió sus productos en todo el mundo. La demanda de sus máquinas se extendió incluso hasta Rusia. El primer censo llevado a cabo en Rusia en 1897, se registró con el Tabulador de Hollerith. En 1911, la Tabulating Machine Company, al unirse con otras Compañías, formó la Computing-Tabulating-Recording-Company.
LAS MAQUINAS ELECTROMECÁNICAS DE CONTABILIDAD (MEC) Los resultados de las máquinas tabuladoras tenían que llevarse al corriente por medios manuales, hasta que en 1919 la Computing-Tabulating-Recording-Company. Anunció la aparición de la impresora/listadora. Esta innovación revolucionó la manera en que las Compañías efectuaban sus operaciones. Para reflejar mejor el alcance de sus intereses comerciales, en 1924 la Compañía cambió el nombre por el de International Bussines Machines Corporation (IBM) Durante décadas, desde mediados de los cincuentas la tecnología de las tarjetas perforadas se perfeccionó con la implantación de más dispositivos con capacidades más complejas. Dado que cada tarjeta contenía en general un registro (Un nombre, dirección, etc.) el procesamiento de la tarjeta perforada se conoció también como procesamiento de registro unitario.
La familia de las máquinas electromecánicas de contabilidad (EAM) eloctromechanical accounting machine de dispositivos de tarjeta perforada comprende: la perforadora de tarjetas, el verificador, el reproductor, la perforación sumaria, el intérprete, el clasificador, el cotejador, el calculador y la máquina de contabilidad. El operador de un cuarto de máquinas en una instalación de tarjetas perforadas tenía un trabajo que demandaba mucho esfuerzo físico. Algunos cuartos de máquinas asemejaban la actividad de una fábrica; las tarjetas perforadas y las salidas impresas se cambiaban de un dispositivo a otro en carros manuales, el ruido que producía eran tan intenso como el de una planta ensambladora de automóviles.
Pioneros de la computación
ATANASOFF Y BERRY Una antigua patente de un dispositivo que mucha gente creyó que era la primera computadora digital electrónica, se invalidó en 1973 por orden de un tribunal federal, y oficialmente se le dio el crédito a John V. Atanasoff como el inventor de la computadora digital electrónica. El Dr. Atanasoff, catedrático de la Universidad Estatal de Iowa, desarrolló la primera computadora digital electrónica entre los años de 1937 a 1942. Llamó a su invento la computadora Atanasoff-Berry, ó solo ABC (Atanasoff Berry Computer). Un estudiante graduado, Clifford Berry, fue una útil ayuda en la construcción de la computadora ABC.
Algunos autores consideran que no hay una sola persona a la que se le pueda atribuir el haber inventado la computadora, sino que fue el esfuerzo de muchas personas. Sin embargo en el antiguo edificio de Física de la Universidad de Iowa aparece una placa con la siguiente leyenda: "La primera computadora digital electrónica de operación automática del mundo, fue construida en este edificio en 1939 por John Vincent Atanasoff, matemático y físico de la Facultad de la Universidad, quien concibió la idea, y por Clifford Edward Berry, estudiante graduado de física."
Mauchly y Eckert, después de varias conversaciones con el Dr. Atanasoff, leer apuntes que describían los principios de la computadora ABC y verla en persona, el Dr. John W. Mauchly colaboró con J.Presper Eckert, Jr. para desarrollar una máquina que calculara tablas de trayectoria para el ejército estadounidense. El producto final, una computadora electrónica completamente operacional a gran escala, se terminó en 1946 y se llamó ENIAC (Electronic Numerical Integrator And Computer), ó Integrador numérico y calculador electrónico. La ENIAC construida para aplicaciones de la Segunda Guerra mundial, se terminó en 30 meses por un equipo de científicos que trabajan bajo reloj.
Fue el primer ordenador totalmente electrónico, estaba compuesta por 20.000 válvulas de vacío, 70.000 resistores y 500.000 soldaduras hechas a mano. La unidad necesitaba 100 kw de electricidad
La ENIAC, mil veces más veloz que sus predecesoras electromecánicas, irrumpió como un importante descubrimiento en la tecnología de la computación. Pesaba 30 toneladas y ocupaba un espacio de 450 mts cuadrados, llenaba un cuarto de 6 m x 12 m y contenía 18,000 bulbos, tenía que programarse manualmente conectándola a 3 tableros que contenían más de 6000 interruptores. Ingresar un nuevo programa era un proceso muy tedioso que requería días o incluso semanas. A diferencia de las computadoras actuales que operan con un sistema binario (0,1) la ENIAC operaba con uno decimal (0,1,2..9).
La ENIAC requería una gran cantidad de electricidad. La leyenda cuenta que la ENIAC, construida en la Universidad de Pensilvania, bajaba las luces de Filadelfia siempre que se activaba. La imponente escala y las numerosas aplicaciones generales de la ENIAC señalaron el comienzo de la primera generación de computadoras.
En 1945, John von Neumann, que había trabajado con Eckert y Mauchly en la Universidad de Pensilvania, publicó un artículo acerca del almacenamiento de programas. El concepto de programa almacenado permitió la lectura de un programa dentro de la memoria de la computadora, y después la ejecución de las instrucciones del mismo sin tener que volverlas a escribir. La primera computadora en usar el citado concepto fue la la llamada EDVAC (Eletronic Discrete-Variable Automatic Computer, es decir computadora automática electrónica de variable discreta), desarrollada por Von Neumann, Eckert y Mauchly.
Los programas almacenados dieron a las computadoras una flexibilidad y confiabilidad tremendas, haciéndolas más rápidas y menos sujetas a errores que los programas mecánicos. Una computadora con capacidad de programa almacenado podría ser utilizada para varias aplicaciones cargando y ejecutando el programa apropiado.
Hasta este punto, los programas y datos podría ser ingresados en la computadora sólo con la notación binaria, que es el único código que las computadoras "entienden". El siguiente desarrollo importante en el diseño de las computadoras fueron los programas intérpretes, que permitían a las personas comunicarse con las computadoras utilizando medios distintos a los números binarios.
En 1952 Grace Murray Hoper una oficial de la Marina de E.U., desarrolló el primer compilador, un programa que puede traducir enunciados parecidos al inglés en un código binario comprensible para la maquina llamado COBOL (Common Business-Oriented Languaje).  
Generaciones de computadoras:
Primera Generación de Computadoras
(de 1951 a 1958)
Las computadoras de la primera Generación emplearon bulbos para procesar información. Los operadores ingresaban los datos y programas en código especial por medio de tarjetas perforadas. El almacenamiento interno se lograba con un tambor que giraba rápidamente, sobre el cual un dispositivo de lectura/escritura colocaba marcas magnéticas. Esas computadoras de bulbos eran mucho más grandes y generaban más calor que los modelos contemporáneos. Eckert y Mauchly contribuyeron al desarrollo de computadoras de la 1era Generación formando una Cia. privada y construyendo UNIVAC I, que el Comité del censo utilizó para evaluar el de 1950.
La IBM tenía el monopolio de los equipos de procesamiento de datos basándose en tarjetas perforadas y estaba teniendo un gran auge en productos como rebanadores de carne, básculas para comestibles, relojes y otros artículos; sin embargo no había logrado el contrato para el Censo de 1950.
Comenzó entonces a construir computadoras electrónicas y su primera entrada fue con la IBM 701 en 1953. Después de un lento pero excitante comienzo la IBM 701 se convirtió en un producto comercialmente viable. Sin embargo en 1954 fue introducido el modelo IBM 650, el cual es la razón por la que IBM disfruta hoy de una gran parte del mercado de las computadoras. La administración de la IBM asumió un gran riesgo y estimó una venta de 50 computadoras. Este número era mayor que la cantidad de computadoras instaladas en esa época en E.U. De hecho la IBM instaló 1000 computadoras. El resto es historia. Aunque caras y de uso limitado las computadoras fueron aceptadas rápidamente por las Compañías privadas y de Gobierno. A la mitad de los años 50 IBM y Remington Rand se consolidaban como líderes en la fabricación de computadoras.
- Segunda Generación (1959-1964)
Transistor
Compatibilidad limitada
El invento del transistor hizo posible una nueva generación de computadoras, más rápidas, más pequeñas y con menores necesidades de ventilación. Sin embargo el costo seguía siendo una porción significativa del presupuesto de una Compañía. Las computadoras de la segunda generación también utilizaban redes de núcleos magnéticos en lugar de tambores giratorios para el almacenamiento primario. Estos núcleos contenían pequeños anillos de material magnético, enlazados entre sí, en los cuales podían almacenarse datos e instrucciones.
Los programas de computadoras también mejoraron. El COBOL desarrollado durante la 1era generación estaba ya disponible comercialmente. Los programas escritos para una computadora podían transferirse a otra con un mínimo esfuerzo. El escribir un programa ya no requería entender plenamente el hardware de la computación.
Las computadoras de la 2da Generación eran sustancialmente más pequeñas y rápidas que las de bulbos, y se usaban para nuevas aplicaciones, como en los sistemas para reservación en líneas aéreas, control de tráfico aéreo y simulaciones para uso general. Las empresas comenzaron a aplicar las computadoras a tareas de almacenamiento de registros, como manejo de inventarios, nómina y contabilidad.
La marina de E.U. utilizó las computadoras de la Segunda Generación para crear el primer simulador de vuelo. (Whirlwind I). HoneyWell se colocó como el primer competidor durante la segunda generación de computadoras. Burroughs, Univac, NCR, CDC, HoneyWell, los más grandes competidores de IBM durante los 60s se conocieron como el grupo BUNCH (siglas).
Tercera Generación (1964-1971)
Circuitos integrados
Compatibilidad con equipo mayor
Multiprogramación
Minicomputadora
Las computadoras de la tercera generación emergieron con el desarrollo de los circuitos integrados (pastillas de silicio) en las cuales se colocan miles de componentes electrónicos, en una integración en miniatura. Las computadoras nuevamente se hicieron más pequeñas, más rápidas, desprendían menos calor y eran energéticamente más eficientes.
Antes del advenimiento de los circuitos integrados, las computadoras estaban diseñadas para aplicaciones matemáticas o de negocios, pero no para las dos cosas. Los circuitos integrados permitieron a los fabricantes de computadoras incrementar la flexibilidad de los programas, y estandarizar sus modelos. La IBM 360 una de las primeras computadoras comerciales que usó circuitos integrados, podía realizar tanto análisis numéricos como administración ó procesamiento de archivos.
Los clientes podían escalar sus sistemas 360 a modelos IBM de mayor tamaño y podían todavía correr sus programas actuales. Las computadoras trabajaban a tal velocidad que proporcionaban la capacidad de correr más de un programa de manera simultánea (multiprogramación).
Por ejemplo la computadora podia estar calculando la nomina y aceptando pedidos al mismo tiempo.
 Minicomputadoras, Con la introducción del modelo 360 IBM acaparó el 70% del mercado, para evitar competir directamente con IBM la empresa Digital Equipment Corporation DEC redirigió sus esfuerzos hacia computadoras pequeñas. Mucho menos costosas de comprar y de operar que las computadoras grandes, las minicomputadoras se desarrollaron durante la segunda generación pero alcanzaron su mayor auge entre 1960 y 70.
- La cuarta Generación (1971 a la fecha)
- Microprocesador
- Chips de memoria.
- Microminiaturización
Dos mejoras en la tecnología de las computadoras marcan el inicio de la cuarta generación: el reemplazo de las memorias con núcleos magnéticos, por las de chips de silicio y la colocación de muchos más componentes en un Chip: 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 almacenan en un chip. Usando VLSI, un fabricante puede hacer que una computadora pequeña rivalice con una computadora de la primera generación que ocupara un cuarto completo.
 Lenguajes de Programación
a.) Historia de los lenguajes; Los lenguajes de programación cierran el abismo entre las computadoras, que sólo trabajan con números binarios, y los humanos, que preferimos utilizar palabras y otros sistemas de numeración.
Mediante los programas se indica a la computadora qué tarea debe realizar y como efectuarla, pero para ello es preciso introducir estas ordenes en un lenguaje que el sistema pueda entender. En principio, el ordenador sólo entiende las instrucciones en código máquina, es decir, el especifico de la computadora. Sin embargo, a partir de éstos se elaboran los llamados lenguajes de alto y bajo nivel.
b.) Generaciones de los lenguajes
LENGUAJES DE BAJO NIVEL:
Utilizan códigos muy cercanos a los de la máquina, lo que hace posible la elaboración de programas muy potentes y rápidos, pero son de difícil aprendizaje.
LENGUAJES DE ALTO NIVEL:
Por el contrario, son de uso mucho más fácil, ya que en ellos un solo comando o instrucción puede equivaler a millares es código máquina. El programador escribe su programa en alguno de estos lenguajes mediante secuencias de instrucciones. Antes de ejecutar el programa la computadora lo traduce a código máquina de una sola vez (lenguajes compiladores) o interpretándolo instrucción por instrucción (lenguajes intérpretes). Ejemplos de lenguajes de alto nivel: Pascal, Cobol, Basic, Fortran, C++ Un Programa de computadora, es una colección de instrucciones que, al ser ejecutadas por el CPU de una máquina, llevan a cabo una tarea ó función específica. Este conjunto de instrucciones que forman los programas son almacenados en archivos denomina dos archivos ejecutables puesto que, al teclear su nombre (o hacer clic sobre el icono que los identifica) logras que la computadora los cargue y corra, o ejecute las instrucciones del archivo. El contenido de un archivo ejecutable no puede ser entendido por el usuario, ya que no está hecho para que la gente lo lea, sino para que la computadora sea quien lo lea.
Los archivos de programas ejecutables contienen el código máquina, que la CPU identifica como sus instrucciones. Son lo que conocemos como Programas Objeto. Dado que sería muy difícil que los programadores crearan programas directamente en código de máquina, usan lenguajes más fáciles de leer, escribir y entender para la gente.
El programador teclea instrucciones en un editor, que es un programa parecido a un simple procesador de palabras, estas instrucciones son almacenadas en archivos denominados programas fuentes (código fuente). Si los programadores necesitan hacer cambios al programa posteriormente vuelven a correr el editor y cargan el programa fuente para modificarlo.
El proceso de conversión de programas fuente a programas objeto se realiza mediante un programa denominado compilador. El compilador toma un programa fuente y lo traduce a programa objeto y almacena este último en otro archivo.
PROGRAMA FUENTE:
Es el programa escrito en alguno de los lenguajes y que no ha sido traducido al lenguaje de la maquina, es decir el programa que no está en código de máquina y que por lo tanto no puede ser ejecutable.
PROGRAMA OBJETO:
s aquel programa que se encuentra en lenguaje máquina y que ya es ejecutable por esta.
C.) Programación Orientada a Objetos: La programación orientada a objetos no es un concepto nuevo, sus inicios y técnicas de programación se iniciaron a principios de los 70. Se puede definir programación orientada a objetos (OOPS) como una técnica de programación que utiliza objetos como bloque esencial de construcción. La OOPS, es un tipo de programación más cercana al razonamiento humano. La OOPS surge como una solución a la programación de grandes programas, y para solventar el mantenimiento de dichas aplicaciones, ya que en la programación estructura el más mínimo cambio supone la modificación de muchas funciones relacionadas, en cambio con la OOPS solo es cuestión de añadir o modificar métodos de una clase o mejor, crear una nueva clase a partir de otra (Herencia). Dos lenguajes destacan sobre el resto para programar de esta forma, Smalltalk y C++.
Concepto de Objeto: Desde un punto de vista general un Objeto es una estructura de datos de mayor o menor complejidad con las funciones que procesan estos datos. Dicho de otra forma, sería Datos más un Código que procesa estos datos. A los datos se les denomina miembros dato y a las funciones miembro o miembro funciones. Los datos están ocultos y sólo se puede acceder a ellos mediante las funciones miembro.
Clases: Las Clases son como plantillas o modelos que describen como se construyen ciertos tipos de Objeto. Cada vez que se construye un Objeto de una Clase, se crea una instancia de esa Clase("instance"). Una Clase es una colección de Objetos similares y un Objeto es una instancia de una Clase. Se puede definir una Clase como un modelo que se utiliza para describir uno o más Objetos del mismo tipo.
Herencia: Una característica muy importante de los Objetos y las Clases es la Herencia, una propiedad que permite construir nuevos Objetos (Clases) a partir de unos ya existentes. Esto permite crear "Sub-Clases" denominadas Clases Derivadas que comparten las propiedades de la Clase de la cual derivan (Clase base). Las Clases derivadas heredan código y datos de la clase base, asimismo incorporan su propio código y datos especiales. Se puede decir que la herencia permite definir nuevas Clases a partir de las Clases ya existentes.
Polimorfismo: En un sentido literal, Polimorfismo significa la cualidad de tener más de una forma. En el contexto de POO, el Polimorfismo se refiere al hecho de que una simple operación puede tener diferente comportamiento en diferentes objetos. En otras palabras, diferentes objetos reaccionan al mismo mensaje de modo diferente. Los primeros lenguajes de POO fueron interpretados, de forma que el Polimorfismo se contemplaba en tiempo de ejecución. Por ejemplo, en C++, al ser un lenguaje compilado, el Polimorfismo se admite tanto en tiempo de ejecución como en tiempo de compilación
Decimos entonces que:
El tema de la Programación Orientada a Objetos (Object Oriented Programming O-O-P) sigue siendo para el que escribe un territorio inquietante, interesante y en gran medida desconocido, como parece ser también para la gran mayoría de los que estamos en el campo de la programación. Sin tratar de excluir a aquellos que han afrontado este desarrollo desde el punto de vista académico y formal (maestrías y doctorados) el tema se antoja difícil para los no iniciados. Con este breve artículo me dirigiré en particular a la gran base de programadores prácticos que andamos en búsqueda de mejores herramientas de desarrollo de programas, que faciliten el trabajo de nuestros usuarios y a la vez disminuyan la gran cantidad de considerandos que aparecen al empeñarnos en un proyecto de cómputo.
Como muchos de ustedes, me topé con el concepto de O-O-P como parte de esa búsqueda y al explorarlo apareció el gusanillo de la curiosidad. A lo largo de mi actividad como programador, y cuando se dio la necesidad, no tuve ningún problema en convertir mis habilidades de programación en FORTRAN de IBM 1130 al BASIC de la PDP, pues sólo era cuestión de aprender la sintaxis del lenguaje, ya que las estrategias de programación y los algoritmos eran iguales. Posteriormente, al manejar el PASCAL se requirió un importante esfuerzo en entender la filosofía de las estructuras, lo cual modificaba la manera de ver (conceptualizar) a los datos y a las partes constitutivas de un programa.
Posteriormente aparece el QuickBasic, que adopté inmediatamente por la familiaridad con el BASIC (ley del menor esfuerzo). Ofrecía estructuras de datos (tipos y registros complejos), además de estructuras de instrucciones en procedimientos y módulos; editor "inteligente" que revisa la sintaxis y ejecución de las instrucciones mientras se edita el programa, generación de ejecutable una vez terminado (.EXE), existencia de bibliotecas externas y enlace con módulos objeto generados en otro lenguaje. ¿Qué más podía yo pedir?
Pero la necesidad de estar en la ola de moda es más fuerte que el sentido común. Las aplicaciones en Windows siempre han despertado la envidia de los programadores, al hacer ver sus programas pálidos e insulsos por comparación. Solución: programar en Windows.
Originalmente programar en Windows representaba un largo y tedioso camino para dominar las complejas herramientas de desarrollo. Sólo recientemente han aparecido desarrolladores de aplicaciones para Windows que le permiten al programador pintar sus ventanas y realizar los enlaces entre los objetos con programación tradicional, evitando en gran medida involucrarse con los conceptos complicados de los objetos. Sin embargo no dejaron de inquietarme algunos conceptos marcados por O-O-P, según los cuales serán los pilares del futuro de la programación de componentes y de objetos distribuidos en redes, en donde la actual programación cliente/servidor pareciera por comparación el FORTRAN o el COBOL de ahora.
Pidiendo perdón de antemano a los puristas de las definiciones y conceptos de O-O-P, expondré el resultado de mis propias indagaciones sobre este campo, esperando que al paciente lector y posible programador le resulte menos complicado que a mí asimilar los elementos básicos de O-O-P.
Los principales conceptos que se manejan en la Programación Orientada a Objetos son: 1. encapsulado, 2. herencia y 3. Polimorfismo.
Según esto, la encapsulación es la creación de módulos autosuficientes que contienen los datos y las funciones que manipulan dichos datos. Se aplica la idea de la caja negra y un letrero de "prohibido mirar adentro". Los objetos se comunican entre sí intercambiando mensajes. De esta manera, para armar aplicaciones se utilizan los objetos cuyo funcionamiento está perfectamente definido a través de los mensajes que es capaz de recibir o mandar. Todo lo que un objeto puede hacer está representado por su interfase de mensajes. Para crear objetos, el programador puede recurrir a diversos lenguajes como el C++, el Smalltalk, el Visual Objects y otros. Si se desea solamente utilizar los objetos y enlazarlos en una aplicación por medio de la programación tradicional se puede recurrir al Visual Basic, al CA-Realizer, al Power Builder, etc.
El concepto de herencia me pareció sencillo de entender una vez que capté otro concepto de O-O-P: las clases. En O-O-P se acostumbra agrupar a los objetos en clases. Esto es muy común en la vida diaria. Todos nosotros tendemos a clasificar los objetos comunes por clases. Manejamos la clase mueble, la clase mascota, la clase alimento, etc. Obviamente en el campo de la programación esta clasificación es más estricta. ¿Cuál es el sentido de las clases? Fundamentalmente evitar definir los objetos desde cero y facilitar su rehuso. Si trabajamos con clases, al querer definir un nuevo objeto, partimos de alguna clase definida anteriormente, con lo que el objeto en cuestión hereda las características de los objetos de su clase. Imaginemos que creamos una clase "aves" y describimos las características de las aves (plumas, pico, nacen de huevo, etc.). Más adelante necesitamos una clase "pingüino". Como pertenece a "aves" no requerimos volver a declarar lo descrito sino marcamos que "pingüino" es una subclase de "aves" con lo que "pingüino" hereda todas sus características. A continuación sólo declaramos los detalles que determinan lo que distingue a "pingüino" de "aves". Asimismo podemos declarar "emperador" como una subclase de "pingüino", con lo que "emperador" heredará todas las características de las superclases "pingüino" y "aves" más las características que nosotros declaremos en particular para "emperador". En un programa (imaginario por supuesto) yo puedo utilizar estas clases (aves, pingüino y emperador). El hecho de colocar a un individuo en particular en estas clases es lo que se llama objeto y se dice que es una instancia de una clase. Así, si yo coloco a Fredy (un pingüino emperador) en mi programa, se dice que el objeto Fredy es una instancia de la clase emperador. Fredy aparecerá en mi programa con todas las características (herencia) de aves, de pingüino y de emperador.
Por otra parte, entender el concepto de Polimorfismo implicó un buen número de horas de indagación y búsqueda de ejemplos. Espero que éste resulte claro: supóngase que declaramos un objeto llamado Suma. Este objeto requiere dos parámetros (o datos) como mensaje para operar. En la programación tradicional tendríamos que definir el tipo de datos que le enviamos, como por ejemplo dos números enteros, dos números reales, etc. En O-O-P el tipo de dato se conoce hasta que se ejecuta el programa.
 e.) COMPILADOR: Es un programa que traduce un lenguaje de alto nivel al lenguaje máquina. Un programa compilado indica que ha sido traducido y está listo para ser ejecutado. La ejecución de los programas compilados es más rápida que la de los interpretados, ya que el interprete debe traducir mientras está en la fase de ejecución (saca todos los errores). Un compilador es un programa que traduce el programa fuente (conjunto de instrucciones de un lenguaje de alto nivel, por ejemplo BASIC o Pascal) a programa objeto (instrucciones en lenguaje máquina que la computadora puede interpretar y ejecutar). Se requiere un compilador para cada lenguaje de programación. Un compilador efectúa la traducción, no ejecuta el programa. Una vez compilado el programa, el resultado en forma de programa objeto será directamente ejecutable. Presentan la ventaja considerable frente a los intérpretes de la velocidad de ejecución, por lo que su uso será mejor en aquellos programas probados en los que no se esperan cambios y que deban ejecutarse muchas veces. En caso de que se opte por un interpretador se debe considerar que el intérprete resida siempre en memoria.
INTERPRETE: Traductor de lenguajes de programación de alto nivel, los interpretes ejecutan un programa línea por línea. El programa siempre permanece en su forma original (programa fuente) y el interprete proporciona la traducción al momento de ejecutar cada una de la s instrucciones. Un intérprete es un programa que procesa los programas escritos en un lenguaje de alto nivel, sin embargo, está diseñado de modo que no existe independencia entre la etapa de traducción y la etapa de ejecución. Un intérprete traduce cada instrucción o sentencia del programa escrito a un lenguaje máquina e inmediatamente se ejecuta. Encuentran su mayor ventaja en la interacción con el usuario, al facilitar el desarrollo y puesta a punto de programas, ya que los errores son fáciles de detectar y sobre todo de corregir.
LENGUAJE MÁQUINA: Lenguaje original de la computadora, un programa debe estar escrito en el lenguaje de la máquina para poder ser ejecutado. Este es generado por software y no por el programador. El programador escribe en un lenguaje de programación, el cual es traducido al lenguaje de máquina mediante interpretes y compiladores.
 E.) Case: (Computer-Aided Software Engineering o Computer- Aided Systems Engineering) Ingeniería de Software Asistida por Computadora o Ingeniería de Sistemas Asistida por computadora Software que se utiliza en una cualquiera o en todas las fases del desarrollo de un sistema de información, incluyendo análisis, diseño y programación. Por ejemplo, los diccionarios de datos y herramientas de diagramación ayudan en las fases de análisis y diseño, mientras que los generadores de aplicaciones aceleran la fase de programación.
Las herramientas CASE proporcionan métodos automáticos para diseñar y documentar las técnicas tradicionales de programación estructurada. La meta última de CASE es proveer un lenguaje para describir el sistema completo, que sea suficiente para generar todos los programas necesarios. 
Sistemas Operativos
Un sistema Operativo (SO) es en sí mismo un programa de computadora. Sin embargo, es un programa muy especial, quizá el más complejo e importante en una computadora. El SO despierta a la computadora y hace que reconozca a la CPU, la memoria, el tecla do, el sistema de vídeo y las unidades de disco. Además, proporciona la facilidad para que los usuarios se comuniquen con la computadora y sirve de plataforma a partir de la cual se corran programas de aplicación.
Cuando enciendes una computadora, lo primero que ésta hace es llevar a cabo un autodiagnóstico llamado autoprueba de encendido (Power On Self Test, POST). Durante la POST, la computadora identifica su memoria, sus discos, su teclado, su sistema de vídeo y cualquier otro dispositivo conectado a ella. Lo siguiente que la computadora hace es buscar un SO para arrancar (boot).
Una vez que la computadora ha puesto en marcha su SO, mantiene al menos parte de éste en su memoria en todo momento. Mientras la computadora esté encendida, el SO tiene 4 tareas principales:
1.     Proporcionar ya sea una interfaz de línea de comando o una interfaz gráfica al usuario, para que este último se pueda comunicar con la computadora. Interfaz de línea de comando: tú introduces palabras y símbolos desde el teclado de la computadora, ejemplo, el MS-DOS. Interfaz gráfica del Usuario (GUI), seleccionas las acciones mediante el uso de un Mouse para pulsar sobre figuras llamadas iconos o seleccionar opciones de los menús.
2.     Administrar los dispositivos de hardware en la computadora · Cuando corren los programas, necesitan utilizar la memoria, el monitor, las unidades de disco, los puertos de Entrada/Salida (impresoras, módems, etc). El SO sirve de intermediario entre los programas y el hardware.
3.     Administrar y mantener los sistemas de archivo de disco · Los SO agrupan la información dentro de compartimientos lógicos para almacenarlos en el disco. Estos grupos de información son llamados archivos. Los archivos pueden contener instrucciones de programas o información creada por el usuario. El SO mantiene una lista de los archivos en un disco, y nos proporciona las herramientas necesarias para organizar y manipular estos archivos.
4.     Apoyar a otros programas. Otra de las funciones importantes del SO es proporcionar servicios a otros programas. Estos servicios son similares a aquellos que el SO proporciona directamente a los usuarios. Por ejemplo, listar los archivos, grabarlos a disco, eliminar archivos, revisar espacio disponible, etc. Cuando los programadores escriben programas de computadora, incluyen en sus programas instrucciones que solicitan los servicios del SO. Estas instrucciones son conocidas como "llamadas del sistema"
El Kernel y el Shell.
Las funciones centrales de un SO son controladas por el núcleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte más importante del DOS es un programa con el nombre "COMMAND.COM" Este programa ti ene dos partes. El kernel, que se mantiene en memoria en todo momento, contiene el código máquina de bajo nivel para manejar la administración de hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandos.
Las funciones de bajo nivel del SO y las funciones de interpretación de comandos están separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede cuando carga s Microsoft Windows, el cual toma el lugar del shell, reemplazando la interfaz de línea de comandos con una interfaz gráfica del usuario. Existen muchos shells diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versión 5.0 incluyó un Shell llamado DOS SHELL.
 A.) Categorías de Sistemas Operativos
A.1) MULTITAREA: El término multitarea se refiere a la capacidad del SO para correr mas de un programa al mismo tiempo. Existen dos esquemas que los programas de sistemas operativos utilizan para desarrollar SO multitarea, el primero requiere de la cooperación entre el SO y los programas de aplicación.
Los programas son escritos de tal manera que periódicamente inspeccionan con el SO para ver si cualquier otro programa necesita a la CPU, si este es el caso, entonces dejan el control del CPU al siguiente programa, a este método se le llama multitarea cooperativa y es el método utilizado por el SO de las computadoras de Machintosh y DOS corriendo Windows de Microsoft. El segundo método es el llamada multitarea con asignación de prioridades. Con este esquema el SO mantiene una lista de procesos (programas) que están corriendo. Cuando se inicia cada proceso en la lista el SO le asigna una prioridad. En cualquier momento el SO puede intervenir y modificar la prioridad de un proceso organizando en forma efectiva la lista de prioridad, el SO también mantiene el control de la cantidad de tiempo que utiliza con cualquier proceso antes de ir al siguiente. Con multitarea de asignación de prioridades el SO puede sustituir en cualquier momento el proceso que esta corriendo y reasignar el tiempo a una tarea de mas prioridad. Unix OS-2 y Windows NT emplean este tipo de multitarea.
A.2) MULTIUSUARIO: Un SO multiusuario permite a mas de un solo usuario accesar una computadora. Claro que, para llevarse esto a cabo, el SO también debe ser capaz de efectuar multitareas. Unix es el Sistema Operativo Multiusuario más utilizado. Debido a que Unix fue originalmente diseñado para correr en una minicomputadora, era multiusuario y multitarea desde su concepción.
Actualmente se producen versiones de Unix para PC tales como The Santa Cruz Corporation Microport, Esix, IBM,y Sunsoft. Apple también produce una versión de Unix para la Machintosh llamada: A/UX.Unix
Unix proporciona tres maneras de permitir a múltiples personas utilizar la misma PC al mismo tiempo.
1.) Mediante Módems.
1.     Mediante conexión de terminales a través de puertos seriales
3.) Mediante Redes.
A.3) MULTIPROCESO: Las computadoras que tienen mas de un CPU son llamadas multiproceso. Un sistema operativo multiproceso coordina las operaciones de la computadoras multiprocesadoras. Ya que cada CPU en una computadora de multiproceso puede estar ejecutando una instrucción, el otro procesador queda liberado para procesar otras instrucciones simultáneamente.
Al usar una computadora con capacidades de multiproceso incrementamos su velocidad de respuesta y procesos. Casi todas las computadoras que tienen capacidad de multiproceso ofrecen una gran ventaja.
Los primeros Sistemas Operativos Multiproceso realizaban lo que se conoce como:
·        Multiproceso asimétrico: Una CPU principal retiene el control global de la computadora, así como el de los otros procesadores. Esto fue un primer paso hacia el multiproceso pero no fue la dirección ideal a seguir ya que la CPU principal podía convertirse en un cuello de botella.
·        Multiproceso simétrico: En un sistema multiproceso simétrico, no existe una CPU controladora única. La barrera a vencer al implementar el multiproceso simétrico es que los SO tienen que ser rediseñados o diseñados desde el principio para trabajar en u n ambiente multiproceso. Las extensiones de Unix, que soportan multiproceso asimétrico ya están disponibles y las extensiones simétricas se están haciendo disponibles. Windows NT de Microsoft soporta multiproceso simétrico.
B.) Lista de los Sistemas Operativos más comunes.
B.1) MS-DOS: Es el más común y popular de todos los Sistemas Operativos para PC. La razón de su continua popularidad se debe al aplastante volumen de software disponible y a la base instalada de computadoras con procesador Intel.
Cuando Intel liberó el 80286, D OS se hizo tan popular y firme en el mercado que DOS y las aplicaciones DOS representaron la mayoría del mercado de software para PC. En aquel tiempo, la compatibilidad IBM, fue una necesidad para que los productos tuvieran éxito, y la "compatibilidad IBM" significaba computadoras que corrieran DOS tan bien como las computadoras IBM lo hacían.
B.2) OS/2: Después de la introducción del procesador Intel 80286, IBM y Microsoft reconocieron la necesidad de tomar ventaja de las capacidades multitarea de esta CPU. Se unieron para desarrollar el OS/2, un moderno SO multitarea para los microprocesadores Intel. < BR>Sin embargo, la sociedad no duró mucho. Las diferencias en opiniones técnicas y la percepción de IBM al ver a Windows como una amenaza para el OS/2 causó una desavenencia entre las Compañías que al final las llevó a la disolución de la sociedad.
IBM continuó el desarrollo y promoción del OS/2.
Es un sistema operativo de multitarea para un solo usuario que requiere un microprocesador Intel 286 o mejor. Además de la multitarea, la gran ventaja de la plataforma OS/2 es que permite manejar directamente hasta 16 MB de la RAM ( en comparación con 1 MB en el caso del MS-DOS ). Por otra parte, el OS/2 es un entorno muy complejo que requiere hasta 4 MB de la RAM. Los usuarios del OS/2 interactuan con el sistema mediante una interfaz gráfica para usuario llamada Administrador de presentaciones. A pesar de que el OS/2 rompe la barrera de 1 MB del MS-DOS, le llevo tiempo volverse popular. Los vendedores de software se muestran renuentes a destinar recursos a la creación de un software con base en el OS/2 para un mercado dominado por el MS-DOS. Los usuarios se rehusan a cambiar al OS/2 debido a la falta de software que funcione en la plata forma del OS/2 y a que muchos tendrían que mejorar la configuración de su PC para que opere con el OS/2.
B.3) UNIX: Unix es un SO multiusuario y multitarea, que corre en diferentes computadoras, desde supercomputadoras, Mainframes, Minicomputadoras, computadoras personales y estaciones de trabajo.
Es un sistema operativo que fue creado a principios de los setentas por los científicos en los laboratorios Bell. Fue específicamente diseñado para proveer una manera de manejar científica y especializadamente las aplicaciones computacionales. Este SO se adapto a los sistemas de computo personales así que esta aceptación reciente lo convierte en un sistema popular.
. Unix es más antiguo que todos los demás SO de PC y de muchas maneras sirvió como modelo para éstos. Aun cuando es un SO extremadamente sólido y capaz, la línea de comandos Unix, no es apta para cardiacos, debido a que ofrece demasiados comandos.
B.4) SISTEMA OPERATIVO DE MACINTOSH: La Macintosh es una máquina netamente gráfica. De hecho, no existe una interfaz de línea de comando equivalente para ésta. Su estrecha integración de SO, GUI y área de trabajo la hacen la favorita de la gente que no quiere saber nada de interfaces de línea de comando.
Las capacidades gráficas de la Macintosh hicieron de esa máquina la primera precursora en los campos gráficos computarizados como la autoedición por computadora.
La familia de microcomputadoras de Apple Macintosh y su sistema operativo define otra plataforma importante. Las PC de Macintosh, que se basan en la familia de microprocesadores de Motorola, usan la arquitectura de Bus de 32 bits. La plataforma para Macintosh incluye muchas capacidades sofisticadas que comprende la multitarea, una GUI, la memoria virtual y la capacidad para emular la plataforma MS-DOS. Las PC de Macintosh también tiene la capacidad integrada de compartir archivos y comunicarse con o tras PC de Macintosh en una red.
B.5) WINDOWS NT DE MICROSOFT: Con Windows NT, Microsoft ha expresado su dedicación a escribir software no sólo para PC de escritorio sino también para poderosas estaciones de trabajo y servidores de red y bases de datos. Microsoft Windows NT no es necesariamente un sustituto de DOS ni una nueva versión de éste; es, en conjunto, un nuevo SO diseñado desde sus bases para las máquinas más modernas y capaces disponibles.
Windows NT de Microsoft ofrece características interconstruidas que ningún otro SO para PC ofrece, con excepción de Unix.
Además de las características tradicionales de estricta seguridad de sistema, red interconstruida, servicios de comunicación y correo electrónico interconstruidos, herramientas de administración y desarrollo de sistema y una GUI, Windows NT puede correr directamente aplicaciones de Windows de Microsoft y de Unix.
Windows NT, al igual que el OS/2 ver 2.0 y algunas versiones de Unix, es un SO de 32 bits, que puede hacer completo uso de los procesadores de estas características.
Además de ser multitarea, está diseñado para tomar ventaja del multiproceso simétrico.