Computadora
Definición
Computadoras y dispositivos informáticos de diferentes épocas |
Las computadoras se utilizan como sistemas de control para una amplia variedad de dispositivos industriales y de consumo. Esto incluye dispositivos simples de uso especial como hornos de microondas y controles remotos, dispositivos de fábrica como robots industriales y diseño asistido por computadora, y también dispositivos de uso general como computadoras personales y dispositivos móviles como teléfonos inteligentes.
Las primeras computadoras solo fueron concebidas como dispositivos de cálculo. Desde la antigüedad, los dispositivos manuales simples como el ábaco ayudaron a las personas a hacer cálculos. Al principio de la revolución industrial, se construyeron algunos dispositivos mecánicos para automatizar tareas largas y tediosas, como patrones de guía para telares. Las máquinas eléctricas más sofisticadas hicieron cálculos analógicos especializados a principios del siglo XX. Las primeras máquinas calculadoras electrónicas digitales se desarrollaron durante la Segunda Guerra Mundial. La velocidad, el poder y la versatilidad de las computadoras han aumentado dramáticamente desde entonces.
Convencionalmente, una computadora moderna consiste de al menos un elemento de procesamiento, típicamente una unidad de procesamiento central (CPU) y alguna forma de memoria. El elemento de procesamiento lleva a cabo operaciones aritméticas y lógicas, y una unidad de secuencia y control puede cambiar el orden de las operaciones en respuesta a la información almacenada. Los dispositivos periféricos incluyen dispositivos de entrada (teclados, mouse, joystick, etc.), dispositivos de salida (pantallas de monitor, impresoras, etc.) y dispositivos de entrada / salida que realizan ambas funciones (por ejemplo, la pantalla táctil de la década de 2000). Los dispositivos periféricos permiten recuperar información de una fuente externa y permiten que el resultado de las operaciones se guarde y recupere.
Etimología
De acuerdo con el Oxford English Dictionary , el primer uso conocido de la palabra "computadora" fue en 1613 en un libro llamado The Yong Mans Gleanings, del escritor inglés Richard Braithwait: "He leído la verdadera computadora de Times, y la mejor Aritmético que euer [sic] sopló, y reduce tus días a un número corto ". Este uso del término se refiere a una computadora humana, una persona que llevó a cabo cálculos o cálculos. La palabra continuó con el mismo significado hasta mediados del siglo XX. Desde finales del siglo XIX, la palabra comenzó a adquirir su significado más familiar, una máquina que realiza cálculos.
El Diccionario de Etimología en línea da el primer uso atestiguado de "computadora" en el "1640s, [significado]" que calcula, "; este es un" ... sustantivo agente de compute (v.) ". El Diccionario de Etimología en línea dice que el uso del término para significar "máquina calculadora" (de cualquier tipo) es de 1897. " El Diccionario de Etimología en línea indica que el "uso moderno" del término, que significa "computadora electrónica digital programable" data de "... 1945 bajo este nombre; [en un] [sentido] teórico de 1937, como máquina de Turing".
Historia
Antes del siglo XX
Los dispositivos se han utilizado para ayudar a la computación durante miles de años, en su mayoría utilizando correspondencia uno a uno con los dedos. El primer dispositivo de conteo fue probablemente una forma de conteo. Las ayudas de mantenimiento de registros posteriores a lo largo de la Media Luna Fértil incluían cálculos (esferas de arcilla, conos, etc.) que representaban los conteos de artículos, probablemente ganado o granos, sellados en recipientes huecos de arcilla sin hornear. El uso de conteo de varillas es un ejemplo.
El ábaco se usó inicialmente para tareas aritméticas. El ábaco romano fue desarrollado a partir de dispositivos utilizados en Babilonia ya en 2400 aC Desde entonces, se han inventado muchas otras formas de tablas o tablas de cálculo. En una casa de conteo medieval europea, se colocaría una tela a cuadros sobre una mesa, y los marcadores se movían alrededor según ciertas reglas, como una ayuda para calcular sumas de dinero.
Se cree que el mecanismo de Antikythera es la "computadora" análoga mecánica más antigua, según Derek J. de Solla Price. Fue diseñado para calcular posiciones astronómicas. Fue descubierto en 1901 en el naufragio de Antikythera frente a la isla griega de Antikythera, entre Kythera y Creta, y data del año 100 a. Los dispositivos de un nivel de complejidad comparable al del mecanismo de Antikythera no reaparecerían hasta mil años después.
Se construyeron muchas ayudas mecánicas para el cálculo y la medición para uso astronómico y de navegación. El planisferio era una carta de estrellas inventada por Abū Rayhān al-Bīrūnī a principios del siglo XI. El astrolabio fue inventado en el mundo helenístico ya sea en el siglo primero o segundo aC y con frecuencia se lo atribuye a Hiparco. Una combinación del planisferio y dioptra, el astrolabio era efectivamente una computadora analógica capaz de resolver varios tipos diferentes de problemas en la astronomía esférica. Un astrolabio que incorpora una computadora de calendario mecánico y ruedas dentadas fue inventado por Abi Bakr de Isfahán, Persia en 1235. Abū Rayhān al-Bīrūnī inventó el primer astrolabio de calendario lunisolar de engranaje mecánico, una temprana máquina de procesamiento de conocimiento con cable fijo y engranaje. Ruedas, circa 1000 AD.
El sector, un instrumento de cálculo utilizado para resolver problemas en proporción, trigonometría, multiplicación y división, y para diversas funciones, como cuadrados y raíces cúbicas, se desarrolló a fines del siglo XVI y encontró aplicación en artillería, topografía y navegación.
El planímetro era un instrumento manual para calcular el área de una figura cerrada trazando sobre ella con un enlace mecánico.
La regla de cálculo se inventó alrededor de 1620-1630, poco después de la publicación del concepto de logaritmo. Es una computadora analógica manual para hacer multiplicación y división. A medida que progresaba el desarrollo de las reglas de diapositivas, las escalas añadidas proporcionaban recíprocos, cuadrados y raíces cuadradas, cubos y raíces de cubos, así como funciones trascendentales como logaritmos y exponenciales, trigonometría circular e hiperbólica y otras funciones. Las reglas de diapositivas con escalas especiales todavía se usan para realizar rápidamente cálculos rutinarios, como la regla de cálculo circular E6B utilizada para cálculos de tiempo y distancia en aviones ligeros.
En la década de 1770 Pierre Jaquet-Droz, un relojero suizo, construyó una muñeca mecánica (autómata) que podía escribir sosteniendo una pluma. Al cambiar el número y el orden de sus ruedas internas, podrían producirse diferentes letras, y por lo tanto diferentes mensajes. En efecto, podría ser mecánicamente "programado" para leer las instrucciones. Junto con otras dos máquinas complejas, la muñeca está en el Museo de Arte e Historia de Neuchâtel, Suiza, y todavía funciona.
La máquina de predicción de mareas inventada por Sir William Thomson en 1872 fue de gran utilidad para la navegación en aguas poco profundas. Usó un sistema de poleas y cables para calcular automáticamente los niveles de marea pronosticados durante un período determinado en una ubicación particular.
El analizador diferencial, una computadora analógica mecánica diseñada para resolver ecuaciones diferenciales por integración, utilizó mecanismos de rueda y disco para realizar la integración. En 1876 Lord Kelvin ya había discutido la posible construcción de tales calculadoras, pero se había visto obstaculizado por el torque de salida limitado de los integradores de bola y disco. En un analizador diferencial, la salida de un integrador impulsó la entrada del siguiente integrador, o una salida de representación gráfica. El amplificador de torque fue el avance que permitió que estas máquinas funcionaran. A partir de la década de 1920, Vannevar Bush y otros desarrollaron analizadores mecánicos diferenciales.
Primer dispositivo informático
Charles Babbage, un ingeniero mecánico y polímata inglés, originó el concepto de una computadora programable. Considerado el "padre de la computadora", conceptualizó e inventó la primera computadora mecánica a principios del siglo XIX. Después de trabajar en su revolucionario motor de diferencia, diseñado para ayudar en los cálculos de navegación, en 1833 se dio cuenta de que era posible un diseño mucho más general, un motor analítico. La entrada de programas y datos debía proporcionarse a la máquina a través de tarjetas perforadas, un método que se utilizaba en ese momento para dirigir telares mecánicos, como el telar Jacquard. Para la salida, la máquina tendría una impresora, un trazador de curvas y una campana. La máquina también podría marcar números en tarjetas para leerlos más tarde. The Engine incorporó una unidad lógica aritmética,
La máquina estaba un siglo adelantada a su tiempo. Todas las piezas de su máquina tenían que estar hechas a mano: este era un problema importante para un dispositivo con miles de piezas. Eventualmente, el proyecto se disolvió con la decisión del gobierno británico de cesar el financiamiento. La falla de Babbage en completar el motor analítico puede atribuirse principalmente a las dificultades no solo de política y financiamiento, sino también a su deseo de desarrollar una computadora cada vez más sofisticada y avanzar más rápido de lo que nadie podría seguir. Sin embargo, su hijo, Henry Babbage, completó una versión simplificada de la unidad de computación del motor analítico (el molino ) en 1888. Dio una demostración exitosa de su uso en las tablas de informática en 1906.
Computadoras analógicas
Durante la primera mitad del siglo XX, muchas computaciones científicas se cubrieron con computadoras analógicas cada vez más sofisticadas, que utilizaron un modelo mecánico o eléctrico directo del problema como base para el cálculo. Sin embargo, estos no eran programables y generalmente carecían de la versatilidad y precisión de las computadoras digitales modernas. La primera computadora analógica moderna era una máquina de predicción de mareas, inventada por Sir William Thomsonin en 1872. El analizador diferencial, una computadora analógica mecánica diseñada para resolver ecuaciones diferenciales mediante la integración mediante mecanismos de rueda y disco, fue conceptualizada en 1876 por James Thomson, el hermano del más famoso Lord Kelvin.
El arte de la computación análoga mecánica alcanzó su apogeo con el analizador diferencial, construido por HL Hazen y Vannevar Bush en el MIT a partir de 1927. Esto se basó en los integradores mecánicos de James Thomson y los amplificadores de par inventados por HW Nieman. Una docena de estos dispositivos se construyeron antes de que su obsolescencia se hiciera obvia. En la década de 1950, el éxito de las computadoras electrónicas digitales había marcado el final para la mayoría de las máquinas de computación analógica, pero las computadoras analógicas permanecieron en uso durante la década de 1950 en algunas aplicaciones especializadas como educación (sistemas de control) y aeronaves (regla de cálculo).
Computadoras digitales
Electromecánico
En 1938, la Marina de los Estados Unidos había desarrollado una computadora analógica electromecánica lo suficientemente pequeña como para usarla a bordo de un submarino. Esta era la Computadora de Datos Torpedo, que usaba la trigonometría para resolver el problema de disparar un torpedo contra un objetivo en movimiento. Durante la Segunda Guerra Mundial dispositivos similares se desarrollaron en otros países también.
Las primeras computadoras digitales eran electromecánicas; interruptores eléctricos condujeron relés mecánicos para realizar el cálculo. Estos dispositivos tenían una velocidad de operación baja y eventualmente fueron reemplazados por computadoras totalmente eléctricas mucho más rápidas, originalmente usando tubos de vacío. El Z2, creado por el ingeniero alemán Konrad Zuse en 1939, fue uno de los primeros ejemplos de una computadora de relevo electromecánica.
En 1941, Zuse siguió su máquina anterior con la Z3, la primera computadora digital programable electromecánica y completamente automática del mundo. El Z3 se construyó con 2000 relés, implementando una longitud de palabra de 22 bits que operaba a una frecuencia de reloj de aproximadamente 5-10 Hz. El código del programa se suministró en una película perforada mientras que los datos se podían almacenar en 64 palabras de memoria o se podían suministrar desde el teclado. Era bastante similar a las máquinas modernas en algunos aspectos, siendo pionero en numerosos avances, como los números en coma flotante. En lugar del sistema decimal más difícil de implementar (utilizado en el diseño anterior de Charles Babbage), el uso de un sistema binario significaba que las máquinas de Zuse eran más fáciles de construir y potencialmente más confiables, dadas las tecnologías disponibles en ese momento. El Z3 estaba completo.
Tubos de vacío y circuitos electrónicos digitales
Los elementos de circuito puramente electrónicos pronto reemplazaron sus equivalentes mecánicos y electromecánicos, al mismo tiempo que el cálculo digital reemplazó al analógico. El ingeniero Tommy Flowers, que trabajaba en la Post Office Research Station de Londres en la década de 1930, comenzó a explorar el posible uso de la electrónica para el intercambio telefónico. El equipo experimental que construyó en 1934 entró en funcionamiento cinco años más tarde, convirtiendo una parte de la red de intercambio telefónico en un sistema de procesamiento de datos electrónicos, utilizando miles de tubos de vacío. En los Estados Unidos, John Vincent Atanasoff y Clifford E. Berry de la Universidad Estatal de Iowa desarrollaron y probaron la computadora Atanasoff-Berry (ABC) en 1942, la primera "computadora digital electrónica automática". Este diseño también fue completamente electrónico y se usó alrededor de 300 tubos de vacio,
Durante la Segunda Guerra Mundial, los británicos en Bletchley Park lograron varios éxitos al romper las comunicaciones militares alemanas encriptadas. La máquina de encriptación alemana, Enigma, fue atacada primero con la ayuda de las bombas electromecánicas. Para romper la más sofisticada máquina alemana Lorenz SZ 40/42, utilizada para comunicaciones de alto nivel del Ejército, Max Newman y sus colegas le encargaron a Flowers que construyera el Coloso. Pasó once meses desde principios de febrero de 1943 diseñando y construyendo el primer Coloso. Después de una prueba funcional en diciembre de 1943, Colossus fue enviado a Bletchley Park, donde fue entregado el 18 de enero de 1944 y atacó su primer mensaje el 5 de febrero.
Colossus fue la primera computadora electrónica programable digital del mundo. Usó una gran cantidad de válvulas (tubos de vacío). Tenía entrada de cinta de papel y se podía configurar para realizar una variedad de operaciones lógicas booleanas en sus datos, pero no era Turing-completo. Se construyeron Nine Mk II Colossi (el Mk I se convirtió en un Mk II que fabrica diez máquinas en total). Colossus Mark I contenía 1,500 válvulas termoiónicas (tubos), pero Mark II con 2,400 válvulas, era 5 veces más rápido y más simple de operar que Mark I, acelerando enormemente el proceso de decodificación.
El ENIAC (Electronic Numerical Integrator and Computer) construido en los Estados Unidos fue la primera computadora programable electrónica construida en los Estados Unidos. Aunque el ENIAC era similar al Coloso, era mucho más rápido, más flexible y era Turing-completo. Al igual que el Coloso, un "programa" en ENIAC fue definido por los estados de sus cables de conexión e interruptores, muy lejos de las máquinas electrónicas programadas que vinieron después. Una vez que se escribió un programa, se tuvo que configurar mecánicamente en la máquina con reinicio manual de los enchufes e interruptores.
Combina la alta velocidad de la electrónica con la capacidad de ser programada para muchos problemas complejos. Podría sumar o restar 5000 veces por segundo, mil veces más rápido que cualquier otra máquina. También tenía módulos para multiplicar, dividir y raíz cuadrada. La memoria de alta velocidad estaba limitada a 20 palabras (alrededor de 80 bytes). Construido bajo la dirección de John Mauchly y J. Presper Eckert en la Universidad de Pensilvania, el desarrollo y la construcción de ENIAC duró desde 1943 hasta su pleno funcionamiento a fines de 1945. La máquina era enorme, pesaba 30 toneladas, usaba 200 kilovatios de energía eléctrica y contenía más de 18,000 tubos de vacío, 1,500 relés y cientos de miles de resistencias, condensadores e inductores.
Computadoras modernas
Concepto de computadora moderna
El principio de la computadora moderna fue propuesto por Alan Turing en su artículo seminal de 1936, sobre números computables.. Turing propuso un dispositivo simple que llamó "máquina de computación universal" y que ahora se conoce como máquina universal de Turing. Demostró que una máquina de este tipo es capaz de computar cualquier cosa que sea computable mediante la ejecución de instrucciones (programa) almacenadas en cinta, permitiendo que la máquina sea programable. El concepto fundamental del diseño de Turing es el programa almacenado, donde todas las instrucciones para la informática se almacenan en la memoria. Von Neumann reconoció que el concepto central de la computadora moderna se debe a este documento. Las máquinas de Turing son hasta hoy un objeto central de estudio en teoría de la computación. Excepto por las limitaciones impuestas por sus tiendas de memoria finita, se dice que las computadoras modernas son Turing-completas, es decir, tienen una capacidad de ejecución de algoritmo equivalente a una máquina universal de Turing.
Programas almacenados
Las primeras máquinas de computación tenían programas fijos. Cambiar su función requirió el re-cableado y la reestructuración de la máquina. Con la propuesta de la computadora del programa almacenado esto cambió. Una computadora con programa almacenado incluye por diseño un conjunto de instrucciones y puede almacenar en la memoria un conjunto de instrucciones (un programa) que detalla el cálculo. La base teórica para la computadora del programa almacenado fue presentada por Alan Turing en su artículo de 1936. En 1945, Turing se unió al National Physical Laboratory y comenzó a trabajar en el desarrollo de una computadora digital con programa almacenado. Su informe de 1945 "Calculadora electrónica propuesta" fue la primera especificación para dicho dispositivo. John von Neumann de la Universidad de Pensilvania también hizo circular su Primer Borrador de un Informe sobre el EDVAC en 1945.
El Manchester Baby fue la primera computadora del mundo con programas almacenados. Fue construido en la Universidad Victoria de Manchester por Frederic C. Williams, Tom Kilburn y Geoff Tootill, y ejecutó su primer programa el 21 de junio de 1948. Fue diseñado como banco de pruebas para el tubo Williams, el primer dispositivo de almacenamiento digital de acceso aleatorio . Aunque la computadora fue considerada "pequeña y primitiva" por los estándares de su tiempo, fue la primera máquina en funcionar para contener todos los elementos esenciales para una computadora electrónica moderna. Tan pronto como Baby demostró la viabilidad de su diseño, se inició un proyecto en la universidad para desarrollarlo en una computadora más utilizable, la Manchester Mark 1.
El Mark 1 a su vez se convirtió rápidamente en el prototipo de Ferranti Mark 1, la primera computadora de uso general disponible en el mundo. Construido por Ferranti, fue entregado a la Universidad de Manchester en febrero de 1951. Al menos siete de estas máquinas posteriores fueron entregadas entre 1953 y 1957, una de ellas a los laboratorios Shell en Amsterdam. En octubre de 1947, los directores de la empresa de catering británica J. Lyons & Company decidieron tomar un papel activo en la promoción del desarrollo comercial de computadoras. La computadora LEO I comenzó a funcionar en abril de 1951 y ejecutó el primer trabajo rutinario de computadora de oficina del mundo.
Transistores
El transistor bipolar se inventó en 1947. A partir de 1955, los transistores reemplazaron los tubos de vacío en diseños de computadora, dando lugar a la "segunda generación" de computadoras. En comparación con los tubos de vacío, los transistores tienen muchas ventajas: son más pequeños y requieren menos energía que los tubos de vacío, por lo que emiten menos calor. Los transistores de unión de silicio eran mucho más confiables que los tubos de vacío y tenían una vida útil más prolongada e indefinida. Las computadoras transistorizadas podrían contener decenas de miles de circuitos lógicos binarios en un espacio relativamente compacto.
En la Universidad de Manchester, un equipo bajo la dirección de Tom Kilburn diseñó y construyó una máquina utilizando los transistores recientemente desarrollados en lugar de válvulas. Su primera computadora transistorizada y la primera en el mundo, estaba operativa en 1953, y una segunda versión se completó allí en abril de 1955. Sin embargo, la máquina hizo uso de válvulas para generar sus ondas de reloj de 125 kHz y en los circuitos para leer y escriba en su memoria de tambor magnético, por lo que no fue la primera computadora completamente transistorizada. Esa distinción va al Harwell CADET de 1955, construido por la división de electrónica del Establecimiento de Investigación de Energía Atómica en Harwell.
Circuitos integrados
El siguiente gran avance en el poder de la computación llegó con la llegada del circuito integrado. La idea del circuito integrado fue concebida por primera vez por un científico de radar que trabaja para el Royal Radar Establishment del Ministerio de Defensa, Geoffrey WA Dummer. Dummer presentó la primera descripción pública de un circuito integrado en el Simposio sobre el progreso en componentes electrónicos de calidad en Washington, DC el 7 de mayo de 1952.
Los primeros circuitos integrados prácticos fueron inventados por Jack Kilby en Texas Instruments y Robert Noyce en Fairchild Semiconductor. Kilby registró sus ideas iniciales sobre el circuito integrado en julio de 1958, demostrando con éxito el primer ejemplo integrado de trabajo el 12 de septiembre de 1958. En su solicitud de patente del 6 de febrero de 1959, Kilby describió su nuevo dispositivo como "un cuerpo de material semiconductor ... en donde todos los componentes del circuito electrónico están completamente integrados ". Noyce también tuvo su propia idea de un circuito integrado medio año después que Kilby. Su chip resolvió muchos problemas prácticos que Kilby no tenía. Producido en Fairchild Semiconductor, estaba hecho de silicio, mientras que el chip de Kilby estaba hecho de germanio.
Este nuevo desarrollo anunció una explosión en el uso comercial y personal de las computadoras y condujo a la invención del microprocesador. Si bien el tema de exactamente qué dispositivo fue el primer microprocesador es polémico, en parte debido a la falta de acuerdo sobre la definición exacta del término "microprocesador", es indiscutible que el primer microprocesador de un solo chip fue el Intel 4004, diseñado y realizado por Ted Hoff, Federico Faggin y Stanley Mazor en Intel.
Computadoras móviles
Con la continua miniaturización de los recursos informáticos y los avances en la duración de la batería portátil, las computadoras portátiles crecieron en popularidad en la década de 2000. Los mismos desarrollos que estimularon el crecimiento de las computadoras portátiles y otras computadoras portátiles permitieron a los fabricantes integrar los recursos informáticos en los teléfonos celulares. Estos llamados teléfonos inteligentes y tabletas se ejecutan en una variedad de sistemas operativos y se han convertido en el dispositivo informático dominante en el mercado, y los fabricantes informaron haber enviado aproximadamente 237 millones de dispositivos en el segundo trimestre de 2013.
Tipos
Las computadoras generalmente se clasifican según sus usos:
Basado en usos
- Computadora analógica
- Computadora digital
- Computadora híbrida
Basado en tamaños
- Teléfono inteligente
- Microordenador
- Puesto de trabajo
- Computadora personal
- Ordenador portátil
- Miniordenador
- Computadora central
- Supercomputadora
Hardware
El término hardware abarca todas las partes de una computadora que son objetos físicos tangibles. Circuitos, chips de computadora, tarjetas gráficas, tarjetas de sonido, memoria (RAM), placa base, pantallas, fuentes de alimentación, cables, teclados, impresoras y dispositivos de entrada de "ratones" son todo hardware.
Historia del hardware informático
Primera generación (mecánica / electromecánica) | Calculadoras | Calculadora de Pascal, Aritmómetro, motor de diferencia, máquinas analíticas de Quevedo |
Dispositivos programables | Telar jacquard, motor analítico, IBM ASCC / Harvard Mark I, Harvard Mark II, IBM SSEC, Z1, Z2, Z3 | |
Segunda generación (tubos de vacío) | Calculadoras | Computadora Atanasoff-Berry, IBM 604, UNIVAC 60, UNIVAC 120 |
Dispositivos programables | Coloso, ENIAC, Manchester Baby, EDSAC, Manchester Mark 1, Ferranti Pegasus, Ferranti Mercury, CSIRAC, EDVAC, UNIVAC I, IBM 701, IBM 702, IBM 650, Z22 | |
Tercera generación (transistores discretos y circuitos integrados SSI, MSI, LSI) | Mainframes | IBM 7090, IBM 7080, IBM System / 360, BUNCH |
Miniordenador | HP 2116A, IBM System / 32, IBM System / 36, LINC, PDP-8, PDP-11 | |
Computadora de escritorio | Programma 101, HP 9100 | |
Cuarta generación (circuitos integrados VLSI) | Miniordenador | VAX, IBM System i |
Microordenador de 4 bits | Intel 4004, Intel 4040 | |
Microordenador de 8 bits | Intel 8008, Intel 8080, Motorola 6800, Motorola 6809, MOS Technology 6502, Zilog Z80 | |
Microordenador de 16 bits | Intel 8088, Zilog Z8000, WDC 65816/65802 | |
Microordenador de 32 bits | Intel 80386, Pentium, Motorola 68000, ARM | |
Microcomputadora de 64 bits | Alpha, MIPS, PA-RISC, PowerPC, SPARC, x86-64, ARMv8-A | |
Computadora embebida | Intel 8048, Intel 8051 | |
Computadora personal | Computadora de escritorio, Computadora de hogar, Ordenador portátil, Asistente digital personal (PDA), Computadora portátil, Tablet PC, Computadora portátil | |
Teórico / experimental | Computadora cuántica, Computadora química, Computación de ADN, Computadora óptica, Computadora basada en espintrónica |
Otros temas de hardware
Dispositivo periférico (entrada / salida) | Entrada | Ratón, teclado, joystick, escáner de imágenes, cámara web, tableta gráfica, micrófono |
Salida | Monitor, impresora, altavoz | |
Ambos | Unidad de disquete, unidad de disco duro, unidad de disco óptico, teleimpresora | |
Autobuses de computadora | Corto alcance | RS-232, SCSI, PCI, USB |
Largo alcance (redes de computadoras) | Ethernet, ATM, FDDI |
Una computadora de propósito general tiene cuatro componentes principales: la unidad lógica aritmética (ALU), la unidad de control, la memoria y los dispositivos de entrada y salida (denominados colectivamente E / S). Estas partes están interconectadas por autobuses, a menudo formadas por grupos de cables. En el interior de cada una de estas partes hay entre miles y billones de pequeños circuitos eléctricos que se pueden apagar o encender mediante un interruptor electrónico. Cada circuito representa un bit (dígito binario) de información de modo que cuando el circuito está encendido representa un "1", y cuando está apagado representa un "0" (en representación lógica positiva). Los circuitos están dispuestos en compuertas lógicas de modo que uno o más de los circuitos puedan controlar el estado de uno o más de los otros circuitos.
Los dispositivos de entrada
Cuando los datos no procesados se envían a la computadora con la ayuda de dispositivos de entrada, los datos se procesan y se envían a los dispositivos de salida. Los dispositivos de entrada pueden ser manuales o automatizados. El acto de procesamiento está regulado principalmente por la CPU. Algunos ejemplos de dispositivos de entrada son:
- Teclado
- Cámara digital
- Video digital
- Tableta gráfica
- Escáner de imágenes
- Palanca de mando
- Micrófono
- Ratón
- Teclado superpuesto
- Reloj en tiempo real
- Trackball
- Pantalla táctil
Dispositivos de salida
Los medios a través de los cuales la computadora da salida se conocen como dispositivos de salida. Algunos ejemplos de dispositivos de salida son:
- Monitor de computadora
- Impresora
- Altavoz para PC
- Proyector
- Tarjeta de sonido
- Tarjeta de video
Unidad de control
La unidad de control (a menudo llamada sistema de control o controlador central) administra los diversos componentes de la computadora; lee e interpreta (decodifica) las instrucciones del programa, transformándolas en señales de control que activan otras partes de la computadora. Los sistemas de control en computadoras avanzadas pueden cambiar el orden de ejecución de algunas instrucciones para mejorar el rendimiento.
Un componente clave común a todas las CPU es el contador del programa, una celda de memoria especial (un registro) que realiza un seguimiento de la ubicación en la memoria de la que se debe leer la siguiente instrucción.
La función del sistema de control es la siguiente: tenga en cuenta que se trata de una descripción simplificada, y algunos de estos pasos pueden realizarse simultáneamente o en un orden diferente según el tipo de CPU:
- Lea el código para la próxima instrucción de la celda indicada por el contador del programa.
- Decodifique el código numérico de la instrucción en un conjunto de comandos o señales para cada uno de los otros sistemas.
- Incremente el contador del programa para que apunte a la siguiente instrucción.
- Lea los datos que requiera la instrucción de las celdas en la memoria (o tal vez de un dispositivo de entrada). La ubicación de estos datos requeridos generalmente se almacena dentro del código de instrucción.
- Proporcione los datos necesarios a una ALU o registro.
- Si la instrucción requiere una ALU o hardware especializado para completar, solicite al hardware que realice la operación solicitada.
- Escriba el resultado de la ALU en una ubicación de memoria o en un registro o tal vez en un dispositivo de salida.
- Regrese al paso (1).
Dado que el contador del programa es (conceptualmente) solo otro conjunto de celdas de memoria, se puede cambiar mediante cálculos realizados en la ALU. Agregar 100 al contador del programa provocaría que la siguiente instrucción se lea desde un lugar 100 ubicaciones más abajo del programa. Las instrucciones que modifican el contador del programa a menudo se conocen como "saltos" y permiten bucles (instrucciones que se repiten en la computadora) y, a menudo, la ejecución de instrucciones condicionales (ambos ejemplos de flujo de control).
La secuencia de operaciones que atraviesa la unidad de control para procesar una instrucción es en sí misma un corto programa de computadora, y de hecho, en algunos diseños de CPU más complejos, hay otra computadora más pequeña llamada microsecuenciador, que ejecuta un programa de microcódigo que causa todos estos eventos sucederán
Unidad Central de Procesamiento (CPU)
La unidad de control, ALU y los registros se conocen colectivamente como una unidad de procesamiento central (CPU). Las primeras CPU estaban compuestas por muchos componentes separados, pero desde mediados de la década de 1970, las CPU generalmente se han construido en un solo circuito integrado llamado microprocesador .
Unidad lógica aritmética (ALU)
La ALU es capaz de realizar dos clases de operaciones: aritmética y lógica. El conjunto de operaciones aritméticas que admite una ALU particular puede estar limitado a sumas y restas, o puede incluir funciones de multiplicación, división, trigonometría como seno, coseno, etc. y raíces cuadradas. Algunos solo pueden operar en números enteros (enteros) mientras que otros usan el punto flotante para representar números reales, aunque con una precisión limitada. Sin embargo, cualquier computadora que sea capaz de realizar solo las operaciones más simples puede programarse para descomponer las operaciones más complejas en pasos simples que puede realizar. Por lo tanto, cualquier computadora puede programarse para realizar cualquier operación aritmética, aunque tomará más tiempo hacerlo si su ALU no admite directamente la operación. Una ALU también puede comparar números y devolver valores de verdad booleanos (verdaderos o falsos) dependiendo de si uno es igual a, mayor que o menor que el otro ("¿es 64 mayor que 65?"). Las operaciones lógicas implican lógica booleana: AND, OR, XOR y NOT. Estos pueden ser útiles para crear enunciados condicionales complicados y procesar la lógica booleana.
Las computadoras superescalares pueden contener múltiples ALU, lo que les permite procesar varias instrucciones al mismo tiempo. Los procesadores gráficos y las computadoras con características SIMD y MIMD a menudo contienen ALU que pueden realizar operaciones aritméticas en vectores y matrices.
Memoria
La memoria de una computadora se puede ver como una lista de celdas en las que se pueden ubicar o leer números. Cada celda tiene una "dirección" numerada y puede almacenar un solo número. La computadora puede recibir instrucciones para "poner el número 123 en la celda numerada 1357" o "agregar el número que está en la celda 1357 al número que está en la celda 2468 y poner la respuesta en la celda 1595". La información almacenada en la memoria puede representar prácticamente cualquier cosa. Las letras, números e incluso las instrucciones de la computadora se pueden colocar en la memoria con la misma facilidad. Dado que la CPU no diferencia entre los diferentes tipos de información, es responsabilidad del software dar importancia a lo que la memoria ve como una serie de números.
En casi todas las computadoras modernas, cada celda de memoria está configurada para almacenar números binarios en grupos de ocho bits (llamado byte). Cada byte puede representar 256 números diferentes (2 = 256); ya sea de 0 a 255 o de -128 a +127. Para almacenar números más grandes, se pueden usar varios bytes consecutivos (por lo general, dos, cuatro u ocho). Cuando se requieren números negativos, generalmente se almacenan en notación de complemento de dos. Otros arreglos son posibles, pero generalmente no se ven fuera de aplicaciones especializadas o contextos históricos. Una computadora puede almacenar cualquier tipo de información en la memoria si puede representarse numéricamente. Las computadoras modernas tienen miles de millones o incluso trillones de bytes de memoria.
La CPU contiene un conjunto especial de celdas de memoria llamadas registros que se pueden leer y escribir mucho más rápido que el área de memoria principal. Normalmente hay entre dos y cien registros dependiendo del tipo de CPU. Los registros se utilizan para los elementos de datos más frecuentemente necesarios para evitar tener que acceder a la memoria principal cada vez que se necesitan datos. A medida que se trabaja constantemente en los datos, la reducción de la necesidad de acceder a la memoria principal (que a menudo es lenta en comparación con la ALU y las unidades de control) aumenta en gran medida la velocidad de la computadora.
La memoria principal de la computadora viene en dos variedades principales:
- memoria de acceso aleatorio o RAM
- memoria de solo lectura o ROM
La RAM se puede leer y escribir en cualquier momento que la CPU lo ordene, pero la ROM está precargada con datos y software que nunca cambian, por lo tanto, la CPU solo puede leer de ella. La ROM se usa generalmente para almacenar las instrucciones de inicio de la computadora. En general, los contenidos de la RAM se borran cuando se apaga la computadora, pero la ROM conserva sus datos indefinidamente. En una PC, la ROM contiene un programa especializado llamado BIOS que orquesta cargar el sistema operativo de la computadora desde la unidad de disco duro a la RAM cada vez que la computadora se enciende o reinicia. En las computadoras integradas, que con frecuencia no tienen unidades de disco, todo el software requerido puede almacenarse en la ROM. El software almacenado en la ROM a menudo se llama firmware, porque teóricamente es más parecido al hardware que al software. La memoria flash borra la distinción entre ROM y RAM, ya que conserva sus datos cuando está apagado, pero también es regrabable. Sin embargo, suele ser mucho más lento que la ROM y la RAM convencionales, por lo que su uso está restringido a aplicaciones en las que la alta velocidad es innecesaria.
En computadoras más sofisticadas, puede haber una o más memorias de caché de RAM, que son más lentas que los registros pero más rápidas que la memoria principal. En general, las computadoras con este tipo de caché están diseñadas para mover automáticamente los datos que se necesitan con frecuencia a la caché, a menudo sin la necesidad de intervención por parte del programador.
Entrada / salida (E / S)
La E / S es el medio por el cual una computadora intercambia información con el mundo exterior. Los dispositivos que proporcionan entrada o salida a la computadora se llaman periféricos. En una computadora personal típica, los periféricos incluyen dispositivos de entrada como el teclado y el mouse, y dispositivos de salida como la pantalla y la impresora. Las unidades de disco duro, las unidades de disquete y las unidades de discos ópticos sirven como dispositivos de entrada y salida. Las redes de computadoras son otra forma de E / S. Los dispositivos de E / S a menudo son computadoras complejas por derecho propio, con su propia CPU y memoria. Una unidad de procesamiento de gráficos puede contener cincuenta o más computadoras pequeñas que realizan los cálculos necesarios para mostrar gráficos en 3D. Las computadoras de escritorio modernas contienen muchas computadoras más pequeñas que ayudan a la CPU principal a realizar E / S. Una pantalla plana de la era de 2016 contiene su propio circuito de computadora.
Multitarea
Mientras que una computadora puede verse como si se tratara de un gigantesco programa almacenado en su memoria principal, en algunos sistemas es necesario dar la apariencia de ejecutar varios programas simultáneamente. Esto se logra mediante la multitarea, es decir, que la computadora cambie rápidamente entre ejecutar cada programa por turno. Un medio por el cual se hace esto es con una señal especial llamada interrupción, que periódicamente puede hacer que la computadora deje de ejecutar las instrucciones donde estaba y haga otra cosa. Al recordar dónde se estaba ejecutando antes de la interrupción, la computadora puede regresar a esa tarea más tarde. Si varios programas se están ejecutando "al mismo tiempo". entonces el generador de interrupciones podría estar causando varios cientos de interrupciones por segundo, causando un cambio de programa cada vez. Como las computadoras modernas generalmente ejecutan las instrucciones varias órdenes de magnitud más rápido que la percepción humana, puede parecer que muchos programas se ejecutan al mismo tiempo, aunque solo uno se está ejecutando en un instante dado. Este método de multitarea a veces se denomina "tiempo compartido" ya que a cada programa se le asigna un "segmento" de tiempo.
Antes de la era de las computadoras de bajo costo, el principal uso para la multitarea era permitir que muchas personas compartieran la misma computadora. Aparentemente, la multitarea haría que una computadora que cambia entre varios programas se ejecute más despacio, en proporción directa a la cantidad de programas que ejecuta, pero la mayoría de los programas pasan gran parte de su tiempo esperando que los dispositivos lentos de entrada / salida completen sus tareas. Si un programa está esperando que el usuario haga clic en el mouse o presione una tecla en el teclado, entonces no tomará un "segmento de tiempo" hasta que ocurra el evento que está esperando. Esto libera tiempo para que se ejecuten otros programas, de modo que muchos programas se pueden ejecutar simultáneamente sin una pérdida de velocidad inaceptable.
Multiprocesamiento
Algunas computadoras están diseñadas para distribuir su trabajo a través de varias CPU en una configuración de multiprocesamiento, una técnica que alguna vez se empleó solo en máquinas grandes y potentes como supercomputadoras, computadoras centrales y servidores. Las computadoras personales y portátiles con multiprocesador y núcleos múltiples (CPU múltiples en un solo circuito integrado) ahora están ampliamente disponibles y, como resultado, cada vez se utilizan más en los mercados de gama baja.
Los supercomputadores en particular a menudo tienen arquitecturas altamente únicas que difieren significativamente de la arquitectura básica de programas almacenados y de las computadoras de propósito general. A menudo cuentan con miles de CPU, interconexiones de alta velocidad personalizadas y hardware informático especializado. Dichos diseños tienden a ser útiles solo para tareas especializadas debido a la gran escala de organización del programa requerida para utilizar con éxito la mayoría de los recursos disponibles a la vez. Los supercomputadores suelen ver el uso en aplicaciones de simulación, representación gráfica y criptografía a gran escala, así como con otras tareas llamadas "vergonzosamente paralelas".
Software
El software se refiere a partes de la computadora que no tienen una forma material, como programas, datos, protocolos, etc. El software es la parte de un sistema informático que consiste en información codificada o instrucciones de la computadora, en contraste con el hardware físico desde el cual el sistema está construido. Los programas informáticos incluyen programas informáticos, bibliotecas y datos no ejecutables relacionados, como documentación en línea o medios digitales. A menudo se divide en software de sistema y software de aplicación]] El hardware y el software de computadora se requieren entre sí y ninguno puede ser utilizado de manera realista por sí mismo. Cuando el software se almacena en hardware que no se puede modificar fácilmente, como con la ROM del BIOS en una computadora compatible con PC de IBM, algunas veces se denomina "firmware".
Sistema operativo / Software del sistema | Unix y BSD | Sistema V de UNIX, IBM AIX, HP-UX, Solaris (SunOS), IRIX, Lista de sistemas operativos BSD |
GNU / Linux | Lista de distribuciones de Linux, Comparación de distribuciones de Linux | |
Microsoft Windows | Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 | |
DOS | 86-DOS (QDOS), IBM PC DOS, MS-DOS, DR-DOS, FreeDOS | |
Sistemas operativos Macintosh | Mac OS clásico, macOS (anteriormente OS X y Mac OS X) | |
Embebido y en tiempo real | Lista de sistemas operativos integrados | |
Experimental | Amoeba, Oberon / Bluebottle, Plan 9 de Bell Labs | |
Biblioteca | Multimedia | DirectX, OpenGL, OpenAL, Vulkan (API) |
Biblioteca de programación | Biblioteca estándar C, Biblioteca estándar de plantillas | |
Datos | Protocolo | TCP / IP, Kermit, FTP, HTTP, SMTP |
Formato de archivo | HTML, XML, JPEG, MPEG, PNG | |
Interfaz de usuario | Interfaz gráfica de usuario (WIMP) | Microsoft Windows, GNOME, KDE, QNX Photon, CDE, GEM, Aqua |
Interfaz de usuario basada en texto | Interfaz de línea de comandos, interfaz de usuario de texto | |
Software de la aplicacion | Sala de oficina | Procesamiento de textos, autoedición, programa de presentación, sistema de gestión de bases de datos, programación y gestión del tiempo, hoja de cálculo, software de contabilidad |
Acceso a Internet | Navegador, cliente de correo electrónico, servidor web, agente de transferencia de correo, mensajería instantánea | |
Diseño y fabricación | Diseño asistido por computadora, fabricación asistida por computadora, gestión de plantas, fabricación robótica, gestión de la cadena de suministro | |
Gráficos | Editor gráfico de trama, editor de gráficos vectoriales, modelador 3D, editor de animación, gráficos por computadora 3D, edición de video, procesamiento de imágenes | |
Audio | Editor de audio digital, reproducción de audio, mezcla, síntesis de audio, música de computadora | |
Ingeniería de software | Compilador, Ensamblador, Intérprete, Depurador, Editor de texto, Entorno de desarrollo integrado, Análisis de rendimiento de software, Control de revisión, Gestión de configuración de software | |
Educativo | Edutainment, juego educativo, juego serio, simulador de vuelo | |
Juegos | Estrategia, Arcade, Puzzle, Simulación, Disparos en primera persona, Plataforma, Massive multijugador, Ficción interactiva | |
Misc | Inteligencia artificial, software antivirus, analizador de malware, sistemas de gestión de instalador / paquete, administrador de archivos |
idiomas
Hay miles de lenguajes de programación diferentes, algunos destinados a ser de propósito general, otros útiles solo para aplicaciones altamente especializadas.
Listas de lenguajes de programación | Línea de tiempo de lenguajes de programación, Lista de lenguajes de programación por categoría, Lista generacional de lenguajes de programación, Lista de lenguajes de programación, Lenguajes de programación no basados en inglés |
Lenguajes de ensamblaje comúnmente utilizados | ARM, MIPS, x86 |
Lenguajes de programación de alto nivel comúnmente utilizados | Ada, BASIC, C, C ++, C #, COBOL, Fortran, PL / 1, REXX, Java, Lisp, Pascal, Object Pascal |
Lenguajes de scripting comúnmente utilizados | Script de Bourne, JavaScript, Python, Ruby, PHP, Perl |
Software de la aplicacion
Programas
La característica definitoria de las computadoras modernas que las distingue de todas las otras máquinas es que pueden programarse. Es decir que se pueden dar algún tipo de instrucciones (el programa) a la computadora, y las procesará. Las computadoras modernas basadas en la arquitectura de von Neumann a menudo tienen códigos de máquina en la forma de un lenguaje de programación imperativo. En términos prácticos, un programa de computadora puede ser solo unas pocas instrucciones o extenderse a muchos millones de instrucciones, como lo hacen los programas para procesadores de texto y navegadores web, por ejemplo. Una computadora moderna típica puede ejecutar miles de millones de instrucciones por segundo (gigaflops) y rara vez comete un error durante muchos años de funcionamiento. Los grandes programas de computadora que constan de varios millones de instrucciones pueden llevar a los equipos de programadores a escribir años,
Arquitectura de programa almacenado
Esta sección se aplica a las computadoras más comunes basadas en máquinas RAM.
En la mayoría de los casos, las instrucciones de la computadora son simples: agregue un número a otro, mueva algunos datos de una ubicación a otra, envíe un mensaje a algún dispositivo externo, etc. Estas instrucciones se leen desde la memoria de la computadora y generalmente se ejecutan. en el orden en que fueron dados. Sin embargo, generalmente hay instrucciones especializadas para indicarle a la computadora que salte o retroceda a algún otro lugar en el programa y continúe ejecutando desde allí. Estas se llaman instrucciones de "salto" (o ramas). Además, se puede hacer que las instrucciones de salto sucedan condicionalmente para que se puedan usar diferentes secuencias de instrucciones dependiendo del resultado de algún cálculo previo o algún evento externo. Muchas computadoras apoyan directamente las subrutinas al proporcionar un tipo de salto que "recuerda"
La ejecución del programa se puede comparar a la lectura de un libro. Mientras que una persona normalmente leerá cada palabra y línea en secuencia, a veces puede saltar a un lugar anterior en el texto o saltear secciones que no son de su interés. De manera similar, una computadora a veces puede retroceder y repetir las instrucciones en alguna sección del programa una y otra vez hasta que se cumpla alguna condición interna. Esto se conoce como el flujo de control dentro del programa y es lo que le permite a la computadora realizar tareas repetidamente sin intervención humana.
Comparativamente, una persona que usa una calculadora de bolsillo puede realizar una operación aritmética básica como agregar dos números con solo presionar algunos botones. Pero para sumar todos los números del 1 al 1,000 se necesitarían miles de pulsaciones de botones y mucho tiempo, con la casi certeza de cometer un error. Por otro lado, una computadora puede programarse para hacer esto con solo unas simples instrucciones. El siguiente ejemplo está escrito en el lenguaje ensamblador MIPS:
begin:
addi $ 8 , $ 0 , 0 # initialize sum to 0
addi $ 9 , $ 0 , 1 # set first number to add = 1
loop :
slti $ 10 , $ 9 , 1000 # comprueba si el número es menor que 1000
beq $ 10 , $ 0 , finaliza # si el número impar es mayor que n luego salir
añadir $ 8 , $ 8 , $ 9 # actualiza suma
adi $ 9 , $ 9 , 1 # llegar siguiente número
j loop # repite el proceso de suma
final :
agrega $ 2 , $ 8 , $ 0 # pon suma en el registro de salida
Una vez que se le indique que ejecute este programa, la computadora realizará la tarea de adición repetitiva sin más intervención humana. Casi nunca cometerá un error y una PC moderna puede completar la tarea en una fracción de segundo.
Codigo de maquina
En la mayoría de las computadoras, las instrucciones individuales se almacenan como códigos de máquina y cada instrucción recibe un número único (su código de operación o código de operación para abreviar). El comando para agregar dos números juntos tendría un código de operación; el comando para multiplicarlos tendría un código de operación diferente, y así sucesivamente. Las computadoras más simples pueden realizar cualquiera de un puñado de instrucciones diferentes; las computadoras más complejas tienen varios cientos para elegir, cada uno con un código numérico único. Como la memoria de la computadora puede almacenar números, también puede almacenar los códigos de instrucción. Esto lleva al hecho importante de que los programas completos (que son solo listas de estas instrucciones) pueden representarse como listas de números y pueden manipularse dentro de la computadora de la misma manera que los datos numéricos. El concepto fundamental de almacenar programas en la memoria de la computadora junto con los datos en los que operan es el quid de la arquitectura von Neumann, o programa almacenado. En algunos casos, una computadora puede almacenar parte o la totalidad de su programa en la memoria que se mantiene separada de los datos en los que opera. Esto se llama arquitectura de Harvard después de la computadora Harvard Mark I. Las computadoras modernas de von Neumann muestran algunos rasgos de la arquitectura de Harvard en sus diseños, como en los cachés de la CPU.
Si bien es posible escribir programas de computadora como largas listas de números (lenguaje de máquina) y aunque esta técnica se usó con muchas computadoras tempranas, es extremadamente tediosa y potencialmente propensa a errores en la práctica, especialmente para programas complicados. En cambio, a cada instrucción básica se le puede dar un nombre corto que es indicativo de su función y fácil de recordar: una mnemónica como ADD, SUB, MULT o JUMP. Estos mnemotécnicos se conocen colectivamente como el lenguaje ensamblador de una computadora. La conversión de programas escritos en lenguaje ensamblador en algo que la computadora realmente puede entender (lenguaje de máquina) generalmente se realiza mediante un programa de computadora llamado ensamblador.
Lenguaje de programación
Los lenguajes de programación proporcionan varias formas de especificar programas para que las computadoras se ejecuten. A diferencia de los lenguajes naturales, los lenguajes de programación están diseñados para no dejar ambigüedad y ser concisos. Son idiomas puramente escritos y a menudo son difíciles de leer en voz alta. En general, un compilador o un ensamblador los traduce en un código de máquina antes de ejecutarlos, o un intérprete los traduce directamente en tiempo de ejecución. A veces los programas se ejecutan mediante un método híbrido de las dos técnicas.
Idiomas de bajo nivel
Los lenguajes de máquina y los lenguajes ensambladores que los representan (denominados colectivamente como lenguajes de programación de bajo nivel ) tienden a ser exclusivos de un tipo particular de computadora. Por ejemplo, una computadora de arquitectura ARM (como la que se puede encontrar en un teléfono inteligente o un videojuego portátil) no puede entender el lenguaje de máquina de una CPU x86 que podría estar en una PC.
Lenguajes de alto nivel / lenguaje de tercera generación
Aunque es considerablemente más fácil que en lenguaje de máquina, escribir programas extensos en lenguaje ensamblador a menudo es difícil y también es propenso a errores. Por lo tanto, la mayoría de los programas prácticos están escritos en lenguajes de programación de alto nivel más abstractos que pueden expresar las necesidades del programador de manera más conveniente (y de ese modo ayudan a reducir el error del programador). Los lenguajes de alto nivel usualmente se "compilan" en lenguaje de máquina (o a veces en lenguaje de ensamblador y luego en lenguaje de máquina) usando otro programa de computadora llamado compilador. Los lenguajes de alto nivel están menos relacionados con el funcionamiento de la computadora de destino que con el lenguaje ensamblador, y están más relacionados con el lenguaje y la estructura del problema (s) a ser resuelto por el programa final. Por lo tanto, a menudo es posible usar diferentes compiladores para traducir el mismo programa de lenguaje de alto nivel en el lenguaje de máquina de muchos tipos diferentes de computadora. Esto es parte de los medios por los cuales el software como los videojuegos pueden estar disponibles para diferentes arquitecturas de computadora, como computadoras personales y varias consolas de videojuegos.
Idiomas de cuarta generación
Los lenguajes de cuarta generación (4GL) son menos procesales que los lenguajes 3G. El beneficio de 4GL es que proporcionan formas de obtener información sin requerir la ayuda directa de un programador.
Diseño de programa
El diseño del programa de pequeños programas es relativamente simple e implica el análisis del problema, la recopilación de datos, el uso de las construcciones de programación dentro de los lenguajes, el diseño o uso de procedimientos y algoritmos establecidos, proporcionando datos para dispositivos de salida y soluciones al problema según corresponda. A medida que los problemas se vuelven más grandes y más complejos, se encuentran características tales como subprogramas, módulos, documentación formal y nuevos paradigmas, como la programación orientada a objetos. Los grandes programas que involucran miles de líneas de código y más requieren metodologías formales de software. La tarea de desarrollar sistemas de software grandes presenta un desafío intelectual significativo. Producir software con una confiabilidad aceptablemente alta dentro de un cronograma y presupuesto predecibles ha sido históricamente difícil;
Loco
Los errores en los programas de computadora se llaman "errores". Pueden ser benignos y no afectar la utilidad del programa, o tener solo efectos sutiles. Pero en algunos casos, pueden hacer que el programa o el sistema completo se "cuelgue", dejando de responder a las entradas, como los clics del mouse o las teclas, para fallar por completo o fallar. De lo contrario, los errores benignos a veces pueden ser aprovechados con fines malintencionados por un usuario sin escrúpulos que escribe un exploit, un código diseñado para aprovechar un error e interrumpir la ejecución correcta de una computadora. Los errores generalmente no son culpa de la computadora. Dado que las computadoras simplemente ejecutan las instrucciones que se les dan, los errores casi siempre son el resultado de un error del programador o un descuido en el diseño del programa. Almirante Grace Hopper, científico informático estadounidense y desarrollador del primer compilador,
Firmware
El firmware es la tecnología que tiene la combinación de hardware y software, como un chip BIOS dentro de una computadora. Este chip (hardware) se encuentra en la placa base y tiene la configuración del BIOS (software) almacenada en él.
Redes e Internet
Las computadoras se han utilizado para coordinar información entre varias ubicaciones desde la década de 1950. El sistema SAGE del ejército de EE. UU. Fue el primer ejemplo a gran escala de dicho sistema, lo que dio lugar a una serie de sistemas comerciales de propósito especial como Sabre. En la década de 1970, los ingenieros informáticos de las instituciones de investigación de los Estados Unidos comenzaron a vincular sus computadoras utilizando tecnología de telecomunicaciones. El esfuerzo fue financiado por ARPA (ahora DARPA), y la red informática resultante fue llamada ARPANET. Las tecnologías que hicieron posible la Arpanet se extendieron y evolucionaron.
Con el tiempo, la red se extendió más allá de las instituciones académicas y militares y se hizo conocida como Internet. La aparición de la red implicó una redefinición de la naturaleza y los límites de la computadora. Los sistemas operativos y las aplicaciones informáticas se modificaron para incluir la capacidad de definir y acceder a los recursos de otras computadoras en la red, como dispositivos periféricos, información almacenada y similares, como extensiones de los recursos de una computadora individual. Inicialmente, estas instalaciones estaban disponibles principalmente para personas que trabajan en entornos de alta tecnología, pero en la década de 1990 la expansión de aplicaciones como el correo electrónico y la World Wide Web, combinada con el desarrollo de tecnologías de red rápidas y baratas, como Ethernet y ADSL, convertirse en casi ubicuo De hecho, la cantidad de computadoras que están conectadas en red está creciendo fenomenalmente. Una gran proporción de computadoras personales se conectan regularmente a Internet para comunicarse y recibir información. La red "inalámbrica", que a menudo utiliza redes de telefonía móvil, ha significado que las redes se están volviendo cada vez más omnipresentes, incluso en entornos informáticos móviles.
Computadoras no convencionales
Una computadora no necesita ser electrónica, ni siquiera tener un procesador, ni RAM, ni siquiera un disco duro. Mientras que el uso popular de la palabra "computadora" es sinónimo de una computadora electrónica personal, la definición moderna de una computadora es literalmente: " Un dispositivo que computa , especialmente una máquina electrónica programable [generalmente] que realiza operaciones lógicas o matemáticas de alta velocidad o que ensambla, almacena, correlaciona o procesa información de otra manera ". Cualquier dispositivo que procesa información califica como una computadora, especialmente si el procesamiento es útil.
Computación no convencional
Históricamente, las computadoras evolucionaron de computadoras mecánicas y, finalmente, de tubos de vacío a transistores. Sin embargo, sistemas computacionales conceptuales tan flexibles como una computadora personal se pueden construir con casi cualquier cosa. Por ejemplo, una computadora puede estar hecha de bolas de billar (computadora de bola de billar); un ejemplo a menudo citado. De manera más realista, las computadoras modernas están hechas de transistores hechos de semiconductores fotolitográficos.
Futuro
Existe una investigación activa para hacer que las computadoras utilicen muchos nuevos tipos de tecnología prometedores, como computadoras ópticas, computadoras de ADN, computadoras neuronales y computadoras cuánticas. La mayoría de las computadoras son universales, y pueden calcular cualquier función computable, y están limitadas solo por su capacidad de memoria y velocidad de operación. Sin embargo, diferentes diseños de computadoras pueden dar un rendimiento muy diferente para problemas particulares; por ejemplo, las computadoras cuánticas pueden romper algunos algoritmos de cifrado modernos (mediante factorización cuántica) muy rápidamente.
Paradigmas de arquitectura informática
Hay muchos tipos de arquitecturas de computadora:
- Computadora cuántica vs. Computadora química
- Procesador escalar vs. procesador Vector
- Ordenadores de acceso a memoria no uniforme (NUMA)
- Registrar la máquina frente a la máquina de pila
- Arquitectura de Harvard vs. arquitectura von Neumann
- Arquitectura celular
De todas estas máquinas abstractas, una computadora cuántica es la más prometedora para revolucionar la informática. Las puertas lógicas son una abstracción común que puede aplicarse a la mayoría de los paradigmas digitales o analógicos anteriores. La capacidad de almacenar y ejecutar listas de instrucciones llamadas programas hace que las computadoras sean extremadamente versátiles, diferenciándolas de las calculadoras. La tesis de Church-Turing es una declaración matemática de esta versatilidad: cualquier computadora con una capacidad mínima (siendo Turing-completa) es, en principio, capaz de realizar las mismas tareas que cualquier otra computadora puede realizar. Por lo tanto, cualquier tipo de computadora (netbook, supercomputadora, autómata celular, etc.) puede realizar las mismas tareas computacionales, con suficiente tiempo y capacidad de almacenamiento.
Inteligencia artificial
Una computadora resolverá los problemas exactamente de la manera en que está programado, independientemente de la eficiencia, soluciones alternativas, posibles accesos directos o posibles errores en el código. Los programas informáticos que aprenden y se adaptan son parte del campo emergente de la inteligencia artificial y el aprendizaje automático. Los productos basados en inteligencia artificial generalmente se dividen en dos categorías principales: sistemas basados en reglas y sistemas de reconocimiento de patrones. Los sistemas basados en reglas intentan representar las reglas utilizadas por los expertos humanos y tienden a ser costosas de desarrollar. Los sistemas basados en patrones usan datos sobre un problema para generar conclusiones. Entre los ejemplos de sistemas basados en patrones se incluyen el reconocimiento de voz, el reconocimiento de fuentes, la traducción y el campo emergente del marketing en línea.
Profesiones y organizaciones
A medida que el uso de las computadoras se ha extendido por toda la sociedad, hay un número cada vez mayor de carreras que involucran computadoras.
Relacionado con hardware | Ingeniería eléctrica, Ingeniería electrónica, Ingeniería informática, Ingeniería de telecomunicaciones, Ingeniería óptica, Nanoingeniería |
Relacionado con el software | Informática, Ingeniería informática, Autoedición, Interacción hombre-computadora, Tecnología de la información, Sistemas de información, Ciencia computacional, Ingeniería del software, Industria de videojuegos, Diseño web |
La necesidad de que las computadoras funcionen bien juntas y de poder intercambiar información ha generado la necesidad de muchas organizaciones de estándares, clubes y sociedades de naturaleza formal e informal.
Grupos de estándares | ANSI, IEC, IEEE, IETF, ISO, W3C |
Sociedades profesionales | ACM, AIS, IET, IFIP, BCS |
Grupos de software libre / de código abierto | Free Software Foundation, Fundación Mozilla, Apache Software Foundation |