HISTORIA+DE+LOS+ORDENADORES

La primera máquina de calcular mecánica, un precursor del ordenador digital, fue inventada en 1642 por el matemático francés Blaise Pascal. Aquel dispositivo utilizaba una serie de ruedas de diez dientes en las que cada uno de los dientes representaba un dígito del 0 al 9. Las ruedas estaban conectadas de tal manera que podían sumarse números haciéndolas avanzar el número de dientes correcto. 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áticas y 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 digital electrónico (ENIAC) en 1945. El ENIAC, que según mostró la evidencia se basaba en gran medida en el ‘ordenador’ Atanasoff-Berry (ABC, acrónimo de Electronic Numerical Integrator and 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 velocidad de 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 transistores utilizan 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.  Una tendencia constante en el desarrollo de los ordenadores es la microminiaturización, iniciativa que tiende a comprimir más elementos de circuitos en un espacio de chip cada vez más pequeño. Además, los investigadores intentan agilizar el funcionamiento de los circuitos mediante el uso de la superconductividad, un fenómeno de disminución de la resistencia eléctrica que se observa cuando se enfrían los objetos a temperaturas muy bajas. Las redes informáticas se han vuelto cada vez más importantes en el desarrollo de la tecnología de computadoras. Las redes son grupos de computadoras interconectados mediante sistemas de comunicación. La red pública Internet es un ejemplo de red informática planetaria. Las redes permiten que las computadoras conectadas intercambien rápidamente información y, en algunos casos, compartan una carga de trabajo, con lo que muchas computadoras pueden cooperar en la realización de una tarea. Se están desarrollando nuevas tecnologías de equipo físico y soporte lógico que acelerarán los dos procesos mencionados. Otra tendencia en el desarrollo de computadoras es el esfuerzo para crear computadoras de quinta generación, capaces de resolver problemas complejos en formas que pudieran llegar a considerarse creativas. Una vía que se está explorando activamente es el ordenador de proceso paralelo, que emplea muchos chips para realizar varias tareas diferentes al mismo tiempo. El proceso paralelo podría llegar a reproducir hasta cierto punto las complejas funciones de realimentación, aproximación y evaluación que caracterizan al pensamiento humano. Otra forma de proceso paralelo que se está investigando es el uso de computadoras moleculares (mediante la "nanotecnología"). En estas computadoras, los símbolos lógicos se expresan por unidades químicas de ADN en vez de por el flujo de electrones habitual en las computadoras corrientes. Las computadoras moleculares podrían llegar a resolver problemas complicados mucho más rápidamente que las actuales supercomputadoras y consumir mucha menos energía.
 * //__ MaTiAs GaRcIa AlVaReZ __//**
 * //__ 7222 __//**
 * // La historia de los ordenadores //**

El **Fortran** (previamente **FORTRAN**) es un lenguaje de programación alto nivel de propósito general,[|[2]] procedurimental __ [ __ 3 __ ] __ e imperativo, que está especialmente adaptado al cálculo numérico y a la computación científica. Desarrollado originalmente por IBM en 1957 para el equipo IBM 704, y usado para aplicaciones científicas y de ingeniería, el FORTRAN vino a dominar esta área de la programación desde el principio y ha estado en uso continuo por más de medio siglo en áreas de cómputo intensivo tales como la predicción numérica del tiempo, análisis de elementos finitos, dinámica de fluidos computacional (CFD), física computacional, y química computacional. Es una de los lenguajes más populares en el área de la computación de alto rendimiento y es el lenguaje usado para programas que evalúan el desempeño ( [|benchmark] ) y el ranking de los supercomputadores más rápidos del mundo.[|[4]] El FORTRAN abarca un linaje de versiones, cada una de las cuales evolucionó para añadir extensiones al lenguaje mientras que usualmente retenía compatibilidad con las versiones previas. Versiones sucesivas han añadido soporte para procesamiento de datos basados en caracteres (FORTRAN 77), programación de arreglos, programación modular y programación orientada a objetos (Fortran 90/95), y programación genérica (Fortran 2003). El lenguaje fue diseñado teniendo en cuenta que los programas serían escritos en tarjetas perforadas de 80 columnas. Así por ejemplo, las líneas debían ser numeradas y la única alteración posible en el orden de ejecución era producida con la instrucción //goto//. Estas características han evolucionado de versión en versión. Las actuales contienen subprogramas, recursión y una variada gama de __estructuras de control__
 * Principales características **

= COBOL = El lenguaje **COBOL** fue creado en el año 1960 con el objetivo de crear un lenguaje de programación universal que pudiera ser usado en cualquier ordenador, ya que en los años 1960 existían numerosos modelos de ordenadores incompatibles entre sí, y que estuviera orientado principalmente a los negocios, es decir, a la llamada informática de gestión. En la creación de este lenguaje participó la comisión __CODASYL__, compuesta por fabricantes de ordenadores, usuarios y el __Departamento de Defensa de Estados Unidos__ en mayo de __1959__. La definición del lenguaje se completó en poco más de seis meses, siendo aprobada por la comisión en enero de [|1960]. El lenguaje COBOL fue diseñado inspirándose en el lenguaje [|Flow-Matic] de __Grace Hopper__ y el __IBM COMTRAN__ de [|Bob Bemer], ya que ambos formaron parte de la comisión. Gracias a la ayuda de los usuarios COBOL evolucionó rápidamente y fue revisado de [|1961] a [|1965] para añadirle nuevas funcionalidades. En [|1968] salió la primera versión [|ANSI] del lenguaje, siendo revisada posteriormente en [|1974] (COBOL ANS-74), [|1985] (COBOL ANS-85, ampliado en 1989 con funciones matemáticas, finalizando el estándar actual más usado, conocido como COBOL-ANSI), y en [|2002] (COBOL ANS-2002). Desde el año [|2007] se viene preparando una nueva revisión del lenguaje. Además, existe una versión conocida como COBOL ENTERPRISE, actualizada regularmente y lanzada en [|1991], usada generalmente en sistemas Host.]] Pese a esto, a comienzos de los ochenta se fue quedando anticuado respecto a los nuevos [|paradigmas de programación] y a los lenguajes que los implementaban. En la revisión de 1985 se solucionó, incorporando a COBOL variables locales, recursividad, reserva de memoria dinámica y programación estructurada. En la revisión de 2002 se le añadió orientación a objetos, aunque desde la revisión de 1974 se podía crear un entorno de trabajo similar a la orientación a objetos, y un método de generación de pantallas gráficas estandarizado. Antes de la inclusión de las nuevas características en el estándar oficial, muchos fabricantes de compiladores las añadían de forma no estándar. En la actualidad este proceso se está viendo con la integración de COBOL con Internet. Existen varios compiladores que permiten emplear COBOL como [|lenguaje de scripting] y de [|servicio web]. También existen compiladores que permiten generar código COBOL para la plataforma [|.NET] y [|EJB].
 * Historia **
 * [ [|editar] ] Características **
 * COBOL fue dotado de unas excelentes capacidades de autodocumentación
 * Una buena gestión de archivos y una excelente gestión de los tipos de datos para la época, a través de la conocida sentencia PICTURE para la definición de campos estructurados. Para evitar errores de redondeo en los cálculos que se producen al convertir los números a binario y que son inaceptables en temas comerciales, COBOL puede emplear y emplea por defecto números en [|base diez] . Para facilitar la creación de programas en COBOL, la sintaxis del mismo fue creada de forma que fuese parecida al idioma inglés, evitando el uso de símbolos que se impusieron en lenguajes de programación posteriores.

Programa [|Hola mundo]
code IDENTIFICATION DIVISION. code

code PROGRAM-ID. Saludos. code

code * code

code ENVIRONMENT DIVISION. code

code * code

code DATA DIVISION. code

code WORKING-STORAGE SECTION. code

code * code

code PROCEDURE DIVISION. code

code INICIO. code

code DISPLAY "Hola mundo-". code

code STOP RUN. code

= Lenguaje ensamblador =  [|Lenguaje de máquina] del [|Intel 8088]. El código de máquina se resalta en rojo, el equivalente en lenguaje assembler en magenta, y las direcciones de memoria donde se encuentra el código, en azul. El **lenguaje ensamblador** es un tipo de [|lenguaje de bajo nivel] utilizado para escribir [|programas informáticos], y constituye la representación más directa del [|código máquina] específico para cada [|arquitectura de computadoras] legible por un programador. Fue usado principalmente en los inicios del desarrollo de [|software], cuando aún no se contaba con los potentes lenguajes de alto nivel. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de [|hardware], se pretenden altos rendimientos o un uso de recursos controlado y reducido. Muchos dispositivos programables (como los microcontroladores) aun cuentan con el ensamblador como la única manera de ser manipulados.

= Lenguaje de máquina =

