Для чего нужен исходный код: Что такое открытый исходный код? – Описание открытого исходного кода – AWS

Содержание

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

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


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


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

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

Разработка железа. Здесь тоже есть исходный код, что особенно верно для разработки с использованием 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 от большого, хорошо известного и стабильного поставщика, который может предложить долгосрочную поддержку, то наличие исходного кода не является актуальным и может даже быть занесено в недостатки.

Что такое исходный код программы на С: просто о сложном

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

С — это язык программирования, который проверен временем. Изначально он задумывался как заменитель Ассемблера, чтобы писать на нем операционные системы. 

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

 

Исходный код программы на С

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

Исходный код программы на С — это программный код, который еще не был скомпилирован и содержится в файлах с расширением данного языка. У этого языка имеется несколько расширений, и делятся они в зависимости от типов файлов:

  • заголовочный файлы используют расширение «.h», поэтому называются h-файлы;

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

Любой проект, реализованный на С, будет иметь файлы обоих типов. Но нужно отметить, что:

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

 

Как получить исходный код программы на С

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

  • помочь доработать программу, вплоть до того, чтобы стать соавтором;

  • использовать код, чтобы создать подобную программу, однако тут есть тонкости: нужно будет указать автора исходного кода или что-то еще;

  • чуть-чуть подправить программу для личного пользования;

  • и др.

Если автор скрывает исходный код программы, то получить его:

  • противозаконно, потому что авторы закрывают код и защищают его лицензиями;

  • очень сложно, а иногда практически невозможно.

Процесс получения исходного кода из закрытой программы — это реверсивная инженерия или обратное программирование. У закрытых программ пользователи не могут видеть исходный код программы, лишь ее исполняемые или скомпилированные файлы, например, файлы «.ехе» для Windows-программ. Если открыть исполняемый или скомпилированный файл, то там не будет ничего общего с языком программирования. Все, что там можно будет увидеть, — это беспорядочный набор цифр и букв или двоичный код из сочетания «1» и «0».

 

Исходный код программы на С: обратное программирование 

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

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

Способы попробовать восстановить исходный код программы на С:

  • IDA Pro — одна из лучших и бесплатных программ из категории «реверсивная инженерия»;

  • «hiew.exe» — утилита, которая не выдаст исходный код программы, но поможет править его на языке ассемблера;

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

  • необходимо проверить, не встроен ли в программу «debug info»: если встроен, то можно использовать его, как и в предыдущем способе, чтобы узнать информацию об исходном коде;

  • DisSharp — программа, которая способна раскрыть часть кода на С++ и С#;

  • Refox — данная утилита поможет, если программа на С скомпилирована в какой-либо байт-кодовый язык;

  • exe.scope.exe или Resourcehacker.exe — утилиты, которые не раскрывают исходный код, но помогают определить, какие библиотеки используются в программе.

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

  • при помощи одной утилиты вы узнаете используемые библиотеки;

  • при помощи другой — имена классов и функций;

  • третья поможет частично раскрыть код;

  • и т. д., пока у вас не сложится общая картина об исходниках.

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

 

Заключение

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

Что такое исходный код? (Определение, примеры, инструкции)

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

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

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

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

 

Пример исходного кода

Одна из самых простых программ, знакомая почти всем, кто имеет опыт программирования, — «Hello, World!» программа, которая просто выводит (или отображает) сообщение «Hello, World!» при исполнении.

Мы часто используем «Hello, World!» программа при обучении; обычно это первое, что изучает студент при изучении программирования.

Вот, например, «Hello, World!» программа на Python:

 print("Hello, World!") 

А вот одна из ее версий на C++:

 #include 
основной ()
{
  std::cout << "Привет, мир!\n";
  вернуть 0;
} 

Связанное Чтение от Artturi JalliPython Pathlib лучше, чем модуль ОС. Вот как это использовать.

 

Как работает исходный код?

Даже если у вас нет опыта программирования, вы без труда разберетесь в приведенных выше примерах «Hello, World!» программа. Когда программист выполняет «Hello World», программа выполняется построчно, сверху вниз и слева направо, как если бы вы читали по-английски. Несмотря на то, что C++ «Hello, World!» содержит некоторый синтаксис, который может показаться немного загадочным, легко сделать вывод, что цель этих примеров — вывести «Hello, World!»

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

Произошла ошибка.

Невозможно выполнить JavaScript. Попробуйте посмотреть это видео на сайте www.youtube.com или включите JavaScript, если он отключен в вашем браузере.

Что такое исходный код и что он делает? | Видео: Eye on Tech

 

Почему важен исходный код?

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

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

 

Альтернативы написанию исходного кода

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

Эти альтернативы включают инструменты визуального программирования, которые позволяют программистам визуально создавать программное обеспечение. Часто это означает, что программа использует какие-то блок-схемы для отображения потока или поведения программы. Инструменты визуального программирования могут быть «без кода», что означает, что кодирование не требуется (или даже возможно). В качестве альтернативы визуальное программирование может быть «с низким кодом», что означает, что, хотя написание исходного кода может потребоваться или не потребоваться, вы можете использовать его для расширения функциональности инструмента визуального программирования. Примеры инструментов визуального программирования включают LabVIEW, Simulink и Bubble.

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

Что такое исходный код и почему он важен?

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

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

Что такое исходный код?

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

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

Какие роли используют исходный код?

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

Люди могут использовать различные языки программирования для написания исходного кода. К ним относятся Java, JavaScript, C, C++, BASIC, PHP, Pascal и Python.

Какие существуют типы исходного кода?

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

Типы исходного кода включают:

  • Интерпретированный исходный код
  • Скомпилированный исходный код
  • Исходный код программной функции
  • Исходный код программы
  • Исходный код компьютера (или операционной системы)

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

Иерархия реализации

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

Типы перевода

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

Каковы наиболее распространенные способы использования исходного кода?

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

Расширение функций программы

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

Создание основы веб-сайта

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

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

Совместное использование алгоритмов

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

Что такое пример исходного кода?

Если вам интересно, как выглядит исходный код на практике, вы не одиноки.

This entry was posted in Популярное