El software es un conjunto de instrucciones programadas que se almacenan en la memoria de las computadoras digitales con programas almacenados para que el procesador las ejecute. El software es un desarrollo reciente en la historia de la humanidad y es fundamental para la era de la información .
Los programas de Ada Lovelace para la máquina analítica de Charles Babbage en el siglo XIX suelen considerarse los fundadores de la disciplina. Sin embargo, los esfuerzos del matemático se quedaron en lo teórico, ya que la tecnología de la época de Lovelace y Babbage resultó insuficiente para construir su computadora. Se atribuye a Alan Turing ser la primera persona en idear una teoría para el software en 1935, lo que dio origen a dos campos académicos: la informática y la ingeniería de software .
La primera generación de software para las primeras computadoras digitales con programa almacenado, a fines de la década de 1940, tenía sus instrucciones escritas directamente en código binario , generalmente escritas para computadoras mainframe . Más tarde, el desarrollo de lenguajes de programación modernos junto con el avance de la computadora doméstica ampliaría enormemente el alcance y la amplitud del software disponible, comenzando con el lenguaje ensamblador y continuando con los paradigmas de programación funcional y programación orientada a objetos .
La informática como concepto se remonta a tiempos antiguos, con dispositivos como el ábaco , el mecanismo de Antikythera , los astrolabios, los relojes astronómicos mecánicos y las calculadoras mecánicas. [1] El mecanismo de Antikythera es un ejemplo de un antiguo dispositivo astronómico mecánico altamente complejo. [2]
Sin embargo, estos dispositivos eran puro hardware y no tenían software: su capacidad de cálculo estaba directamente relacionada con su forma e ingeniería específicas.
El software requiere el concepto de un procesador de propósito general -lo que ahora se describe como una máquina de Turing- así como una memoria de computadora en la que se pueden almacenar, iniciar y detener individualmente conjuntos reutilizables de rutinas y funciones matemáticas que comprenden programas, y sólo apareció recientemente en la historia de la humanidad.
El primer algoritmo informático conocido fue escrito por Ada Lovelace en el siglo XIX para la máquina analítica , con el fin de traducir el trabajo de Luigi Menabrea sobre los números de Bernoulli para la instrucción de la máquina. [3] Sin embargo, esto permaneció sólo en teoría - el menor estado de la ingeniería en vida de estos dos matemáticos resultó insuficiente [ cita requerida ] para construir la máquina analítica.
La primera teoría moderna del software fue propuesta por Alan Turing en su ensayo de 1935 Números computables con una aplicación al Entscheidungsproblem (problema de decisión) . [4]
Esto condujo finalmente a la creación de dos campos académicos : la informática y la ingeniería de software , que estudian el software y su creación. La informática es más teórica (el ensayo de Turing es un ejemplo de informática), mientras que la ingeniería de software se centra en cuestiones más prácticas.
Sin embargo, antes de 1946, el software tal como lo entendemos ahora (programas almacenados en la memoria de computadoras digitales con programas almacenados ) aún no existía. Los primeros dispositivos informáticos electrónicos fueron recableados para "reprogramarlos". El ENIAC , uno de los primeros ordenadores electrónicos, fue programado en gran parte por mujeres que habían trabajado previamente como ordenadores humanos . [5] [6] Los ingenieros les daban a los programadores planos del cableado del ENIAC y esperaban que descubrieran cómo programar la máquina. [7] Las mujeres que trabajaban como programadoras prepararon el ENIAC para su primera presentación pública, conectando los paneles de conexión para las demostraciones. [8] [9] [10] Kathleen Booth desarrolló el lenguaje ensamblador en 1950 para facilitar la programación de los ordenadores en los que trabajaba en el Birkbeck College . [11]
Grace Hopper trabajó como una de las primeras programadoras del Harvard Mark I. [ 12] Más tarde creó un manual de 500 páginas para la computadora. [13] A Hopper a menudo se le atribuye falsamente el mérito de acuñar los términos "bug" y " debugging ", cuando encontró una polilla en el Mark II, causando un mal funcionamiento; [14] sin embargo, el término ya estaba en uso cuando encontró la polilla. [14] Hopper desarrolló el primer compilador y llevó su idea de trabajar en las computadoras Mark a trabajar en UNIVAC en la década de 1950. [15] Hopper también desarrolló el lenguaje de programación FLOW-MATIC para programar el UNIVAC. [14] Frances E. Holberton , que también trabajaba en UNIVAC, desarrolló un código [ aclaración necesaria ] , C-10, que permitía a los programadores utilizar entradas de teclado y creó el generador de clasificación y fusión en 1951. [16] [17] Adele Mildred Koss y Hopper también crearon el precursor de un generador de informes . [16]
En su manuscrito "Una teoría matemática de la comunicación", Claude Shannon (1916-2001) ofreció un esquema de cómo se podía implementar la lógica binaria para programar un ordenador. Posteriormente, los primeros programadores informáticos utilizaron código binario para dar instrucciones a los ordenadores sobre cómo realizar diversas tareas. Sin embargo, el proceso era muy arduo. Los programadores informáticos tenían que proporcionar largas cadenas de código binario para indicar al ordenador qué tipo de datos debía almacenar. El código y los datos debían cargarse en los ordenadores utilizando diversos mecanismos tediosos, como pulsar interruptores o perforar agujeros en posiciones predefinidas en tarjetas y cargar estas tarjetas perforadas en un ordenador. Con estos métodos, si se cometía un error, era posible que hubiera que volver a cargar todo el programa desde el principio.
La primera vez que un ordenador con programa almacenado retuvo un fragmento de software en la memoria electrónica y lo ejecutó con éxito fue a las 11 de la mañana del 21 de junio de 1948, en la Universidad de Manchester, en el ordenador Manchester Baby . Fue escrito por Tom Kilburn y calculaba el factor más alto del entero 2^18 = 262.144. Empezando con un divisor de prueba grande, realizaba una división de 262.144 mediante restas repetidas y luego verificaba si el resto era cero. Si no, decrementaba el divisor de prueba en uno y repetía el proceso. Google publicó un homenaje al Manchester Baby, celebrándolo como el "nacimiento del software".
FORTRAN fue desarrollado por un equipo dirigido por John Backus en IBM en la década de 1950. El primer compilador se lanzó en 1957. El lenguaje resultó tan popular para la informática científica y técnica que en 1963 todos los principales fabricantes habían implementado o anunciado FORTRAN para sus computadoras. [18] [19]
COBOL fue concebido por primera vez cuando Mary K. Hawes convocó una reunión (en la que participó Grace Hopper ) en 1959 para discutir cómo crear un lenguaje de programación que pudiera ser compartido entre empresas. [16] La innovación de Hopper con COBOL fue desarrollar una nueva forma simbólica de escribir programación. [13] Su programación se autodocumentaba. [20] Betty Holberton ayudó a editar el lenguaje que se envió a la Oficina de Imprenta del Gobierno en 1960. [21] FORMAC fue desarrollado por Jean E. Sammet en la década de 1960. [21] Su libro, Lenguajes de programación: historia y fundamentos (1969), se convirtió en un texto influyente. [21] [22]
La misión Apolo a la Luna dependía de un software para programar las computadoras en los módulos de aterrizaje. [23] [24] Las computadoras estaban programadas con un lenguaje llamado "Basic" (sin relación con el lenguaje de programación BASIC desarrollado en Dartmouth aproximadamente al mismo tiempo). [25] El software también tenía un intérprete que estaba formado por una serie de rutinas y un ejecutivo (como un sistema operativo moderno ), que especificaba qué programas ejecutar y cuándo. [25] Ambos fueron diseñados por Hal Laning . [25] Margaret Hamilton , que anteriormente había estado involucrada con problemas de confiabilidad del software cuando trabajaba en el sistema de defensa aérea SAGE de EE. UU., también era parte del equipo de software de Apolo. [23] [26] Hamilton estaba a cargo del software de vuelo a bordo para las computadoras Apolo. [23] Hamilton sentía que las operaciones de software no eran solo parte de la máquina, sino que también estaban intrincadamente involucradas con las personas que operaban el software. [25] Hamilton también acuñó el término " ingeniería de software " mientras trabajaba en la NASA. [27]
El "software" real para las computadoras en las misiones Apolo estaba compuesto de cables que se enhebraban a través de núcleos magnéticos. [28] Donde el cable pasaba por un núcleo magnético, eso representaba un "1" y donde el cable pasaba alrededor del núcleo, eso representaba un "0" . [28] Cada núcleo almacenaba 64 bits de información. [28] Hamilton y otros crearían el software perforando agujeros en tarjetas perforadas, que luego se procesaban en una computadora central Honeywell donde se podía simular el software. [23] Cuando el código era "sólido", se enviaba para que lo tejieran en los núcleos magnéticos de Raytheon , donde las mujeres conocidas como "Pequeñas ancianas" trabajaban en los cables. [23] El programa en sí era "indestructible" e incluso podía soportar la caída de rayos, lo que le sucedió al Apolo 12. [ 28] El cableado de las computadoras tomó varias semanas, lo que paralizó el desarrollo del software durante ese tiempo. [29]
Mientras utilizaba los simuladores para probar la programación, Hamilton descubrió formas en las que el código podía producir errores peligrosos cuando se cometían errores humanos al usarlo. [23] La NASA creía que los astronautas no cometerían errores debido a su entrenamiento. [30] A Hamilton no se le permitió programar código para evitar errores que llevaran a un colapso del sistema, por lo que anotó el código en la documentación del programa. [23] Su idea de agregar código de verificación de errores fue rechazada por "excesiva". [23] Sin embargo, exactamente lo que Hamilton predijo que sucedería ocurrió en el vuelo Apollo 8 , cuando un error humano hizo que la computadora borrara todos los datos de navegación. [23]
Más tarde, el software se vendía a múltiples clientes al ser incluido en el hardware por fabricantes de equipos originales (OEM), como Data General , Digital Equipment e IBM. Cuando un cliente compraba una minicomputadora , en ese momento la computadora más pequeña del mercado, la computadora no venía con software preinstalado , sino que debía ser instalada por ingenieros empleados por el OEM. [ cita requerida ]
Esta agrupación atrajo la atención de los reguladores antimonopolio de Estados Unidos, que demandaron a IBM por "vinculación" indebida en 1969, alegando que era una violación de las normas antimonopolio que los clientes que querían obtener su software tuvieran que comprar o alquilar también su hardware para hacerlo. Sin embargo, el Departamento de Justicia de Estados Unidos desestimó el caso, tras muchos años de deserción, al concluir que "carecía de fundamento". [31]
Data General también se encontró con problemas legales relacionados con la agrupación, aunque en este caso se debió a una demanda civil de un posible competidor. Cuando Data General presentó Data General Nova , una empresa llamada Digidyne quería utilizar su sistema operativo RDOS en su propio clon de hardware . Data General se negó a licenciar su software y reclamó sus "derechos de agrupación". La Corte Suprema de los Estados Unidos sentó un precedente llamado Digidyne v. Data General en 1985 al dejar que se mantuviera una decisión de un tribunal de apelaciones del 9º circuito sobre el caso, y Data General finalmente se vio obligada a licenciar el sistema operativo porque se dictaminó que restringir la licencia solo al hardware de DG era un acuerdo de vinculación ilegal . [32] Aunque el Tribunal de Distrito señaló que "ningún jurado razonable podría encontrar que dentro de este mercado grande y dinámico con competidores mucho más grandes", Data General "tuviera el poder de mercado para restringir el comercio a través de un acuerdo de vinculación ilegal", la vinculación del sistema operativo al hardware se dictaminó como ilegal per se en apelación. [33]
En 2008, Apple Inc. demandó a Psystar Corporation por distribuir clones no autorizados de Macintosh con OS X preinstalado, y presentó una contrademanda. Uno de los argumentos de la contrademanda -que citaba el caso Data General- era que Apple domina el mercado de ordenadores compatibles con OS X al vincular ilegalmente el sistema operativo a los ordenadores Apple. El juez de distrito William Alsup rechazó este argumento, diciendo que, como el tribunal de distrito había dictaminado en el caso Data General más de 20 años antes, el mercado relevante no era simplemente un sistema operativo (Mac OS) sino todos los sistemas operativos de PC, incluido Mac OS, y señaló que Mac OS no disfrutaba de una posición dominante en ese mercado más amplio. La sentencia de Alsup también señaló que el sorprendente precedente de Data General de que la vinculación de productos con derechos de autor siempre era ilegal había sido "implícitamente anulado" desde entonces por el veredicto en el caso Illinois Tool Works Inc. v. Independent Ink, Inc. [34] .
A finales de los años 1960 comenzó a desarrollarse una industria que producía software empaquetado de forma independiente (software que no se producía como un "producto único" para un cliente individual ni se "vendía" con el hardware de la computadora). [35]
Unix fue uno de los primeros sistemas operativos que se popularizó y ejerció una gran influencia, y que todavía existe en la actualidad. La variante más popular de Unix en la actualidad es macOS (antes llamado OS X y Mac OS X), mientras que Linux está estrechamente relacionado con Unix.
En enero de 1975, Micro Instrumentation and Telemetry Systems comenzó a vender su kit de microcomputadora Altair 8800 por correo. Microsoft lanzó su primer producto Altair BASIC más tarde ese año, y los aficionados comenzaron a desarrollar programas para ejecutar en estos kits. Tiny BASIC se publicó como un programa para escribir en el Dr. Dobb's Journal y se desarrolló de manera colaborativa.
En 1976, Peter R. Jennings , por ejemplo, creó su programa Microchess para el kit KIM-1 de MOS Technology , pero como no venía con una unidad de cinta, enviaba el código fuente en un pequeño folleto a sus clientes de pedidos por correo, y ellos tenían que escribir todo el programa a mano. En 1978, Kathe y Dan Spracklen publicaron el código fuente de su programa Sargon (ajedrez) en una revista de informática. Más tarde, Jennings pasó a vender cintas de papel y, finalmente, casetes compactos con el programa.
Era un proceso lento y poco práctico introducir el código fuente de una revista de informática, y un solo carácter mal escrito (o peor, mal impreso) podía dejar el programa inoperativo, pero la gente seguía haciéndolo. ( La tecnología de reconocimiento óptico de caracteres , que teóricamente podría haberse utilizado para escanear los listados en lugar de transcribirlos a mano, todavía no se utilizaba ampliamente).
Incluso con la difusión de los cartuchos y las cintas de casete en la década de 1980 para la distribución de software comercial, todavía se imprimían con frecuencia programas libres (como programas educativos sencillos destinados a enseñar técnicas de programación) porque era más barato que fabricar y adjuntar cintas de casete a las revistas.
Sin embargo, con el tiempo una combinación de cuatro factores puso fin a esta práctica de imprimir listados completos de códigos fuente de programas enteros en revistas de informática:
Muy pronto, el software comercial empezó a ser pirateado , algo que descontentó mucho a los productores de software comercial. Bill Gates , cofundador de Microsoft , fue uno de los primeros moralizadores contra la piratería de software con su famosa Carta abierta a los aficionados en 1976. [36]
Antes de la aparición de los microordenadores, un programa de software de éxito se vendía normalmente en 1.000 ejemplares a 50.000-60.000 dólares cada uno. A mediados de los años 1980, el software de ordenador personal se vendía en miles de copias a 50-700 dólares cada una. Empresas como Microsoft, MicroPro y Lotus Development tenían ventas anuales de decenas de millones de dólares. [37] También dominaban el mercado europeo con versiones localizadas de productos que ya tenían éxito. [38]
Un momento crucial en la historia de la informática fue la publicación en la década de 1980 de las especificaciones para el IBM Personal Computer publicadas por el empleado de IBM Philip Don Estridge , que rápidamente llevaron al dominio del PC en los mercados mundiales de computadoras de escritorio y, más tarde, de portátiles, un dominio que continúa hasta el día de hoy. Microsoft, al negociar con éxito con IBM para desarrollar el primer sistema operativo para el PC ( MS-DOS ), se benefició enormemente del éxito del PC en las décadas siguientes, a través del éxito de MS-DOS y su complemento y sucesor, Microsoft Windows . Ganar la negociación fue un momento crucial en la historia de Microsoft.
En los últimos años, las aplicaciones para dispositivos móviles (teléfonos móviles y tabletas) se han denominado "aplicaciones". Apple decidió canalizar las ventas de aplicaciones para iPhone y iPad a través de su App Store , y así, ambas empresas examinan las aplicaciones y obtienen una parte de cada aplicación pagada vendida. Apple no permite aplicaciones que puedan utilizarse para eludir su tienda de aplicaciones (por ejemplo, máquinas virtuales como las máquinas virtuales Java o Flash).
La plataforma Android , por el contrario, tiene múltiples tiendas de aplicaciones disponibles y los usuarios generalmente pueden seleccionar cuál usar (aunque Google Play requiere un dispositivo compatible o rooteado).
Esta medida se replicó para los sistemas operativos de escritorio con GNOME Software (para Linux), Mac App Store (para macOS) y Windows Store (para Windows). Todas estas plataformas siguen siendo, como siempre, no excluyentes: permiten instalar aplicaciones desde fuera de la tienda de aplicaciones e incluso desde otras tiendas de aplicaciones.
El aumento explosivo de la popularidad de las aplicaciones, en particular para el iPhone pero también para Android, dio lugar a una especie de " fiebre del oro ", en la que algunos programadores esperanzados dedicaron una cantidad significativa de tiempo a crear aplicaciones con la esperanza de hacerse ricos. Como en las verdaderas fiebres del oro, no todos estos emprendedores esperanzados tuvieron éxito.
El desarrollo de planes de estudio en informática ha dado como resultado mejoras en el desarrollo de software. Los componentes de estos planes de estudio incluyen:
A medida que más y más programas entran en el reino del firmware, y el hardware en sí se vuelve más pequeño, más barato y más rápido como predice la ley de Moore , un número cada vez mayor de tipos de funcionalidad de computación realizada primero por software, se han unido a las filas del hardware, como por ejemplo con las unidades de procesamiento gráfico . (Sin embargo, el cambio a veces ha sido en sentido contrario por costo u otras razones, como por ejemplo con los softmodems y el microcódigo .)
Hoy en día, la mayoría de las empresas de hardware tienen más programadores de software en su nómina que diseñadores de hardware [ cita requerida ] , ya que las herramientas de software han automatizado muchas tareas de los ingenieros de placas de circuitos impresos (PCB).
Las siguientes tablas incluyen el desarrollo año tras año de muchos aspectos diferentes del software informático, incluidos:
El juez WHITE, con quien se une el juez BLACKMUN, disintió.
{{cite web}}
: CS1 maint: archived copy as title (link)