Программного обеспечения - Software

Схема, показывающая, как Пользователь взаимодействует с программное обеспечение на типичном настольный компьютер. Уровень прикладного программного обеспечения взаимодействует с Операционная система, который, в свою очередь, общается с аппаратное обеспечение. Стрелки указывают информационный поток.

Программного обеспечения это собрание данные или же компьютер инструкции, которые говорят компьютеру, как работать. Это в отличие от физическое оборудование, из которого система построена и фактически выполняет работу. В Информатика и программная инженерия, компьютерное программное обеспечение - это все Информация обработано Компьютерные системы, программы и данные. Компьютерное программное обеспечение включает компьютерные программы, библиотеки и связанные с ним неисполняемые данные, Такие как онлайн-документация или же цифровые СМИ. Компьютерное оборудование и программное обеспечение требуют друг друга, и ни одно из них не может быть реально использовано в отдельности.

На самом низком уровне программирования[требуется разъяснение ] исполняемый код состоит из машинный язык инструкции, поддерживаемые физическим лицом процессор - обычно центральное процессорное устройство (CPU) или графический процессор (GPU). Машинный язык состоит из групп двоичные значения означающий инструкции процессора которые изменяют состояние компьютера по сравнению с предыдущим состоянием. Например, инструкция может изменить значение, хранящееся в конкретном месте хранения в компьютере, - эффект, который не наблюдается напрямую для пользователя. Инструкция может также призывать один из многих операции ввода или вывода, например, отображение текста на экране компьютера; вызывая изменения состояния, которые должны быть видны Пользователь. Процессор выполняет инструкции в том порядке, в котором они представлены, если только это не указано "перейти" к другой инструкции, или прерванный операционной системой. По состоянию на 2015 год, наиболее персональные компьютеры, смартфон устройства и серверы имеют процессоры с несколькими исполнительными модулями или же несколько процессоров, выполняющих вычисления вместе, и вычисления стали гораздо более одновременный активности, чем в прошлом.

Большинство программного обеспечения написано на языки программирования высокого уровня. Они проще и эффективнее для программистов, потому что они ближе к естественные языки чем машинные языки.[1] Языки высокого уровня переводятся на машинный язык с использованием компилятор или устный переводчик или их комбинация. Программное обеспечение также может быть написано на низкоуровневом язык ассемблера, который строго соответствует инструкциям на машинном языке компьютера и переводится на машинный язык с помощью ассемблер.

История

Наброски (алгоритм ) для того, что было бы первым программным обеспечением, было написано Ада Лавлейс в 19 ​​веке для запланированных Аналитическая машина.[2] Она создала доказательства чтобы показать, как двигатель будет рассчитывать Числа Бернулли.[2] Из-за доказательств и алгоритма она считается первым программистом.[3][4]

Первая теория программного обеспечения - до создания компьютеров, какими мы их знаем сегодня - была предложена Алан Тьюринг в его эссе 1935 года О вычислимых числах в приложении к Entscheidungsproblem (проблема решения).

Это в конечном итоге привело к созданию академических областей Информатика и программная инженерия; Оба направления изучают программное обеспечение и его создание. Информатика - это теоретическое исследование компьютеров и программного обеспечения (эссе Тьюринга является примером информатики), тогда как программная инженерия - это применение инженерии и разработки программного обеспечения.

Однако до 1946 года программное обеспечение еще не было программами, хранящимися в памяти цифровых компьютеров с сохраненными программами, как мы это понимаем сейчас. Вместо этого первые электронные вычислительные устройства были переделаны, чтобы «перепрограммировать» их.

В 2000 году Фред Шапиро, библиотекарь Йельской школы права, опубликовал письмо, в котором говорилось, что Джон Уайлдер Тьюки Статья 1958 года "Преподавание конкретной математики"[5][6] содержат самое раннее известное использование термина "программное обеспечение", найденное при поиске JSTOR электронные архивы, предшествующие OED Цитирование на два года.[7] Это заставило многих приписать Тьюки создание этого термина, особенно в некрологах, опубликованных в том же году:[8] хотя Тьюки никогда не претендовал на такую ​​чеканку. В 1995 году Поль Никетт утверждал, что первоначально он ввел термин в обращение в октябре 1953 года, хотя он не смог найти никаких документов, подтверждающих его утверждение.[9] Самая ранняя известная публикация термина «программное обеспечение» в инженерном контексте была опубликована в августе 1953 года Ричардом Р. Кархартом в Rand Corporation Меморандум об исследовании.[10]

