Что называется компьютерным кодом программы. Компьютерная программа

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

Программный код - это набор слов и символов языка программирования.

Алфавит - это полный набор букв, цифр и символов, принятых в языке для обозначения данных и действий над ними.

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

Алфавит языка Visual Basic включает следующий набор символов :

Прописные (A - Z) и строчные (а - z) буквы латинского алфавита;

Цифры от 0 до 9;

Знаки арифметических операций (в порядке возрастания приоритета): +, -, *, /, |, ^;

Знаки операций отношения: =, <, >.

Знаки препинания и разделители: ,  . : ; ();

В алфавит языка входят также зарезервированные слова, которые не могут быть использованы в качестве имен переменных или процедур. Примеры зарезервированных слов: Dim, Sub, Integer и т.д. По умолчанию для выделения ключевых слов в окне редактирования кода Visual Basic используют шрифт синего цвета.

Более обнадеживающие результаты были достигнуты с новыми концепциями дизайна. Первое важное движение, начатое с 1980-х годов, появилось в программировании объектов. Программный объект определяется как объект, принадлежащий классу, который имеет локальное состояние, определенное структурой данных, и может выполнять вычисления. Объект активируется другими объектами в соответствии с сетью, а не древовидной структурой, как в последовательных шаблонах программирования. Программирование объектов уравновешивало традиционную алгоритмическую и предписывающую составляющую с структурами данных.

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

Окно программного кода

Программный код записывается в окне кода. Такое окно имеется у каждой формы.

Открыть окно кода:

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

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

1 способ - в окне Проводник Проекта щелкнуть правой кнопкой по нужной форме и в открывшемся меню выбрать Показать код.

Примечание : окно кода может быть и не связано с формой. Отдельное окно кода называется Модуль . Модули в окне Проводник проекта сгруппированы в группу Модули . Для открытия окна с кодом модуля нужно в окне Проводник проекта дважды щелкнуть по имени модуля.

Юридическая защита программного обеспечения имела сложную и четко сформулированную историю. В первые дни ИТ-индустрии сама концепция программного обеспечения отсутствовала, поскольку программы были скомпилированы на машинный язык и проданы на компьютерах таким образом, что это было неразделимо. Написание и обслуживание программ рассматривались во всей отрасли как важный компонент обслуживания клиентов. Параллельно, в американском академическом мире, с 1950-х годов, исследовательская и преподавательская деятельность в области информатики структурировала, не без труда, и до 1970-х годов исследователи и программисты в академической области использовали для написания кода и для этого свободно циркулировать.

2 способ - дважды щелкнуть по элементу управления на форме или по самой форме в окне формы.

Примечание : при этом не только открывается окно кода, но и создается процедура обработки события (см. ниже).

Структура окна кода:

Началось создание отдельной отрасли, где в 1970-х годах был зарегистрирован массовый процесс ввода новых предприятий. Независимые производители программного обеспечения начали продавать программы в форме СМИ, но вскоре была поставлена ​​проблема правовой защиты их контента.

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

Рис. 7. Окно программного кода.

    Список элементов управления

    Список событий элементов управления

    Процедура (код)

Процедуры

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

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

Visual Basic - процедурный программирования язык. Это означает, что в нем можно создавать блоки программного кода, на которые затем можно ссылаться по имени. После того как блок кода получит имя, он может быть вызван и выполнен. Это похоже на программу в программе. Маленькие программы, "живущие" в больших программах, называются функциями, если они возвращают какое-либо зна­чение, и подпрограммами, если они значений не возвращают.

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

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

Фактически, стоимость программного обеспечения увеличивается за счет эффекта сетевого аутсорсинга, независимо от того, принят ли он законными и незаконными покупателями. С точки зрения спроса покупка несанкционированного программного обеспечения приписывает одну и ту же неотъемлемую полезность юридическому программному обеспечению, но, конечно же, исключает доступ к услугам после продажи. Как правило, предполагается, что обеспечение уважения к интеллектуальному имуществу поставщика программного обеспечения имеет значительно большую стоимость, чем ноль, например, за судебные издержки.

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

Если процедура может выполняться только внутри данного программного блока (например, только в этой форме), и её нельзя вызвать из другого программного блока, то такая процедура является локальной. Локальная процедура задается с помощью ключевого слова Private Sub.

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

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

