Исходный код

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 21:43, 24 марта 2017.
Пример исходного кода
Исхо́дный код (также исхо́дный текст) — текст компьютерной программы на каком-либо языке программирования или языке разметки, который может быть прочтён человеком. В обобщённом смысле — любые входные данные для транслятора[Источник 1]. Исходный код транслируется в исполняемый код целиком до запуска программы при помощи компилятора или может исполняться сразу при помощи интерпретатора.

История

Перфокарта
Бумажная копия исходного кода в Fortran 1970, напечатанные на непрерывной бумаге

Самые первые программы для компьютеров, которые могли хранить системные инструкции, были написаны двоичным кодом [Источник 2] с помощью передней панели ЭВМ[Источник 3]. Так как через переднюю панель[Источник 4] можно было ввести только машинный код, который по сути являлся исходным. Совместно с появлением первых компьютеров появился и первый исходный код- перфокарты[Источник 5]. Эти перфокарты вначале программировались на ассемблере[Источник 6], а в дальнейшем перешли на более совершенный язык Fortran. Когда исходный код был дематериализованы в текстовые файлы, появились текстовые редакторы. Ограниченные возможности компьютеров того времени часто требовали печати исходного кода на непрерывной бумаге.

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

Назначение

Процесс трансляции кода программы(Схема1)

Исходный код может быть написан на любом из сотен языков программирования , которые были разработаны. Некоторые из наиболее популярных из них являются C , C ++, COBOL[Источник 7], Fortran, Java, Perl, PHP , Python и Tcl / Tk[Источник 8]. Исходный код необходим для получения машинного кода. При выполнении инструкций программ, написанных на различных языках программирования, компьютеру необходимо преобразовать удобные для человеческого восприятия операторы в форму, понятную для компьютера. Системное программное обеспечение включает специальную программу, транслирующую текст программ, написанных на различных языках программирования, в машинные коды, которые и выполняются компьютером. Этот вид программного обеспечения называется компилятором или интерпретатором.

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

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

Качество

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

  • читаемость кода (также наличие комментариев к коду[Источник 9]);
  • лёгкость в поддержке, тестировании, отладке и устранении ошибок, модификации и портировании;
  • отсутствие замечаний, выводимых компилятором;
  • экономное использование ресурсов: памяти, процессора, дискового пространства;
  • отсутствие «мусора» — неиспользуемых переменных, недостижимых блоков кода, ненужных устаревших комментариев и т. д.;
  • переносимость — возможность использования обработчика (компилятора, интерпретатора, транслятора) разных версий или даже различных ОС;
  • возможность интернационализации[Источник 10] интерфейса.

Документирование кода

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

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

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

Есть целый ряд специализированных инструментов для создания документов непосредственно из существующего исходного кода, например. Doxygen[Источник 11] . Со знанием грамматики программирования может автоматически определить несколько связей между отдельными элементами. Дополнительная информация и описание импортируются из специальных комментариев , отправленных по каждому пункту.

Юридическая защита

Программные средства, и исходный код, что их сопровождает, как правило, относятся к одной из двух парадигм лицензий: открытое программное обеспечение и несвободное программное обеспечение (или проприетарное). В целом, программное обеспечение является открытым, исходный код свободно используется, распространяется, анализируется и модифицируется, или же проприетарным, если исходный код держится в секрете, или находится в частной собственности и доступ к нему ограничен. Для обеспечения закрытости используются преимущественно положения различных законов об авторском праве, но часто используются также коммерческая тайна и патенты. Кроме того, дистрибутив программы, как правило, приходит с лицензионным соглашением (EULA)[Источник 12], которое, главным образом, запрещает декомпиляцию[Источник 13], реинжениринг[Источник 14], анализ, редактирование, или обход защиты от копирования[Источник 15]. Виды защиты исходного кода (кроме традиционного компилирования в объектный код включают шифрование кода, запутывания кода ( англ. code obfuscation )[Источник 16]или морфинг кода[Источник 17]. Есть несколько причин , по которым разработчики проприетарного программного обеспечения предпринимают большие усилия , чтобы держать в секрете исходные коды, в том числе опасения , что:

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

Источники

  1. Транслятор // Википедия. [2016—2016]. Дата обновления: 18.11.2016. URL: http://ru.wikipedia.org/?oldid=81936912 (дата обращения: 18.11.2016).
  2. Двоичный код // Википедия. [2017—2017]. Дата обновления: 20.01.2017. URL: http://ru.wikipedia.org/?oldid=83176628 (дата обращения: 20.01.2017).
  3. Электронно-вычислительная машина // Википедия. [2017—2017]. Дата обновления: 07.03.2017. URL: http://ru.wikipedia.org/?oldid=84114329 (дата обращения: 07.03.2017).
  4. Передняя панель // Википедия. [2017—2017]. Дата обновления: 22.03.2017. URL:https://en.wikipedia.org/wiki/Front_panel(дата обращения: 22.03.2017).
  5. Перфокарта // Википедия. [2016—2016]. Дата обновления: 03.11.2016. URL: http://ru.wikipedia.org/?oldid=81684809 (дата обращения: 03.11.2016).
  6. Ассемблер // Википедия. [2017—2017]. Дата обновления: 22.03.2017. URL: http://ru.wikipedia.org/?oldid=84414113 (дата обращения: 22.03.2017).
  7. Кобол // Википедия. [2017—2017]. Дата обновления: 08.02.2017. URL: http://ru.wikipedia.org/?oldid=83552259 (дата обращения: 08.02.2017).
  8. Tcl // Википедия. [2016—2016]. Дата обновления: 01.10.2016. URL: http://ru.wikipedia.org/?oldid=81094010 (дата обращения: 01.10.2016).
  9. Комментарии (программирование) // Википедия. [2017—2017]. Дата обновления: 09.02.2017. URL: http://ru.wikipedia.org/?oldid=83575223 (дата обращения: 09.02.2017).
  10. Интернационализация // Википедия. [2017—2017]. Дата обновления: 12.02.2017. URL: http://ru.wikipedia.org/?oldid=83620934 (дата обращения: 12.02.2017).
  11. Doxygen // Википедия. [2016—2016]. Дата обновления: 23.12.2016. URL: http://ru.wikipedia.org/?oldid=82640404 (дата обращения: 23.12.2016).
  12. Пользовательское соглашение // Википедия. [2017—2017]. Дата обновления: 27.01.2017. URL: http://ru.wikipedia.org/?oldid=83312767 (дата обращения: 27.01.2017).
  13. Декомпилятор // Википедия. [2016—2016]. Дата обновления: 16.12.2016. URL: http://ru.wikipedia.org/?oldid=82520152 (дата обращения: 16.12.2016).
  14. Реинжиниринг программного обеспечения // Википедия. [2015—2015]. Дата обновления: 25.09.2015. URL: http://ru.wikipedia.org/?oldid=73547587 (дата обращения: 25.09.2015).
  15. Защита от несанкционированного копирования // Википедия. [2017—2017]. Дата обновления: 28.02.2017. URL: http://ru.wikipedia.org/?oldid=83974568 (дата обращения: 28.02.2017).
  16. Обфускация (программное обеспечение) // Википедия. [2017—2017]. Дата обновления: 03.01.2017. URL: http://ru.wikipedia.org/?oldid=82820754 (дата обращения: 03.01.2017).
  17. Морфинг программного кода // Википедия. [2016—2016]. Дата обновления: 01.08.2016. URL: http://ru.wikipedia.org/?oldid=79934221 (дата обращения: 01.08.2016).

Ссылки