Типы

Практически на всех компьютерных платформах программное обеспечение можно разделить на несколько широких категорий.

Цель или область использования

По поставленной цели компьютерное программное обеспечение можно разделить на:

  • Программное обеспечение
    которое представляет собой программное обеспечение, которое использует компьютерную систему для выполнения специальных функций или предоставления развлекательные функции помимо основной работы самого компьютера. Существует множество различных типов прикладного программного обеспечения, потому что спектр задач, которые можно выполнить с помощью современного компьютера, очень велик - см. список программного обеспечения.
  • Программное обеспечение
    программное обеспечение для управления компьютерное железо поведение, как для обеспечения основных функций, которые требуются пользователям, или для правильной работы другого программного обеспечения, если вообще. Системное программное обеспечение также предназначено для обеспечения платформы для запуска прикладного программного обеспечения,[11] и включает в себя следующее:
    • Операционные системы
      которые представляют собой важные наборы программного обеспечения, которые управляют ресурсами и предоставляют общие службы для другого программного обеспечения, которое работает «поверх» их. Контрольные программы, загрузчики, снаряды и оконные системы являются основными частями операционных систем. На практике операционная система поставляется в комплекте с дополнительным программным обеспечением (включая прикладное программное обеспечение), так что пользователь потенциально может выполнять некоторую работу с компьютером, на котором установлена ​​только одна операционная система.
    • Драйверы устройств
      которые управляют или управляют определенным типом устройств, подключенных к компьютеру. Каждому устройству нужен как минимум один соответствующий драйвер устройства; поскольку компьютер обычно имеет как минимум одно устройство ввода и как минимум одно устройство вывода, компьютеру обычно требуется более одного драйвера устройства.
    • Утилиты
      какие компьютеры программы разработан, чтобы помочь пользователям в обслуживании и уходе за их компьютерами.
  • Вредоносное ПО или же вредоносное ПО
    программное обеспечение, разработанное для нанесения вреда компьютерам и их выхода из строя. Таким образом, вредоносные программы нежелательны. Вредоносное ПО тесно связано с компьютерными преступлениями, хотя некоторые вредоносные программы могли быть разработаны как розыгрыши.

Характер или область исполнения

  • Настольные приложения Такие как веб-браузеры и Microsoft Office, а также смартфон и планшет приложения (называемые "Программы "). (В некоторых сегментах индустрии программного обеспечения наблюдается стремление в определенной степени объединить настольные и мобильные приложения. Windows 8, и позже Ubuntu Touch, попытался разрешить использование того же стиля пользовательского интерфейса приложения на настольных, портативных и мобильных устройствах.)
  • JavaScript скрипты - это части программного обеспечения, традиционно встроенные в веб-страница которые запускаются непосредственно внутри веб-браузер когда веб-страница загружается без плагина для веб-браузера. Программное обеспечение, написанное на других языках программирования, также можно запускать в веб-браузере, если оно переведено на JavaScript или если установлен подключаемый модуль веб-браузера, который поддерживает этот язык; наиболее распространенным примером последнего является ActionScript скрипты, которые поддерживаются Adobe Flash плагин.
  • Серверное программное обеспечение, включая:
    • Веб-приложения, которые обычно запускаются веб сервер и выводить динамически сгенерированные веб-страницы в веб-браузеры, например, PHP, Ява, ASP.NET, или даже JavaScript, работающий на сервере. В наше время они обычно включают в себя некоторый JavaScript, который также запускается в веб-браузере, и в этом случае они обычно запускаются частично на сервере, частично в веб-браузере.
  • Плагины а расширения - это программное обеспечение, которое расширяет или изменяет функциональные возможности другого программного обеспечения и требует, чтобы это программное обеспечение использовалось для функционирования;
  • Встроенное ПО проживает как прошивка в встроенные системы, устройства, предназначенные для одноразового использования или нескольких видов использования, например легковые автомобили и телевизоры (хотя некоторые встроенные устройства, такие как беспроводные чипсеты, могут самих себя быть частью обычной невстроенной компьютерной системы, такой как ПК или смартфон).[12] В контексте встроенной системы иногда нет четкого различия между системным программным обеспечением и прикладным программным обеспечением. Однако некоторые встроенные системы работают встроенные операционные системы, и в этих системах сохраняется различие между системным программным обеспечением и прикладным программным обеспечением (хотя обычно всегда будет запущено только одно фиксированное приложение).
  • Микрокод это особый, относительно малоизвестный тип встроенного программного обеспечения, которое сообщает процессору сам как выполнять машинный код, поэтому на самом деле это более низкий уровень, чем машинный код. Как правило, он является собственностью производителя процессора, и все необходимые корректирующие обновления программного обеспечения микрокода предоставляются пользователям (что намного дешевле, чем доставка аппаратного обеспечения для замены процессора). Таким образом, обычный программист не ожидал бы, что когда-нибудь столкнется с этим.