Если процедуру можно вызвать из других программных блоков (например из другой формы), то такая процедура является глобальной. Глобальная процедура задается с помощью ключевого слова Public Sub.

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

Процедуры бывают:

    Процедуры обработки событий . Выполняются при возникновении какого-либо события в каком-либо элементе управления (или форме). Событийная процедура всегда связана с каким-то объектом. Чтобы вызвать событийную процедуру объекта, достаточно по этому объекту сделать двойной левый щелчок.

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

    Произвольные процедуры . Она не связаны с событиями и могут быть вызваны из любой другой процедуры и выполнены в любое время. Если в программе во всех формах встречается один и тот же программный блок, то его можно записать только один раз и в одном месте, в виде глобальной общей программы. Запуск общей программы не связана с объектом и с событием, а происходит, когда к нему обращаются из других программных блоков. Вызов общей процедуры из той же формы: ИмяПроцедуры (СписокПараметров) . Вызов общей процедуры из другой формы: ОБЪЕКТ. ИмяПроцедуры (СписокПараметров) . Общая процедура бывает и локальной Private и глобальной Public

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

    Х. «Экономика разработки программного обеспечения с открытым исходным кодом», Амстердам, Эльсевьер. Эдвард, Европейская программная отраслевая система инноваций, в: Секторальные системы инноваций. В этой главе мы поймем, что программирование по своей сути.

Структура процедуры

Процедура состоит из следующих элементов:

    Заголовок процедуры - отмечает начало процедуры, ее тип, назначение (событие).

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


Что означает «программа»?

Для программирования нужно дать компьютеру, что делать, например, «распечатать что-то на экране» или «умножить два числа». Когда команды одно за другим, они называются компьютерной программой. Текст компьютерных программ называется программным кодом. Компьютерные программы обычно запускают некоторый алгоритм. Алгоритмы - это последовательность шагов, необходимых для выполнения конкретной работы и достижения ожидаемого результата, что-то вроде «рецепта». Например, если мы обжариваем яйца, мы делаем рецепт: нагреваем жир в блюде, разрываем яйца, ждите, пока они не будут обжарены, перетасовываются от огня.

    Слово Private означает - закрытая, то есть процедура принадлежит только данной форме или модулю и не может быть использована другими контейнерами (формами, модулями). Если это слово опустить, то процедура будет открыта для других контейнеров.

    Sub - процедура.

Примечание : кроме процедур бывают функции - function. Функции не связаны с событиями и дополнительно могут возвращать результат своей работы (вычислений).

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

Языки программирования, компиляторы, интерпретаторы и среды разработки

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

    Элемент управления (или имя формы): здесь указывается точное имя элемента, хранящееся в свойстве Name.

    Событие - наименование события. Вот некоторые события:

    Click - щелчок мышью;

    DblClick - двойной щелчок мышью;

    KeyPress - нажатие клавиши;

    UnLoad - выгрузка формы (при закрытии формы, завершении программы);

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

    Activate - активизация формы (при щелчке по форме, когда ее заголовок подсвечивается);

    Deactivate - деактивизация формы (при щелчке по другой форме).

    Initialize - при создании объекта типа форма.

    Resize - при изменении размера формы

    Terminate - в момент удаления формы

    Аргументы - это исходные данные, передаваемые процедуре для обработки.

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

У произвольных процедур заголовок следующий:

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

    Окончание процедуры - заканчивает программный код процедуры: End Sub

Примечание : у функций: End Function

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

Подпрограмма (Sub ) - представляет собой процедуру, выполняющую про­граммный код в пределах своего блока и не возвращающую значения. Синтаксис про­стой подпрограммы таков:

( Private | Public ) Sub SubMain ()

..строки кода End Sub

-область видимости подпрограммы;

Sub -тип процедуры (а именно - подпрограмма);

subMain имя, присваиваемое подпрограмме;

End Sub -окончание блока кода подпрограммы.

Создание процедуры

Для создания процедуры выполните следующее:

    1 способ - дважды щелкните по нужному элементу управления или форме. Откроется окно кода, а в нем появится заголовок и окончание процедуры. Если необходимо другое событие, то его выбирают с помощью списка в верхнем правом углу окна кода.

    2 способ - откройте окно кода, выполните Инструменты → Добавить процедуру → укажите имя и параметры процедуры → Ok.

    3 способ - откройте окно кода и введите нужные строки с клавиатуры.

