Página semiprotejada
De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Un diagrama que muestra cómo interactúa el usuario con el software de la aplicación en una computadora de escritorio típica . La capa de software de aplicación interactúa con el sistema operativo , que a su vez se comunica con el hardware . Las flechas indican el flujo de información.

El software es una colección de instrucciones y datos que le dicen a la computadora cómo trabajar. Esto contrasta con el hardware físico , a partir del cual se construye el sistema y realmente realiza el trabajo. En ciencias de la computación e ingeniería de software , el software de computación es toda la información procesada por sistemas de computación , incluidos programas y datos . El software de computadora incluye programas de computadora , bibliotecas y datos no ejecutables relacionados , como documentación en línea omedios digitales . El hardware y el software de las computadoras se requieren mutuamente y ninguno de los dos se puede utilizar de manera realista por sí solo.

En el nivel de programación más bajo , el código ejecutable consta de instrucciones en lenguaje de máquina soportadas por un procesador individual , típicamente una unidad central de procesamiento (CPU) o una unidad de procesamiento de gráficos (GPU). Un lenguaje de máquina consta de grupos de valores binarios que significan instrucciones del procesador que cambian el estado de la computadora desde su estado anterior. Por ejemplo, una instrucción puede cambiar el valor almacenado en una ubicación de almacenamiento particular en la computadora, un efecto que el usuario no puede observar directamente. Una instrucción también puede invocar una de las muchas operaciones de entrada o salida., por ejemplo, mostrar texto en la pantalla de una computadora; provocando cambios de estado que deberían ser visibles para el usuario . El procesador ejecuta las instrucciones en el orden en que se proporcionan, a menos que se le indique "saltar" a una instrucción diferente o el sistema operativo lo interrumpa . A partir de 2015 , la mayoría de las computadoras personales , los dispositivos de teléfonos inteligentes y los servidores tienen procesadores con múltiples unidades de ejecución o múltiples procesadores que realizan cálculos juntos, y la informática se ha convertido en una actividad mucho más concurrente que en el pasado.

La mayoría del software está escrito en lenguajes de programación de alto nivel . Son más fáciles y eficientes para los programadores porque están más cerca de los lenguajes naturales que de los lenguajes de máquina. [1] Los lenguajes de alto nivel se traducen al lenguaje de máquina utilizando un compilador o un intérprete o una combinación de ambos. El software también puede estar escrito en un lenguaje ensamblador de bajo nivel , que tiene una fuerte correspondencia con las instrucciones del lenguaje de máquina de la computadora y se traduce al lenguaje de máquina usando un ensamblador .

Historia

Ada Lovelace escribió un esquema ( algoritmo ) para lo que habría sido la primera pieza de software en el siglo XIX, para el motor analítico planeado . [2] Creó pruebas para mostrar cómo el motor calcularía los números de Bernoulli . [2] Debido a las pruebas y el algoritmo, se la considera la primera programadora de computadoras. [3] [4]

La primera teoría sobre el software, antes de la creación de las computadoras como las conocemos hoy, fue propuesta por Alan Turing en su ensayo de 1935 Sobre números computables, con una aplicación al problema de Entscheidung (problema de decisión).

Esto finalmente condujo a la creación de los campos académicos de la informática y la ingeniería de software ; Ambos campos estudian el software y su creación. La informática es el estudio teórico de la informática y el software (el ensayo de Turing es un ejemplo de informática), mientras que la ingeniería de software es la aplicación de la ingeniería y el desarrollo de software.

Sin embargo, antes de 1946, el software aún no eran los programas almacenados en la memoria de las computadoras digitales con programas almacenados, como lo entendemos ahora. En cambio, los primeros dispositivos informáticos electrónicos fueron recableados para "reprogramarlos".

En 2000, Fred Shapiro, bibliotecario de la Facultad de Derecho de Yale, publicó una carta en la que revelaba que el artículo de 1958 de John Wilder Tukey "La enseñanza de las matemáticas concretas" [5] [6] contenía el uso más antiguo conocido del término "software". encontrado en una búsqueda en los archivos electrónicos de JSTOR , dos años antes de la cita del OED . [7] Esto llevó a muchos a darle crédito a Tukey por haber acuñado el término, particularmente en obituarios publicados ese mismo año, [8] aunque Tukey nunca reclamó crédito por tal acuñación. En 1995, Paul Niquette afirmó que originalmente había acuñado el término en octubre de 1953, aunque no pudo encontrar ningún documento que respalde su afirmación. [9]La primera publicación conocida del término "software" en un contexto de ingeniería fue en agosto de 1953 por Richard R. Carhart, en un Memorando de Investigación de Rand Corporation . [10]