De Wikipedia, la enciclopedia libre
Saltar a [|navegación], [|búsqueda]  Lenguaje de máquina del [|Intel 8088]. El código de máquina se resalta en rojo, el equivalente en [|lenguaje assembler] en magenta, y las direcciones de memoria donde se encuentra el código, en azul. Los circuitos microprogramables son [|sistemas digitales], lo que significa que trabajan con dos únicos niveles de tensión. Dichos niveles, por abstracción, se simbolizan con el cero, 0, y el uno, 1, por eso el lenguaje de máquina sólo utiliza dichos signos. Esto permite el empleo de las teorías del [|álgebra booleana] y del [|sistema binario] en el diseño de este tipo de circuitos y en su programación. Una visión típica de la [|arquitectura de computadores] como una serie de capas de abstracción: [|hardware], [|firmware] , [|ensamblador] , [|kernel] , [|sistema operativo] y [|aplicaciones]. [|Claude Elwood Shannon], en su //Analysis of Relay and Switching Circuits//, y con sus experiencias en redes de conmutación, sentó las bases para la aplicación del [|álgebra de Boole] a las redes de conmutación. Una red de conmutación es un circuito de interruptores eléctricos que al cumplir ciertas combinaciones booleanas con las variables de entrada, define el estado de la salida. Este concepto es el núcleo de las [|puertas lógicas], las cuales son, por su parte, los ladrillos con que se construyen [|sistemas lógicos] cada vez más complejos. Shannon utilizaba el [|relé] como dispositivo físico de conmutación en sus redes. El relé, a igual que una lámpara eléctrica, posee dos estados: 1 ó 0, esto es, está activado, encendida, o está desactivado, apagada. El desarrollo tecnológico ha permitido evolucionar desde las redes de relés electromagnéticos de Shannon a circuitos con [|tubos de vacío], luego a redes transistorizadas, hasta llegar a los modernos circuitos integrados cuyas cúspide lo forman los circuitos microprogramados.
 * Lenguaje de máquina ** es el sistema de códigos directamente interpretable por un circuito microprogramable, como el [|microprocesador] de una [|computadora] o el [|microcontrolador] de un [|autómata] (un PLC) . Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la máquina. Un [|programa de computadora] consiste en una cadena de estas instrucciones de lenguaje de máquina (más los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de máquina es específico de cada máquina o [|arquitectura de la máquina], aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas.

MARIO IVAN ROMERO ACEVES

HISTORIA DE LA COMPUTADORA

__[|COMPUTADORA]__
Máquina capaz de efectuar una secuencia de [|operaciones] mediante un [|programa], de tal manera, que se realice un procesamiento sobre un conjunto de [|datos] de entrada, obteniéndose otro conjunto de datos de salida. Se clasifican de acuerdo al principio de operación de **Analógicas y Digitales**. **HISTORIA DE LA COMPUTACIÓN** Uno de los primeros dispositivos mecánicos para contar fue el [|ábaco], cuya [|historia] se remonta a las antiguas civilizaciones griega y romana. Este dispositivo es muy sencillo, consta de [|cuentas] ensartadas en varillas que a su vez están montadas en un marco rectangular. Al desplazar las cuentas sobre varillas, sus posiciones representan valores almacenados, y es mediante dichas posiciones que este representa y almacena datos. A este dispositivo no se le puede llamar [|computadora] por carecer del elemento fundamental llamado programa. Otro de los [|inventos] mecánicos fue la Pascalina inventada por Blaise [|Pascal] (1623 - 1662) de [|Francia] y la de Gottfried Wilhelm von Leibniz (1646 - 1716) de [|Alemania]. Con estas [|máquinas], los datos se representaban mediante las posiciones de los engranajes, y los datos se introducían manualmente estableciendo dichas posiciones finales de las ruedas, de manera similar a como leemos los números en el cuentakilómetros de un automóvil. La primera computadora fue la **//máquina analítica//** creada por Charles Babbage, [|profesor] matemático de la [|Universidad] de Cambridge en el siglo XIX. La idea que tuvo Charles Babbage sobre un [|computador] nació debido a que la elaboración de las tablas matemáticas era un [|proceso] tedioso y propenso a errores. En 1823 el [|gobierno] Británico lo apoyo para crear el [|proyecto] de una máquina de diferencias, un dispositivo mecánico para efectuar sumas repetidas. Mientras tanto Charles Jacquard (francés), fabricante de [|tejidos], había creado un telar que podía reproducir automáticamente patrones de tejidos leyendo la [|información] codificada en patrones de agujeros perforados en [|tarjetas] de papel rígido. Al enterarse de este [|método] Babbage abandonó la máquina de diferencias y se dedico al proyecto de la máquina analítica que se pudiera programar con tarjetas perforadas para efectuar cualquier [|cálculo] con una precisión de 20 dígitos. La [|tecnología] de la época no bastaba para hacer realidad sus ideas. El mundo no estaba listo, y no lo estaría por cien años más. En 1944 se construyó en la Universidad de Harvard, la Mark I, diseñada por un equipo encabezado por Howard H. Aiken. Esta máquina no está considerada como computadora [|electrónica] debido a que no era de propósito general y su funcionamiento estaba basado en dispositivos electromecánicos llamados relevadores. En 1947 se construyó en la Universidad de Pennsylvania la ENIAC (Electronic Numerical Integrator And Calculator) que fue la primera computadora electrónica, el equipo de [|diseño] lo encabezaron los ingenieros John Mauchly y John Eckert. Esta máquina ocupaba todo un sótano de la Universidad, tenía más de 18 000 tubos de vacío, consumía 200 KW de energía eléctrica y requería todo un [|sistema] de [|aire] acondicionado, pero tenía la capacidad de realizar cinco mil operaciones aritméticas en un segundo. El proyecto, auspiciado por el departamento de Defensa de los [|Estados Unidos], culminó dos años después, cuando se integró a ese equipo el ingeniero y matemático húngaro John [|von Neumann] (1903 - 1957). Las ideas de von Neumann resultaron tan fundamentales para su [|desarrollo] posterior, que es considerado el padre de las [|computadoras]. La EDVAC (Electronic Discrete Variable Automatic Computer) fue diseñada por este nuevo equipo. Tenía aproximadamente cuatro mil bulbos y usaba un tipo de [|memoria] basado en tubos llenos de [|mercurio] por donde circulaban [|señales] eléctricas sujetas a retardos. La idea fundamental de von Neumann fue: permitir que en [|la memoria] coexistan datos con instrucciones, para que entonces [|la computadora] pueda ser programada en un [|lenguaje], y no por medio de alambres que eléctricamente interconectaban varias secciones de [|control], como en la ENIAC. Todo este desarrollo de las computadoras suele divisarse por generaciones y el criterio que se determinó para determinar el [|cambio] de generación no está muy bien definido, pero resulta aparente que deben cumplirse al menos los siguientes requisitos: En esta generación había una gran desconocimiento de las capacidades de las computadoras, puesto que se realizó un estudio en esta época que determinó que con veinte computadoras se saturaría el [|mercado] de los Estados Unidos en el campo de procesamiento de datos. Esta generación abarco la década de los cincuenta. Y se conoce como la primera generación. Estas máquinas tenían las siguientes características: En esta generación las máquinas son grandes y costosas (de un [|costo] aproximado de ciento de miles de dólares). En 1951 aparece la UNIVAC (NIVersAl Computer), fue la primera computadora comercial, que disponía de mil palabras de memoria central y podían leer cintas magnéticas, se utilizó para procesar el censo de 1950 en los Estados Unidos. En las dos primeras generaciones, las unidades de entrada utilizaban tarjetas perforadas, retomadas por Herman Hollerith (1860 - 1929), quien además fundó una compañía que con el paso del [|tiempo] se conocería como IBM (International Bussines Machines). Después se desarrolló por IBM la **//IBM 701//** de la cual se entregaron 18 unidades entre 1953 y 1957. Posteriormente, la compañía Remington Rand fabricó el [|modelo] 1103, que competía con la 701 en el campo científico, por lo que la IBM desarrollo la 702, la cual presentó problemas en memoria, debido a esto no duró en el mercado. La computadora más exitosa de la primera generación fue la IBM 650, de la cual se produjeron varios cientos. Esta computadora que usaba un esquema de memoria secundaria llamado tambor magnético, que es el antecesor de los discos actuales. Otros [|modelos] de computadora que se pueden situar en los inicios de la segunda generación son: la UNIVAC 80 y 90, las IBM 704 y 709, Burroughs 220 y UNIVAC 1105. Cerca de la década de 1960, las computadoras seguían evolucionando, se reducía su tamaño y crecía su capacidad de procesamiento. También en esta época se empezó a definir la forma de comunicarse con las computadoras, que recibía el nombre de [|programación] de [|sistemas]. Las características de la segunda generación son las siguientes: En esta generación las computadoras se reducen de tamaño y son de menor costo. Aparecen muchas compañías y las computadoras eran bastante avanzadas para su época como la serie 5000 de Burroughs y la ATLAS de la Universidad de Manchester. Algunas de estas computadoras se programaban con cintas perforadas y otras más por medio de cableado en un tablero. Los programas eran hechos a la medida por un equipo de expertos: analistas, diseñadores, programadores y operadores que se manejaban como una orquesta para resolver los problemas y cálculos solicitados por [|la administración]. El usuario final de la información no tenía contacto directo con las computadoras. Esta situación en un principio se produjo en las primeras computadoras personales, pues se requería saberlas "programar" (alimentarle instrucciones) para obtener resultados; por lo tanto su uso estaba limitado a aquellos audaces pioneros que gustaran de pasar un buen número de horas escribiendo instrucciones, "corriendo" el programa resultante y verificando y corrigiendo los errores o bugs que aparecieran. Además, para no perder el "programa" resultante había que "guardarlo" (almacenarlo) en una grabadora de astte, pues en esa época no había discos flexibles y mucho menos [|discos duros] para las PC; este [|procedimiento] podía tomar de 10 a 45 minutos, según el programa. El panorama se modificó totalmente con la aparición de las computadoras personales con mejore circuitos, más memoria, unidades de disco flexible y sobre todo con la aparición de programas de aplicación general en donde el usuario __[|compra]__ el programa y se pone a trabajar. Aparecen los programas [|procesadores] de palabras como el célebre [|Word] Star, la impresionante hoja de cálculo (spreadsheet) Visicalc y otros más que de la noche a la mañana cambian la [|imagen] de la PC. El sortware empieza a tratar de alcanzar el paso del hardware. Pero aquí aparece un nuevo elemento: el usuario. El usuario de las computadoras va cambiando y evolucionando con el tiempo. De estar totalmente desconectado a ellas en las máquinas grandes pasa la PC a ser pieza clave en el diseño tanto del hardware como del [|software]. Aparece el [|concepto] de human interface que es la relación entre el usuario y su computadora. Se habla entonces de hardware ergonómico (adaptado a las dimensiones humanas para reducir el cansancio), diseños de pantallas antirreflejos y teclados que descansen la muñeca. Con respecto al software se inicia una verdadera __[|carrera]__ para encontrar la manera en que el usuario pase menos tiempo capacitándose y entrenándose y más tiempo produciendo. Se ponen al alcance programas con menús (listas de opciones) que orientan en todo momento al usuario (con el consiguiente aburrimiento de los usuarios expertos); otros programas ofrecen toda una artillería de teclas de control y teclas de [|funciones] (atajos) para efectuar toda suerte de efectos en [|el trabajo] (con la consiguiente desorientación de los usuarios novatos). Se ofrecen un sinnúmero de cursos prometiendo que en pocas semanas hacen de cualquier [|persona] un experto en los programas comerciales. Pero el problema "constante" es que ninguna solución para el uso de los programas es "constante". Cada nuevo programa requiere aprender nuevos controles, nuevos trucos, nuevos menús. Se empieza a sentir que la relación usuario-PC no está acorde con los desarrollos del equipo y de la [|potencia] de los programas. Hace falta una relación amistosa entre el usuario y la PC. Las computadoras de esta generación fueron: la Philco 212 (esta compañía se retiró del mercado en 1964) y la UNIVAC M460, la Control Data Corporation modelo 1604, seguida por la serie 3000, la IBM mejoró la 709 y sacó al mercado la 7090, la National Cash Register empezó a producir máquinas para proceso de datos de tipo comercial, introdujo el modelo NCR 315. La [|Radio] Corporation of America introdujo el modelo 501, que manejaba [|el lenguaje] [|COBOL], para [|procesos] administrativos y comerciales. Después salió al mercado la RCA 601. Con los progresos de la electrónica y los avances de [|comunicación] con las computadoras en la década de los 1960, surge la **//tercera generación//** de las computadoras. Se inaugura con la IBM 360 en abril de 1964.3 Las características de esta generación fueron las siguientes: La IBM produce la serie 360 con los modelos 20, 22, 30, 40, 50, 65, 67, 75, 85, 90, 195 que utilizaban [|técnicas] especiales del [|procesador], unidades de cinta de nueve canales, paquetes de discos magnéticos y otras características que ahora son estándares (no todos los modelos usaban estas técnicas, sino que estaba dividido por aplicaciones). El [|sistema operativo] de la serie 360, se llamó OS que contaba con varias configuraciones, incluía un conjunto de técnicas de manejo de memoria y del procesador que pronto se convirtieron en estándares. En 1964 CDC introdujo la serie 6000 con la computadora 6600 que se consideró durante algunos años como la más rápida. En la década de 1970, la IBM produce la serie 370 (modelos 115, 125, 135, 145, 158, 168). UNIVAC compite son los modelos 1108 y 1110, máquinas en gran [|escala]; mientras que CDC produce su serie 7000 con el modelo 7600. Estas computadoras se caracterizan por ser muy potentes y veloces. A finales de esta década la IBM de su serie 370 produce los modelos 3031, 3033, 4341. Burroughs con su serie 6000 produce los modelos 6500 y 6700 de avanzado diseño, que se reemplazaron por su serie 7000. Honey - Well participa con su computadora DPS con varios modelos. A mediados de la década de 1970, aparecen en el mercado las computadoras de tamaño mediano, o **//minicomputadoras//** que no son tan costosas como las grandes (llamadas también como **//mainframes//** que significa también, gran sistema), pero disponen de gran capacidad de procesamiento. Algunas minicomputadoras fueron las siguientes: la PDP - 8 y la PDP - 11 de Digital Equipment Corporation, la VAX (Virtual Address eXtended) de la misma compañía, los modelos NOVA y ECLIPSE de Data General, la serie 3000 y 9000 de Hewlett - Packard con varios modelos el 36 y el 34, la Wang y Honey - Well -Bull, Siemens de origen alemán, la ICL fabricada en [|Inglaterra]. En la Unión Soviética se utilizó la US (Sistema Unificado, Ryad) que ha pasado por varias generaciones. Aquí aparecen los **//microprocesadores//** que es un gran adelanto de la microelectrónica, son circuitos integrados de alta [|densidad] y con una [|velocidad] impresionante. Las microcomputadoras con base en estos circuitos son extremadamente pequeñas y baratas, por lo que su uso se extiende al mercado industrial. Aquí nacen las computadoras personales que han adquirido proporciones enormes y que han influido en la [|sociedad] en general sobre la llamada **//"[|revolución] [|informática]"//.** En 1976 Steve Wozniak y Steve Jobs inventan la primera microcomputadora de uso masivo y más tarde forman la compañía conocida como la Apple que fue la segunda compañía más grande del mundo, antecedida tan solo por IBM; y esta por su parte es aún de las cinco compañías más grandes del mundo. En 1981 se vendieron 800 00 computadoras personales, al siguiente subió a 1 400 000. Entre 1984 y 1987 se vendieron alrededor de 60 millones de computadoras personales, por lo que no queda duda que su impacto y penetración han sido enormes. Con el surgimiento de las computadoras personales, el software y los sistemas que con ellas de manejan han tenido un considerable avance, porque han hecho más interactiva la comunicación con el usuario. Surgen otras aplicaciones como los procesadores de palabra, las hojas electrónicas de cálculo, paquetes [|gráficos], etc. También las [|industrias] del Software de las computadoras personales crece con gran rapidez, Gary Kildall y William Gates se dedicaron durante años a la creación de sistemas operativos y [|métodos] para lograr una utilización sencilla de las microcomputadoras (son los creadores de CP/M y de los [|productos] de [|Microsoft]). No todo son microcomputadoras, por su puesto, las minicomputadoras y los grandes sistemas continúan en desarrollo. De hecho las máquinas pequeñas rebasaban por mucho la capacidad de los grandes sistemas de 10 o 15 años antes, que requerían de instalaciones costosas y especiales, pero sería equivocado suponer que las grandes computadoras han desaparecido; por el contrario, su presencia era ya ineludible en prácticamente todas las esferas de control gubernamental, militar y de la gran [|industria]. Las enormes computadoras de las series CDC, CRAY, Hitachi o IBM por ejemplo, eran capaces de atender a varios cientos de millones de operaciones por segundo. En vista de la acelerada marcha de la microelectrónica, la sociedad industrial se ha dado a la tarea de poner también a esa altura el desarrollo del software y los sistemas con que se manejan las computadoras. Surge la [|competencia] internacional por el [|dominio] del mercado de la [|computación], en la que se perfilan dos líderes que, sin embargo, no han podido alcanzar el nivel que se desea: la capacidad de comunicarse con la computadora en un lenguaje más cotidiano y no a través de códigos o lenguajes de control especializados. Japón lanzó en 1983 el llamado "programa de la quinta generación de computadoras", con los [|objetivos] explícitos de producir máquinas con innovaciones reales en los criterios mencionados. Y en los Estados Unidos ya está en actividad un programa en desarrollo que persigue objetivos semejantes, que pueden resumirse de la siguiente manera: El futuro previsible de la computación es muy interesante, y se puede esperar que esta [|ciencia] siga siendo objeto de [|atención] prioritaria de gobiernos y de la sociedad en conjunto.
 * TIPOS DE COMPUTADORAS**
 * **COMPUTADORA ANALÓGICA**
 * 1) Aprovechando el hecho de que diferentes fenómenos físicos se describen por relaciones [|matemáticas] similares (v.g. Exponenciales, Logarítmicas, etc.) pueden entregar la solución muy rápidamente. Pero tienen el inconveniente que al cambiar el problema a resolver, hay que realambrar la circuitería (cambiar el [|Hardware]).
 * **COMPUTADORA DIGITAL**
 * 1) Están basadas en dispositivos biestables, i.e., que sólo pueden tomar uno de dos [|valores] posibles: ‘**1**’ ó ‘**0**’. Tienen como ventaja, el [|poder] ejecutar diferentes [|programas] para diferentes [|problemas], sin tener que la necesidad de modificar físicamente la máquina.
 * La forma en que están construidas.
 * Forma en que el ser humano se comunica con ellas.
 * Primera Generación**
 * Estas máquinas estaban construidas por medio de tubos de vacío.
 * Eran programadas en lenguaje de máquina.
 * Segunda Generación**
 * Están construidas con [|circuitos] de [|transistores].
 * Se programan en nuevos lenguajes llamados lenguajes de alto nivel.
 * Tercera generación**
 * Su fabricación electrónica esta basada en circuitos integrados.
 * Su manejo es por medio de los lenguajes de control de los sistemas operativos.
 * Cuarta Generación**
 * Quinta Generación**
 * Procesamiento en paralelo mediante arquitecturas y diseños especiales y circuitos de gran velocidad.
 * Manejo de lenguaje natural y sistemas de [|inteligencia] artificial.

http://www.monografias.com/trabajos/histocomp/histocomp.shtml

=Fortran=

El **Fortran** (previamente **FORTRAN**) [|[] [|1] [|]] (del [|inglés] //**For**mula **Tran**slating System//) es un [|lenguaje de programación] [|alto nivel] de propósito general, [|[] [|2] [|]] [|procedurimental] [|[] [|3] [|]] e [|imperativo], que está especialmente adaptado al [|cálculo numérico] y a la [|computación científica]. Desarrollado originalmente por [|IBM] en [|1957] para el equipo [|IBM 704], y usado para aplicaciones científicas y de ingeniería, el FORTRAN vino a dominar esta área de la programación desde el principio y ha estado en uso continuo por más de medio siglo en áreas de cómputo intensivo tales como la [|predicción numérica del tiempo], [|análisis de elementos finitos], [|dinámica de fluidos computacional] (CFD), [|física computacional], y [|química computacional]. Es una de los lenguajes más populares en el área de la [|computación de alto rendimiento] y es el lenguaje usado para programas que evalúan el desempeño ([|benchmark]) y el ranking de los [|supercomputadores] [|más rápidos del mundo]. [|[] [|4] [|]] El FORTRAN (una palabra compuesta, derivada de //The IBM Mathematical **For**mula **Tran**slating System//) abarca un linaje de versiones, cada una de las cuales evolucionó para añadir extensiones al lenguaje mientras que usualmente retenía compatibilidad con las versiones previas. Versiones sucesivas han añadido soporte para procesamiento de datos basados en caracteres (FORTRAN 77), [|programación de arreglos], [|programación modular] y [|programación orientada a objetos] (Fortran 90/95), y [|programación genérica] (Fortran 2003).



http://es.wikipedia.org/wiki/Fortran

=COBOL= El [|lenguaje] **COBOL** ([|acrónimo] de //**CO**mmon **B**usiness -**O**riented **L**anguage//, //Lenguaje Común Orientado a Negocios//) fue creado en el año 1960 con el objetivo de crear un [|lenguaje de programación] universal que pudiera ser usado en cualquier ordenador, ya que en los [|años 1960] existían numerosos modelos de ordenadores incompatibles entre sí, y que estuviera orientado principalmente a los negocios, es decir, a la llamada [|informática de gestión].

Historia
En la creación de este lenguaje participó la comisión [|CODASYL], compuesta por fabricantes de ordenadores, usuarios y el [|Departamento de Defensa de Estados Unidos] en mayo de [|1959]. La definición del lenguaje se completó en poco más de seis meses, siendo aprobada por la comisión en enero de [|1960]. El lenguaje COBOL fue diseñado inspirándose en el lenguaje [|Flow-Matic] de [|Grace Hopper] y el [|IBM COMTRAN] de [|Bob Bemer], ya que ambos formaron parte de la comisión. Gracias a la ayuda de los usuarios COBOL evolucionó rápidamente y fue revisado de [|1961] a [|1965] para añadirle nuevas funcionalidades. En [|1968] salió la primera versión [|ANSI] del lenguaje, siendo revisada posteriormente en [|1974] (COBOL ANS-74), [|1985] (COBOL ANS-85, ampliado en 1989 con funciones matemáticas, finalizando el estándar actual más usado, conocido como COBOL-ANSI), y en [|2002] (COBOL ANS-2002). Desde el año [|2007] se viene preparando una nueva revisión del lenguaje. Además, existe una versión conocida como COBOL ENTERPRISE, actualizada regularmente y lanzada en [|1991], usada generalmente en sistemas Host.]]