В результате должно получиться:

Private Sub Command1_Click()

Вызов процедур на исполнение

    Чтобы выполнилась процедура обработки события, это событие должно произойти.

    Для выполнения произвольной процедуры в теле другой процедуры указывают имя этой процедуры.

Private Sub Command1_Click()

Здесь при нажатии на кнопку Command1 возникает событие Click (щелчок мышью) и вызывается и выполняется процедура Kvadrat.

Код процедуры выполняется построчно и сверху вниз.

Функция (Function ) - это процедура, которая выполняет строки своего кода и возвращает некоторое значение. Синтаксис простой функции таков:

Function FunctionName() As Datatype

... строки кода

FunctionName = ReturnValue End Function

-область ви­димости функции;

Function - ключевое слово Visual Basic, указывающее на то, что это именно функция;

FunctionName () - имя, присваиваемое функции;

AS - ключевое слово Visual Basic, предваряющее назначение типа данных;

DataType тип данных возвращаемого значения;

ReturnValue значение, которое должно быть при­своено имени функции (это очень важный момент!);

End Function -конец данного блока кода.

Компьютерные программы являются одним из важнейших объектов интеллектуальной собственности. Существует несколько определений компьютерных программ. Рассмотрим одно из них.

Компьютерные программы - это упорядоченные совокупности команд и данных для получения определенного результата с помощью компьютера.

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

Компьютерные программы - относительно новый объект охраны, поскольку массовое производство персональных компьютеров, разработка и распространение компьютерных программ начались лишь в конце XX в.

Признание компьютерных программ объектами авторского права относится к 1964 г., когда их стали регистрировать в Регистре авторского права США. В соответствии с принятым в 1976 г. Законом США "Об авторском праве" компьютерные программы стали охраняться как литературные произведения.

Признание компьютерных программ объектами авторского права в США не было случайным. США были и остаются ведущим производителем компьютерной техники и компьютерных программ, которые использовались в других странах. В таких условиях разработчики компьютерных программ старались любыми способами защитить свои права и интересы. Охрана компьютерных программ нормами авторского, а не патентного права существенно увеличивала срок действия имущественных прав разработчиков компьютерных программ и не требовала тех издержек, которые необходимы для получения патентной охраны и поддержания ее в силе.

В Европейской патентной конвенции*(139) заявлено, что компьютерные программы не являются объектом патентной охраны. Тем самым фактически признано, что компьютерные программы должны охраняться авторским правом. Однако несмотря на это, Европейское патентное ведомство уже выдало патенты на десятки тысяч компьютерных программ.

Международное признание компьютерных программ объектами авторского права началось с разработки в 1989 г. предложений ВОИС по охране компьютерных программ, которые в 1991 г. вошли в Директиву Европейского союза "О правовой охране компьютерных программ"*(140) .

Такой же подход к компьютерным программам подтвержден в Соглашении ТРИПС: "Компьютерные программы в исходном или выходном виде охраняются как литературные произведения в соответствии с Бернской конвенцией"*(141) . Эта норма подтверждена в Договоре ВОИС по авторскому праву, в соответствии с которым "компьютерные программы охраняются как литературные произведения в смысле ст. 2 Бернской конвенции"*(142) .

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

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

Несмотря на то, что последние изменения в Бернскую конвенцию об охране литературных и художественных произведений были внесены в 1979 г., когда компьютерные программы были весьма широко распространены, однако прямого упоминания о правовой охране компьютерных программ в Конвенции нет. Правда, Бернская конвенция устанавливает, что "термин "литературные и художественные произведения" охватывает все произведения в области литературы, науки и искусства, каким бы способом и в какой бы форме они ни были выражены"*(143) . В соответствии с этим положением компьютерные программы можно рассматривать как объекты авторского права, поскольку любая компьютерная программа имеет все признаки произведений "в области литературы, науки и искусства".

Во-первых, исходный текст компьютерной программы имеет черты письменного литературного произведения. Это сходство дополняется и тем, что текст компьютерной программы может быть написан на разных языках программирования - Ассемблере, Си, Яве, Модуле, Паскале, Бейсике и т.д., как и любое иное литературное произведение - на английском, русском, японском и т.д.

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

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

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

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

Количество операционных систем невелико (Windows, Unix, Linux, MacOS, BeOS, FreeBSD, OS/2, DOS и др.). С другой стороны, количество прикладных программ огромно: для каждой операционной системы существуют тысячи и десятки тысяч прикладных программ. Прикладные программы могут выполняться, как правило, только в той операционной системе, для которой они написаны и скомпилированы. Существуют специальные программы-эмуляторы (WINE, CrossOver, VMachine), которые позволяют выполнять некоторые программы, написанные для определенной операционной системы, в среде другой операционной системы.

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

3. Независимость охраны компьютерных программ от формы выражения. Международные договоры и национальное законодательство признают охрану компьютерных программ в виде:

исходного кода или текста;

объектного или выходного кода.

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

исходные тексты компьютерных программ являются секретной информацией производителя и поэтому не разглашаются;

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

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

Для того чтобы реализовать компьютерную программу на рынке, в большинстве случаев недостаточно объектный код (исполняемые, библиотечные и иные модули программы) перенести на материальный носитель (обычно диски CD или DVD), добавить документацию, упаковать и получить компьютерный товар под тем или иным наименованием.

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

Другими словами, в товаре, который используется для установки компьютерной программы на компьютер пользователя в большинстве случаев нет действующих программ, поэтому приобретенный товар нельзя вставить в дисковод компьютера и начать использовать компьютерную программу: ее вначале нужно установить на компьютер. Лишь самые простые или специально созданные программы (portable programs и live-CD) можно запускать с материального носителя. Итак, компьютерный товар, предлагаемый производителем, в действительности содержит не компьютерную программу, а специальные модули, называемые дистрибутивом компьютерной программы.

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

Итак, современные компьютерные программы существуют, по меньшей мере, в трех формах:

1) компьютерная программа в исходном виде или тексте;

2) дистрибутив компьютерной программы;

3) действующая компьютерная программа в конечном или объектном виде.

Из смысла международных договоров*(144) и национального законодательства*(145) следует, что охрана авторским правом распространяется на все формы компьютерных программ, т.е. и на их дистрибутивы.

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

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

С появлением современных программ-монстров полное декомпилирование программ стало почти бессмысленным, хотя "взлом" программ продолжается, например, для того, чтобы сделать демонстрационную (Trial Version) версию программы полнофункциональной, обойти регистрацию программы (Serial Number, Patch), создать регистрационный номер (Key-generator) и т.д.

4. Охрана текстов компьютерных программ. В рамках модели коммерческих компьютерных программ исходные тексты программ являются собственностью производителей компьютерных программ и охраняются как закрытая информация.

Ситуация изменилась в последние годы, когда реальную конкуренцию коммерческим (Proprietary) компьютерным программам составили свободные программные продукты. Причем если на первых порах речь шла о так называемых бесплатных (Freeware) и условно-бесплатных программах (Shareware), то появление программ со свободными исходными текстами или кодами привело к изменению ситуации на рынке программного обеспечения.

Программы с открытыми (свободными) исходными тестами (Open Source) создали серьезную конкуренцию коммерческим программным продуктам. Причем многие важнейшие программные составляющие Интернета - это программы с открытыми исходными текстами. Были созданы программные продукты, которые не только стали популярными у обычных пользователей, но и вторглись в корпоративную сферу, в которой господствуют такие крупные производители компьютерных программ, как Microsoft, Adobe, IBM, Oracle, Apple, Novell и т.д.

Самыми известными программами с открытыми исходными кодами являются операционная система Linux. Операционная система Linux разработана в 1991 г. Л. Торвальдом и размещена в Интернете как свободная разработка. Система получила широчайшую поддержку программистов всего мира.

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

Таким образом, программные продукты с открытыми исходными текстами представляют собой значительное явление на рынке программных продуктов. Развитие данного вида программного обеспечения поддерживается такими фирмами, как IBM, Sun, Intel, Oracle, Corel, в основном, правда, как альтернатива Microsoft Windows.

Теорию и практику компьютерных программ с открытыми текстами определяет Фонд свободного программного обеспечения (Free Software Foundation, FSF). Главный принцип фонда - исходные тексты программ должны быть открытыми, общедоступными и бесплатными. Такие программы можно изучать, изменять, использовать и распространять.