Tipos

Blender Game Engine , un programa de software gratuito .

En prácticamente todas las plataformas informáticas, el software se puede agrupar en unas pocas categorías amplias.

Finalidad o dominio de uso

Según el objetivo, el software de computadora se puede dividir en:

  • Software de aplicación,
    que es software que utiliza el sistema informático para realizar funciones especiales o proporcionar funciones de entretenimiento más allá del funcionamiento básico de la propia computadora. Hay muchos tipos diferentes de software de aplicación, porque la gama de tareas que se pueden realizar con una computadora moderna es muy amplia; consulte la lista de software .
  • Software del sistema
    que es software para administrar el comportamiento del hardware de la computadora , para proporcionar funcionalidades básicas que son requeridas por los usuarios, o para que otro software funcione correctamente, si es que lo hace. El software del sistema también está diseñado para proporcionar una plataforma para ejecutar software de aplicación, [11] e incluye lo siguiente:
    • Sistemas operativos
      que son colecciones esenciales de software que administran recursos y brindan servicios comunes para otro software que se ejecuta "encima" de ellos. Los programas de supervisión , los cargadores de arranque , los shells y los sistemas de ventanas son partes centrales de los sistemas operativos. En la práctica, un sistema operativo viene con software adicional (incluido el software de aplicación) para que un usuario pueda potencialmente hacer algún trabajo con una computadora que solo tiene un sistema operativo.
    • Controladores de dispositivos
      que operan o controlan un tipo particular de dispositivo que está conectado a una computadora. Cada dispositivo necesita al menos un controlador de dispositivo correspondiente; debido a que una computadora normalmente tiene al menos al menos un dispositivo de entrada y al menos un dispositivo de salida, una computadora normalmente necesita más de un controlador de dispositivo.
    • Utilidades
      que son programas de computadoradiseñados para ayudar a los usuarios en el mantenimiento y cuidado de sus computadoras.
  • Software malicioso o malware,
    que es software desarrollado para dañar e interrumpir computadoras. Como tal, el software malicioso no es deseable. El malware está estrechamente asociado con los delitos informáticos, aunque algunos programas maliciosos pueden haber sido diseñados como bromas pesadas .

Naturaleza o dominio de ejecución

  • Aplicaciones de escritorio como navegadores web y Microsoft Office , así como aplicaciones para teléfonos inteligentes y tabletas (llamadas " aplicaciones "). (Hay un impulso en algunas partes de la industria del software para fusionar aplicaciones de escritorio con aplicaciones móviles, hasta cierto punto. Windows 8 , y más tarde Ubuntu Touch , intentaron permitir el mismo estilo de interfaz de usuario de aplicaciones para ser utilizado en computadoras de escritorio, portátiles y móviles.)
  • Los scripts de JavaScript son piezas de software que tradicionalmente se integran en páginas web que se ejecutan directamente dentro del navegador web cuando se carga una página web sin la necesidad de un complemento de navegador web. El software escrito en otros lenguajes de programación también se puede ejecutar dentro del navegador web si el software está traducido a JavaScript o si está instalado un complemento de navegador web que admita ese idioma; el ejemplo más común de este último son los scripts de ActionScript , que son compatibles con el complemento Adobe Flash .
  • Software de servidor , que incluye:
    • Aplicaciones web , que normalmente se ejecutan en el servidor web y envían páginas web generadas dinámicamente a navegadores web, utilizando, por ejemplo , PHP , Java , ASP.NET o incluso JavaScript que se ejecuta en el servidor . En los tiempos modernos, estos comúnmente incluyen algo de JavaScript para ejecutarse también en el navegador web, en cuyo caso generalmente se ejecutan en parte en el servidor y en parte en el navegador web.
  • Los complementos y extensiones son software que amplían o modifican la funcionalidad de otra pieza de software y requieren que se utilice software para funcionar;
  • Software embebido reside como firmware dentro de los sistemas integrados , dispositivos dedicados a un solo uso o de varios usos, tales como automóviles y televisores (aunque algunos dispositivos embebidos, tales como conjuntos de chips inalámbricos pueden ellos mismos ser parte de un sistema ordinario, no embebida ordenador tal como un PC o teléfono inteligente). [12] En el contexto del sistema integrado, a veces no hay una distinción clara entre el software del sistema y el software de la aplicación. Sin embargo, algunos sistemas integrados ejecutan sistemas operativos integrados, y estos sistemas mantienen la distinción entre software de sistema y software de aplicación (aunque normalmente solo habrá una aplicación fija que siempre se ejecuta).
  • El microcódigo es un tipo de software incrustado especial y relativamente oscuro que le dice al propio procesador cómo ejecutar el código de máquina, por lo que en realidad es un nivel más bajo que el código de máquina. Por lo general, es propiedad del fabricante del procesador, y ellos proporcionan a los usuarios las actualizaciones necesarias del software de microcódigo correccional (lo que es mucho más barato que enviar el hardware del procesador de reemplazo). Por lo tanto, un programador ordinario no esperaría tener que lidiar nunca con eso.

Herramientas de programación

Las herramientas de programación también son software en forma de programas o aplicaciones que los desarrolladores de software (también conocidos como programadores, codificadores, piratas informáticos o ingenieros de software ) utilizan para crear, depurar , mantener (es decir, mejorar o reparar) o dar soporte al software.

El software está escrito en uno o más lenguajes de programación; Existen muchos lenguajes de programación y cada uno tiene al menos una implementación, cada una de las cuales consta de su propio conjunto de herramientas de programación. Estas herramientas pueden ser programas relativamente independientes, como compiladores , depuradores , intérpretes , enlazadores y editores de texto , que se pueden combinar para realizar una tarea; o pueden formar un entorno de desarrollo integrado(IDE), que combina gran parte o la totalidad de la funcionalidad de estas herramientas autónomas. Los IDE pueden hacer esto invocando las herramientas individuales relevantes o volviendo a implementar su funcionalidad de una manera nueva. Un IDE puede facilitar la realización de tareas específicas, como buscar archivos en un proyecto en particular. Muchas implementaciones de lenguajes de programación ofrecen la opción de utilizar tanto herramientas individuales como un IDE.

Temas

Arquitectura

Los usuarios a menudo ven las cosas de manera diferente a los programadores. Las personas que usan computadoras modernas de propósito general (a diferencia de los sistemas integrados , computadoras analógicas y supercomputadoras ) generalmente ven tres capas de software que realizan una variedad de tareas: plataforma, aplicación y software de usuario.

  • Software de
    la plataforma La plataforma incluye el firmware , los controladores de dispositivo , un sistema operativo y, por lo general, una interfaz gráfica de usuario que, en total, permite al usuario interactuar con la computadora y sus periféricos (equipo asociado). El software de plataforma a menudo viene incluido con la computadora. En una PC , normalmente se tendrá la capacidad de cambiar el software de la plataforma.
  • Software de aplicación El software de
    aplicación o las aplicaciones son lo que la mayoría de la gente piensa cuando piensa en software. Los ejemplos típicos incluyen suites de oficina y videojuegos. El software de aplicación a menudo se compra por separado del hardware de la computadora. A veces, las aplicaciones se incluyen con la computadora, pero eso no cambia el hecho de que se ejecutan como aplicaciones independientes. Las aplicaciones suelen ser programas independientes del sistema operativo, aunque a menudo se adaptan a plataformas específicas. La mayoría de los usuarios piensan en los compiladores, las bases de datos y otro "software del sistema" como aplicaciones.
  • Software escrito
    por el usuario El desarrollo del usuario final adapta los sistemas para satisfacer las necesidades específicas de los usuarios. El software del usuario incluye plantillas de hojas de cálculo y plantillas de procesador de textos . Incluso los filtros de correo electrónico son una especie de software de usuario. Los usuarios crean este software ellos mismos y, a menudo, pasan por alto lo importante que es. Dependiendo de cuán competente se haya integrado el software escrito por el usuario en los paquetes de aplicaciones predeterminados, es posible que muchos usuarios no sean conscientes de la distinción entre los paquetes originales y lo que han agregado los compañeros de trabajo.

Ejecución

El software de la computadora debe "cargarse" en el almacenamiento de la computadora (como el disco duro o la memoria ). Una vez que se ha cargado el software, la computadora puede ejecutar el software. Esto implica pasar instrucciones desde el software de la aplicación , a través del software del sistema, al hardware que finalmente recibe la instrucción como código de máquina . Cada instrucción hace que la computadora lleve a cabo una operación: mover datos , realizar un cálculo o alterar el flujo de control de las instrucciones.

El movimiento de datos suele ser de un lugar de la memoria a otro. A veces, implica mover datos entre la memoria y los registros, lo que permite el acceso a datos de alta velocidad en la CPU. Mover datos, especialmente grandes cantidades, puede resultar costoso. Por lo tanto, esto a veces se evita utilizando "punteros" a los datos. Los cálculos incluyen operaciones simples como incrementar el valor de un elemento de datos variable. Los cálculos más complejos pueden involucrar muchas operaciones y elementos de datos juntos.

Calidad y fiabilidad

La calidad del software es muy importante, especialmente para software comercial y de sistemas como Microsoft Office , Microsoft Windows y Linux . Si el software es defectuoso (con errores), puede eliminar el trabajo de una persona, bloquear la computadora y hacer otras cosas inesperadas. Las fallas y los errores se denominan " errores " que a menudo se descubren durante las pruebas alfa y beta. El software también es a menudo víctima de lo que se conoce como envejecimiento del software , la degradación progresiva del rendimiento resultante de una combinación de errores invisibles.

Muchos errores se descubren y eliminan (depuran) mediante pruebas de software . Sin embargo, las pruebas de software rara vez, si es que alguna vez, eliminan todos los errores; algunos programadores dicen que "cada programa tiene al menos un error más" (Ley de Lubarsky). [13] En el método de desarrollo de software en cascada , normalmente se emplean equipos de prueba separados, pero en enfoques más nuevos, denominados colectivamente desarrollo de software ágil , los desarrolladores a menudo hacen todas sus propias pruebas y demuestran el software a los usuarios / clientes con regularidad para obtener comentarios. El software se puede probar mediante pruebas unitarias , pruebas de regresióny otros métodos, que se realizan manualmente, o más comúnmente, automáticamente, ya que la cantidad de código a probar puede ser bastante grande. Por ejemplo, la NASA tiene procedimientos de prueba de software extremadamente rigurosos para muchos sistemas operativos y funciones de comunicación. Muchas operaciones basadas en la NASA interactúan y se identifican entre sí a través de programas de comando. Esto permite a muchas personas que trabajan en la NASA verificar y evaluar los sistemas funcionales en general. Los programas que contienen software de comando permiten que la ingeniería de hardware y las operaciones del sistema funcionen mucho más fácilmente juntas.

Licencia

La licencia del software otorga al usuario el derecho a utilizar el software en el entorno con licencia y, en el caso de las licencias de software libre , también otorga otros derechos, como el derecho a realizar copias.

El software propietario se puede dividir en dos tipos:

  • freeware , que incluye la categoría de software de "prueba gratuita" o software " freemium " (en el pasado, el término shareware se utilizaba a menudo para la prueba gratuita / software freemium). Como su nombre indica, el software gratuito se puede utilizar de forma gratuita, aunque en el caso de las pruebas gratuitas o del software freemium, a veces esto solo es cierto durante un período de tiempo limitado o con una funcionalidad limitada.
  • software disponible por una tarifa, a menudo denominado incorrectamente " software comercial ", que sólo se puede utilizar legalmente con la compra de una licencia.

El software de código abierto , por otro lado, viene con una licencia de software libre , que otorga al destinatario los derechos para modificar y redistribuir el software.

Patentes

Teóricamente, se supone que las patentes de software, al igual que otros tipos de patentes, otorgan al inventor una licencia exclusiva por tiempo limitado para una idea detallada (por ejemplo, un algoritmo) sobre cómo implementar una pieza de software o un componente de una pieza de software. Ideas de cosas útiles que el software podría hacer y requisitos del usuario, no se supone que sean patentables, y las implementaciones concretas (es decir, los paquetes de software reales que implementan la patente) tampoco se supone que sean patentables; estas últimas ya están cubiertas por derechos de autor, generalmente de forma automática. Por lo tanto, se supone que las patentes de software cubren el área intermedia, entre los requisitos y la implementación concreta. En algunos países, un requisito para que la invención reivindicada tenga un efecto en el mundo físico también puede ser parte de los requisitos para que una patente de software sea válida, aunque dado que todo software útil tiene efectos en el mundo físico, este requisito puede ser válido. abierto al debate. Mientras tanto, la ley de derechos de autor estadounidense se aplicó a varios aspectos de la escritura del código de software. [14]