Características
Pese a esto, a comienzos de los ochenta se fue quedando anticuado respecto a los nuevos [|paradigmas de programación] y a los lenguajes que los implementaban. En la revisión de 1985 se solucionó, incorporando a COBOL variables locales, recursividad, reserva de memoria dinámica y programación estructurada. En la revisión de 2002 se le añadió orientación a objetos, aunque desde la revisión de 1974 se podía crear un entorno de trabajo similar a la orientación a objetos, y un método de generación de pantallas gráficas estandarizado. Antes de la inclusión de las nuevas características en el estándar oficial, muchos fabricantes de compiladores las añadían de forma no estándar. En la actualidad este proceso se está viendo con la integración de COBOL con Internet. Existen varios compiladores que permiten emplear COBOL como [|lenguaje de scripting] y de [|servicio web]. También existen compiladores que permiten generar código COBOL para la plataforma [|.NET] y [|EJB].
 * COBOL fue dotado de unas excelentes capacidades de autodocumentación
 * Una buena gestión de archivos y una excelente gestión de los tipos de datos para la época, a través de la conocida sentencia PICTURE para la definición de campos estructurados. Para evitar errores de redondeo en los cálculos que se producen al convertir los números a binario y que son inaceptables en temas comerciales, COBOL puede emplear y emplea por defecto números en [|base diez]. Para facilitar la creación de programas en COBOL, la sintaxis del mismo fue creada de forma que fuese parecida al idioma inglés, evitando el uso de símbolos que se impusieron en lenguajes de programación posteriores.

Programa [|Hola mundo]
code IDENTIFICATION DIVISION. PROGRAM-ID. Saludos. *     ENVIRONMENT DIVISION. *     DATA DIVISION. WORKING-STORAGE SECTION. *     PROCEDURE DIVISION. INICIO. DISPLAY "Hola mundo-". STOP RUN.

code http://es.wikipedia.org/wiki/COBOL

