исходный код и исполняемый код

Действительно ли вам нужен исходный код?

Во многие знания многие печали

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

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

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

Разработка железа. Здесь тоже есть исходный код, что особенно верно для разработки с использованием VHDL и Verlog. Как дела обстоят здесь? Исторически сложилось так, что при выборе интегральной микросхемы и разработки ее применения инженер опирался на спецификации, в которых указана функциональность, расположение выводов, требования к питанию, и т.д. И при этом никто не ожидал увидеть полную схему внутреннего устройства ИС, хотя часто могли видеть структурную схему (в основном в качестве иллюстративного материала, который облегчал понимание принципов функционирования), а иногда даже и принципиальную схему (для аналоговых ИС типа ОУ), хотя и без номиналов.
Инженер, которые сегодня разрабатывает ASIC или прошивку FPGA, скорее всего, будет использовать некоторые готовые IP блоки — предварительно упакованный блок, который обеспечивает определенный функционал. При этом, выбор будет основываться на спецификациях, и совершенно не очевидно, что оригинальный HDL для IP будет включен в комплект поставки. Этот подход с использованием «черных ящиков» хорошо известен в мире аппаратного обеспечения.

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

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

Настройка программного обеспечения.Основным различием между встраиваемыми системами и десктопами является изменчивость первых. Большинство ПК похожи на многие другие и выбор только межу средой исполнения: Windows, Mac, или Linux. Встроенные системы, в свою очередь, невероятно изменчивы — различные процессоры, конфигурации памяти и периферийных устройств. В результате, программное обеспечение IP должен быть гибким, так чтобы он мог быть развернут на различных системах. Хотя многие продукты, такие как RTOS поставляются в двоичном виде — обычно библиотеке, которая настроена на конкретную архитектуру, требования к поставке исходного кода могут стимулировать поставщиков, исключая необходимость сохранения и поддержки многочисленных вариаций, поскольку предоставление IP в виде исходного решает многие из этих вопросов. Пользователь может построить код для конкретного процессора, адаптировать к карте памяти устройства, и добавить необходимые расширения устройств. В некоторых случаях, IP блок может быть конфигурирован с помощью условной компиляции — как правило, для определения конфигурации редактируется заголовочный файл.

Сертификация. Для некоторых типов приложений, таких военные / авиационные и медицина, встроенное ПО должно быть сертифицировано на безопасность и соответствие различным стандартам. Этот процесс является сложным и дорогим и обычно влечет за собой проверку каждой строки кода. Поэтому обычно невозможно купить «предварительно сертифицированные» блоки ПО, так как все приложение является предметом рассмотрения. Таким образом, разработчик критически важных приложений, скорее всего, искать IP, который доступен вместе с исходным кодом, так чтобы полная проверка могла быть проведена.

Что такое Исходный код?
Вопрос может показаться странным, но без ответа на него обсуждение каких-либо аспектов его наличия (или отсутствия) превращается в несколько странное занятие. Ответ может показаться очевидным: исходный код некоторой программы представляет собой набор файлов, содержащих инструкции на языке высокого уровня или ассемблере, которые могут быть скомпилированы и собраны в функционирующие двоичные инструкции. Сразу вопрос — необходимые для процесса преобразования программы и среда исполнения для них являются частью исходного кода (в бинарном виде)? Тем не менее данному определению отвечают по меньшей мере 3 формы, в которых «исходный код» может быть поставлен (для примера поговорим о языке С) в порядке ухудшения качества:
1) Действительно исходный код, с хорошей планировкой, четкими конвенциями именования переменных и хорошо откомментированный (при условии, что такой имеется у разработчика IP, что совершенно необязательно).
2) Строки кода, которые будут компилировать успешно, НО без комментариев или особенно значимых имен идентификаторов.
3) Строки кода после обфрускации, которая делает код нечитаемым человеком, но при этом приемлем для компилятора. Это делается с помощью замены имен идентификаторов на бессмысленные и удаления всех комментариев и синтаксически нетребуемых пробелов. Существует обратный процесс, но его результаты трудно назвать приемлемыми.
Все эти формы используются поставщиков программного обеспечения для следующих целей:
1) является тем, что большинство покупателей ожидают получить и то, что многие производители действительно обеспечивают. Тем не менее, при принятии решения о покупке, если вам требуется исходный код, важно убедиться что это именно такой вариант, если сомневаетесь, просто попросите образцы.
2) обычно используется, когда продавец хочет доставить необходимый минимум, который может быть (только) достаточно хорошо для сертификации.
3) используется для защиты содержимого IIP от посторонних глаз, что означает, что программное обеспечение получает преимущество конфигурируемости, но не более того.

Недостатки исходного кода.
Самый главный недостаток того, что исходный код доступен: это сильное искушение. Каждый разработчик хочет сделать свое программное обеспечение как можно лучше (ну есть такая точка зрения). Так, например, если API ОСРВ не работает в точности так, чтобы быть оптимальным для приложения, доступность исходного кода предоставляет возможность изменить его.
Хотя может показаться, что сделать приложение оптимальным — это здорово, но есть проблема долгосрочной поддержки. Что, если существует проблема с функциональностью RTOS? Поставщик не будет поддерживать модифицированный продукт. Что делать, если выходит новая версия ОСРВ? Включение ее в редизайн может потребовать значительное время на проведение повторных модификаций, особенно если их автор у Вас уже не работает (ну или Вы делали эти модификации 3 года назад и естественно, или, как говорят, разумеется, не озаботились написанием соответствующей документации).

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

Источник

Исходный код

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

Содержание

Назначение [ ]

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

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

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

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

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

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

Качество [ ]