Las patentes de software son controvertidas en la industria del software y muchas personas tienen diferentes puntos de vista sobre ellas. Una de las fuentes de controversia es que la división antes mencionada entre las ideas iniciales y la patente no parece ser respetada en la práctica por los abogados de patentes, por ejemplo, la patente de Programación Orientada a Aspectos (AOP), que pretendía reclamar derechos sobre cualquierherramienta de programación que implementa la idea de AOP, independientemente de cómo se implemente. Otra fuente de controversia es el efecto sobre la innovación, con muchos expertos y empresas distinguidos que argumentan que el software es un campo en movimiento tan rápido que las patentes de software simplemente crean enormes costos y riesgos adicionales de litigio y, de hecho, retrasan la innovación. En el caso de los debates sobre patentes de software fuera de los Estados Unidos, se ha argumentado que es probable que las grandes corporaciones estadounidenses y los abogados de patentes sean los principales beneficiarios de permitir o seguir permitiendo las patentes de software.

Diseño e implementación

El diseño y la implementación del software varían según la complejidad del software. Por ejemplo, el diseño y la creación de Microsoft Word tomó mucho más tiempo que diseñar y desarrollar Microsoft Notepad porque este último tiene una funcionalidad mucho más básica.

El software generalmente se diseña y crea (también conocido como codificado / escrito / programado) en entornos de desarrollo integrados (IDE) como Eclipse , IntelliJ y Microsoft Visual Studio que pueden simplificar el proceso y compilar el software (si corresponde). Como se indica en una sección diferente, el software generalmente se crea sobre el software existente y la interfaz de programación de aplicaciones (API) que proporciona el software subyacente, como GTK + , JavaBeans o Swing . Las bibliotecas (API) se pueden clasificar según su propósito. Por ejemplo, Spring Framework se utiliza para implementar aplicaciones empresariales., la biblioteca de Windows Forms se usa para diseñar aplicaciones de interfaz gráfica de usuario (GUI) como Microsoft Word , y Windows Communication Foundation se usa para diseñar servicios web . Cuando se diseña un programa, se basa en la API. Por ejemplo, una aplicación de escritorio de Microsoft Windows puede llamar a funciones de API en la biblioteca .NET Windows Forms como Form1.Close () y Form1.Show () [15] para cerrar o abrir la aplicación. Sin estas API, el programador debe escribir estas funcionalidades por sí mismo. Empresas como Oracle y Microsoftproporcionan sus propias API para que muchas aplicaciones se escriban utilizando sus bibliotecas de software que generalmente tienen numerosas API en ellas.

Las estructuras de datos , como tablas hash , matrices y árboles binarios , y algoritmos como el ordenamiento rápido , pueden resultar útiles para crear software.

Los programas informáticos tienen características económicas especiales que hacen que su diseño, creación y distribución sean diferentes de la mayoría de los demás bienes económicos. [ especificar ] [16] [17]

Una persona que crea software se llama programador , ingeniero de software o desarrollador de software, términos que tienen todos un significado similar. También existen términos más informales para programador, como "codificador" y " pirata informático ", aunque el uso de esta última palabra puede causar confusión, porque se usa con más frecuencia para referirse a alguien que ingresa ilegalmente a los sistemas informáticos .

Industria y organizaciones

Una gran variedad de empresas de software y programadores en el mundo comprenden una industria de software. El software puede ser una industria bastante rentable: Bill Gates , el cofundador de Microsoft fue la persona más rica del mundo en 2009, en gran parte debido a su propiedad de un número significativo de acciones de Microsoft, la empresa responsable de Microsoft Windows y Microsoft Office. productos de software: ambos líderes del mercado en sus respectivas categorías de productos.

Las organizaciones de software sin fines de lucro incluyen Free Software Foundation , GNU Project y Mozilla Foundation . Las organizaciones de estándares de software como W3C , IETF desarrollan estándares de software recomendados como XML , HTTP y HTML , para que el software pueda interoperar a través de estos estándares.

Otras grandes empresas de software conocidas son Google , IBM , TCS , Infosys , Wipro , HCL Technologies , Oracle , Novell , SAP , Symantec , Adobe Systems , Sidetrade y Corel , mientras que las pequeñas empresas suelen ofrecer innovación.

Ver también

  • Ciclo de vida de la versión de software
  • Proveedor de software independiente
  • Esquema de software
  • Gerencia de activos de software
  • Software de código abierto