=Ensamblador= El término **ensamblador** (del inglés //assembler//) se refiere a un tipo de [|programa informático] que se encarga de traducir un [|fichero fuente] escrito en un [|lenguaje ensamblador], a un [|fichero objeto] que contiene [|código máquina], ejecutable directamente por la [|máquina] para la que se ha generado. El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en [|código binario], que es el único código entendible por la computadora, es en la práctica imposible. La evolución de los lenguajes de programación a partir del lenguaje ensamblador originó también la evolución de este programa ensamblador hacia lo que se conoce como programa [|compilador].

Funcionamiento
El programa lee el fichero escrito en lenguaje ensamblador y sustituye cada uno de los códigos [|nemotécnicos] que aparecen por su [|código de operación] correspondiente en sistema binario para la plataforma que se eligió como destino en las opciones específicas del ensamblador.cc

Tipos de ensambladores
Podemos distinguir entre tres tipos de ensambladores:
 * **Ensambladores básicos**. Son de muy bajo nivel, y su tarea consiste básicamente en ofrecer nombres simbólicos a las distintas [|instrucciones], parámetros y cosas tales como los modos de direccionamiento. Además, reconoce una serie de **directivas** (o [|meta instrucciones]) que indican ciertos parámetros de funcionamiento del ensamblador.
 * **Ensambladores modulares**, o [|macro ensambladores]. Descendientes de los ensambladores básicos, fueron muy populares en las décadas de los [|50] y los [|60], antes de la generalización de los [|lenguajes de alto nivel]. Hacen todo lo que puede hacer un ensamblador, y además proporcionan una serie de directivas para definir e invocar [|macroinstrucciones] (o simplemente, **macros**). //Véase [|X86]//.
 * **Ensambladores modulares 32-bits** o **de alto nivel**. Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits, muchos de ellos teniendo //compatibilidad hacia atrás// pudiendo trabajar con programas con estructuras de 16 bits. Además de realizar la misma tarea que los anteriores, permitiendo también el uso de macros, permiten utilizar estructuras de programación más complejas propias de los lenguajes de alto nivel.

[]

ALEJANDRA PEREZ HERNANDEZ

La primera máquina de calcular mecánica, un precursor del ordenador digital, fue inventada en 1642 por el matemático francés Blaise Pascal. Aquel dispositivo utilizaba una serie de ruedas de diez dientes en las que cada uno de los dientes representaba un dígito del 0 al 9. Las ruedas estaban conectadas de tal manera que podían sumarse números haciéndolas avanzar el número de dientes correcto. 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áticas y 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 digital electrónico (ENIAC) en 1945. El ENIAC, que según mostró la evidencia se basaba en gran medida en el ‘ordenador’ Atanasoff-Berry (ABC, acrónimo de Electronic Numerical Integrator and 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 velocidad de 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 transistores utilizan 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.  Una tendencia constante en el desarrollo de los ordenadores es la microminiaturización, iniciativa que tiende a comprimir más elementos de circuitos en un espacio de chip cada vez más pequeño. Además, los investigadores intentan agilizar el funcionamiento de los circuitos mediante el uso de la superconductividad, un fenómeno de disminución de la resistencia eléctrica que se observa cuando se enfrían los objetos a temperaturas muy bajas. Las redes informáticas se han vuelto cada vez más importantes en el desarrollo de la tecnología de computadoras. Las redes son grupos de computadoras interconectados mediante sistemas de comunicación. La red pública Internet es un ejemplo de red informática planetaria. Las redes permiten que las computadoras conectadas intercambien rápidamente información y, en algunos casos, compartan una carga de trabajo, con lo que muchas computadoras pueden cooperar en la realización de una tarea. Se están desarrollando nuevas tecnologías de equipo físico y soporte lógico que acelerarán los dos procesos mencionados. Otra tendencia en el desarrollo de computadoras es el esfuerzo para crear computadoras de quinta generación, capaces de resolver problemas complejos en formas que pudieran llegar a considerarse creativas. Una vía que se está explorando activamente es el ordenador de proceso paralelo, que emplea muchos chips para realizar varias tareas diferentes al mismo tiempo. El proceso paralelo podría llegar a reproducir hasta cierto punto las complejas funciones de realimentación, aproximación y evaluación que caracterizan al pensamiento humano. Otra forma de proceso paralelo que se está investigando es el uso de computadoras moleculares (mediante la "nanotecnología"). En estas computadoras, los símbolos lógicos se expresan por unidades químicas de ADN en vez de por el flujo de electrones habitual en las computadoras corrientes. Las computadoras moleculares podrían llegar a resolver problemas complicados mucho más rápidamente que las actuales supercomputadoras y consumir mucha menos energía. ALEJANRA PEREZ HERNANDEZ

HISTORIA DE LAS COMPUTDORAS La computadora resulta ser un medio mecánico (electrónico, de hecho) para representar descripciones libre de ambigüedad y obtener un resultado útil. Más aún, podría decirse que la computadora aparece cuando los niveles tecnológicos (electrónico fundamentalmente) alcanzan el grado de avance y refinamiento que ya tenían las ideas y conceptos matemáticos, lo cual sucede a mediados del siglo XX. Uno de los problemas que siempre nos ha cautivado es el relacionado con la actividad de contar y con el concepto de número. De ahí que las primeras herramientas que se inventaron en esté ingenio mecánico capaz de liberarnos de la pesada tarea de calcular a mano. || || El abaco, es la primera calculadora mecánica, aunque no se puede llamar computadora porque carece de un elemento fundamental, el programa, que no se logrará hasta mucho tiempo después. ||  La máquina analítica estaba dividida funcionalmente en dos grandes partes: una que ordenaba y otra que ejecutaba las ordenes. La que ejecutaba las ordenes era una versión muy ampliada de la máquina de Pascal, mientras que la otra era la parte clave. La innovación consistía en que el usuario podía, cambiando las especificaciones de control, lograr que la misma máquina ejecutara operaciones complejas, diferentes de las hechas antes.
 * Las computadoras aparecen a finales de la década de 1950.
 * [[image:blebul1a.gif width="15" height="15" caption="bullet"]] || La maquina de calcular de Blaise Pascal (1623-1662). Se trata de engranes en una caja, que proporcionan resultados de operaciones de suma y resta en forma directa – mostrando un numero a través de una ventanita- ||
 * [[image:blebul1a.gif width="15" height="15" caption="bullet"]] || La máquina analítica de Charles Babbage, nació alrededor de 1830, esta podría considerarse la primer computadora. Este diseño, nunca llevado por completo a la práctica, contenía todos los elementos que configuran una computadora moderna y la diferencian de una calculadora. ||

Esta verdadera antecesora de las computadoras contaba también con una sección en donde recibían los datos para trabajar. La maquina seguía instrucciones dadas por la unidad de control, las cuales indicaban qué hacer con los datos de entrada, para obtener luego resultados deseados. La aplicación fundamental para la que se elaboro esta maquina era, elaborar tablas de funciones matemáticas usuales (logaritmos, tabulaciones trigonometricas, etc.) que requerían mucho esfuerzo manual. Esta leía los datos por medio de tarjetas perforadas. No obstante esta nunca pudo entrar en circulación porque cada que se quería calcular una función diferente se debían cambiar las especificaciones. Los procesos naturales comparten la característica del tipo continuo; es decir, la escala de manifestaciones de un fenómeno cualquiera no tiene singularidades ni puntos muertos, sino que se extiende de manera continua desde la parte inferior a la superior. La altura de la columna de mercurio de un termómetro clínico puede variar entre las marcas, 30 y 45 grados, y en todo momento puede estar en cualquier punto de la escala. Este se conoce como un fenómeno analógico. No ocurre lo mismo, sin embargo, con otro tipo de fenómenos. Si averigua la cantidad de ventanas que hay en un edificio, por ejemplo puede llegar a la conclusión que son 140, pero no 140 ½. Estos fenómenos reciben el nombre de digitales, talvez porque se pueden contar con los dedos de la mano. En estos fenómenos se habla de estados (posiciones o manifestaciones discretas) y de transición entre ellos, y puede ser representado mediante un modelo matemático conocido como autómata finito. Así, puede hablarse de computadoras analógicas y computadoras digitales: son computadoras digitales aquellas que manejan información de manera discreta (en bits – dígitos binarios-) y son analógicas las que trabajan por medio de funciones continuas – generalmente representación de señales eléctricas-. A continuación se describen algunas características de la maquina inventada por Charles Babbage.
 * // Es valido referirse a esta maquina como la primera computadora digital, porque el termino digital no presupone el concepto “electrónico”, como ahora se explicará. //**
 * // Resumiendo, un fenómeno se llama analógico o continuo cuando entre dos manifestaciones cualesquiera de el siempre puede haber una tercera. En contraposición, un fenómeno se conoce como digital o discontinuo cuando entre dos de sus manifestaciones no existe nada, si no solo una transición entre ambos estados. //**

FORTRAN El **Fortran** (previamente **FORTRAN**)[|[1]] (del [|inglés] //**For**mula **Tran**slating System//) es un [|lenguaje de programación] [|alto nivel] de propósito general,[|[2]] [|procedurimental][|[3]] e [|imperativo], que está especialmente adaptado al [|cálculo numérico] y a la [|computación científica]. Desarrollado originalmente por [|IBM] en [|1957] para el equipo [|IBM 704], y usado para aplicaciones científicas y de ingeniería, el FORTRAN vino a dominar esta área de la programación desde el principio y ha estado en uso continuo por más de medio siglo en áreas de cómputo intensivo tales como la [|predicción numérica del tiempo], [|análisis de elementos finitos], [|dinámica de fluidos computacional] (CFD), [|física computacional], y [|química computacional]. Es una de los lenguajes más populares en el área de la [|computación de alto rendimiento] y es el lenguaje usado para programas que evalúan el desempeño ([|benchmark]) y el ranking de los [|supercomputadores] [|más rápidos del mundo].[|[4]] El FORTRAN (una palabra compuesta, derivada de //The IBM Mathematical **For**mula **Tran**slating System//) abarca un linaje de versiones, cada una de las cuales evolucionó para añadir extensiones al lenguaje mientras que usualmente retenía compatibilidad con las versiones previas. Versiones sucesivas han añadido soporte para procesamiento de datos basados en caracteres (FORTRAN 77), [|programación de arreglos], [|programación modular] y [|programación orientada a objetos] (Fortran 90/95), y [|programación genérica] (Fortran 2003). A mediados de 1954 fue terminada una especificación del borrador para //The IBM Mathematical Formula Translating System//. El primer manual para el FORTRAN apareció en octubre de [|1956], porque los clientes eran reacios a usar un [|lenguaje de programación] de [|alto nivel] a menos que su compilador pudiera generar código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje ensamblador. Mientras que la comunidad era escéptica en que este nuevo método pudiera posiblemente superar la codificación a mano, éste redujo por un factor de 20 al número de sentencias de programación necesarias para operar una máquina, y rápidamente ganó aceptación. Durante una entrevista en 1979 con Think, la revista de los empleados de IBM, el creador, John Backus, dijo, "Mucho de mi trabajo ha venido de ser perezoso. No me gustaba escribir programas, y por eso, cuando estaba trabajando en el IBM 701 escribiendo programas para computar trayectorias de misiles, comencé el trabajo sobre un sistema de programación para hacer más fácil escribir programas".[|[6]] El lenguaje fue ampliamente adoptado por los científicos para escribir programas numéricamente intensivos, que incentivó a los escritores de compiladores a producir compiladores que pudieran generar un código más rápido y más eficiente. La inclusión en el lenguaje de un [|tipo de datos] y de la aritmética de [|números complejos] amplió la gama de aplicaciones para las cuales el lenguaje se adaptaba especialmente e hizo al FORTRAN especialmente adecuado para aplicaciones técnicas tales como la ingeniería eléctrica. Por 1960, las versiones de FORTRAN estaban disponibles para los computadors IBM [|709], [|650], [|1620], y [|7090]. Significativamente, la cada vez mayor popularidad del FORTRAN estimuló a fabricantes de computadores de la competencia a proporcionar compiladores FORTRAN para sus máquinas, así que por 1963 existían más de 40 compiladores FORTRAN. Por estas razones, el FORTRAN es considerado ser el primer lenguaje de programación ampliamente usado soportado a través de una variedad de arquitecturas de computador. El desarrollo del FORTRAN fue paralelo a la temprana evolución de la tecnología del compilador. De hecho, muchos avances en la teoría y el diseño de compiladores fueron motivados específicamente por la necesidad de generar código eficiente para los programas en FORTRAN.

COBOL El [|lenguaje] **COBOL** ([|acrónimo] de //**CO**mmon **B**usiness -**O**riented **L**anguage//, //Lenguaje Común Orientado a Negocios//) fue creado en el año 1960 con el objetivo de crear un [|lenguaje de programación] universal que pudiera ser usado en cualquier ordenador, ya que en los [|años 1960] existían numerosos modelos de ordenadores incompatibles entre sí, y que estuviera orientado principalmente a los negocios, es decir, a la llamada [|informática de gestión].

En la creación de este lenguaje participó la comisión [|CODASYL], compuesta por fabricantes de ordenadores, usuarios y el [|Departamento de Defensa de Estados Unidos] en mayo de [|1959]. La definición del lenguaje se completó en poco más de seis meses, siendo aprobada por la comisión en enero de [|1960]. El lenguaje COBOL fue diseñado inspirándose en el lenguaje [|Flow-Matic] de [|Grace Hopper] y el [|IBM COMTRAN] de [|Bob Bemer], ya que ambos formaron parte de la comisión. Gracias a la ayuda de los usuarios COBOL evolucionó rápidamente y fue revisado de [|1961] a [|1965] para añadirle nuevas funcionalidades. En [|1968] salió la primera versión [|ANSI] del lenguaje, siendo revisada posteriormente en [|1974] (COBOL ANS-74), [|1985] (COBOL ANS-85, ampliado en 1989 con funciones matemáticas, finalizando el estándar actual más usado, conocido como COBOL-ANSI), y en [|2002] (COBOL ANS-2002). Desde el año [|2007] se viene preparando una nueva revisión del lenguaje. Además, existe una versión conocida como COBOL ENTERPRISE, actualizada regularmente y lanzada en [|1991], usada generalmente en sistemas Host.]]

[[|editar]] Características
Pese a esto, a comienzos de los ochenta se fue quedando anticuado respecto a los nuevos [|paradigmas de programación] y a los lenguajes que los implementaban. En la revisión de 1985 se solucionó, incorporando a COBOL variables locales, recursividad, reserva de memoria dinámica y programación estructurada. En la revisión de 2002 se le añadió orientación a objetos, aunque desde la revisión de 1974 se podía crear un entorno de trabajo similar a la orientación a objetos, y un método de generación de pantallas gráficas estandarizado. Antes de la inclusión de las nuevas características en el estándar oficial, muchos fabricantes de compiladores las añadían de forma no estándar. En la actualidad este proceso se está viendo con la integración de COBOL con Internet. Existen varios compiladores que permiten emplear COBOL como [|lenguaje de scripting] y de [|servicio web]. También existen compiladores que permiten generar código COBOL para la plataforma [|.NET] y [|EJB].
 * COBOL fue dotado de unas excelentes capacidades de autodocumentación
 * Una buena gestión de archivos y una excelente gestión de los tipos de datos para la época, a través de la conocida sentencia PICTURE para la definición de campos estructurados. Para evitar errores de redondeo en los cálculos que se producen al convertir los números a binario y que son inaceptables en temas comerciales, COBOL puede emplear y emplea por defecto números en [|base diez]. Para facilitar la creación de programas en COBOL, la sintaxis del mismo fue creada de forma que fuese parecida al idioma inglés, evitando el uso de símbolos que se impusieron en lenguajes de programación posteriores.

[[|editar]] Programa [|Hola mundo]
code IDENTIFICATION DIVISION. PROGRAM-ID. Saludos. *     ENVIRONMENT DIVISION. *     DATA DIVISION. WORKING-STORAGE SECTION. *     PROCEDURE DIVISION. INICIO. DISPLAY "Hola mundo-". STOP RUN.

code

[[|editar]] Empleo
Pese a que muchas personas creen que el lenguaje COBOL está en desuso, la realidad es que casi todos los sistemas que requieren gran capacidad de [|procesamiento por lotes] (Batch), tanto las entidades bancarias como otras grandes empresas con sistemas //[|mainframes]// utilizan COBOL. Esto permite garantizar la compatibilidad de los sistemas antiguos con los más modernos, así como tener la seguridad de que el lenguaje es perfectamente estable y probado. Según un informe de [|Gartner Group] de 2005, el 75% de los datos generados por negocios son procesados por programas creados en COBOL, y en otro informe de 1997 estima que el 80% de los 300.000 millones de líneas de código existentes están creados en COBOL, escribiéndose 5.000 millones de líneas nuevas de COBOL cada año. Con todo eso, hoy por hoy, la programación en COBOL es uno de los negocios más rentables del mundo de la informática. En sistemas PC el COBOL ha caído en desuso, remplazado por sistemas de programación visuales.

LENGUAJE ENSAMBLADOR

El **lenguaje Assembly** (a veces mal llamado "Ensamblador" por su traducción literal al español) es un tipo de [|lenguaje de bajo nivel] utilizado para escribir [|programas informáticos], y constituye la representación más directa del [|código máquina] específico para cada [|arquitectura de computadoras] legible por un programador. Fue usado principalmente en los inicios del desarrollo de [|software], cuando aún no se contaba con los potentes lenguajes de alto nivel. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de [|hardware], se pretenden altos rendimientos o un uso de recursos controlado y reducido. Aunque a veces suele usarse el nombre "Ensamblador" en realidad este nombre corresponde al programa que realiza la interpretación del código en Assembly y genera el código máquina adecuado. Dado que Assembly es un nombre propio, no debería traducirse. Muchos dispositivos programables (como los microcontroladores) aun cuentan con el lenguaje Assembly como la única manera de ser manipulados.

Características
 * El código escrito en lenguaje Assembly posee una cierta dificultad de ser entendido directamente por un ser humano ya que su estructura se acerca más bien al lenguaje máquina, es decir, lenguaje de bajo nivel.
 * El lenguaje Assembly es difícilmente portable, es decir, un código escrito para un microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para poder ser usado en otra máquina distinta, aun con el mismo microprocesador.
 * Los programas hechos en lenguaje Assembly son generalmente más rápidos y consumen menos recursos del sistema (memoria RAM y ROM). Al programar cuidadosamente en lenguaje Assembly se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel.
 * Con el lenguaje Assembly se tiene un control muy preciso de las tareas realizadas por un [|microprocesador] por lo que se pueden crear segmentos de código difíciles de programar en un lenguaje de alto nivel.
 * También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interumpa durante su ejecución.

[[|editar]] Ensambladores
Un [|ensamblador] (//assembler// en inglés) es un programa que crea [|código objeto] traduciendo instrucciones [|mnemónicas] de un programa fuente escrito en Assembly a códigos ejecutables e interpretando los nombres simbólicos para direcciones de memoria y otras entidades (ensamblado). El uso de referencias simbólicas es una característica básica del lenguaje Assembly, evitando tediosos cálculos y direccionamiento manual después de cada modificación del programa. La mayoría de los ensambladores también incluyen facilidades para crear [|macros], a fin de generar series de instrucciones cortas que se ejecutan en tiempo real, que insertan el código de la macro, en dicha posición, en lugar de utilizar subrutinas.[|[1]] Los ensambladores han estado disponibles desde la década de [|1950]. Los ensambladores modernos, especialmente para arquitecturas basadas en [|RISC] que pueden ejecutar varias instrucciones simultáneamente, como por ejemplo [|MIPS], [|SPARC] y [|PA-RISC] optimizan las instrucciones para explotar al máximo la eficiencia de [|segmentación][|[2]] de la [|CPU]. En los [|compilador] para lenguajes de alto nivel, son el último paso antes de generar el código ejecutable. Los ensambladores avanzados ofrecen posibilidades de abstracción que incluyen:
 * Control avanzado de estructuras.
 * Procedimientos de alto nivel, declaración de funciones.
 * Tipos de datos que incluyen estructuras, registros, uniones, clases y conjuntos.
 * Sofisticado procesamiento de macros.

[[|editar]] Lenguaje
Un programa escrito en lenguaje Assembly consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables que pueden ser cargadas en la memoria de un sistema basado en microprocesador. Por ejemplo, un procesador [|x86] puede ejecutar la siguiente instrucción [|binaria] como se expresa en código de máquina: La representación equivalente en lenguaje Assembly es más fácil de recordar: Esta instrucción significa: El mnemónico "mov" es un //código de operación// u "[|opcode]", elegido por los diseñadores de la colección de instrucciones para abreviar "move" (mover, pero en el sentido de copiar valores de un sitio a otro). El //opcode// es seguido por una lista de argumentos o //parámetros//, completando una instrucción de Assembly típica. La transformación del lenguaje Assembly en código máquina la realiza un programa Ensamblador, y la traducción inversa la puede efectuar un desensamblador. A diferencia de los lenguajes de alto nivel, aquí hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del Assembly y el lenguaje de máquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se expanden en un código de máquina más extenso a fin de proveer la funcionalidad necesaria. Por ejemplo, para un código máquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudoinstrucción al grupo "haga si menor que" , y "si = 0" sobre el resultado de la condición anterior. Los Ensambladores más completos también proveen un rico lenguaje de macros que se utiliza para generar código más complejo y secuencias de datos. El uso del ensamblador no resuelve definitivamente el problema de cómo programar un sistema basado en microprocesador de modo sencillo ya que para hacer un uso eficiente del mismo, hay que conocer a fondo el [|microprocesador], los registros de trabajo de que dispone, la estructura de la memoria, y muchas cosas más referentes a su estructura básica de funcionamiento. Cada [|arquitectura de microprocesadores] tiene su propio lenguaje de máquina, y en consecuencia su propio lenguaje Assembly, ya que este se encuentra muy ligado a la estructura del hardware para el cual se programa, muchas veces dentro de una misma familia de microprocesadores/microcontroladores, la estructura y sintaxis general del Assembly se mantiene, es posible encontrar también similitudes entre lenguajes Assembly de microprocesadores de distintos fabricantes. Los microprocesadores difieren en el tipo y número de operaciones que soportan; también pueden tener diferente cantidad de registros, y distinta representación de los tipos de datos en memoria. Aunque la mayoría de los microprocesadores son capaces de cumplir esencialmente las mismas funciones, la forma en que lo hacen difiere y los respectivos lenguajes Assembly reflejan tal diferencia. Pueden existir múltiples conjuntos de mnemónicos o [|sintáxis] de lenguaje Assembly para un mismo conjunto de instrucciones, instanciados típicamente en diferentes programas en Assembly. En estos casos, la alternativa más popular es la provista por los fabricantes, y usada en los manuales del programa.
 * Binario: 10110000 01100001 (Hexadecimal: 0xb061)
 * MOV al, 061h
 * Asigna el valor [|hexadecimal] 61 (97 [|decimal]) al registro "al".

[[|editar]] Código máquina
El código máquina, o [|lenguaje de máquina], está formado por instrucciones sencillas, que -dependiendo de la estructura del procesador- pueden especificar: Las operaciones más complejas se realizan combinando estas instrucciones sencillas, que pueden ser ejecutadas secuencialmente o mediante instrucciones de control de flujo. Las operaciones disponibles en la mayoría de los conjuntos de instrucciones incluye: Algunas computadoras incluyen instrucciones complejas dentro de sus capacidades. Una sola instrucción compleja hace lo mismo que en otras computadoras puede requerir una larga serie de instrucciones, por ejemplo: Mientras que una computadora reconoce la [|instrucción de máquina] IA-32 code 10110000 01100001
 * Registros específicos para operaciones aritméticas, direccionamiento o control de funciones.
 * Posiciones de memoria específicas (//offset//).
 * Modos de direccionamiento usados para interpretar operandos.
 * mover
 * llenar un registro con un valor constante
 * mover datos de una posición de memoria a un registro o viceversa
 * escribir y leer datos de dispositivos
 * computar
 * sumar, restar, multiplicar o dividir los valores de dos registros, colocando el resultado en uno de ellos o en otro registro
 * realizar operaciones binarias, incluyendo operaciones lógicas (AND/OR/XOR/NOT)
 * comparar valores entre registros (mayor, menor, igual)
 * afectar el flujo del programa
 * saltar a otra posición en el programa y ejecutar instrucciones allí
 * saltar si se cumplen ciertas condiciones (IF)
 * saltar a otra posición, pero guardar el punto de salida para retornar (CALL, llamada a subrutinas)
 * salvar varios registros en la [|pila] de una sola vez
 * mover grandes bloques de memoria
 * operaciones aritméticas complejas o de punto flotante ([|seno], [|coseno], [|raíz cuadrada])

code para los [|programadores] de microprocesadores [|x86] es mucho más fácil reconocer dicha instrucción empleando lenguaje Assembly: code format="de1" movb 0x61  ,%   al

code Este código mueve el valor [|hexadecimal] 61 (97 en [|decimal]) al [|registro] 'al'.

Ejemplo 1
El siguiente es un ejemplo del programa clásico //[|Hola mundo]// escrito para la arquitectura de procesador [|x86] (bajo el sistema operativo [|DOS]). code format="de1" **.model** small **.stack** **.data** Cadena1 **DB** 'Hola Mundo.$' **.code**

programa : ** mov ** ax  ,  @ **data** ** mov ** ds  ,   ax      ** mov **  dx   ,  **offset** Cadena1 ** mov ** ah  ,  9 ** int ** 21h ** int ** 20h **end** programa

code





ISRAEL HERNANDEZ GARCIA. **
 * HISTORIA DE LOS ORDENADORES **


 * DEFINICION **

La palabra española //ordenador// proviene del término francés //ordinateur//, en referencia a Dios que pone orden en el mundo ("Dieu qui met de l'ordre dans le monde"). [ En parte por cuestiones de marketing, puesto que la descripción realizada por IBM para su introducción en Francia en 1954 situaba las capacidades de actuación de la máquina cerca de la omnipotencia, idea equivocada que perdura hoy en día al considerar que la máquina universal de Turing es capaz de computar absolutamente todo. [ En 1984, académicos franceses reconocieron, en el debate //"Les jeunes, la technique et nous"//, que el uso de este sustantivo es incorrecto, porque la función de un PC es procesar datos, no dar órdenes. [ Mientras que otros, como el catedrático de filología latina Jacques Perret, conocedores del origen religioso del término, lo consideran más correcto que las alternativas [. El uso de la palabra //ordinateur// se ha exportado a algunos idiomas de la península Ibérica, como el aragonés , el castellano , el catalán y el euskera. El español que se habla en Iberoamérica así como los demás idiomas europeos, como el portugués, el alemán y el holandés, utilizan derivados del término //computare//.


 * HISTORIA **

Mientras que ahora los ordenadores son una parte importante en la vida de los seres humanos, hubo un tiempo donde los ordenadores no existían. Conociendo la historia de los ordenadores y los progresos que se han hecho, nos puede hacer comprender lo complicado e innovador que supuso la entrada de esta tecnología en nuestra existencia. Al contrario que la mayoría de los dispositivos, las computadoras son uno de esos inventos que no tienen un creador específico. Muchas personas han ido añadiendo sus creaciones a la lista de requerimientos para hacer funcionar un ordenador. Quizás el año más significativo en la historia de los ordenadores fue el año 1936. Fue el año donde el primer “computador” fue desarrollado. Honrad Zuse fue el creador con su Z1. El Z1 se considera el primer ordenador ya que era el primer sistema totalmente programable. Había otros dispositivos antes que este pero ninguno con la capacidad de computación de este equipo. No fue hasta 1942 que alguna empresa viera posibles beneficios y oportunidades los ordenadores. La primera compañía se llamó “//ABC Computers//” perteneciente a John Atanasoff y Clifford Berry. Dos años después, el ordenador “//Harvard Mark I//” fue desarrollado llevando más allá la tecnología de los ordenadores.
 * El comienzo**

Durante el curso de los siguientes años, inventores por todo el mundo empezaron a investigar el mundo de las computadoras y como mejorarlas. Los 10 años siguientes vieron nacer el transistor, que se convertiría en parte vital de la electrónica que compone un ordenador. Por aquel entonces existía la ENIAC 1, la cual requería de 20,000 válvulas para operar. Era una máquina de gran tamaño y empezó la revolución para construir ordenadores mas pequeños y rápidos.

. Primera generación Con el UNIVAC-1 se comienza la primera generación. En esta etapa se caracterizan por el empleo de tubos de vacío en su circuito. Son enormes y pesados y con alto consumo y muy limitadas.
 * GENERACIONES DE LOS ORDENADORES **

Segunda generación Desde 1958 con las máquinas de circuitos transistorizados como elemento electrónico reemplazando al tubo. Mucho menor consumo y tamaño mucho menor y aumento de fiabilidad. Ya trabajan con los llamados leguajes de programación.



Tercera generación En 1964 IBM 360 cuyas placas de circuito impreso se reemplazan por circuitos integrados que son placas de de silicio que reciben el nombre de chips, lo que permite reducir aún más el tamaño y reducir aún más el consumo y aumentar la fiabilidad. Ya se trabaja con multiprogramación y el teleproceso y lenguajes de alta programación como Cobol y Fortran.

Cuarta generación Comienza en la década de los 60`s con la utilización de memorias electrónicas en vez de núcleos de ferrita, con lo que aumentamos la velocidad y volvemos a reducir el tamaño. Un solo chip de silicio de un centímetro cuadrado almacena 64.000 bits de información. Procesamiento en tiempo real y proceso interactivo y gran capacidad de memoria.

Quinta generación Primera generación Con el UNIVAC-1 se comienza la primera generación. En esta etapa se caracterizan por el empleo de tubos de vacío en su circuito. Son enormes y pesados y con alto consumo y muy limitadas.



A finales de los 70`s con la aparición de los microcomputadores y los ordenadores de uso personal comienza esta generación. Utilizan un microprocesador circuito integrado que admite en un sólo chip de silicio las principales funciones de un ordenador. Los microcomputadores actuales pueden tener entre 4Mb y 32Mb de memoria con capacidades del orden de varios Gigabytes y pueden permitir la utilización simultánea del equipo por varios usuarios. Y seguimos avanzando…


 * ISRAEL HERNÁNDEZ GARCÍA **
 * Lenguaje de máquina **
 * Lenguaje de máquina ** es el sistema de códigos directamente interpretable por un circuito microprogramable, como el microprocesador de una computadora o el microcontrolador de un autómata (un PLC) . Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la máquina. Un programa de computadora consiste en una cadena de estas instrucciones de lenguaje de máquina (más los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de máquina es específico de cada máquina o arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas.

Lenguaje de máquina del Intel 8088. El código de máquina se resalta en rojo, el equivalente en lenguaje assembler en magenta, y las direcciones de memoria donde se encuentra el código, en azul. Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan con dos únicos niveles de tensión. Dichos niveles, por abstracción, se simbolizan con el cero, 0, y el uno, 1, por eso el lenguaje de máquina sólo utiliza dichos signos. Esto permite el empleo de las teorías del álgebra booleana y del sistema binario en el diseño de este tipo de circuitos y en su programación.

Una visión típica de la arquitectura de computadores como una serie de capas de abstracción: hardware, firmware , ensamblador , kernel , sistema operativo y aplicaciones. Claude Elwood Shannon, en su //Analysis of Relay and Switching Circuits//, y con sus experiencias en redes de conmutación, sentó las bases para la aplicación del álgebra de Boole a las redes de conmutación. Una red de conmutación es un circuito de interruptores eléctricos que al cumplir ciertas combinaciones booleanas con las variables de entrada, define el estado de la salida. Este concepto es el núcleo de las puertas lógicas, las cuales son, por su parte, los ladrillos con que se construyen sistemas lógicos cada vez más complejos. Shannon utilizaba el relé como dispositivo físico de conmutación en sus redes. El relé, a igual que una lámpara eléctrica, posee dos estados: 1 ó 0, esto es, está activado, encendida, o está desactivado, apagada. El desarrollo tecnológico ha permitido evolucionar desde las redes de relés electromagnéticos de Shannon a circuitos con tubos de vacío, luego a redes transistorizadas, hasta llegar a los modernos circuitos integrados cuyas cúspide lo forman los circuitos microprogramados.

El **lenguaje Assembly** (a veces mal llamado "Ensamblador" por su traducción literal al español) es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador. Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se contaba con los potentes lenguajes de alto nivel. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de hardware, se pretenden altos rendimientos o un uso de recursos controlado y reducido. Aunque a veces suele usarse el nombre "Ensamblador" en realidad este nombre corresponde al programa que realiza la interpretación del código en Assembly y genera el código máquina adecuado. Dado que Assembly es un nombre propio, no debería traducirse. Muchos dispositivos programables (como los microcontroladores) aun cuentan con el lenguaje Assembly como la única manera de ser manipulados.
 * LENGUAJE ENSAMBLADOR **

// Características //

 * El código escrito en lenguaje Assembly posee una cierta dificultad de ser entendido directamente por un ser humano ya que su estructura se acerca más bien al lenguaje máquina, es decir, lenguaje de bajo nivel.
 * El lenguaje Assembly es difícilmente portable, es decir, un código escrito para un microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para poder ser usado en otra máquina distinta, aun con el mismo microprocesador.
 * Los programas hechos en lenguaje Assembly son generalmente más rápidos y consumen menos recursos del sistema (memoria RAM y ROM). Al programar cuidadosamente en lenguaje Assembly se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel.
 * Con el lenguaje Assembly se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de código difíciles de programar en un lenguaje de alto nivel.
 * También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interumpa durante su ejecución.

// Ensambladores //
Un ensamblador (//assembler// en inglés) es un programa que crea código objeto traduciendo instrucciones mnemónicas de un programa fuente escrito en Assembly a códigos ejecutables e interpretando los nombres simbólicos para direcciones de memoria y otras entidades (ensamblado). El uso de referencias simbólicas es una característica básica del lenguaje Assembly, evitando tediosos cálculos y direccionamiento manual después de cada modificación del programa. La mayoría de los ensambladores también incluyen facilidades para crear macros, a fin de generar series de instrucciones cortas que se ejecutan en tiempo real, que insertan el código de la macro, en dicha posición, en lugar de utilizar subrutinas. Los ensambladores han estado disponibles desde la década de 1950. Los ensambladores modernos, especialmente para arquitecturas basadas en RISC que pueden ejecutar varias instrucciones simultáneamente, como por ejemplo MIPS, SPARC y PA-RISC optimizan las instrucciones para explotar al máximo la eficiencia de segmentación de la CPU. En los compilador para lenguajes de alto nivel, son el último paso antes de generar el código ejecutable. Los ensambladores avanzados ofrecen posibilidades de abstracción que incluyen:
 * Control avanzado de estructuras.
 * Procedimientos de alto nivel, declaración de funciones.
 * Tipos de datos que incluyen estructuras, registros, uniones, clases y conjuntos.
 * Sofisticado procesamiento de macros.

// Lenguaje //
Un programa escrito en lenguaje Assembly consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables que pueden ser cargadas en la memoria de un sistema basado en microprocesador. Por ejemplo, un procesador x86 puede ejecutar la siguiente instrucción binaria como se expresa en código de máquina: La representación equivalente en lenguaje Assembly es más fácil de recordar: Esta instrucción significa: El mnemónico "mov" es un //código de operación// u " opcode ", elegido por los diseñadores de la colección de instrucciones para abreviar "move" (mover, pero en el sentido de copiar valores de un sitio a otro). El //opcode// es seguido por una lista de argumentos o //parámetros//, completando una instrucción de Assembly típica. La transformación del lenguaje Assembly en código máquina la realiza un programa Ensamblador, y la traducción inversa la puede efectuar un desensamblador. A diferencia de los lenguajes de alto nivel, aquí hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del Assembly y el lenguaje de máquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se expanden en un código de máquina más extenso a fin de proveer la funcionalidad necesaria. Por ejemplo, para un código máquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudoinstrucción al grupo "haga si menor que" , y "si = 0" sobre el resultado de la condición anterior. Los Ensambladores más completos también proveen un rico lenguaje de macros que se utiliza para generar código más complejo y secuencias de datos. El uso del ensamblador no resuelve definitivamente el problema de cómo programar un sistema basado en microprocesador de modo sencillo ya que para hacer un uso eficiente del mismo, hay que conocer a fondo el microprocesador, los registros de trabajo de que dispone, la estructura de la memoria, y muchas cosas más referentes a su estructura básica de funcionamiento. Cada arquitectura de microprocesadores tiene su propio lenguaje de máquina, y en consecuencia su propio lenguaje Assembly, ya que este se encuentra muy ligado a la estructura del hardware para el cual se programa, muchas veces dentro de una misma familia de microprocesadores/microcontroladores, la estructura y sintaxis general del Assembly se mantiene, es posible encontrar también similitudes entre lenguajes Assembly de microprocesadores de distintos fabricantes. Los microprocesadores difieren en el tipo y número de operaciones que soportan; también pueden tener diferente cantidad de registros, y distinta representación de los tipos de datos en memoria. Aunque la mayoría de los microprocesadores son capaces de cumplir esencialmente las mismas funciones, la forma en que lo hacen difiere y los respectivos lenguajes Assembly reflejan tal diferencia. Pueden existir múltiples conjuntos de mnemónicos o sintáxis de lenguaje Assembly para un mismo conjunto de instrucciones, instanciados típicamente en diferentes programas en Assembly. En estos casos, la alternativa más popular es la provista por los fabricantes, y usada en los manuales del programa.
 * Binario: 10110000 01100001 (Hexadecimal: 0xb061)
 * MOV al, 061h
 * Asigna el valor hexadecimal 61 (97 decimal ) al registro "al".


 * ISRAEL HERNANDEZ GARCIA **
 * EJEMPLO DE LENGUAJE MAQUINA **

Es la lengua nativa de la CPU. Cada diseño de CPU tiene su propio **lenguaje de máquina.** Este es el juego de instrucciones que usa el chip para sí mismo. Está hecho de ceros y unos (números binarios) y resulta muy difícil para el trabajo de la gente. code 10 23 11  FF 12  12 13 10 14  50 15  23 16  30 17  40 18  C0 19  00

code || El **lenguaje de máquina** parece compuesto de números solamente. En el segmento de un programa que vemos a la izquierda, la primer columna le dice a la computadora dónde llenar su memoria y en la segunda columna sobre una base **hexadecimal** (base 16) figuran los valores que debe poner en dichas locaciones de las memorias. //Para más información sobre números hexadecimal, vea Aritmética de Base.// ||

Otro ejemplo de **lenguaje de máquina** es el siguiente: El segmento de código en lenguaje **Java** es: code int counter = 0; counter = counter + 1; code podría ser trasladado en lenguaje de máquina como code 000101000100010001000100001000101010111110 000001110101000111110000100010000010101010 code ||


 * ISRAEL HERNANDEZ GARCIA **

EJEMPLO LENGUAJE ENSAMBLADOR En esta parte se describe lo que //es// el __lenguaje ensamblador__, no al ensamblador o al proceso de ensamblado. Aquí se tratará todo lo concerniente con el lenguaje ensamblador y el conjunto de directivas del Microsoft Macro Assembler v4.0. Si bien esto puede resultar bastante extenso y complejo, aquí sólo se describirán las instrucciones y directivas básicas.

Para comenzar veamos un pequeño ejemplo que ilustra el formato del programa fuente. Este ejemplo está completamente desarrollado en lenguaje ensamblador que usa servicios o funciones de MS-DOS (//system calls//) para imprimir el mensaje **Hola mundo!!** en pantalla.

STACK SEGMENT STACK ; Segmento de pila DW 64 DUP (?) ; Define espacio en la pila STACK ENDS
 * HOLA.ASM
 * Programa clasico de ejemplo. Despliega una leyenda en pantalla.

DATA SEGMENT ; Segmento de datos SALUDO DB "Hola mundo!!",13,10,"$" ; Cadena DATA ENDS

CODE SEGMENT ; Segmento de Codigo ASSUME CS:CODE, DS:DATA, SS:STACK

INICIO: ; Punto de entrada al programa MOV AX,DATA ; Pone direccion en AX MOV DS,AX ; Pone la direccion en los registros MOV DX,OFFSET SALUDO ; Obtiene direccion del mensaje MOV AH,09H ; Funcion: Visualizar cadena INT 21H ; Servicio: Funciones alto nivel DOS MOV AH,4CH ; Funcion: Terminar INT 21H

CODE ENDS END INICIO ; Marca fin y define INICIO

La descripción del programa es como sigue:

1.- Las declaraciones **SEGMENT** y **ENDS** definen los segmentos a usar.

2.- La variable **SALUDO** en el segmento **DATA**, define la cadena a ser desplegada. El signo de dólares al final de la cadena (denominado //centinela//) es requerido por la función de visualización de la cadena de MS-DOS. La cadena incluye los códigos para //carriage-return// y //line-feed//.

3.- La etiqueta **START** en el segmento de código marca el inicio de las instrucciones del programa.

4.- La declaración **DW** en el segmento de pila define el espacio para ser usado por el stack del programa.

5.- La declaración **ASSUME** indica que registros de segmento se asociarán con las etiquetas declaradas en las definiciones de segmentos.

6.- Las primeras dos instrucciones cargan la dirección del segmento de datos en el registro **DS**. Estas instrucciones no son necesarias para los segmentos de código y stack puesto que la dirección del segmento de código siempre es cargado en el registro **CS** y la dirección de la declaración del stack segment es automáticamente cargada en el registro **SS**.

7.- Las últimas dos instrucciones del segmento **CODE** usa la función **4CH** de MS-DOS para regresar el control al sistema operativo. Existen muchas otras formas de hacer esto, pero ésta es la más recomendada.

8.- La directiva **END** indica el final del código fuente y especifica a **START** como punto de arranque.


 * ISRAEL HERNANDEZ GARCIA **
 * FORTRAN **

El **Fortran** (previamente **FORTRAN**) [ (del inglés **//For//**//mula **Tran**slating System//) es un lenguaje de programación alto nivel de propósito general, [ procedurimental e imperativo, que está especialmente adaptado al cálculo numérico y a la computación científica. Desarrollado originalmente por IBM en 1957 para el equipo IBM 704, y usado para aplicaciones científicas y de ingeniería, el FORTRAN vino a dominar esta área de la programación desde el principio y ha estado en uso continuo por más de medio siglo en áreas de cómputo intensivo tales como la predicción numérica del tiempo análisis de elementos finitos , dinámica de fluidos computacional (CFD), física computacional , y química computacional. Es una de los lenguajes más populares en el área de la computación de alto rendimiento y es el lenguaje usado para programas que evalúan el desempeño ( benchmark ) y el ranking de los supercomputadores más rápidos del mundo] El FORTRAN (una palabra compuesta, derivada de //The IBM Mathematical **For**mula **Tran**slating System//) abarca un linaje de versiones, cada una de las cuales evolucionó para añadir extensiones al lenguaje mientras que usualmente retenía compatibilidad con las versiones previas. Versiones sucesivas han añadido soporte para procesamiento de datos basados en caracteres (FORTRAN 77), programación de arreglos, programación modular y programación orientada a objetos (Fortran 90/95), y programación genérica (Fortran 2003). A finales de 1956, John W. Backus sometió una propuesta a sus superiores en IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para programar el computador central IBM 704. El histórico equipo FORTRAN de Backus consistió en los programadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt y David Sayre. [ A mediados de 1954 fue terminada una especificación del borrador para //The IBM Mathematical Formula Translating System//. El primer manual para el FORTRAN apareció en octubre de 1956, porque los clientes eran reacios a usar un lenguaje de programación de alto nivel a menos que su compilador pudiera generar código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje ensamblador. Mientras que la comunidad era escéptica en que este nuevo método pudiera posiblemente superar la codificación a mano, éste redujo por un factor de 20 al número de sentencias de programación necesarias para operar una máquina, y rápidamente ganó aceptación. Durante una entrevista en 1979 con Think, la revista de los empleados de IBM, el creador, John Backus, dijo, "Mucho de mi trabajo ha venido de ser perezoso. No me gustaba escribir programas, y por eso, cuando estaba trabajando en el IBM 701 escribiendo programas para computar trayectorias de misiles, comencé el trabajo sobre un sistema de programación para hacer más fácil escribir programas". [|[] 6 El lenguaje fue ampliamente adoptado por los científicos para escribir programas numéricamente intensivos, que incentivó a los escritores de compiladores a producir compiladores que pudieran generar un código más rápido y más eficiente. La inclusión en el lenguaje de un tipo de datos y de la aritmética de números complejos amplió la gama de aplicaciones para las cuales el lenguaje se adaptaba especialmente e hizo al FORTRAN especialmente adecuado para aplicaciones técnicas tales como la ingeniería eléctrica. Por 1960, las versiones de FORTRAN estaban disponibles para los computadors IBM 709, 650 , 1620 , y 7090. Significativamente, la cada vez mayor popularidad del FORTRAN estimuló a fabricantes de computadores de la competencia a proporcionar compiladores FORTRAN para sus máquinas, así que por 1963 existían más de 40 compiladores FORTRAN. Por estas razones, el FORTRAN es considerado ser el primer lenguaje de programación ampliamente usado soportado a través de una variedad de arquitecturas de computador. El desarrollo del FORTRAN fue paralelo a la temprana evolución de la tecnología del compilador. De hecho, muchos avances en la teoría y el diseño de compiladores fueron motivados específicamente por la necesidad de generar código eficiente para los programas en FORTRAN

El lenguaje **COBOL** ( acrónimo de **//CO//**//mmon **B**usiness -**O**riented **L**anguage//, //Lenguaje Común Orientado a Negocios//) fue creado en el año 1960 con el objetivo de crear un lenguaje de programación universal que pudiera ser usado en cualquier ordenador, ya que en los años 1960 existían numerosos modelos de ordenadores incompatibles entre sí, y que estuviera orientado principalmente a los negocios, es decir, a la llamada informática de gestión.
 * ISRAEL HERNANDEZ GARCIA **
 * COBOL **

// Historia //
En la creación de este lenguaje participó la comisión CODASYL, compuesta por fabricantes de ordenadores, usuarios y el Departamento de Defensa de Estados Unidos en mayo de 1959. La definición del lenguaje se completó en poco más de seis meses, siendo aprobada por la comisión en enero de 1960. El lenguaje COBOL fue diseñado inspirándose en el lenguaje Flow-Matic de Grace Hopper y el IBM COMTRAN de Bob Bemer, ya que ambos formaron parte de la comisión. Gracias a la ayuda de los usuarios COBOL evolucionó rápidamente y fue revisado de 1961 a 1965 para añadirle nuevas funcionalidades. En 1968 salió la primera versión ANSI del lenguaje, siendo revisada posteriormente en 1974 (COBOL ANS-74), 1985 (COBOL ANS-85, ampliado en 1989 con funciones matemáticas, finalizando el estándar actual más usado, conocido como COBOL-ANSI), y en 2002 (COBOL ANS-2002). Desde el año 2007 se viene preparando una nueva revisión del lenguaje. Además, existe una versión conocida como COBOL ENTERPRISE, actualizada regularmente y lanzada en 1991, usada generalmente en sistemas Host.]]

// Características //
Pese a esto, a comienzos de los ochenta se fue quedando anticuado respecto a los nuevos paradigmas de programación y a los lenguajes que los implementaban. En la revisión de 1985 se solucionó, incorporando a COBOL variables locales, recursividad, reserva de memoria dinámica y programación estructurada. En la revisión de 2002 se le añadió orientación a objetos, aunque desde la revisión de 1974 se podía crear un entorno de trabajo similar a la orientación a objetos, y un método de generación de pantallas gráficas estandarizado. Antes de la inclusión de las nuevas características en el estándar oficial, muchos fabricantes de compiladores las añadían de forma no estándar. En la actualidad este proceso se está viendo con la integración de COBOL con Internet. Existen varios compiladores que permiten emplear COBOL como lenguaje de scripting y de servicio web. También existen compiladores que permiten generar código COBOL para la plataforma .NET y EJB.
 * COBOL fue dotado de unas excelentes capacidades de autodocumentación
 * Una buena gestión de archivos y una excelente gestión de los tipos de datos para la época, a través de la conocida sentencia PICTURE para la definición de campos estructurados. Para evitar errores de redondeo en los cálculos que se producen al convertir los números a binario y que son inaceptables en temas comerciales, COBOL puede emplear y emplea por defecto números en base diez . Para facilitar la creación de programas en COBOL, la sintaxis del mismo fue creada de forma que fuese parecida al idioma inglés, evitando el uso de símbolos que se impusieron en lenguajes de programación posteriores.

REFRENCIA:http://wese54.files.wordpress.com/2009/09/20080717132829-20060507213952-preguntas-ordenadores-22.jpg

.