Использование компьютерных программ с открытыми текстами происходит на иных условиях, чем использование коммерческих программных продуктов, и определяется специальными лицензиями, наиболее распространенной из которых является Генеральная публичная лицензия (General Public License, GPL).

Главная особенность почти любой лицензии на компьютерные программы с открытыми исходными текстами - это так называемый принцип "авторского лева" (CopyLeft). Назван этот принцип таким неологизмом для того, чтобы показать его принципиальное отличие от принципа авторского права (CopyRight), несмотря на то, что сами программы охраняются нормами авторского права.

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

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

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

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

6. Декомпилирование компьютерных программ. Проблемы, связанные с использованием компьютерных программ, обострились в последние годы. Законодательное закрепление охраны компьютерных программ в большинстве стран происходило в условиях доминирования программных продуктов и вычислительной техники, произведенных в основном фирмами IBM и DEC. В то давнее время многие страны Европы были уверены, что они сумеют догнать США, если предоставят своим разработчикам компьютерных программ право на декомпилирование компьютерных программ, т.е. получение исходного кода программы из компилированной программы.

Декомпилирование продолжает рассматриваться большинством стран как панацея от экспансии конкурентных программных продуктов. Право на декомпилирование признано рядом международных договоров, модельных положений, национальных законов. Наиболее известным документом в этой связи является Директива Европейского союза "О правовой охране компьютерных программ", ст. 6 которой посвящена декомпилированию компьютерных программ.

Страны Европейского союза включили в свое национальное законодательство аналогичные положения. Например, в законодательство об авторском праве Франции*(146) ст. L.122-6-1.-IV практически слово в слово повторяет ст. 6 Директивы Европейского союза. В законе об авторском праве Дании ст. 37 также повторяет содержание вышеупомянутой нормы. В законе об авторском праве и смежных правах Германии ст. 69е повторяет все те же нормы Директивы Европейского союза*(147) . Даже в законе об авторском праве Швейцарии, которая не является членом Европейского союза, в ст. 21 также говорится о прямом декодировании компьютерных программ*(148) .

Подтверждено право на декомпилирование компьютерных программ и в Гражданском кодексе Российской Федерации. В соответствии со ст. 1280(3) Гражданского кодекса "лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия правообладателя и без выплаты дополнительного вознаграждения воспроизвести и преобразовать объектный код в исходный текст (декомпилировать программу для ЭВМ)"*(149) . Разработчики проигнорировали либо не знали, что полный исходный текст из объектного кода получить невозможно.

Аналогичные нормы существуют и в законодательстве других стран с переходной экономикой, за исключением Республики Беларусь.

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

7. Адаптация компьютерных программ. В законодательстве ряда стран вместо положений о декомпилировании компьютерных программ введены нормы об адаптации компьютерных программ, которые имеют несколько иной смысл, но по существу аналогичное предназначение. Допускается, что лицо, правомерно владеющее экземпляром некоторой компьютерной программы, вправе адаптировать ее для обеспечения совместной работы с разрабатываемыми им программами. В такой норме отсутствуют смысл и логика, поскольку разработчик сам должен создавать такие программы, которые могут работать совместно с уже созданными программами, а не изменять чужие программы. Единственное, что запрещено "адаптатору", - это использовать информацию, полученную при адаптации сторонних программ, для создания аналогичных компьютерных программ. Однако именно создание конкурентных продуктов методами реинжиниринга является подлинной целью "адаптации".

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

Обычными формами адаптации считаются сервис-паки (Service Pack) и всевозможные патчи (Patch), т.е. дополнительные компьютерные программы, которые позволяют улучшить основную компьютерную программу или ее совместное функционирование с другими программами. Однако такие "заплатки" выпускают разработчики программ, а не пользователи. "Заплатки" иных разработчиков очень часто представляют собой средства несанкционированного доступа к содержанию изучаемой компьютерной программы.

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

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

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

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

Рациональное поведение пользователя легко установить. Если правомерно приобретенная программа используется только самим пользователем, то не имеет значения, каким образом он создаст работоспособную архивную копию. Если же архивная копия становится объектом обмена (прямого или виртуального), то интересы производителя могут быть нарушены. Следовательно, такие действия пользователя неправомерны.

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