Referencias

  1. ^ "Construcción del compilador" . Archivado desde el original el 2 de noviembre de 2013.
  2. ↑ a b Evans , 2018 , pág. 21.
  3. Fuegi, J .; Francis, J. (2003). "Lovelace & Babbage y la creación de las 'notas ' de 1843 " (PDF) . Anales de la Historia de la Computación . 25 (4): 16-26. doi : 10.1109 / MAHC.2003.1253887 . S2CID 40077111 .  
  4. ^ "Ada Lovelace honrada por el doodle de Google" . The Guardian . 10 de diciembre de 2012 . Consultado el 25 de noviembre de 2018 .
  5. ^ Tukey, John Wilder (enero de 1958). "La enseñanza de las matemáticas concretas". American Mathematical Monthly . Taylor & Francis, Ltd. / Asociación Matemática de América . 65 (1): 1–9, 2. doi : 10.2307 / 2310294 . ISSN 0002-9890 . JSTOR 2310294 . CODEN AMMYAE . […] Hoy en día, el "software" que comprende las rutinas interpretativas cuidadosamente planificadas, los compiladores y otros aspectos de la programación automática son al menos tan importantes para la calculadora electrónica moderna como su "hardware" de tubos, transistores, cables, cintas y similares. . […]   
  6. ^ Beebe, Nelson HF (22 de agosto de 2017). "Capítulo I - Aritmética de enteros". El manual de computación de funciones matemáticas - Programación usando la biblioteca de software portátil MathCW (1 ed.). Salt Lake City, UT, Estados Unidos: Springer International Publishing AG . págs. 969, 1035. doi : 10.1007 / 978-3-319-64110-2 . ISBN 978-3-319-64109-6. LCCN  2017947446 . S2CID  30244721 .
  7. ^ Shapiro, Fred (2000). "Origen del término Software: evidencia del archivo de revistas electrónicas JSTOR" (PDF) . IEEE Annals of the History of Computing . 22 (2): 69–71. doi : 10.1109 / mahc.2000.887997 . Archivado desde el original (PDF) el 5 de junio de 2003 . Consultado el 25 de junio de 2013 .
  8. ^ Leonhardt, David (28 de julio de 2000). "John Tukey, 85, estadístico; acuñó la palabra 'Software ' " . The New York Times . Consultado el 24 de septiembre de 2012 .
  9. ^ Niquette, R. Paul (2006), Softword: Procedencia del software Word ' , ISBN 1-58922-233-4, archivado desde el original el 8 de agosto de 2019 , consultado el 18 de agosto de 2019
  10. ^ Carhart, Richard (1953). Una encuesta sobre el estado actual del problema de confiabilidad electrónica (PDF) . Santa Mónica, CA: Rand Corporation . pag. 69. […] Se recordará de la Sec. 1.6 que el término personal se definió para incluir a las personas que entran en contacto directo con el hardware, desde la producción hasta el uso en el campo, es decir, las personas que ensamblan, inspeccionan, empaquetan, envían, manipulan, instalan, operan y mantienen equipos electrónicos. En cualquiera de estas fases, las fallas del personal pueden provocar que el equipo no funcione. Al igual que con los factores de hardware, casi no hay datos cuantitativos sobre estos software o factores humanos en la confiabilidad: cuántas fallas son causadas por el personal, por qué ocurren y qué se puede hacer para eliminar los errores. […]
  11. ^ "Software del sistema" . La Universidad de Mississippi. Archivado desde el original el 30 de mayo de 2001.
  12. ^ "Software integrado: tecnologías y tendencias" . Sociedad de Informática IEEE. Mayo-junio de 2009. Archivado desde el original el 28 de octubre de 2013 . Consultado el 6 de noviembre de 2013 .
  13. ^ "ejemplos de libros de inteligencia de secuencias de comandos" . 9 de mayo de 2018. Archivado desde el original el 6 de noviembre de 2015.
  14. ^ Gerardo Con Díaz, "El texto en la máquina: la ley de derechos de autor estadounidense y las muchas naturalezas del software, 1974-1978", Tecnología y cultura 57 (octubre de 2016), 753-79.
  15. ^ "Biblioteca de MSDN" . Archivado desde el original el 11 de junio de 2010 . Consultado el 14 de junio de 2010 .
  16. v. Engelhardt, Sebastian (2008). "Las propiedades económicas del software" . Documentos de investigación económica de Jena . 2 (2008–045). Archivado desde el original el 5 de enero de 2016.
  17. ^ Kaminsky, Dan (1999). "Por qué el código abierto es el paradigma económico óptimo para el software" . Archivado desde el original el 22 de mayo de 2012.

Fuentes

  • Evans, Claire L. (2018). Broad Band: La historia no contada de las mujeres que hicieron Internet . Nueva York: Portfolio / Penguin. ISBN 9780735211759.

enlaces externos

  • Software en Curlie