Инструменты программирования

Инструменты программирования - это также программное обеспечение в виде программ или приложений, которые разработчики программного обеспечения (также известен какпрограммисты, кодеры, хакеры или же программисты) использовать для создания, отлаживать, поддерживать (т.е. улучшить или исправить) или иным образом поддерживать программного обеспечения.

Программное обеспечение написано на одном или нескольких языках программирования; существует множество языков программирования, и каждый имеет по крайней мере одну реализацию, каждый из которых состоит из своего собственного набора инструментов программирования. Эти инструменты могут быть относительно автономными программами, такими как компиляторы, отладчики, переводчики, линкеры, и текстовые редакторы, которые можно объединить для выполнения задачи; или они могут сформировать интегрированная среда развития (IDE), которая сочетает в себе большую часть или всю функциональность таких автономных инструментов. IDE могут делать это либо путем вызова соответствующих отдельных инструментов, либо путем повторной реализации их функциональных возможностей по-новому. IDE может упростить выполнение определенных задач, таких как поиск файлов в конкретном проекте. Многие реализации языков программирования предоставляют возможность использования как отдельных инструментов, так и IDE.

Темы

Архитектура

Пользователи часто видят вещи иначе, чем программисты. Люди, которые используют современные компьютеры общего назначения (в отличие от встроенные системы, аналоговые компьютеры и суперкомпьютеры ) обычно видят три уровня программного обеспечения, выполняющих различные задачи: платформа, приложение и программное обеспечение пользователя.

  • Программное обеспечение платформы
    В Платформа включает прошивка, драйверы устройств, Операционная система, и обычно графический интерфейс пользователя которые в совокупности позволяют пользователю взаимодействовать с компьютером и его периферийные устройства (сопутствующее оборудование). Программное обеспечение платформы часто идет в комплекте с компьютером. На ПК обычно есть возможность изменить программное обеспечение платформы.
  • Программное обеспечение
    Программное обеспечение или Приложения - это то, о чем большинство людей думает, когда думает о программном обеспечении. Типичные примеры включают офисные пакеты и видеоигры. Программное обеспечение часто приобретается отдельно от компьютерного оборудования. Иногда приложения идут в комплекте с компьютером, но это не меняет того факта, что они работают как независимые приложения. Приложения обычно представляют собой независимые от операционной системы программы, хотя часто они адаптированы для конкретных платформ. Большинство пользователей думают о компиляторах, базах данных и другом «системном программном обеспечении» как о приложениях.
  • Программное обеспечение, написанное пользователями
    Разработка для конечных пользователей адаптирует системы к конкретным потребностям пользователей. Программное обеспечение пользователя включает шаблоны электронных таблиц и текстовый редактор шаблоны. Даже фильтры электронной почты - это своего рода пользовательское ПО. Пользователи сами создают это программное обеспечение и часто забывают, насколько оно важно. В зависимости от того, насколько грамотно написанное пользователем программное обеспечение было интегрировано в пакеты приложений по умолчанию, многие пользователи могут не осознавать различие между исходными пакетами и тем, что было добавлено коллегами.

Исполнение

Компьютерное программное обеспечение необходимо «загрузить» в хранилище компьютера (такой как жесткий диск или же объем памяти ). После загрузки программного обеспечения компьютер может выполнять программное обеспечение. Это предполагает прохождение инструкции от программное обеспечение через системное программное обеспечение к оборудованию, которое в конечном итоге получает инструкцию как Машинный код. Каждая инструкция заставляет компьютер выполнять операцию - перемещение данные, проведение вычисление, или изменение поток управления инструкций.

Движение данных обычно происходит из одного места в памяти в другое. Иногда это связано с перемещением данных между памятью и регистрами, что обеспечивает высокоскоростной доступ к данным в ЦП. Перемещение данных, особенно больших их объемов, может быть дорогостоящим. Таким образом, этого иногда удается избежать, используя вместо этого «указатели» на данные. Вычисления включают простые операции, такие как увеличение значения переменного элемента данных. Более сложные вычисления могут включать в себя множество операций и элементов данных вместе.

Качество и надежность

Качество программного обеспечения очень важно, особенно для коммерческий и системное программное обеспечение, такое как Microsoft Office, Майкрософт Виндоус и Linux. Если программное обеспечение неисправно (содержит ошибки), оно может удалить работу человека, вывести компьютер из строя и сделать другие неожиданные вещи. Неисправности и ошибки называются "ошибки "которые часто обнаруживаются в ходе альфа- и бета-тестирования. Программное обеспечение также часто становится жертвой так называемого старение программного обеспечения, прогрессирующее снижение производительности в результате комбинации невидимых ошибок.

Многие ошибки обнаруживаются и устраняются (отлаживаются) с помощью тестирование программного обеспечения. Однако тестирование программного обеспечения редко - если вообще когда-либо - устраняет каждую ошибку; некоторые программисты говорят, что «в каждой программе есть еще хотя бы одна ошибка» (закон Любарского).[13] в водопад метод разработки программного обеспечения, как правило, используются отдельные группы тестирования, но в более новых подходах, вместе называемых гибкая разработка программного обеспечения, разработчики часто проводят собственное тестирование и регулярно демонстрируют программное обеспечение пользователям / клиентам для получения обратной связи. Программное обеспечение можно протестировать через модульное тестирование, регрессионное тестирование и другие методы, которые выполняются вручную или чаще всего автоматически, поскольку объем кода, который нужно протестировать, может быть довольно большим. Например, НАСА имеет чрезвычайно строгие процедуры тестирования программного обеспечения для многих операционных систем и функций связи. Многие операции НАСА взаимодействуют и идентифицируют друг друга с помощью командных программ. Это позволяет многим людям, работающим в НАСА, проверять и оценивать функциональные системы в целом. Программы, содержащие командное программное обеспечение, значительно упрощают совместную работу аппаратной инженерии и системных операций.

Лицензия

Лицензия на программное обеспечение дает пользователю право использовать программное обеспечение в лицензированной среде, а в случае лицензии на бесплатное программное обеспечение, также предоставляет другие права, такие как право делать копии.

Проприетарное программное обеспечение можно разделить на два типа:

  • бесплатное ПО, который включает категорию "бесплатного пробного" программного обеспечения или "freemium "программное обеспечение (в прошлом термин условно-бесплатная часто использовался для бесплатных пробных / условно бесплатных программ). Как следует из названия, бесплатное программное обеспечение можно использовать бесплатно, хотя в случае бесплатных пробных версий или бесплатного программного обеспечения это иногда верно только в течение ограниченного периода времени или с ограниченной функциональностью.
  • программное обеспечение, доступное за определенную плату, часто неправильно именуемое "коммерческое программное обеспечение ", который можно легально использовать только при покупке лицензии.

Программное обеспечение с открытым исходным кодом, с другой стороны, поставляется с лицензия на бесплатное программное обеспечение, предоставляя получателю право изменять и распространять программное обеспечение.

Патенты

Патенты на программы, как и другие типы патентов, теоретически должны давать изобретателю исключительную, ограниченную по времени лицензию на подробное представление (например, алгоритм) о том, как реализовать часть программного обеспечения или компонент программного обеспечения. Идеи для полезных вещей, которые может делать, и пользователь требования, не должны быть патентоспособными, а конкретные реализации (т.е. фактические программные пакеты, реализующие патент) также не должны быть патентоспособными - последние уже защищены авторским правом, как правило, автоматически. Таким образом, патенты на программы должны охватывать среднюю область между требованиями и конкретной реализацией. В некоторых странах требование о том, чтобы заявленное изобретение оказало влияние на физический мир, также может быть частью требований о том, чтобы патент на программное обеспечение считался действительным, хотя, поскольку все полезное программное обеспечение влияет на физический мир, это требование может быть предметом обсуждения. Между тем, американский закон об авторском праве применялся к различным аспектам написания программного кода.[14]

