El software es un conjunto de instrucciones programadas almacenadas en la memoria de computadoras digitales con programa almacenado para su ejecución por el procesador. 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 son a menudo considerados los fundadores de la disciplina. Sin embargo, los esfuerzos del matemático quedaron sólo teóricos, ya que la tecnología de la época de Lovelace y Babbage resultó insuficiente para construir su computadora. A Alan Turing se le atribuye ser la primera persona en proponer una teoría para el software en 1935, lo que condujo a los dos campos académicos de la informática y la ingeniería de software .
La primera generación de software para las primeras computadoras digitales con programas almacenados a fines de la década de 1940 tenía sus instrucciones escritas directamente en código binario , generalmente escritas para computadoras centrales . 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 la programación funcional y los paradigmas de programación orientados a objetos .
La informática como concepto se remonta a la antigüedad, 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: sus capacidades informáticas estaban directamente ligadas a 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 puedan almacenar, iniciar y detener individualmente conjuntos reutilizables de rutinas y funciones matemáticas que comprenden programas, y sólo aparece recientemente. en la historia humana.
El primer algoritmo informático conocido fue escrito por Ada Lovelace en el siglo XIX para Analytical Engine , para traducir el trabajo de Luigi Menabrea sobre los números de Bernoulli para la instrucción de máquinas. [3] [3] Sin embargo, esto siguió siendo solo teórico: el menor estado de ingeniería en la vida de estos dos matemáticos resultó insuficiente [ cita necesaria ] 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 finalmente condujo a la creación de campos académicos gemelos de ciencias de la computación e 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. En cambio, los primeros dispositivos informáticos electrónicos fueron reconectados para "reprogramarlos". La ENIAC , una de las primeras computadoras electrónicas, fue programada en gran parte por mujeres que anteriormente habían trabajado como computadoras humanas . [5] [6] Los ingenieros daban a los programadores planos del cableado de ENIAC y esperaban que descubrieran cómo programar la máquina. [7] Las mujeres que trabajaron como programadoras prepararon el ENIAC para su primera revelación pública, cableando los paneles de conexión para las manifestaciones. [8] [9] [10] Kathleen Booth desarrolló el lenguaje ensamblador en 1950 para facilitar la programación de las computadoras en las que trabajaba en 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 haber acuñado los términos "error" y " depuración ", 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 trasladó 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 trabaja en UNIVAC, desarrolló un código [ se necesita aclaración ] , C-10, que permitía a los programadores usar entradas de teclado y creó el generador de clasificación y fusión en 1951. [16] [17] Adele Mildred Koss y Hopper también creó el precursor de un generador de informes . [dieciséis]
En su manuscrito "Una teoría matemática de la comunicación", Claude Shannon (1916-2001) describió cómo se podría implementar la lógica binaria para programar una computadora. Posteriormente, los primeros programadores informáticos utilizaron código binario para indicar a las computadoras que realizaran diversas tareas. Sin embargo, el proceso fue muy arduo. Los programadores informáticos tuvieron que proporcionar largas cadenas de código binario para indicarle a la computadora qué tipo de datos debía almacenar. El código y los datos tenían que cargarse en las computadoras utilizando varios mecanismos tediosos, incluido accionar interruptores o perforar agujeros en posiciones predefinidas en tarjetas y cargar estas tarjetas perforadas en una computadora. Con estos métodos, si se comete un error, es posible que sea necesario volver a cargar todo el programa desde el principio.
La primera vez que una computadora con programa almacenado mantuvo un software en una 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 la computadora Manchester Baby . Fue escrito por Tom Kilburn y calculó el factor más alto del número entero 2^18 = 262,144. Comenzando con un divisor de prueba grande, realizó la división de 262,144 mediante restas repetidas y luego verificó si el resto era cero. En caso contrario, disminuía el divisor de prueba en uno y repetía el proceso. Google lanzó un homenaje al Manchester Baby, celebrandolo 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 se concibió por primera vez cuando Mary K. Hawes convocó una reunión (que incluía a Grace Hopper ) en 1959 para discutir cómo crear un lenguaje informático para compartir 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 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 de los módulos de aterrizaje. [23] [24] Las computadoras fueron 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 compuesto 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 en problemas de confiabilidad del software cuando trabajaba en el sistema de defensa aérea SAGE de EE. UU., también formó parte del equipo de software Apollo. [23] [26] Hamilton estaba a cargo del software de vuelo a bordo de las computadoras Apollo. [23] Hamilton consideró que las operaciones de software no eran sólo parte de la máquina, sino que también estaban estrechamente relacionadas 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 de las misiones Apolo estaba formado por cables que pasaban por 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 almacenó 64 bits de información. [28] Hamilton y otros crearían el software perforando agujeros en tarjetas perforadas, que luego se procesarían en una computadora central Honeywell donde se podría simular el software. [23] Cuando el código era "sólido", se envió para ser tejido en los núcleos magnéticos de Raytheon , donde mujeres conocidas como "Ancianitas" trabajaban en los cables. [23] El programa en sí era "indestructible" y podía incluso resistir la caída de rayos, como le ocurrió al Apolo 12 . [28] Cablear las computadoras tomó varias semanas, lo que congeló el desarrollo de software durante ese tiempo. [29]
Mientras usaba los simuladores para probar la programación, Hamilton descubrió formas en 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 provocarían un fallo del sistema, por lo que anotó el código en la documentación del programa. [23] Sus ideas de agregar código de verificación de errores fueron rechazadas por ser "excesivas". [23] Sin embargo, exactamente lo que Hamilton predijo que sucedería ocurrió en el vuelo Apolo 8 , cuando un error humano hizo que la computadora borrara todos los datos de navegación. [23]
Posteriormente, los fabricantes de equipos originales (OEM), como Data General , Digital Equipment e IBM , vendieron el software a varios clientes junto con el hardware . Cuando un cliente compraba una minicomputadora , en ese momento la computadora más pequeña del mercado, la computadora no venía con el software preinstalado , sino que debía ser instalada por ingenieros empleados por el OEM. [ cita necesaria ]
Este paquete atrajo la atención de los reguladores antimonopolio estadounidenses, que demandaron a IBM por "vinculación" inadecuada en 1969, alegando que era una violación antimonopolio que los clientes que querían obtener su software también tuvieran que comprar o arrendar su hardware para poder hacerlo. Sin embargo, el Departamento de Justicia de Estados Unidos abandonó el caso, después de muchos años de desgaste, al concluir que "carecía de mérito". [31]
Data General también enfrentó 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 conceder la licencia de su software y reclamó sus "derechos de agrupación". La Corte Suprema de los EE. UU. sentó un precedente llamado Digidyne v. Data General en 1985 al permitir que se mantuviera la decisión de un tribunal de apelaciones del noveno circuito sobre el caso, y Data General finalmente se vio obligado a otorgar una licencia para el sistema operativo porque se dictaminó que restringir la licencia solo a DG El hardware era un acuerdo de vinculación ilegal . [32] Aunque el Tribunal de Distrito señaló que "ningún jurado razonable pudo concluir que dentro de este mercado grande y dinámico con competidores mucho mayores", Data General "tenía 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 consideró 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 contrademandó. Uno de los argumentos de la contrademanda, citando el caso Data General, fue que Apple domina el mercado de ordenadores compatibles con OS X al vincular ilegalmente el sistema operativo a los ordenadores Apple. El juez del Tribunal de Distrito William Alsup rechazó este argumento, diciendo, como el Tribunal de Distrito había dictaminado en el caso Data General más de 20 años antes, que el mercado relevante no era simplemente un sistema operativo (Mac OS) sino todos los sistemas operativos de PC, incluido Mac OS. , y señalando 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 era siempre ilegal había sido "implícitamente anulada" por el veredicto en el caso Illinois Tool Works Inc. contra Independent Ink, Inc. [34]
A finales del decenio de 1960 comenzó a desarrollarse una industria que producía software empaquetado de forma independiente (software que no se producía "únicamente" para un cliente individual ni "se incluía" con hardware informático). [35]
Unix fue uno de los primeros sistemas operativos que se hizo popular y muy influyente, y todavía existe hoy. La variante más popular de Unix en la actualidad es macOS (anteriormente 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 ese mismo año y los aficionados comenzaron a desarrollar programas para ejecutar estos kits. Tiny BASIC se publicó como un programa mecanografiado en el Dr. Dobb's Journal y se desarrolló en colaboración.
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 tendrían que escribir todo el programa a mano. En 1978, Kathe y Dan Spracklen publicaron la 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 e incómodo escribir el código fuente de una revista de informática, y un solo carácter mal escrito (o peor aún, mal impreso) podía hacer que el programa fuera inoperable, pero la gente aun así lo hacía. ( La tecnología de reconocimiento óptico de caracteres , que en teoría podría haberse utilizado para escanear los listados en lugar de transcribirlos a mano, aún no se utilizaba ampliamente).
Incluso con la proliferación de cartuchos y cintas de casete en los años 1980 para la distribución de software comercial, los programas gratuitos (como programas educativos sencillos con el fin de enseñar técnicas de programación) todavía se imprimían con frecuencia, porque era más barato que fabricar y adjuntar cintas de casete a los archivos. revistas.
Sin embargo, finalmente una combinación de cuatro factores puso fin a esta práctica de imprimir listas completas de códigos fuente de programas completos en revistas de informática:
Muy rápidamente, el software comercial empezó a ser pirateado y los productores de software comercial estaban muy descontentos con esto. Bill Gates , cofundador de Microsoft , fue uno de los primeros en moralizar contra la piratería de software con su famosa Carta abierta a los aficionados en 1976. [36]
Antes de la microcomputadora, un programa de software exitoso normalmente vendía hasta 1.000 unidades a entre 50.000 y 60.000 dólares cada una. A mediados de la década de 1980, el software de computadora personal vendía miles de copias por entre 50 y 700 dólares cada una. Empresas como Microsoft, MicroPro y Lotus Development tenían decenas de millones de dólares en ventas anuales. [37] De manera similar, dominaron 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 la computadora personal IBM publicadas por el empleado de IBM Philip Don Estridge , que rápidamente llevaron al dominio de la PC en los mercados mundiales de computadoras de escritorio y más tarde de portátiles, un dominio que continúa. para este día. Microsoft, al negociar con éxito con IBM para desarrollar el primer sistema operativo para PC ( MS-DOS ), se benefició enormemente del éxito de la PC durante las décadas siguientes, a través del éxito de MS-DOS y su complemento-sucesor, Microsoft Windows . Ganar la negociación fue un momento crucial en la historia de Microsoft.
Las aplicaciones para dispositivos móviles (teléfonos móviles y tabletas) se han denominado "apps" en los últimos años. Apple optó por canalizar las ventas de aplicaciones para iPhone y iPad a través de su App Store y, por lo tanto, examinar ambas aplicaciones y obtener una parte de cada aplicación paga vendida. Apple no permite aplicaciones que puedan usarse 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).
Este movimiento se replicó para sistemas operativos de escritorio con el software GNOME (para Linux), Mac App Store (para macOS) y Windows Store (para Windows). Todas estas plataformas siguen siendo, como siempre, no exclusivas: permiten instalar aplicaciones desde fuera de la tienda de aplicaciones y, de hecho, desde otras tiendas de aplicaciones.
El explosivo aumento de la popularidad de las aplicaciones, especialmente para iPhone pero también para Android, provocó 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 empresarios 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 ámbito del firmware, y el hardware en sí se vuelve más pequeño, más barato y más rápido como lo predice la ley de Moore , un número cada vez mayor de tipos de funcionalidades de computación realizadas primero por software se han unido a las filas del hardware, como por ejemplo con unidades de procesamiento de gráficos . (Sin embargo, el cambio a veces ha ido en sentido contrario por razones de 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 nómina que diseñadores de hardware [ cita necesaria ] , ya que las herramientas de software han automatizado muchas tareas de los ingenieros de placas de circuito impreso (PCB).
Las siguientes tablas incluyen el desarrollo año tras año de muchos aspectos diferentes del software informático, entre ellos:
{{cite web}}
: CS1 maint: archived copy as title (link)