stringtranslate.com

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

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

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

На самом низком уровне программирования исполняемый код состоит из инструкций машинного языка , поддерживаемых отдельным процессором — обычно центральным процессором (ЦП) или графическим процессором (ГП). Машинный язык состоит из групп двоичных значений , обозначающих инструкции процессора , которые изменяют состояние компьютера по сравнению с предыдущим состоянием. Например, инструкция может изменить значение, хранящееся в определенном месте хранения на компьютере, — эффект, который не может быть непосредственно наблюдаем пользователем. Инструкция также может вызывать одну из многих операций ввода или вывода , например, отображать некоторый текст на экране компьютера, вызывая изменения состояния, которые должны быть видны пользователю . Процессор выполняет инструкции в том порядке, в котором они предоставлены, если только ему не дано указание «перейти» к другой инструкции или если его выполнение не прерывается операционной системой. По состоянию на 2024 год большинство персональных компьютеров , смартфонов и серверов будут иметь процессоры с несколькими исполнительными блоками или несколькими процессорами, выполняющими вычисления вместе, поэтому вычисления станут гораздо более одновременной деятельностью, чем в прошлом.

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

История

Алгоритм того , что могло бы стать первым программным обеспечением, был написан Адой Лавлейс в 19 веке для запланированной аналитической машины . [3] Она создала доказательства , показывающие, как машина будет вычислять числа Бернулли . [3] Благодаря доказательствам и алгоритму ее считают первым программистом. [4] [5]

Первая теория программного обеспечения, предшествовавшая созданию компьютеров, какими мы их знаем сегодня, была предложена Аланом Тьюрингом в его эссе 1936 года « О вычислимых числах с применением к Entscheidungsproblem» (проблеме принятия решений). [6] В конечном итоге это привело к созданию академических областей информатики и разработки программного обеспечения; обе области изучают программное обеспечение и его создание. [7] Информатика — это теоретическое исследование компьютера и программного обеспечения (эссе Тьюринга является примером информатики), тогда как разработка программного обеспечения — это применение инженерных принципов для разработки программного обеспечения. [8]

В 2000 году Фред Шапиро, библиотекарь Йельской школы права, опубликовал письмо, в котором выяснилось, что статья Джона Уайлдера Тьюки «Преподавание конкретной математики» 1958 года [9] [10] содержит самое раннее известное использование термина «программное обеспечение». найден при поиске в электронных архивах JSTOR, на два года раньше, чем цитирование в Оксфордском словаре английского языка . [11] Это побудило многих приписать Тьюки создание этого термина, особенно в некрологах, опубликованных в том же году, [12] хотя Тьюки никогда не претендовал на создание таких монет. В 1995 году Поль Никетт заявил, что первоначально он придумал этот термин в октябре 1953 года, хотя он не смог найти никаких документов, подтверждающих это утверждение. [13] Самая ранняя известная публикация термина «программное обеспечение» в инженерном контексте была сделана в августе 1953 года Ричардом Р. Кархартом в исследовательском меморандуме корпорации Rand . [14]

Типы

Blenderбесплатная программа .

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

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

В зависимости от цели программное обеспечение для ЭВМ можно разделить на:

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

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

Инструменты программирования — это также программное обеспечение в виде программ или приложений, которые разработчики используют для создания, отладки , обслуживания или иной поддержки программного обеспечения. [18] [ нужен лучший источник ]

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

Темы

Архитектура

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

Исполнение

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

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

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

Качество программного обеспечения очень важно, особенно для коммерческого и системного программного обеспечения. Если программное обеспечение неисправно, оно может удалить работу человека, привести к сбою компьютера и сделать другие неожиданные вещи. Неисправности и ошибки называются « ошибками », которые часто обнаруживаются во время альфа- и бета-тестирования. [ нужна цитация ] Программное обеспечение часто также является жертвой так называемого старения программного обеспечения , постепенного снижения производительности в результате сочетания невидимых ошибок. [ нужна цитата ]

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

Лицензия

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

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

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

Патенты

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

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

Проектирование и реализация

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

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

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

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

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

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

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

  1. ^ «ISO/IEC 2382:2015». ИСО . 3 сентября 2020 года. Архивировано из оригинала 16 марта 2023 года . Проверено 26 мая 2022 г. [Программное обеспечение включает] все или часть программ, процедур, правил и связанной с ними документации системы обработки информации.
  2. ^ «Строительство компилятора». cs.uu.nl. _ Архивировано из оригинала 2 ноября 2013 года.
  3. ^ аб Эванс 2018, с. 21.
  4. ^ Фуэги, Дж.; Фрэнсис, Дж. (2003). «Лавлейс и Бэббидж и создание «заметок» 1843 года» (PDF) . Анналы истории вычислительной техники . 25 (4): 16–26. дои : 10.1109/MAHC.2003.1253887. S2CID  40077111. Архивировано из оригинала (PDF) 15 февраля 2020 года.
  5. ^ "Ада Лавлейс удостоена дудла Google" . Хранитель . 10 декабря 2012 г. Архивировано из оригинала 25 декабря 2018 г. Проверено 25 ноября 2018 г.
  6. ^ Тьюринг, Алан Мэтисон (1936). «О вычислимых числах с применением к проблеме Entscheidungs» (PDF) . Журнал математики . 58 : 230–265. Архивировано (PDF) из оригинала 9 октября 2022 года . Проверено 28 августа 2022 г.
  7. ^ «В чем разница между информатикой и разработкой программного обеспечения?». эВидьялам . Проверено 24 октября 2023 г.
  8. ^ Лорхе Парнас, Дэвид (1 ноября 1984 г.). «Принципы программной инженерии». ИНФОР: Информационные системы и операционные исследования . 22 (4): 303–316. дои : 10.1080/03155986.1984.11731932. ISSN  0315-5986.
  9. ^ Тьюки, Джон Уайлдер (январь 1958 г.). «Преподавание конкретной математики». Американский математический ежемесячник . Тейлор и Фрэнсис, Лтд. / Математическая ассоциация Америки . 65 (1): 1–9, 2. дои : 10.2307/2310294. ISSN  0002-9890. JSTOR  2310294. КОДЕН  AMMYAE. […] Сегодня «программное обеспечение», включающее тщательно спланированные процедуры интерпретации, компиляторы и другие аспекты автоматического программирования, по крайней мере, так же важно для современного электронного калькулятора, как и его «аппаратное обеспечение» из ламп, транзисторов, проводов, лент и тому подобного. . […]
  10. Биб, Нельсон HF (22 августа 2017 г.). «Глава I. Целочисленная арифметика». Справочник по математическим вычислениям - Программирование с использованием портативной библиотеки программного обеспечения MathCW (1-е изд.). Солт-Лейк-Сити, Юта, США: Springer International Publishing AG . стр. 969, 1035. doi : 10.1007/978-3-319-64110-2. ISBN 978-3-319-64109-6. LCCN  2017947446. S2CID  30244721.
  11. ^ Шапиро, Фред (2000). «Происхождение термина «программное обеспечение»: данные из архива электронного журнала JSTOR» (PDF) . IEEE Анналы истории вычислений . 22 (2): 69–71. дои : 10.1109/mahc.2000.887997. Архивировано из оригинала (PDF) 5 июня 2003 года . Проверено 25 июня 2013 г.
  12. Леонхардт, Дэвид (28 июля 2000 г.). «Джон Тьюки, 85 лет, статистик; придумал слово «программное обеспечение»». Нью-Йорк Таймс . Архивировано из оригинала 16 июня 2021 года . Проверено 24 сентября 2012 г.
  13. ^ Никетт, Р. Пол (2006), Программное слово: происхождение слова «Программное обеспечение», ISBN 1-58922-233-4, заархивировано из оригинала 8 августа 2019 года , получено 18 августа 2019 года.
  14. ^ Кархарт, Ричард (1953). Обзор текущего состояния проблемы надежности электронной техники (PDF) . Санта-Моника, Калифорния: Rand Corporation . п. 69. Архивировано (PDF) из оригинала 9 октября 2022 года. […] Он будет отозван из гл. 1.6 термин « персонал» определяется как включающий людей, которые вступают в непосредственный контакт с оборудованием, от производства до использования в полевых условиях, т. е. людей, которые собирают, проверяют, упаковывают, отправляют, обрабатывают, устанавливают, эксплуатируют и обслуживают электронное оборудование. На любом из этих этапов сбои персонала могут привести к выходу оборудования из строя. Как и в случае с аппаратными факторами, почти нет количественных данных об этих программных или человеческих факторах надежности: сколько неисправностей вызвано персоналом, почему они возникают и что можно сделать для устранения ошибок. […]
  15. ^ «Системное программное обеспечение». Университет Миссисипи. Архивировано из оригинала 30 мая 2001 года.
  16. ^ «Что такое плагин?». Компьютерная надежда . 6 июня 2021 года. Архивировано из оригинала 26 января 2022 года . Проверено 26 января 2022 г.
  17. ^ «Встроенное программное обеспечение — технологии и тенденции». Компьютерное общество IEEE. Май – июнь 2009 г. Архивировано из оригинала 28 октября 2013 г. Проверено 6 ноября 2013 г.
  18. ^ «Что такое инструмент программирования? - Определение из Techopedia» . Techopedia.com . 2 июля 2020 года. Архивировано из оригинала 26 января 2022 года . Проверено 26 января 2022 г.
  19. ^ "Примеры книг по сценарной разведке" . Гитхаб . 9 мая 2018 года. Архивировано из оригинала 6 ноября 2015 года . Проверено 6 ноября 2015 г.
  20. ^ «Что такое системное программное обеспечение? - Определение с сайта WhatIs.Com» . WhatIs.com . Архивировано из оригинала 27 февраля 2023 года . Проверено 27 февраля 2023 г.
  21. ^ «Что такое лицензия на программное обеспечение? Все, что вам нужно знать» . ИТ-директор . Архивировано из оригинала 27 февраля 2023 года . Проверено 27 февраля 2023 г.
  22. ^ «Бесплатное и условно-бесплатное ПО – разница и сравнение | Различия» . www.diffen.com . Архивировано из оригинала 26 января 2022 года . Проверено 26 января 2022 г.
  23. ^ Морен, Эндрю; Урбан, Дженнифер; Слиз, Петр (26 июля 2012 г.). «Краткое руководство по лицензированию программного обеспечения для ученого-программиста». PLOS Вычислительная биология . 8 (7): e1002598. Бибкод : 2012PLSCB...8E2598M. дои : 10.1371/journal.pcbi.1002598 . ISSN  1553-7358. ПМК 3406002 . ПМИД  22844236. 
  24. ^ «Объяснение программного обеспечения с открытым исходным кодом» . Цифровой гид IONOS . Архивировано из оригинала 26 января 2022 года . Проверено 26 января 2022 г.
  25. ^ Херардо Кон Диас, «Текст в машине: американский закон об авторском праве и многообразие программ, 1974–1978», Technology and Culture 57 (октябрь 2016 г.), 753–79.
  26. ^ «Библиотека MSDN». Майкрософт . Архивировано из оригинала 11 июня 2010 года . Проверено 14 июня 2010 г.
  27. ^ против Энгельхардта, Себастьян (2008). «Экономические свойства программного обеспечения». Йенские экономические исследования . 2 (2008–045). Архивировано из оригинала 5 января 2016 года.
  28. Каминский, Дэн (2 марта 1999 г.). «Почему открытый исходный код является оптимальной экономической парадигмой для программного обеспечения». dankaminsky.com . Архивировано из оригинала 22 мая 2012 года . Проверено 19 ноября 2021 г.

Источники

Внешние ссылки