В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то, как написан код, может сильно влиять на процесс сопровождения ПО. О качестве исходного кода можно судить по следующим параметрам:

Неисполняемый исходный код [ ]

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

В таких случаях исходным кодом считается форма данной работы, предпочтительная для её редактирования. В лицензиях, предназначенных не только для ПО, она также может называться версией в «прозрачном формате». Это может быть, например:

исходный код и исполняемый код

Источник

Исходный код: что нужно знать, чтобы успешно защитить права на программное обеспечение?

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

Рассказывает:

исходный код и исполняемый код

Роман Янковский,

советник практики IP & IT юридической фирмы «Томашевская и партнеры»

ГК РФ определяет программу для ЭВМ как совокупность данных и команд, предназначенных для функционирования компьютерных устройств. Программы могут быть выражены на любом языке и в любой форме, включая исходный текст и объектный код (ст. 1261 ГК РФ).

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

Какие технические особенности влияют на защиту кода?

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

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

Большинство программ сегодня пишут на компилируемых языках программирования. Такие программы работают только после прохождения специальной процедуры компиляции. Программа-компилятор собирает исходный текст программы, написанной, упаковывает и изменяет его и выдает так называемый исполняемый файл (обычно с расширением «.exe» – от англ. “executable”).

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

исходный код и исполняемый код

А куда делся исходный текст программы, который написал программист при разработке программы?

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

Таким образом различают:

Теоретически небольшую программу можно сразу написать на языке низкого уровня (используя ассемблерные команды). Но сейчас так никто не делает, потому что написать даже простую программу на ассемблере — это большой объем работы. Программы пишут на языках программирования высокого уровня в виде исходного текста. Затем, как мы уже говорили, компилятор обрабатывает этот текст и превращает его в смесь цифр и букв – объектный код.

Какое значение это имеет для юристов?

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

Есть процедура так называемой декомпиляции: специалист пытается воссоздать первоначальный код из ассемблерных команд. Согласно ГК РФ, декомпиляция – это воспроизведение и преобразование объектного кода в исходный текст (ст. 1280 ГК РФ). Однако важно понимать, что даже если специалист смог воссоздать код на языке высокого уровня, который генерирует необходимый объектный код (то есть, по сути, восстановил программу), этот код высокого уровня не будет аналогичен первоначальному. То есть этот «исходный текст» не будет исходным в прямом смысле этого слова: после декомпиляции мы не получим исходный текст, который изначально разработчик обработал компилятором.

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

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

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

Особенность № 2
Программы занимают физически очень большой объем.

Количество строк кода в совсем небольшой игре для телефона сопоставимо с количеством строк в ГК РФ. Серьезные программы занимают значительно больший объем. Поэтому не так просто принести в суд распечатку кода своей и чужой программ и сравнить их: это будут две огромные кипы бумаги.

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

Особенность № 3
Программы постоянно обновляются.

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

Особенность № 4
Большинство программ пишут на основании уже готового кода.

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

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

Есть два способа внедрить чужую библиотеку в свою программу:

На заметку

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

Как оформить и защитить права на программу?

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

Программа для ЭВМ является объектом авторского права. По ГК РФ регистрация для защиты авторских прав не требуется (ст. 1259 ГК РФ).

Однако для программ для ЭВМ такая регистрация возможна: специальный реестр ведет Роспатент. Реестр программ для ЭВМ открыт с 2013 года. Регистрация программы в реестре добровольная.

Переход прав на зарегистрированные программы тоже регистрируется. Также в реестре можно отдельно регистрировать каждую версию программы. Это имеет смысл, если изменения были существенными. Можно зарегистрировать программу любого объема.

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

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

По сути, регистрация в этом реестре представляет собой механизм добровольного депонирования. Автором программы считается лицо, указанное в реестре, но только пока не доказано иное (п. 6 ст. 1262 ГК РФ, п. 109 Постановления Пленума ВС РФ от 23.04.2019 № 10 «О применении части четвертой Гражданского кодекса Российской Федерации»).

На заметку

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

ГК РФ напрямую не предусматривает такой способ защиты прав на программы. Наоборот, в законе указано, что программа для ЭВМ не является изобретением (ст. 1350 ГК РФ). Поэтому при патентовании программы как таковой можно столкнуться со сложностями.

Роман Янковский рекомендует патентовать не саму программу, а алгоритм ее работы. Такие патенты встречаются на практике (например, есть патенты на решения для распределенного реестра).

В качестве примера можно привести спор между приложением для знакомств Tinder и его конкурентом – Bumble. Сервис-конкурент запустили бывшие сотрудники Tinder. У обоих приложений были очень похожие функции, в частности механизм «свайпа», на который у Tinder был патент на промышленный образец.

Распространить режим коммерческой тайны на разработанный софт и потребовать от работников подписать соответствующие документы – это хорошее решение по двум причинам:

Источник

Программный код

исходный код и исполняемый код

Исхо́дный код (также исхо́дный текст) — текст компьютерной программы на каком-либо языке программирования. В обобщённом смысле — любые входные данные для транслятора.

Исходный код либо транслируется в исполняемый код при помощи компилятора, либо исполняется непосредственно по тексту при помощи интерпретатора.

Содержание

Назначение

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

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

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

Программисты часто переносят исходный код из одного проекта в другой, что носит название повторного использования кода (Software reusability).

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

Организация

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

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

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

Качество

В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то, как написан код, может сильно влиять на процесс сопровождения ПО. О качестве исходного кода можно судить по следующим параметрам:

Неисполняемый исходный код

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

В таких случаях исходным кодом считается форма данной работы, предпочтительная для её редактирования. В лицензиях, предназначенных не только для ПО, она также может называться версией в «прозрачном формате». Это может быть, например:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *