viernes, 10 de septiembre de 2010

VISUAL BASIC

VISUAL BASIC


 
Visual Basic es un lenguaje de programación desarrollado por el alemán Alan Cooper para Microsoft. El lenguaje de programación es un dialecto de BASIC, con importantes agregados. Su primera versión fue presentada en 1991, con la intención de simplificar la programación utilizando un ambiente de desarrollo completamente gráfico que facilitara la creación de interfaces gráficas y, en cierta medida, también la programación misma. Desde el 2001 Microsoft ha propuesto abandonar el desarrollo basado en la API Win32 y pasar a trabajar sobre un framework o marco común de librerías independiente de la versión del sistema operativo, .NET Framework, a través de Visual Basic .NET (y otros lenguajes como C Sharp (C#) de fácil transición de código entre ellos).
Visual Basic (Visual Studio) constituye un IDE (entorno de desarrollo integrado, o, en inglés, Integrated Development Enviroment) que ha sido empaquetado como un programa de aplicación; es decir, consiste en un editor de código (programa donde se escribe el código fuente), un depurador (programa que corrige errores en el código fuente para que pueda ser bien compilado), un compilador (programa que traduce el código fuente a lenguaje de máquina), y un constructor de interfaz gráfica o GUI (es una forma de programar en la que no es necesario escribir el código para la parte gráfica del programa, sino que se puede hacer de forma visual).

Compilador


El compilador de Visual Basic x.0 genera ejecutables que requieren una DLL para que funcionen, en algunos casos llamada MSVBVMxy.DLL (acrónimo de "MicroSoft Visual Basic Virtual Machine x.y", siendo x.y la versión) y en otros VBRUNXXX.DLL ("Visual Basic Runtime X.XX"), que provee todas las funciones implementadas en el lenguaje. Además existe un gran número de bibliotecas (DLL) que facilitan el acceso a muchas funciones del sistema operativo y la integración con otras aplicaciones

ENTORNO DE DESARROLLO


Su entorno de desarrollo es muy similar al de otros lenguajes e IDE's.
Se compone principalmente de su barra de herramientas y menús que se pueden personalizar con prácticamente la completa totalidad de los comandos del IDE a necesidad.

El espacio de trabajo donde se muestran todas las ventanas del proyecto, las vistas de código de módulos y objetos, y los controles con los que se componen las ventanas de nuestra aplicación. Por defecto disponemos los controles básicos:

(PictureBox) Caja de Imagen

(Label) Etiqueta

(TextBox) Caja de texto

(Frame) Marco

(CommandButton) Botón de comando

(CheckBox) Casilla de verificación

(OptionButton) Botón de opción

(ComboBox) Lista desplegable

(ListBox) Lista

(HScrollBar) Barra de desplazamiento horizontal

(VScrollBar) Barra de desplazamiento vertical

(Timer) Temporizador

(DriveListBox) Lista de unidades de disco

(DirListBox) Lista de directorios

(FileListBox) Lista de archivos

(Shape) Figura

(Line) Línea

(Image) Imagen

(Data) Conexión a origen de datos

(OLE) Contenedor de documentos embebidos compatibles con Object Linking and Embedding

Se pueden agregar todo tipo de controles de terceros, una gran cantidad de ellos de serie con la instalación de Visual Basic 6.0, que vienen embebidos dentro de archivos de extensión *.OCX.


El panel lateral derecho contiene dos vistas principales:

El Explorador de Proyectos, que muestra todos los elementos que componen nuestro proyecto o grupos de proyectos (formularios, interfaz de controles, módulos de código, módulos de clase, etc...)

El Panel de propiedades, donde se muestran todos los atributos de los controles de nuestros formularios o la información de modulos clase y formularios entre otros muchos.

La Ventana de inmediato (por defecto en la parte inferior aunque puede no estar visible. Utilizar Ctrl+G para mostrar la ventana). Esta ventana resulta una herramienta muy útil a la hora de depurar código o incluso de hacer pruebas rápidas, ya que permite imprimir mensajes de texto desde nuestro código y ejecutar sentencias simples de código (solo sentencias que se puedan representar en una sola línea, no permite bloques) que puede ser desde código de nuestra propia aplicación, por ejemplo consultar el valor de una variable o llamar a un método declarado en el módulo que se está depurando, así como ejecutar código al vuelo, esto viene a ser por ejemplo probar cosas como:?2+2



Al ejecutarlo devolvería el resultado de la operación, pudiendo usar variables del código de la aplicación, o sentencias de código como:
Msgbox "Prueba de cuadro de mensaje de error.", vbCritical, "Titulo del mensaje"

A la hora de depurar errores es útil para consultar el error en cuestión:?Err.Number
Las versiones de Visual Basic para Windows son muy conocidas, pero existe una versión de Microsoft Visual Basic 1.0 para MS-DOS (ediciones Profesional y Estándar) menos difundida y que data de 1992. Era un entorno que, aunque en modo texto, incluía un diseñador de formularios en el que se podían arrastrar y soltar distintos controles.
La última versión sólo para 16 bits, la 3.0, no incluía una detallada biblioteca de componentes para toda clase de usos. Durante la transición de Windows 3.11 a Windows 95, apareció la versión 4.0, que podía generar programas de 16 y 32 bits a partir de un mismo código fuente, a costa de un gran aumento en el tamaño de los archivos "runtime" necesarios. Además, se sustituyen los controles VBX por los nuevos OCX. Con la versión 5.0, estuvo a punto de implementar por primera vez la posibilidad de compilar a código nativo, obteniendo una mejora de rendimiento considerable. Tanto esta como la posterior 6.0 soportaban características propias de los lenguajes orientados a objetos, aunque careciendo de algunos ítems importantes como la herencia y la sobrecarga. La versión 6.0 continua utilizándose masivamente y es casi compatible prácticamente al 100% con las últimas versiones de Windows como Vista y Windows 7.

Las versiones actuales de Visual Basic se basan en la plataforma .NET, que se desligan de las anteriores versiones.
Cabe mencionar que aunque menos conocido, existió también una versión gratuita de Visual Basic 5.0 dedicada en su práctica al desarrollo de controles y componentes, su nombre en concreto era Microsoft Visual Basic 5.0 Control Creation Edition (Visual Basic 5 CCE). También hubo versiones orientadas al desarrollo de aplicaciones para dispositivos móviles basados en Windows CE y Pocket PC, conocido como eMbedded Visual Basic.

Características de Visual Basic



Barra de titulo: muestra el nombre del proyecto y del formulario q se está diseñando actualmente
Barra de menús: agrupa los menús despegables que contienes todas las operaciones que pueden llevarse a cabo con Visual Basic 6.0.
Barra de herramientas estándar: contienen los botones que se utilizan con mayor frecuencia cuando se trabaja con un proyecto. Simplifica la elección de opciones de los menús Archivo, Edición, Ver y Ejecutar; además, en el área derecha presenta la ubicación (coordenadas) y el tamaño del objeto seleccionado
Ventana de formulario: es el área donde se diseña la interfaz gráfica, es decir, es donde se inserta electo gráficos, como botones, imágenes, casilla de verificación, cuadros de listas, etc.
Cuadro de herramientas: presenta todos los controles necesarios para diseñar una aplicación, como cuadros de texto, etiquetas, cuadros de listas, botones de comandos, etc.
Ventana de proyecto: muestra los elementos involucrados en el proyecto, como formularios, módulos, controles oxc, etc. Cada elemento puede seleccionarse en forma independiente para su edición.
Ventana de posición del formulario: muestra la ubicación que tendrá el formulario en la pantalla, cuando ejecute la aplicación. Esta ubicación puede cambiarse si se hace clic con el botón izquierdo del mouse.
La Ventana propiedades muestra todas las propiedades del control actualmente seleccionado, en este caso muestra las propiedades del Form1, luego podemos ver que abajo dice "Form1 Form", lo que está en negrita es el nombre del objeto, y lo que le sigue es el tipo de objeto, en este caso es un Formulario (Form)

jueves, 9 de septiembre de 2010

BASE DE DATOS

BASE DE DATOS

Una base de datos o banco de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos.


Existen unos programas denominados sistemas gestores de bases de datos, abreviado SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se estudian dentro del ámbito de la informática.
Las aplicaciones más usuales son para la gestión de empresas e instituciones públicas. También son ampliamente utilizadas en entornos científicos con el objeto de almacenar la información experimental.

Otros autores piensan que una base de datos es una colección estructurada de datos o registros que se almacena en un sistema informático. Con el fin de que una base de datos para ser realmente funcional, no sólo deben almacenar grandes cantidades de registros, se debe acceder fácilmente.

TIPOS DE BASE DE DATOS



Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se este manejando, o la utilidad de la misma:
 Según la variabilidad de los datos almacenados:

 Bases de datos estáticas:



Éstas son bases de datos de sólo lectura, utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones y tomar decisiones.
 Bases de datos dinámicas:

Éstas son bases de datos donde la información almacenada se modifica con el tiempo, permitiendo operaciones como actualización, borrado y adición de datos, además de las operaciones fundamentales de consulta. Un ejemplo de esto puede ser la base de datos utilizada en un sistema de información de una tienda de abarrotes, una farmacia, un videoclub.

Según el contenido;

Bases de datos bibliográficas:



Solo contienen un surrogante (representante) de la fuente primaria, que permite localizarla. Un registro típico de una base de datos bibliográfica contiene información sobre el autor, fecha de publicación, editorial, título, edición, de una determinada publicación, etc. Puede contener un resumen o extracto de la publicación original, pero nunca el texto completo, porque si no, estaríamos en presencia de una base de datos a texto completo (o de fuentes primarias —ver más abajo). Como su nombre lo indica, el contenido son cifras o números. Por ejemplo, una colección de resultados de análisis de laboratorio, entre otras.
Bases de datos de texto completo

Almacenan las fuentes primarias, como por ejemplo, todo el contenido de todas las ediciones de una colección de revistas científicas.
 Directorios:
Un ejemplo son las guías telefónicas en formato electrónico.

Historia de los sistemas de bases de datos


El uso de sistemas de bases de datos automatizadas, se desarrollo a partir de la necesidad de almacenar grandes cantidades de datos, para su posterior consulta, producidas por las nuevas industrias que creaban gran cantidad de información.
Herman Hollerit (1860-1929) fue denominado el primer ingeniero estadístico de la historia, ya que invento una computadora llamada “Máquina Automática Perforadora de Tarjetas‿. Para hacer el censo de Estados Unidos en 1880 se tardaron 7 años para obtener resultados, pero Herman Hollerit en 1884 creo la máquina perforadora, con la cual, en el censo de 1890 dio resultados en 2 años y medio, donde se podía obtener datos importantes como número de nacimientos, población infantil y número de familias. La máquina uso sistemas mecánicos para procesar la información de las tarjetas y para tabular los resultados.

Década de 1950

En este lapso de tiempo se da origen a las cintas magnéticas, las cuales sirvieron para suplir las necesidades de información de las nuevas industrias. Por medio de este mecanismo se empezó a automatizar la información de las nóminas, como por ejemplo el aumento de salario. Consistía en leer una cinta o más y pasar los datos a otra, y también se podían pasar desde las tarjetas perforadas.

Década de 1960

El uso de los discos en ese momento fue un adelanto muy efectivo, ya que por medio de este soporte se podía consultar la información directamente, esto ayudo a ahorrar tiempo. No era necesario saber exactamente donde estaban los datos en los discos, ya que en milisegundos era recuperable la información.

Década de 1970

Edgar Frank Codd (23 de agosto de 1923 – 18 de abril de 2003), en un artículo "Un modelo relacional de datos para grandes bancos de datos compartidos" ("A Relational Model of Data for Large Shared Data Banks") en 1970, definió el modelo relacional y publicó una serie de reglas para la evaluación de administradores de sistemas de datos relacionales y así nacieron las bases de datos relacionales

Década de 1980

Las bases de datos relacionales con su sistema de tablas, filas y columnas, pudieron competir con las bases de datos jerárquicas y de red, ya que su nivel de programación era bajo y su uso muy sencillo

Principios década de los 90

Para la toma de decisiones se crea el lenguaje SQL, que es un lenguaje programado para consultas. El programa de alto nivel SQL es un lenguaje de consulta estructurado que analiza grandes cantidades de información el cual permite especificar diversos tipos de operaciones frente a la misma información, a diferencia de las bases de datos de los 80 que eran diseñadas para las aplicaciones de procesamiento de transacciones.
Finales de la década de los 90

El boom de esta década fue la aparición de la WWW “Word Wide Web‿ ya que por éste medio se facilitaba la consulta de las bases de datos. Actualmente tienen una amplia capacidad de almacenamiento de información, también una de las ventajas es el servicio de siete días a la semana las veinticuatro horas del día, sin interrupciones a menos que haya planificaciones de mantenimiento de las plataformas o el software.

Siglo XXI

En la actualidad existe gran cantidad de alternativas en línea que permiten hacer búsquedas orientadas a necesidades especificas de los usuarios, una de las tendencias más amplias son las bases de datos que cumplan con el protocolo Open Archives Initiative – Protocol for Metadata Harvesting (OAI-PMH) los cuales permiten el almacenamiento de gran cantidad de artículos que permiten una mayor visibilidad y acceso en el ámbito científico y general

miércoles, 8 de septiembre de 2010

CICLO DE VIDA DE LA COMPUTADORA












Christian Felipe Vega Triviño 87011462705

Ingeniería de Sistemas

Ciclo de vida Computadoras Fase II

El Impacto Ambiental
La bajada de precios que en los últimos tiempos se está produciendo dentro del segmento de los PCs ha provocado que la sustitución de una máquina por otra se produzca cada vez más rápidamente, obteniendoINTRODUCCIÓN




En la actualidad para muchas organizaciones, los sistemas de información basados en computadoras son el corazón de las actividades cotidianas y objeto de gran consideración en la toma de decisiones, las empresas consideran con mucho cuidados las capacidades de sus sistemas de información cuando deciden ingresar o no en nuevos mercados o cuando planean la respuesta que darán a la competencia.



Al establecer los sistemas de información basados en computadoras deben tener la certeza de que se logren dos objetivos principales: que sea un sistemacorrecto y que este correcto el sistema. Ningún sistema que deje satisfacer ambos objetivos será completamente útil para la gerencia u organización.



Si los dispositivos de un sistema de información no se adaptan a su población de clientes, no lograra sus objetivos potenciales. A mismo tiempo, aun cuando se identifiquen precisamente las necesidades del usuario, un sistema de información va tener un valor único si funciona en forma adecuada.



Los informes y las salidas producidas por el sistema deben ser precisos, confiables y completos. La función del Análisispuede ser dar soporte a las actividades de un negocio, o desarrollar un producto que pueda venderse para generar beneficios.



Es el Proceso de gestión para la creación de un Sistema o software, la cual encierra un conjunto de actividades, una de las cuales es la estimación, estimar es echar un vistazo al futuro y aceptamos resignados cierto grado de incertidumbre.



Aunque la estimación, es más un arte que una Ciencia, es una actividad importante que no debe llevarse a cabo de forma descuidada. Existen técnicasútiles para la estimación de costes de tiempo. Y dado que la estimación es la base de todas las demás actividades de planificación del proyecto y sirve como guía para una buena Ingeniería Sistemas y Software.



Al estimar tomamos en cuenta no solo del procedimientotécnico a utilizar en el proyecto, sino que se toma en cuenta los recursos, costos y planificación. El Tamaño del proyecto es otro factor importante que puede afectar la precisión de las estimaciones.



A medida que el tamaño aumenta, crece rápidamente la interdependencia entre varios elementos del Software. La disponibilidad de información Histórica es otro elemento que determina el riesgo de la estimación.

 a si que el valor de un PC es inexistente a los tres años de su compra.
A QUE SE DEBE?

Los fabricantes bajan continuamente los precios, y cada vez en mayor medida se introducen en el mercado procesadores más rápidos que reemplazan a los otros más lentos y más caros sin contar con periféricos y demás componentes del PC que se actualizan más rápido que los procesadores.
Según la primera parte del proyecto determinaremos en esta segunda parte del mismo abordar temas de impacto Ambiental, sustancias nocivas y todo tipo de emisiones que en el ciclo de vida de la computadora puedan llegar a generarse en el medio Ambiente.



Por cada computadora personal se pueden encontrar 40 materiales y componentes individuales, usando microanálisis de rayos X (EDAX). Esto para determinar las cantidades de los metales, así como el elemento bromo en la capa superficial de los materiales.



Los materiales que dieron positivo para el análisis de bromo, incluyeron algunos circuitos del tablero, chips, cables y conexiones, cables conectores, cubiertos de plástico, materiales aislantes, ventiladores, cajas de ventiladores y el ratón de tacto que traen las computadoras personales.



Desechos que se invierten al ambiente después de su uso

El 70% de los metales pesados incluyendo mercurio y cadmio encontrados en los campos vienen del desecho de equipamientos electrónicos. Se ha encontrado plomo filtrado en las capas subterráneas que ha contaminado la ropa de los trabajadores de la mayoría de los vertederos, y ha hecho su camino... CICLO DE VIDA DE UN SISTEMA DE INFORMACION




El ciclo de vida de un sistema de información es un enfoque por fases del análisis y diseñoque sostiene que los sistemas son desarrollados de mejor manera mediante el uso de un ciclo especifico de actividades del analista y del usuario.



Según James Senn, existen tres estrategias para el desarrollo de sistemas: el método clásico del ciclo de vida de desarrollo de sistemas, el método de desarrollo por análisis estructurado y el método de construcción de prototipos de sistemas. Cada una de estas estrategias tienen un uso amplio en cada una de los diversos tipos de empresas que existen, y resultan efectivas si son aplicadas de manera adecuada
CICLO DE VIDA CLÁSICO DEL DESARROLLO DE SISTEMAS




El método de ciclo de vida para el desarrollo de sistemas es el conjunto de actividades que los analistas, diseñadores y usuarios realizan para desarrollar e implantar un sistema de información. El método del ciclo de vida para el desarrollo de sistemas consta de 6 fases:



1). Investigación Preliminar: La solicitud para recibir ayuda de un sistema de información puede originarse por varias razones: sin importar cuales sean estas, el proceso se inicia siempre con la petición de una persona.



2). Determinación de los requerimientos del sistema: El aspecto fundamental del análisis de sistemas es comprender todas las facetas importantes de la parte de la empresaque se encuentra bajo estudio. Los analistas, al trabajar con los empleados y administradores, deben estudiar los procesos de una empresa para dar respuesta a las siguientes preguntas clave:



¿Qué es lo que hace?



¿Cómo se hace?



¿Con que frecuencia se presenta?



¿Qué tan grande es el volumende transacciones o decisiones?



¿Cuál es el grado de eficiencia con el que se efectúan las tareas?



¿Existe algún problema? ¿Qué tan serio es? ¿Cuál es la causa que lo origina?



3). Diseño del sistema:El diseño de un sistema de información produce los detalles que establecen la forma en la que el sistema cumplirá con los requerimientos identificados durante la fase de análisis. Los especialistas en sistemas se refieren, con frecuencia, a esta etapa como diseño lógico en contraste con la del desarrollo del software, a la que denominan diseño físico.



4). Desarrollo del software: Los encargados de desarrollar software pueden instalar software comprobando a terceros o escribir programas diseñados a la medida del solicitante. La elección depende del costo de cada alternativa, del tiempo disponible para escribir el software y de la disponibilidad de los programadores.



Por lo general, los programadores que trabajan en las grandes organizaciones pertenecen a un grupo permanente de profesionales.



5). Prueba de sistemas: Durante la prueba de sistemas, el sistema se emplea de manera experimental para asegurarse de que el software no tenga fallas, es decir, que funciona de acuerdo con las especificaciones y en la forma en que los usuarios esperan que lo haga.



Se alimentan como entradas conjunto de datos de prueba para su procesamiento y después se examinan los resultados.



6). Implantación y evaluación:La implantación es el proceso de verificar e instalar nuevo equipo, entrenar a los usuarios, instalar la aplicación y construir todos los archivos de datos necesarios para utilizarla. Una vez instaladas, las aplicaciones se emplean durante muchos años. Sin embargo, las organizaciones y los usuarios cambian con el paso del tiempo, incluso el ambiente es diferente con el paso de las semanas y los meses.



Por consiguiente, es indudable que debe darse mantenimiento a las aplicaciones. La evaluación de un sistema se lleva a cabo para identificar puntos débiles y fuertes. La evaluación ocurre a lo largo de cualquiera de las siguientes dimensiones:



*Evaluación operacional: Valoración de la forma en que funciona el sistema, incluyendo su facilidad de uso, tiempo de respuesta, lo adecuado de los formatos de información, confiabilidad global y nivel de utilización.



*Impacto organizacional: Identificación y medición de los beneficios para la organización en áreas tales como finanzas, eficiencia operacional e impacto competitivo. También se incluye el impacto sobre el flujo de información externo e interno.



*Opinión de loa administradores: evaluación de las actividades de directivos y administradores dentro de la organización así como de los usuarios finales.



*Desempeño del desarrollo: La evaluación de proceso de desarrollo de acuerdo con criterios tales como tiempo y esfuerzo de desarrollo, concuerdan con presupuestos y estándares, y otros criterios de administración de proyectos. También se incluye la valoración de los métodos y herramientas utilizados en el desarrollo.

ARQUITECTURA DE LA COMPUTADORA

La arquitectura de computadoras es el diseño conceptual y la estructura operacional fundamental de un sistema de computadora. Es decir, es un modelo y una descripción funcional de los requerimientos y las implementaciones de diseño para varias partes de una computadora, con especial interés en la forma en que la unidad central de proceso (UCP) trabaja internamente y accede a las direcciones de memoria.
También suele definirse como la forma de seleccionar e interconectar componentes de hardware para crear computadoras según los requerimientos de funcionalidad, rendimiento y costo.
El ordenador recibe y envía la información a través de los periféricos por medio de los canales. La UCP es la encargada de procesar la información que le llega al ordenador. El intercambio de información se tiene que hacer con los periféricos y la UCP. Todas aquellas unidades de un sistema exceptuando la UCP se denomina periférico, por lo que el ordenador tiene dos partes bien diferenciadas, que son: la UCP (encargada de ejecutar programas y que esta compuesta por la memoria principal, la UAL y la UC) y los periféricos (que pueden ser de entrada, salida, entrada-salida y comunicaciones).
Introducción


La implantación de instrucciones es similar al uso de una serie de desmontaje en una fábrica de manufacturación. En las cadenas de montaje, el producto pasa a través de muchas etapas de producción antes de tener el producto desarmado. Cada etapa o segmento de la cadena está especializada en un área específica de la línea de producción y lleva a cabo siempre la misma actividad. Esta tecnología es aplicada en el diseño de procesadores eficientes.
A estos procesadores se les conoce como pipeline processors. Estos están compuestos por una lista de segmentos lineales y secuenciales en donde cada segmento lleva a cabo una tarea o un grupo de tareas computacionales. Los datos que provienen del exterior se introducen en el sistema para ser procesados. La computadora realiza operaciones con los datos que tiene almacenados en memoria, produce nuevos datos o información para uso externo.
Las arquitecturas y los conjuntos de instrucciones se pueden clasificar considerando los siguientes aspectos:
Almacenamiento de operativos en la CPU: dónde se ubican los operadores aparte de la substractora informativa (SI)

Número de operandos explícitos por instrucción: cuántos operandos se expresan en forma explícita en una instrucción típica. Normalmente son 0, 1, 2 y 3.

Posición del operando: ¿Puede cualquier operando estar en memoria?, o deben estar algunos o todos en los registros internos de la CPU. Cómo se especifica la dirección de memoria (modos de direccionamiento disponibles).

Operaciones: Qué operaciones están disponibles en el conjunto de instrucciones.
Ventajas de las arquitecturas