Неправомерная установка компьютерной программы на нескольких компьютерах считается одной из распространенных форм нарушений авторского права в развитых странах и даже в государственных учреждениях, в частности США*(150) . Поскольку лицензия на установку компьютерной программы на нескольких компьютерах гораздо дешевле однопользовательской лицензии, многие организации, в том числе и государственные, с целью экономии средств очень часто оказываются нарушителями авторского права.

9. Лицензионное соглашение на компьютерную программу. Законодательство об авторском праве допускает использование произведений только на основе письменного договора. Однако в ряде случаев заключить такие договоры невозможно. Например, производитель компьютерных программ не может заключить договоры с тысячами и миллионами пользователей. Поэтому компьютерные программы в большинстве случаев распространяются вместе с лицензионными соглашениями, с условиями которых покупатель может согласиться или нет без заключения какого-либо письменного договора.

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

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

Если же программа приобретается в виде цифровой копии в Интернет, то пользователь вначале должен оплатить стоимость дистрибутива компьютерной программы и только потом скопировать его на свой компьютер. При установке этой программы пользователю будут предоставлены условия лицензионного соглашения, которые он может принять или нет. Однако это лишь формальная свобода выбора, поскольку программа оплачена и возвратить ее и получить обратно оплату практически невозможно. Точно в такой же тупиковой ситуации оказывается пользователь, если он согласился с условиями лицензионного соглашения, но его не удовлетворили функциональные свойства программы.

10. Прокат компьютерных программ. На международном уровне нормы о прокате компьютерных программ установлены в Соглашении ТРИПС и в Договоре ВОИС по авторскому праву, в соответствии с которыми авторы компьютерных программ пользуются правом разрешать прокат дистрибутивов своих компьютерных программ. Однако право на прокат не применяется, если сама компьютерная программа не является основным объектом проката.

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

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

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

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

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

В ряде стран под давлением крупных производителей компьютерных программ патентные ведомства патентуют компьютерные программы. Такое патентование широко практикуется в США, Японии и в Европейском союзе. Несмотря на то, что Европейская патентная конвенция не признает компьютерные программы объектом патентной охраны, Европейское патентное ведомство с 1978 г. выдало более 30 тыс. патентов на компьютерные программы. Для легализации этой деятельности, противоречащей Европейской патентной конвенции, в 2002 г. был разработан проект Директивы Европейского союза "О патентовании изобретений, включающих компьютерные программы". Эта инициатива вызвала крайне отрицательную реакцию большинства программистов, которые интерпретировали ее как стремление крупных производителей компьютерных программ добиться усиления своего монопольного положения, поскольку отдельные программисты, а также малые и средние предприятия, в том числе венчурные, не могут позволить себе патентную охрану, требующую значительных средств как на получение охранных документов, так и на поддержание их в силе. Пока руководству Европейского союза не удается добиться принятия этой Директивы.

12. Ограничения на разработку вредоносных программ. В отношении компьютерных программ ограничения вводятся не столько на содержание исходных текстов компьютерных программ, сколько на назначение и использование программ.

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

Для нарушения авторского права и смежных прав могут быть использованы любые компьютерные программы - все зависит от воображения и недобросовестной изощренности пользователя. Даже простейшая команда операционной системы, связанная с копированием файлов, может рассматриваться как действие, могущее привести к нарушению авторского права или смежных прав, поскольку любое несанкционированное копирование признается нарушением законодательства. На такие противоправные действия указано в согласованных заявлениях к Договору ВОИС по авторскому праву и к Договору ВОИС по исполнениям и фонограммам. В соответствии с этими согласованными заявлениями размещение объекта авторского права или смежных прав "в цифровой форме в электронном средстве является воспроизведением"*(151) . Законодательство по авторскому праву и смежным правам относит право на воспроизведение к одному из исключительных имущественных прав и делает законным размещение объекта в электронном средстве только при наличии разрешения правообладателя. Таким образом, признается нарушением законодательства не возможность, предоставленная компьютерной программой, совершать противоправные действия, а действия пользователя. В случае нарушения авторского права или смежных прав меры должны приниматься не к разработчикам компьютерных программ широкого назначения, а к тем пользователям, которые совершают противоправные действия, используя программы обработки текста, звука и изображения, распознавания символов, машинного перевода и т.д.

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

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

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

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