Компьютерная программа

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Компьютерная программа.

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

Создание программ[править | править вики-текст]

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

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

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

Запись исходных текстов программ при помощи языков программирования облегчает понимание и редактирование человеком. Этому, в частности, помогают комментарии, допустимые в синтаксисе большинства языков. Для выполнения на компьютере готовый текст программы преобразуется (компилируется) в машинный код.

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

Интерпретируемые программы, для которых, как правило, не применяется процесс компиляции и которые интерпретируются операционной системой или специальными программами-интерпретаторами, называются скриптами или «сценариями».

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

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

Хранение и выполнение[править | править вики-текст]

В 1950-е годы компьютерные программы хранились на перфолентах.

До момента, когда пользователь компьютера явно или неявно выдаст запрос на выполнение компьютерной программы, она обычно хранится в энергонезависимой памяти. При получении такого запроса программа посредством другой компьютерной программы, называющейся операционной системой, загружается в память с произвольным доступом, откуда её непосредственно может выполнять центральный процессор. После этого центральный процессор выполняет программу, инструкция за инструкцией, до её завершения. Выполняющаяся программа называется процессом[3]. Завершение программы происходит либо по достижению её последней инструкции (обычно передающей управление операционной системе) либо по ошибке, программной или аппаратной.

Одновременное выполнение[править | править вики-текст]

Многие операционные системы поддерживают механизм многозадачности, который позволяет создать эффект одновременной работы нескольких компьютерных программ на одном компьютере. Операционные системы могут выполнять несколько программ используя диспетчер операционной системы — программный механизм для переключения процессов, выполняемых процессором. Хотя в каждый момент времени выполняется только одна программа, при достаточно частом переключении пользователь может взаимодействовать со всеми программами во время их работы[4]. Современные многопроцессорные компьютеры или компьютеры с многоядерными процессорами поддерживают одновременное выполнение нескольких программ аппаратно[5].

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

Самомодифицирующиеся программы[править | править вики-текст]

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

Использование программ[править | править вики-текст]

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

Правовые аспекты[править | править вики-текст]

Программы с общедоступными исходными текстами называются открытыми.

Компьютерные программы в большинстве стран являются объектами авторского права (включая Украину и Россию). В некоторых странах компьютерные программы могут защищаться патентами. Патентованию компьютерных программ способствовало Соглашение о торговых аспектах прав интеллектуальной собственности, которое установило минимальные[6] требования к охраняемому ряду объектов прав интеллектуальной собственности и фактически разрешило патентовать программы. Соглашение ТРИПС обязательно для выполнения на территории Украины и России как государств-членов ВТО.

Таким образом программа может охраняться и как "литературное произведение" и как "изобретение". Для определения режима правовой охраны в первом случае используется "текст кода", в другом - признаки применяемые для изобретений, предлагаемых для патентования (то есть нужно доказать «инновационность», «оригинальность» и «неочевидность», а также возможность решения существующей технической проблемы и коммерческую пригодность)[7]. При этом существует проблема правового разграничения компьютерных программ от проприетарного цифрового контента и проприетарного программного обеспечения[8].

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

Определения из стандартов[править | править вики-текст]

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

— ГОСТ 19781—90. ЕСПД. Термины и определения

Программа — представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств с целью получения определённого результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения.

ст. 1261 «Программы для ЭВМ» ГК РФ

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. Компьютеры: справочное руководство = Computer Handbook / Пер. с англ. /Под ред. Г. Хелмса. — М.: Мир, 1986. — Т. 1. — С. 13. — 416 с.
  2. Фельдман С. К. Системное программирование. Полный курс лекций с теоретическими материалами и лабораторными работами. — 2003. — 512 с. — ISBN 5-88548-096-6.
  3. Silberschatz, 1994, p. 97
  4. Silberschatz, 1994, p. 100
  5. Akhter Shameem. Multi-Core Programming. — Richard Bowles (Intel Press), 2006. — С. 11–13. — ISBN 0-9764832-4-6.
  6. Д.М. Чибисов Чибісов Д.М. «Правова природа Угоди про торговельні аспекти прав інтелектуальної власності (ТРІПС)» // «Науковий вісник Ужгородського національного університету. Серія «Право».– 2012. – № 19. // Науковий вісник Ужгородського національного університету : Научная статья. — 2012. — № 19.
  7. Чибисов Д.М. Режимы охраны проприетарного цифрового контента (на украинском) (08.04.2015).
  8. Д.М. Чибисов. Проприетарній цифровой контент: основная характеристика. Блог (08.04.2015).

Литература[править | править вики-текст]

  • Silberschatz Abraham. Operating System Concepts, Fourth Edition. — Addison-Wesley, 1994. — С. 97. — ISBN 0-201-50480-4.