Патенты на программы вызывают споры в индустрии программного обеспечения, и многие люди придерживаются разных взглядов на них. Один из источников разногласий заключается в том, что вышеупомянутое разделение между первоначальными идеями и патентом, похоже, не соблюдается на практике патентными юристами - например, патент на Аспектно-ориентированное программирование (AOP), которые претендовали на права на любой инструмент программирования, реализующий идею АОП, как бы она ни была реализована. Еще один источник разногласий - это влияние на инновации: многие известные эксперты и компании утверждают, что программное обеспечение - это настолько быстро развивающаяся область, что патенты на программное обеспечение просто создают огромные дополнительные судебные издержки и риски и фактически тормозят инновации. В случае дебатов о патентах на программы за пределами Соединенных Штатов был выдвинут аргумент о том, что крупные американские корпорации и патентные юристы, вероятно, будут главными бенефициарами разрешения или продолжения разрешения патентов на программы.

Дизайн и реализация

Дизайн и реализация программного обеспечения зависит от сложности программного обеспечения. Например, дизайн и создание Microsoft Word заняло гораздо больше времени, чем проектирование и разработка Блокнот Microsoft потому что у последнего гораздо больше базовых функций.

Программное обеспечение обычно разрабатывается и создается (иначе кодируется / пишется / программируется) в интегрированные среды разработки (IDE) как Затмение, IntelliJ и Microsoft Visual Studio что может упростить процесс и компилировать программное обеспечение (если применимо). Как отмечено в другом разделе, программное обеспечение обычно создается поверх существующего программного обеспечения и интерфейс прикладного программирования (API), которое предоставляет базовое программное обеспечение, например GTK +, JavaBeans или Качать. Библиотеки (API) можно классифицировать по их назначению. Например, Spring Framework используется для реализации корпоративные приложения, то Windows Forms библиотека используется для разработки приложений с графическим пользовательским интерфейсом (GUI), таких как Microsoft Word, и Фонд связи Windows используется для проектирования веб-сервисы. Когда программа разрабатывается, она полагается на API. Например, настольное приложение Microsoft Windows может вызывать функции API в .СЕТЬ Библиотека Windows Forms, например Form1.Close () и Form1.Show ()[15] закрыть или открыть приложение. Без этих API-интерфейсов программист должен полностью написать эти функции. Такие компании как Oracle и Microsoft предоставляют свои собственные API, поэтому многие приложения пишутся с их программные библиотеки которые обычно содержат множество API.

Структуры данных Такие как хеш-таблицы, массивы, и бинарные деревья, и алгоритмы Такие как быстрая сортировка, может быть полезно для создания программного обеспечения.

Компьютерное программное обеспечение обладает особыми экономическими характеристиками, которые отличают его дизайн, создание и распространение от большинства других экономических товаров.[уточнить ][16][17]

Человека, создающего программное обеспечение, называют программист, инженер-программист или разработчик программного обеспечения, все термины имеют одинаковое значение. Существуют также более неформальные термины для программиста, такие как «кодировщик» и «хакер"- хотя использование последнего слова может вызвать путаницу, потому что оно чаще используется для обозначения кто-то, кто незаконно взламывает компьютерные системы.

Промышленность и организации

Софтверную индустрию составляют самые разные компании-разработчики программного обеспечения и программисты в мире. Программное обеспечение может быть довольно прибыльной отраслью: Билл Гейтс, соучредитель Microsoft был самым богатым человеком в мире в 2009 году, во многом благодаря тому, что он владел значительным количеством акций Microsoft, компании, ответственной за Майкрософт Виндоус и Microsoft Office программные продукты - оба лидера рынка в своих товарных категориях.

Некоммерческие программные организации включают Фонд свободного программного обеспечения, Проект GNU и Фонд Mozilla. Организации по стандартизации программного обеспечения, такие как W3C, IETF разрабатывать рекомендуемые стандарты программного обеспечения, такие как XML, HTTP и HTML, чтобы программное обеспечение могло взаимодействовать через эти стандарты.

Среди других известных крупных компаний-разработчиков программного обеспечения: Google, IBM, TCS, Infosys, Wipro, HCL Technologies, Oracle, Novell, SAP, Symantec, Adobe Systems, Побочная торговля и Corel, в то время как небольшие компании часто предлагают инновации.

Смотрите также

Рекомендации

  1. ^ «Конструкция компилятора». В архиве из оригинала от 2 ноября 2013 г.
  2. ^ а б Эванс 2018, п. 21.
  3. ^ Fuegi, J .; Фрэнсис, Дж. (2003). «Лавлейс и Бэббидж и создание записей 1843 года»'" (PDF). Анналы истории вычислительной техники. 25 (4): 16–26. Дои:10.1109 / MAHC.2003.1253887. S2CID  40077111.
  4. ^ "Ада Лавлейс отмечена каракули Google". Хранитель. 10 декабря 2012 г.. Получено 25 ноября 2018.
  5. ^ Тьюки, Джон Уайлдер (Январь 1958 г.). «Преподавание конкретной математики». Американский математический ежемесячный журнал. Taylor & Francis, Ltd. / Математическая ассоциация Америки. 65 (1): 1–9, 2. Дои:10.2307/2310294. ISSN  0002-9890. JSTOR  2310294. CODEN АММЯЭ. […] Сегодня «программное обеспечение», состоящее из тщательно спланированных программ интерпретации, компиляторов и других аспектов автоматического программирования, по меньшей мере так же важно для современного электронного калькулятора, как и его «оборудование», состоящее из ламп, транзисторов, проводов, лент и т.п. . […]
  6. ^ Биби, Нельсон Х. Ф. (22 августа 2017 г.). «Глава I - Целочисленная арифметика». Справочник по вычислению математических функций - Программирование с использованием переносимой программной библиотеки MathCW (1-е изд.). Солт-Лейк-Сити, Юта, США: Springer International Publishing AG. С. 969, 1035. Дои:10.1007/978-3-319-64110-2. ISBN  978-3-319-64109-6. LCCN  2017947446. S2CID  30244721.
  7. ^ Шапиро, Фред (2000). «Происхождение термина« Программное обеспечение »: данные из архива электронного журнала JSTOR» (PDF). IEEE Annals of the History of Computing. 22 (2): 69–71. Дои:10.1109 / mahc.2000.887997. Архивировано из оригинал (PDF) 5 июня 2003 г.. Получено 25 июн 2013.
  8. ^ Леонхардт, Дэвид (28 июля 2000 г.). "Джон Тьюки, 85 лет, статистик; придумал программное обеспечение Word"'". Нью-Йорк Таймс. Получено 24 сентября 2012.
  9. ^ Никетт, Р. Пол (2006), Softword: Provenance for the Word 'Программное обеспечение, ISBN  1-58922-233-4, в архиве с оригинала 8 августа 2019 г., получено 18 августа 2019
  10. ^ Кархарт, Ричард (1953). Обзор текущего состояния проблемы электронной надежности (PDF). Санта-Моника, Калифорния: Rand Corporation. п. 69. […] Напомним из гл. 1.6, что термин персонал был определен как включающий людей, которые непосредственно контактируют с оборудованием, от производства до использования в полевых условиях, то есть людей, которые собирают, проверяют, упаковывают, отправляют, обрабатывают, устанавливают, эксплуатируют и обслуживают электронное оборудование. На любом из этих этапов отказы персонала могут привести к выходу оборудования из строя. Как и в случае с аппаратными факторами, почти нет количественных данных, касающихся этого программного обеспечения или человеческого фактора в надежности: сколько отказов вызвано персоналом, почему они возникают и что можно сделать для устранения ошибок. […]
  11. ^ "Программное обеспечение". Университет Миссисипи. Архивировано из оригинал 30 мая 2001 г.
  12. ^ «Встроенное программное обеспечение - технологии и тенденции». Компьютерное общество IEEE. Май – июнь 2009 г. В архиве из оригинала 28 октября 2013 г.. Получено 6 ноября 2013.
  13. ^ "примеры из книги сценариев интеллекта". 9 мая 2018. В архиве из оригинала от 6 ноября 2015 г.
  14. ^ Херардо Кон Диас, "Текст в машине: американский закон об авторском праве и разнообразие программ, 1974–1978 гг." Технологии и культура 57 (октябрь 2016 г.), 753–79.
  15. ^ «Библиотека MSDN». В архиве из оригинала 11 июня 2010 г.. Получено 14 июн 2010.
  16. ^ против Энгельгардта, Себастьян (2008). «Экономические свойства программного обеспечения». Статьи об экономических исследованиях в Йене. 2 (2008–045). В архиве из оригинала от 5 января 2016 г.
  17. ^ Каминский, Дэн (1999). «Почему открытый код является оптимальной экономической парадигмой для программного обеспечения». В архиве из оригинала 22 мая 2012 г.

Источники

внешняя ссылка