Pila : Modelo sencillo para evaluación de expresiones (notación polaca inversa). Instrucciones cortas pueden dar una buena densidad de código.

Acumulador: Instrucciones cortas. Minimiza estados internos de la máquina (unidad de control sencilla).

Registro: Modelo más general para el código de instrucciones parecidas. Automatiza generación de código y la reutilización de operandos. Reduce el tráfico a memoria. Una computadora actualmente tiene como estándar 32 registros. El acceso a los datos es más rápido
Tipo y tamaño de operandos y cómo se especificanDesventajas de las arquitecturas


Pila: A una pila no se puede acceder aleatoriamente. Esta limitación hace difícil generar código eficiente. También dificulta una implementación eficente, ya que la pila llega a ser un cuello de botella es decir que existe dificultad para la transferencia de datos en su velocidad mk.

Acumulador: Como el acumulador es solamente almacenamiento temporal, el tráfico de memoria es el más alto en esta aproximación.
Registro: Todos los operadores deben ser nombrados, conduciendo a instrucciones más largas

LENGUAJE DE PROGRAMACION



lenguajes de programación facilitan la tarea de programación, ya que disponen de formas adecuadas que permiten ser leidas y escritas por personas, a su vez resultan independientes del modelo de computador a utilizar
Los lenguajes de programación representan en forma simbólica y en manera de un texto los códigos que podrán ser leidos por una persona.
Los lenguajes de programación son independientes de las computadoras a utilizar.
Existen estrategias que permiten ejecutar en una computadora un programa realizado en un lenguaje de programación simbólico. Los procesadores del lenguaje son los programas que permiten el tratamiento de la información en forma de texto, representada en los lenguajes de programación simbólicos.
Hay lenguajes de programación que utilizan compilador.
La ejecución de un programa con compilador requiere de dos etapas:
1) Traducir el programa simbólico a código máquina
2) Ejecución y procesamiento de los datos.

Oos lenguajes de programación utilizan un programa intérprete o traductor, el cual analiza directamente la descripción simbólica del programa fuente y realiza las instrucciones dadas.
El intérprete en los lenguajes de programación simula una máquina virtual, donde el lenguaje de máquina es similar al lenguaje fuente.
La ventaja del proceso interprete es que no necesita de dos fases para ejecutar el programa, sin embargo su inconveniente es que la velocidad de ejecución es más lenta ya que debe analizar e interpretar las instrucciones contenidas en el programa fuente.

Historia
Código Fortran en una tarjeta perforada, mostrando el uso especializado de las columnas 1-5, 6 y 73-80.Para que la computadora entienda nuestras instrucciones debe usarse un lenguaje específico conocido como código máquina, el cual la máquina comprende fácilmente, pero que lo hace excesivamente complicado para las personas. De hecho sólo consiste en cadenas extensas de números 0 y 1.
Para facilitar el trabajo, los primeros operadores de computadoras decidieron hacer un traductor para reemplazar los 0 y 1 por palabras o abstracción de palabras y letras provenientes del inglés; éste se conoce como lenguaje ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa add (sumar). El lenguaje ensamblador sigue la misma estructura del lenguaje máquina, pero las letras y palabras son más fáciles de recordar y entender que los números.Implementación
Código fuente de un programa escrito en el lenguaje de programación Java.La implementación de un lenguaje es la que provee una manera de que se ejecute un programa para una determinada combinación de software y hardware. Existen básicamente dos maneras de implementar un lenguaje: compilación e interpretación.
Compilación: es el proceso que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz interpretar. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente.

Interpretación: es una asignación de significados a las fórmulas bien formadas de un lenguaje formal. Como los lenguajes formales pueden definirse en términos puramente sintácticos, sus fórmulas bien formadas pueden no ser más que cadenas de símbolos sin ningún significado. Una interpretación otorga significado a esas fórmulas.

Se puede también utilizar una alternativa para traducir lenguajes de alto nivel. En lugar de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la compilación para utilizarlo en una ejecución futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el procesamiento de los datos. El código objeto no se graba para utilizarlo posteriormente.
Técnica
Libros sobre diversos lenguajes de programación.Para escribir programas que proporcionen los mejores resultados, cabe tener en cuenta una serie de detalles.
Corrección. Un programa es correcto si hace lo que debe hacer tal y como se estableció en las fases previas a su desarrollo. Para determinar si un programa hace lo que debe, es muy importante especificar claramente qué debe hacer el programa antes de desarrollarlo y, una vez acabado, compararlo con lo que realmente hace.

Claridad. Es muy importante que el programa sea lo más claro y legible posible, para facilitar así su desarrollo y posterior mantenimiento. Al elaborar un programa se debe intentar que su estructura sea sencilla y coherente, así como cuidar el estilo en la edición; de esta forma se ve facilitado el trabajo del programador, tanto en la fase de creación como en las fases posteriores de corrección de errores, ampliaciones, modificaciones, etc. Fases que pueden ser realizadas incluso por otro programador, con lo cual la claridad es aún más necesaria para que otros programadores puedan continuar el trabajo fácilmente. Algunos programadores llegan incluso a utilizar Arte ASCII para delimitar secciones de código. Otros, por diversión o para impedir un análisis cómodo a otros programadores, recurren al uso de código ofuscado.

Eficiencia. Se trata de que el programa, además de realizar aquello para lo que fue creado (es decir, que sea correcto), lo haga gestionando de la mejor forma posible los recursos que utiliza. Normalmente, al hablar de eficiencia de un programa, se suele hacer referencia al tiempo que tarda en realizar la tarea para la que ha sido creado y a la cantidad de memoria que necesita, pero hay otros recursos que también pueden ser de consideración al obtener la eficiencia de un programa, dependiendo de su naturaleza (espacio en disco que utiliza, tráfico de red que genera, etc.).

Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse en una plataforma, ya sea hardware o software, diferente a aquella en la que se elaboró. La portabilidad es una característica muy deseable para un programa, ya que permite, por ejemplo, a un programa que se ha desarrollado para sistemas GNU/Linux ejecutarse también en la familia de sistemas operativos WindParadigmas

Los programas se pueden clasificar por el paradigma del lenguaje que se use para producirlos. Los principales paradigmas son: imperativos, declarativos y orientación a objetos.
Los programas que usan un lenguaje imperativo especifican un algoritmo, usan declaraciones, expresiones y sentencias.[3] Una declaración asocia un nombre de variable con un tipo de dato, por ejemplo: var x: integer;. Una expresión contiene un valor, por ejemplo: 2 + 2 contiene el valor 4. Finalmente, una sentencia debe asignar una expresión a una variable o usar el valor de una variable para alterar el flujo de un programa, por ejemplo: x := 2 + 2; if x == 4 then haz_algo();. Una crítica común en los lenguajes imperativos es el efecto de las sentencias de asignación sobre una clase de variables llamadas "no locales
ows. Esto permite que el programa pueda llegar a más usuarios más fácilmente
La necesidad de recordar secuencias de programación para las acciones usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denominó "instrucciones", y a este conjunto de instrucciones se le llamó lenguaje ensamblador. Posteriormente aparecieron diferentes lenguajes de programación, los cuales reciben su denominación porque tienen una estructura sintáctica similar a los lenguajes escritos por los humanos, denominados también lenguajes de alto nivel.

Sistema operativo





  
Intereaccion entre el SO con el resto de las partes.
  
Estimación del uso de sistemas operativos según una muestra de computadoras con acceso a Internet en Noviembre de 2009 (Fuente: W3counter).
Un Sistema operativo (SO) es un software que actúa de interfaz entre los dispositivos de hardware y los programas usados por el usuario para utilizar un computador.[1] Es responsable de gestionar, coordinar las actividades y llevar a cabo el intercambio de los recursos y actúa como estación para las aplicaciones que se ejecutan en la máquina.
Nótese que es un error común muy extendido denominar al conjunto completo de herramientas sistema operativo, pues este, es sólo el núcleo y no necesita de entorno operador para estar operativo y funcional.[2] [3] Uno de los más prominentes ejemplos de esta diferencia, es el SO Linux,[4] el cual junto a las herramientas GNU, forman las llamadas distribuciones Linux.
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 computadores[5] 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.[6] (Véase AmigaOS, beOS o MacOS como los pioneros[7] de dicha modernización, cuando los Amiga, fueron bautizados con el sobrenombre de Video Toasters[8] por su capacidad para la Edición de vídeo en entorno multitarea round robin, con gestión de miles

Perspectiva histórica

Los primeros sistemas (1945-1950) eran grandes máquinas operadas desde la consola maestra por los programadores. Durante la década siguiente (1950-1960) se llevaron a cabo avances en el hardware: lectoras de tarjetas, impresoras, cintas magnéticas, etc. Esto a su vez provocó un avance en el software: compiladores, ensambladores, cargadores, manejadores de dispo

Sistemas operativos multiprogramados

Surge un nuevo avance en el hardware: el hardware con protección de memoria. Lo que ofrece nuevas soluciones a los problemas de rendimiento:
  • Se solapa el cálculo de unos trabajos con la entrada/salida de otros trabajos.
  • Se pueden mantener en memoria varios programas.
  • Se asigna el uso de la CPU a los diferentes programas en memoria.
Debido a los cambios anteriores, se producen cambios en el monitor residente, con lo que éste debe abordar nuevas tareas, naciendo lo que se denomina como Sistemas Operativos multiprogramados, los cuales cumplen con las siguientes funciones:
  • Administrar la memoria.
  • Gestionar el uso de la CPU (planificación).
  • Administrar el uso de los dispositivos de E/S.

    Llamadas al sistema

    Una aplicación, normalmente no sabe dónde está situada la rutina

    Gestión de la memoria principal

    La Memoria es una gran tabla de palabras o bytes que se referencian cada una mediante una dirección única. Este almacén de datos de rápido accesos es compartido por la CPU y los dispositivos de E/S, es volátil y pierde su contenido en los fallos del sistema. El SO es el responsable de:
    • Conocer qué partes de la memoria están siendo utilizadas y por quién.
    • Decidir qué procesos se cargarán en memoria cuando haya espacio disponible.
    • Asignar y reclamar espacio de memoria cuando sea necesario.

    Gestión del almacenamiento secundario

    Un sistema de almacenamiento secundario es necesario, ya que la memoria principal (almacenamiento primario) es volátil y además muy pequeña para almacenar todos los programas y datos. También es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de:
    • Planificar los discos.
    • Gestionar el espacio libre.
    • Asignar el almacenamiento.

    El sistema de E/S

    Consiste en un sistema de almacenamiento temporal (caché), una interfaz de manejadores de dispositivos y otra para dispositivos concretos. El sistema operativo debe gestionar el almacenamiento temporal de E/S y servir las interrupciones de los dispositivos de E/S.

    Sistema de archivos

    Los archivos son colecciones de información relacionada, definidas por sus creadores. Éstos almacenan programas (en código fuente y objeto) y datos tales como imágenes, textos, información de bases de datos, etc. El SO es responsable de:
    • Construir y eliminar archivos y directorios.
    • Ofrecer funciones para manipular archivos y directorios.
    • Establecer la correspondencia entre archivos y unidades de almacenamiento.
    • Realizar copias de seguridad de archivos.
    Existen diferentes Sistemas de Archivos, es decir, existen diferentes formas de organizar la información que se almacena en las memorias (normalmente discos) de los ordenadores. Por ejemplo, existen los sistemas de archivos FAT, FAT32, EXT2, NTFS, etc.
    Desde el punto de vista del usuario estas diferencias pueden parecer insignificantes a primera vista, sin embargo, existen diferencias muy importantes. Por ejemplo, los sistemas de ficheros FAT32 y NTFS, que se utilizan fundamentalmente en sistemas operativos de Microsoft, tienen una gran diferencia para un usuario que utilice una base de datos con bastante información ya que el tamaño máximo de un fichero con un Sistema de Archivos FAT32 está limitado a 4 gigabytes, sin embargo, en un sistema NTFS el tamaño es considerablemente mayor.

    Sistemas de protección

    Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema. El SO se encarga de:
    • Distinguir entre uso autorizado y no autorizado.
    • Especificar los controles de seguridad a realizar.
    • Forzar el uso de estos mecanismos de protección.

    Sistema de comunicaciones

    Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envío y recepción de información a través de las interfaces de red. También hay que crear y mantener puntos de comunicación que sirvan a las aplicaciones para enviar y recibir información, y crear y mantener conexiones virtuales entre aplicaciones que están ejecutándose localmente y otras que lo hacen remotamente.de servicio de la llamada. Por lo que si ésta se codifica como una llamada de función, cualquier cambio en el SO haría que hubiera que reconstruir la aplicación.
    Pero lo más importante es que una llamada de función no cambia el modo de ejecución de la CPU. Con lo que hay que conseguir llamar a la rutina de servicio, sin tener que conocer su ubicación, y hacer que se fuerce un cambio de modo de operación de la CPU en la llamada (y la recuperación del modo anterior en el retorno).
    Esto se hace utilizando instrucciones máquina diseñadas específicamente para este cometido, distintas de las que se usan para las llamadas de función.

martes, 7 de septiembre de 2010

SOFTWARE:

Se conoce como software[1] al equipamiento lógico o soporte lógico de una computadora digital; comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en contraposición a los componentes físicos del sistema, llamados hardware.
Tales componentes lógicos incluyen, entre muchos otros, aplicaciones informáticas —como el procesador de textos, que permite al usuario realizar todas las tareas concernientes a la edición de textos— o el software de sistema —tal como el sistema operativo, que, básicamente, permite al resto de los programas funcionar adecuadamente, facilitando la interacción con los componentes físicos y el resto de las aplicaciones, proporcionando también una interfaz para el usuario—.

HISTORIA

Richard Stallman, creador de los conceptos Free Software, y fundador de la FSF.Entre los años 60 y 70 del Siglo XX, el software no era considerado un producto sino un añadido que los vendedores de las grandes computadoras de la época (las mainframes) aportaban a sus clientes para que éstos pudieran usarlos. En dicha cultura, era común que los programadores y desarrolladores de software compartieran libremente sus programas unos con otros. Este comportamiento era particularmente habitual en algunos de los mayores grupos de usuarios de la época, como DECUS (grupo de usuarios de computadoras DEC). A finales de los 70, las compañías iniciaron el hábito de imponer restricciones a los usuarios, con el uso de acuerdos de licencia.
Allá por el 1971, cuando la informática todavía no había sufrido su gran boom, las personas que hacían uso de ella, en ámbitos universitarios y empresariales, creaban y compartían el software sin ningún tipo de restricciones.
Con la llegada de los años 80 la situación empezó a cambiar. Las computadoras más modernas comenzaban a utilizar sistemas operativos privativos, forzando a los usuarios a aceptar condiciones restrictivas que impedían realizar modificaciones a dicho software.
En caso de que algún usuario o programador encontrase algún error en la aplicación, lo único que podía hacer era darlo a conocer a la empresa desarrolladora para que esta lo solucionara. Aunque el programador estuviese capacitado para solucionar el problema y lo desease hacer sin pedir nada a cambio, el contrato le impedía que mejorase el software.
El mismo Richard Stallman cuenta que por aquellos años, en el laboratorio donde trabajaba, habían recibido una impresora donada por una empresa externa. El dispositivo, que era utilizado en red por todos los trabajadores, parecía no funcionar a la perfección, dado que cada cierto tiempo el papel se atascaba. Como agravante, no se generaba ningún aviso que se enviase por red e informase a los usuarios de la situación.
La pérdida de tiempo era constante, ya que en ocasiones, los trabajadores enviaban por red sus trabajos a imprimir y al ir a buscarlos se encontraban la impresora atascada y una cola enorme de trabajos pendientes. Richard Stallman decidió arreglar el problema, e implementar el envío de un aviso por red cuando la impresora se bloqueara. Para ello necesitaba tener acceso al código fuente de los controladores de la impresora. Pidió a la empresa propietaria de la impresora lo que necesitaba, comentando, sin pedir nada a cambio, qué era lo que pretendía realizar. La empresa se negó a entregarle el código.



DEFINICION DEL SOFHWARE
Probablemente la definición más formal de software sea la siguiente:
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.
Extraído del estándar 729 del IEEE[5]
Considerando esta definición, el concepto de software va más allá de los programas de cómputo en sus distintos estados: código fuente, binario o ejecutable; también su documentación, datos a procesar e información de usuario forman parte del software: es decir, abarca todo lo intangible, todo lo "no físico" relacionado.
El término «software» fue usado por primera vez en este sentido por John W. Tukey en 1957. En las ciencias de la computación y la ingeniería de software, el software es toda la información procesada por los sistemas informáticos: programas y datos. El concepto de leer diferentes secuencias de instrucciones desde la memoria de un dispositivo para controlar los cálculos fue introducido por Charles Babbage como parte de su máquina diferencial. La teoría que forma la base de la mayor parte del software moderno fue propuesta por primera vez por Alan Turing en su ensayo de 1936, "Los números computables", con una aplicación al problema de decisión

CLASIFICACION DEL SOFHWARE


Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, a los fines prácticos se puede clasificar al software en tres grandes tipos:
Software de sistema: Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles de la computadora en particular que se use, aislándolo especialmente del procesamiento referido a las características internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador adecuadas interfaces de alto nivel, herramientas y utilidades de apoyo que permiten su mantenimiento. Incluye entre otros:

Sistemas operativos
Controladores de dispositivos
Herramientas de diagnóstico
Herramientas de Corrección y Optimización
Servidores
Utilidades

Software de programación: Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluye entre otros:
Editores de texto
Compiladores
Intérpretes
Enlazadores
Depuradores

Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).

Software de aplicación: Es aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios. Incluye entre otros:

Aplicaciones para Control de sistemas y automatización industrial
Aplicaciones ofimáticas
Software educativo
Software empresarial
Bases de datos
Telecomunicaciones (p.ej. internet y toda su estructura lógica)
Videojuegos
Software médico
Software de Cálculo Numérico y simbólico.
Software de Diseño Asistido (CAD)
Software de Control Numérico (CAM)Proceso de creación del software


Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solución de un problema u obtención de un producto, en este caso particular, para lograr la obtención de un producto software que resuelva un problema.
El proceso de creación de software puede llegar a ser muy complejo, dependiendo de su porte, características y criticidad del mismo. Por ejemplo la creación de un sistema operativo es una tarea que requiere proyecto, gestión, numerosos recursos y todo un equipo disciplinado de trabajo. En el otro extremo, si se trata de un sencillo programa (por ejemplo, la resolución de una ecuación de segundo orden), éste puede ser realizado por un solo programador (incluso aficionado) fácilmente. Es así que normalmente se dividen en tres categorías según su tamaño (líneas de código) o costo: de Pequeño, Mediano y Gran porte. Existen varias metodologías para estimarlo, una de las más populares es el sistema COCOMO que provee métodos y un software (programa) que calcula y provee una estimación de todos los costos de producción en un "proyecto software" (relación horas/hombre, costo monetario, cantidad de líneas fuente de acuerdo a lenguaje usado, etc.).
Los "procesos de desarrollo de software" poseen reglas preestablecidas, y deben ser aplicados en la creación del software de mediano y gran porte, ya que en caso contrario lo más seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos, y con variedad de fallos inaceptables (fracasan, en pocas palabras). Entre tales "procesos" los hay ágiles o livianos (ejemplo XP), pesados y lentos (ejemplo RUP) y variantes intermedias; y normalmente se aplican de acuerdo al tipo, porte y tipología del software a desarrollar, a criterio del líder (si lo hay) del equipo de desarrollo. Algunos de esos procesos son Extreme Programming (XP), Rational Unified Process (RUP), Feature Driven Development (FDD), etc.
Cualquiera sea el "proceso" utilizado y aplicado al desarrollo del software (RUP, FDD, etc), y casi independientemente de él, siempre se debe aplicar un "Modelo de Ciclo de Vida".[6]
Se estima que, del total de proyectos software grandes emprendidos, un 28% fracasan, un 46% caen en severas modificaciones que lo retrasan y un 26% son totalmente exitosos. [7]
Cuando un proyecto fracasa, rara vez es debido a fallas técnicas, la principal causa de fallos y fracasos es la falta de aplicación de una buena metodología o proceso de desarrollo. Entre otras, una fuerte tendencia, desde hace pocas décadas, es mejorar las metodologías o procesos de desarrollo, o crear nuevas y concientizar a los profesionales en su utilización adecuada. Normalmente los especialistas en el estudio y desarrollo de estas áreas (metodologías) y afines (tales como modelos y hasta la gestión misma de los proyectos) son los Ingenieros en Software, es su orientación. Los especialistas en cualquier otra área de desarrollo informático (analista, programador, Lic. en Informática, Ingeniero en Informática, Ingeniero de Sistemas, etc.) normalmente aplican sus conocimientos especializados pero utilizando modelos, paradigmas y procesos ya elaborados.

lunes, 6 de septiembre de 2010

hardware


corresponde a todas las partes físicas y tangibles[1] de una computadora: sus componentes eléctricos, electrónicos, electromecánicos y mecánicos;[2] sus cables, gabinetes o cajas, periféricos de todo tipo y cualquier otro elemento físico involucrado; contrariamente al soporte lógico e intangible que es
 llamado software.

La clasificación evolutiva del hardware del computador electrónico, está dividida en generaciones, donde cada una supone un cambio tecnológico muy notable. El origen de las primeras es sencillo de establecer, ya que en ellas el hardware fue sufriendo cambios radicales. [6] Los componentes esenciales que constituyen la electrónica del computador fueron totalmente reemplazados en las primeras tres generaciones, originando cambios que resultaron trascendentales. En las últimas décadas es más difícil establecer las nuevas generaciones, ya que los cambios han sido graduales y existe cierta continuidad en las tecnologías usadas. En principio, se pueden distinguir:
1ª Generación (1945-1956): Electrónica implementada con tubos de vacío. Fueron las primeras máquinas que desplazaron los componentes electromecánicos (relés).

2ª Generación (1957-1963): Electrónica desarrollada con transistores. La lógica discreta era muy parecida a la anterior, pero la implementación resultó mucho más pequeña, reduciendo, entre otros factores, el tamaño de un computador en notable escala.

3ª Generación (1964-hoy): Electrónica basada en circuitos Integrados . Esta tecnología permitió integrar cientos de transistores y otros componentes electrónicos en un único circuito integrado conformando una pastilla de silicio. Las computadoras redujeron así considerablemente su costo y tamaño, incrementándose su capacidad, velocidad y fiabilidad, hasta producir máquinas como las que existen en la actualidad.

4ª Generación (futuro): Probablemente se originará cuando los circuitos de silicio, integrados a alta escala, sean reemplazados por un nuevo tipo de tecnología.

La aparición del microprocesador marca un hito de relevancia, y para muchos autores constituye el inicio de la cuarta generación.[8] A diferencia de los cambios tecnológicos anteriores, su invención no supuso la desaparición radical de los computadores que no lo utilizaban. Así, aunque el microprocesador 4004 fue lanzado al mercado en 1971, todavía a comienzo de los 80's había computadores, como el PDP-11/44,[9] con lógica carente de microprocesador que continuaban exitosamente en el mercado; es decir, en este caso el desplazamiento ha sido muy gradual

Otro hito tecnológico usado con frecuencia para definir el inicio de la cuarta generación es la aparición de los circuitos integrados VLSI (Very Large Scale Integration), a principios de los ochenta. Al igual que el microprocesador no supuso el cambio inmediato y la rápida desaparición de los computadores basados en circuitos integrados en más bajas escalas de integración. Muchos equipos implementados con tecnologías VLSI y MSI (Medium Scale Integration) aun coexistían exitosamente hasta bien entrados los 90.
Tipos de hardware
Microcontrolador Motorola 68HC11 y chips de soporte que podrían constituir el hardware de un equipo electrónico industrial.Una de las formas de clasificar el Hardware es en dos categorías: por un lado, el "básico", que abarca el conjunto de componentes indispensables necesarios para otorgar la funcionalidad mínima a una computadora, y por otro lado, el "Hardware complementario", que, como su nombre lo indica, es el utilizado para realizar funciones específicas (más allá de las básicas), no estrictamente necesarias para el funcionamiento de la computadora.

Así es que: Un medio de entrada de datos, la unidad de procesamiento (C.P.U.), la memoria RAM, un medio de salida de datos y un medio de almacenamiento constituyen el "hardware básico".
Los medios de entrada y salida de datos estrictamente indispensables dependen de la aplicación: desde un punto de vista de un usuario común, se debería disponer, al menos, de un teclado y un monitor para entrada y salida de información, respectivamente; pero ello no implica que no pueda haber una computadora (por ejemplo controlando un proceso) en la que no sea necesario teclado ni monitor, bien puede ingresar información y sacar sus datos procesados, por ejemplo, a través de una placa de adquisición/salida de datos.

Unidad central de procesamiento
Microprocesador de 64 bits doble núcleo, el AMD Athlon 64 X2 3600.La CPU, siglas en inglés de Unidad Central de Procesamiento, es la componente fundamental del computador, encargada de interpretar y ejecutar instrucciones y de procesar datos.[13] En los computadores modernos, la función de la CPU la realiza uno o más microprocesadores. Se conoce como microprocesador a un CPU que es manufacturado como un único circuito integrado.
Un servidor de red o una máquina de cálculo de alto rendimiento (supercomputación), puede tener varios, incluso miles de microprocesadores trabajando simultáneamente o en paralelo (multiprocesamiento); en este caso, todo ese conjunto conforma la CPU de la máquina.
Las unidades centrales de proceso (CPU) en la forma de un único microprocesador no sólo están presentes en las computadoras personales (PC), sino también en otros tipos de dispositivos que incorporan una cierta capacidad de proceso o "inteligencia electrónica"; como pueden ser: controladores de procesos industriales , televisores, automóviles, calculadores, aviones, teléfonos móviles, electrodomésticos, juguetes y muchos más.
Placa base formato µATX.El microprocesador se monta en la llamada placa madre, sobre el un zócalo conocido como zócalo de CPU, que permite además las conexiones eléctricas entre los circuitos de la placa y el procesador. Sobre el procesador y ajustado a la tarjeta madre se fija un disipador de calor, que por lo general es de aluminio, en algunos casos de cobre; éste es indispensable en los microprocesadores que consumen bastante energía, la cual, en gran parte, es emitida en forma de calor: En algunos casos pueden consumir tanta energía como una lámpara incandescente

Memoria RAM

La RAM es la memoria utilizada en una computadora para el almacenamiento transitorio y de trabajo (no masivo). En la RAM se almacena temporalmente la información, datos y programas que la Unidad de Procesamiento (CPU) lee, procesa y ejecuta. La memoria RAM es conocida como Memoria principal de la computadora, también como "Central o de Trabajo"; [15] a diferencia de las llamadas memorias auxiliares y de almacenamiento masivo (como discos duros, cintas magnéticas u otras memorias).
Las memorias RAM son, comúnmente, volátiles; lo cual significa que pierden rápidamente su contenido al interrumpir su alimentación eléctrica.
Periféricos

 Periféricos:

Se entiende por periférico a las unidades o dispositivos que permiten a la computadora comunicarse con el exterior, esto es, tanto ingresar como exteriorizar información y datos.[11] Los periféricos son los que permiten realizar las operaciones conocidas como de entrada/salida (E/S).[12]
Aunque son estrictamente considerados “accesorios” o no esenciales, muchos de ellos son fundamentales para el funcionamiento adecuado de la computadora moderna; por ejemplo, el teclado, el disco duro y el monitor son elementos actualmente imprescindibles; pero no lo son un scanner o un plotter. Para ilustrar este punto: en los años 80, muchas de las primeras computadoras personales no utilizaban disco duro ni mouse (o ratón), tenían sólo una o dos disqueteras, el teclado y el monitor como únicos periféricos.

Dispositivos de entrada de información (E)
Teclado para PC inalámbrico.

Ratón (Mouse) común alámbrico.De esta categoría son aquellos que permiten el ingreso de información, en general desde alguna fuente externa o por parte del usuario. Los dispositivos de entrada proveen el medio fundamental para transferir hacia la computadora (más propiamente al procesador) información desde alguna fuente, sea local o remota. También permiten cumplir la esencial tarea de leer y cargar en memoria el sistema operativo y las aplicaciones o programas informáticos, los que a su vez ponen operativa la computadora y hacen posible realizar las más diversas tareas.[12]
Entre los periféricos de entrada se puede mencionar: [11] teclado, mouse o ratón, escáner, micrófono, cámara web , lectores ópticos de código de barras, Joystick, lectora de CD o DVD (sólo lectoras), placas de adquisición/conversión de datos, etc.
Pueden considerarse como imprescindibles para el funcionamiento, al teclado, mouse y algún tipo de lectora de discos; ya que tan sólo con ellos el hardware puede ponerse operativo para un usuario. Los otros son bastante accesorios, aunque en la actualidad pueden resultar de tanta necesidad que son considerados parte esencial de todo el sistema.


Dispositivos de salida de información (S)

Son aquellos que permiten emitir o dar salida a la información resultante de las operaciones realizadas por la CPU (procesamiento).
Los dispositivos de salida aportan el medio fundamental para exteriorizar y comunicar la información y datos procesados; ya sea al usuario o bien a otra fuente externa, local o remota.[12]
Los dispositivos más comunes de este grupo son los monitores clásicos (no de pantalla táctil), las impresoras, y los altavoces. [11]
Entre los periféricos de salida puede considerarse como imprescindible para el funcionamiento del sistema al monitor. Otros, aunque accesorios, son sumamente necesarios para un usuario que opere un computador moderno

Dispositivos mixtos (E/S de información)
Piezas de un Disco rígido.Son aquellos dispositivos que pueden operar de ambas formas: tanto de entrada como de salida.[12] Típicamente, se puede mencionar como periféricos mixtos o de Entrada/Salida a: discos rígidos, disquetes, unidades de cinta magnética, lecto-grabadoras de CD/DVD,

Dispositivos de Almacenamiento de Información

Dentro de los dispositivos de almacenamiento, el disco duro ocupa un lugar importante en la actualidad, en él se almacenan permanentemente el sistema operativo, las aplicaciones y los archivos generados por el usuario. Hoy en día existen varias tecnologías disponibles en discos rígidos: aIDE, SATA, SCSI y SAS
Dispositivos de procesamiento de información

La CPU, siglas en inglés de Unidad Central de Procesamiento, es el componente fundamental de una computadora, encargada de interpretar, ejecutar instrucciones y de procesar datos. En las computadoras modernas, la función de la CPU la realiza uno o más microprocesadores.
Hardware gráfico
GPU de Nvidia GeForce.El hardware gráfico lo constituyen básicamente las tarjetas de video. Actualmente poseen su propia memoria y unidad de procesamiento, esta última llamada unidad de procesamiento gráfico (o GPU, siglas en inglés de Graphics Processing Unit). El objetivo básico de la GPU es realizar exclusivamente procesamiento gráfico, [17] liberando al procesador principal (CPU) de esa costosa tarea (en tiempo) para que pueda así efectuar otras funciones más eficientemente. Antes de esas tarjetas de video con aceleradores, era el procesador principal el encargado de construir la imagen mientras la sección de video (sea tarjeta o de la placa base) era simplemente un traductor de las señales binarias a las señales requeridas por el monitor; y buena parte de la memoria principal (RAM) de la computadora también era utilizada para estos fines.



HISTORIA DE LA COMPUTADORA

HISTORIA DE LA COMPUTADORA

La historia de la computadora es muy interesante ya que muestra como el hombre logra producir las primeras herramientas para registrar los acontecimientos diarios desde el inicio de la civilización, cuando grupos empezaron a formar naciones y el comercio era ya medio de vida.
La evolución histórica del procesamiento de datos se divide en cuatro fases:

1.- técnicas de registros
2.- dispositivos de cálculo
3.- programas de tarjetas perforadas
4.- computadores electrónicos
una computadora procesa datos. Las empresas desarrollan departamentos de procesamiento de datos ( programación de computadoras ), pues las computadoras procesan datos para producir información significativa.
Los datos se construyen de hechos y cifras en bruto (sin procesar)
La información está constituida por los datos procesados; la información tiene significado , los datos no.
La computadora y sus programas llevan a cabo el procesamiento de la entrada; por lo tanto el programa convierte los datos en información útil.


Historia del Computador:

Gottfried Wilhelm Leibniz


En 1670 el filósofo y matemático alemán Gottfried Wilhelm Leibniz perfeccionó esta máquina e inventó una que también podía multiplicar.
El inventor francés Joseph Marie Jacquard, al diseñar un telar automático, utilizó delgadas placas de madera perforadas para controlar el tejido utilizado en los diseños complejos. Durante la década de 1880 el estadístico estadounidense Herman Hollerith concibió la idea de utilizar tarjetas perforadas, similares a las placas de Jacquard, para procesar datos. Hollerith consiguió compilar la información estadística destinada al censo de población de 1890 de Estados Unidos mediante la utilización de un sistema que hacía pasar tarjetas perforadas sobre contactos eléctricos.

También en el siglo XIX el matemático e inventor británico Charles Babbage elaboró los principios de la computadora digital moderna. Inventó una serie de máquinas, como la máquina diferencial, diseñadas para solucionar problemas matemáticos complejos. Muchos historiadores consideran a Babbage y a su socia, la matemática británica Augusta Ada Byron (1815-1852), hija del poeta inglés Lord Byron, como a los verdaderos inventores de la computadora digital moderna. La tecnología de aquella época no era capaz de trasladar a la práctica sus acertados conceptos; pero una de sus invenciones, la máquina analítica, ya tenía muchas de las características de un ordenador moderno. Incluía una corriente, o flujo de entrada en forma de paquete de tarjetas perforadas, una memoria para guardar los datos, un procesador para las operaciones matemáticasy una impresora para hacer permanente el registro.
Los ordenadores analógicos comenzaron a construirse a principios del siglo XX. Los primeros modelos realizaban los cálculos mediante ejes y engranajes giratorios. Con estas máquinas se evaluaban las aproximaciones numéricas de ecuaciones demasiado difíciles como para poder ser resueltas mediante otros métodos. Durante las dos guerras mundiales se utilizaron sistemas informáticos analógicos, primero mecánicos y más tarde eléctricos, para predecir la trayectoria de los torpedos en los submarinos y para el manejo a distancia de las bombas en la aviación.
Durante la II Guerra Mundial(1939-1945), un equipo de científicos y matemáticos que trabajaban en Bletchley Park, al norte de Londres, crearon lo que se consideró el primer ordenador digital totalmente electrónico: el Colossus. Hacia diciembre de 1943 el Colossus, que incorporaba 1.500 válvulas o tubos de vacío, era ya operativo. Fue utilizado por el equipo dirigido por Alan Turing para descodificar los mensajes de radio cifrados de los alemanes. En 1939 y con independencia de este proyecto, John Atanasoff y Clifford Berry ya habían construido un prototipo de máquina electrónica en el Iowa State College (EEUU). Este prototipo y las investigaciones posteriores se realizaron en el anonimato, y más tarde quedaron eclipsadas por el desarrollo del Calculador e integrador numérico electrónico (en inglés ENIAC, Electronic Numerical Integrator and Computer) en 1946. El ENIAC, que según se demostró se basaba en gran medida en el ordenador Atanasoff-Berry (en inglés ABC, Atanasoff-Berry Computer), obtuvo una patente que caducó en 1973, varias décadas más tarde.
El ENIAC contenía 18.000 válvulas de vacío y tenía una velocidadde varios cientos de multiplicaciones por minuto, pero su programa estaba conectado al procesador y debía ser modificado manualmente. Se construyó un sucesor del ENIAC con un almacenamiento de programa que estaba basado en los conceptos del matemático húngaro-estadounidense John von Neumann. Las instrucciones se almacenaban dentro de una llamada memoria, lo que liberaba al ordenador de las limitaciones de velocidad del lector de cinta de papel durante la ejecución y permitía resolver problemas sin necesidad de volver a conectarse al ordenador.
A finales de la década de 1950 el uso del transistor en los ordenadores marcó el advenimiento de elementos lógicos más pequeños, rápidos y versátiles de lo que permitían las máquinas con válvulas. Como los transistoresutilizan mucha menos energía y tienen una vida útil más prolongada, a su desarrollo se debió el nacimiento de máquinas más perfeccionadas, que fueron llamadas ordenadores o computadoras de segunda generación. Los componentes se hicieron más pequeños, así como los espacios entre ellos, por lo que la fabricación del sistema resultaba más barata.
A finales de la década de 1960 apareció el circuito integrado (CI), que posibilitó la fabricación de varios transistores en un único sustrato de silicio en el que los cables de interconexión iban soldados. El circuito integrado permitió una posterior reducción del precio, el tamaño y los porcentajes de error. El microprocesador se convirtió en una realidad a mediados de la década de 1970, con la introducción del circuito de integración a gran escala (LSI, acrónimo de Large Scale Integrated) y, más tarde, con el circuito de integración a mayor escala (VLSI, acrónimo de Very Large Scale Integrated), con varios miles de transistores interconectados soldados sobre un único sustrato de silicio.
Historia de LINUX y UNIX:
LINUX nació como un producto de Linus Torvalds, inspirado en el MINIX, el sistema operativo desarrollado por Andrew S. Tanenbaum en su obra "Sistemas Operativos: Diseño e Implementación". Libroen el cual, tras un estudio general sobre los serviciosque debe proporcionar un sistema operativo y algunas formas de proporcionar éstos, introduce su propia implementación del UNIX en forma de códigofuente en lenguaje C y ensamblador, además de las instrucciones necesarias para poder instalar y mejorar el mismo.
La primera versión de LINUX, enumerada como 0.01 contenía solo los rudimentos del núcleo y funcionaba sobre una máquina con el MINIX instalado, esto es, para compilar y jugar con LINUX era necesario tener instalado el MINIX de Tanembaum.
El 5 de Octubre de 1991, Linus anunció su primera versión 'oficial', la 0.02 con esta versión ya se podía ejecutar el bash (GNU Bourne Shell) y el gcc (GNU C compiler).
Después de la versión 0.03, Linus cambió este número por 0.10 y tras las aportaciones de un grupo inicial de usuarios se incrementó de nuevo la denominación a 0.95, reflejando la clara voluntad de poder anunciar en breve una versión 'oficial' (con la denominación 1.0).
En Diciembre de 1993 el núcleo estaba en su versión 0.99 pH I. En la actualidad la última versión estable es al 2.0.30 aunque existe ya la versión de desarrollo 2.1.
La enumeración de las versiones de LINUX implica a tre números separados por puntos, el primero de ellos es la versión del sistema operativo es el que distingue unas versiones de otras cuando las diferencias son importantes. El segundo número indica el nivel en que se encuentra dicha versión. Si es un número impar quiere decir que es una versión de desarrollo con lo cual se nos avisa de que ciertos componentes del núcleo están en fase de prueba, si es par se considera una versión estable. El último número identifica el número de revisión para dicha versión del sistema operativo, suele ser debido a la corrección de pequeños problemas o al añadir algunos detalles que anteriormente no se contemplaba con lo cual no implica un cambio muy grande en el núcleo. Como ejemplo sirva la versión de LINUX con la que ha sido desarrollado este trabajo, la última estable hasta hace poco tiempo, su número es 1.2.13, esto es, la versión 1 en su nivel 2 (estable) y la revisión número 13 de la misma en éste caso fue la última.
Hay que señalar que LINUX no sería lo que es sin la aportación de la Free Software Foundation y todo el software desarrollado bajo el soporte de esta asociación así como la distribución del UNIX de Berkley (BSD), tanto en programas transportados como en programas diseñados para este que forman parte de algunas distribuciones del LINUX.