Исхо́дный код (также исхо́дный текст) — текст компьютерной программы на каком-либо языке программирования или языке разметки, который может быть прочтён человеком. В обобщённом смысле — любые входные данные для транслятора. Исходный код транслируется в исполняемый код целиком до запуска программы при помощи компилятора или может исполняться сразу при помощи интерпретатора.
Содержание
Назначение [ править | править код ]
Исходный код либо используется для получения объектного кода, либо выполняется интерпретатором. Изменения выполняются только над исходным, с последующим повторным преобразованием в объектный.
Другое важное назначение исходного кода — в качестве описания программы. По тексту программы можно восстановить логику её поведения. Для облегчения понимания исходного кода используются комментарии. Существуют также инструментальные средства, позволяющие автоматически получать документацию по исходному коду — т. н. генераторы документации.
Кроме того, исходный код имеет много других применений. Он может использоваться как инструмент обучения; начинающим программистам бывает полезно исследовать существующий исходный код для изучения техники и методологии программирования. Он также используется как инструмент общения между опытными программистами благодаря своей лаконичной и недвусмысленной природе. Совместное использование кода разработчиками часто упоминается как фактор, способствующий улучшению опыта программистов.
Программисты часто переносят исходный код (в виде модулей, в имеющемся виде или с адаптацией) из одного проекта в другой. Это называется повторным использованием кода.
Исходный код — важнейший компонент для процесса портирования программного обеспечения на другие платформы. Без исходного кода какой-либо части ПО портирование либо слишком сложно, либо вообще невозможно.
Организация [ править | править код ]
Исходный код некоторой части ПО (модуля, компонента) может состоять из одного или нескольких файлов. Код программы не обязательно пишется только на одном языке программирования. Например, часто программы, написанные на языке Си, из соображений оптимизации содержат вставки кода на языке ассемблера. Также возможны ситуации, когда некоторые компоненты или части программы пишутся на различных языках, с последующей сборкой в единый исполняемый модуль при помощи технологии, известной как компоновка библиотек (library linking).
Сложное программное обеспечение при сборке требует использования десятков или даже сотен файлов с исходным кодом. В таких случаях для упрощения сборки обычно используются файлы проектов, содержащие описание зависимостей между файлами с исходным кодом и описывающие процесс сборки. Эти файлы также могут содержать параметры для компилятора и среды проектирования. Для разных сред проектирования могут применяться разные файлы проекта, причём в некоторых средах эти файлы могут быть в текстовом формате, пригодном для непосредственного редактирования программистом с помощью универсальных текстовых редакторов, в других средах поддерживаются специальные форматы, а создание и изменения файлов производится с помощью специальных инструментальных программ. Файлы проектов обычно включают в понятие «исходный код». Часто под исходным кодом подразумевают и файлы ресурсов, содержащие различные данные, например, графические изображения, нужные для сборки программы.
Для облегчения работы с исходным кодом и для совместной работы над кодом командой программистов используются системы управления версиями.
Качество [ править | править код ]
В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то, как написан код, может сильно влиять на процесс сопровождения ПО. О качестве исходного кода можно судить по следующим параметрам:
- читаемость кода (в том числе наличие комментариев к коду);
- лёгкость в поддержке, тестировании, отладке и устранении ошибок, модификации и портировании;
- экономное использование ресурсов: памяти, процессора, дискового пространства;
- отсутствие замечаний, выводимых компилятором;
- отсутствие «мусора» — неиспользуемых переменных, недостижимых блоков кода, ненужных устаревших комментариев и т. д.;
- адекватная обработка ошибок;
- возможность интернационализации интерфейса.
Неисполняемый исходный код [ править | править код ]
Копилефтные лицензии для свободного ПО требуют распространения исходного кода. Эти лицензии часто используются также для работ, не являющихся программами — например, документации, изображений, файлов данных для компьютерных игр.
В таких случаях исходным кодом считается форма данной работы, предпочтительная для её редактирования. В лицензиях, предназначенных не только для ПО, она также может называться версией в «прозрачном формате». Это может быть, например:
- для файла, сжатого с потерей данных — версия без потерь;
- для рендеравекторного изображения или трёхмерной модели — соответственно, векторная версия и модель;
- для изображения текста — такой же текст в текстовом формате;
- для музыки — файл во внутреннем формате музыкального редактора;
- и наконец, сам файл, если он удовлетворяет указанным условиям, либо если более удобной версии просто не существовало.
Персональные инструменты
Содержание
История
Самые первые программы для компьютеров, которые могли хранить системные инструкции, были написаны двоичным кодом [Источник 2] с помощью передней панели ЭВМ [Источник 3] . Так как через переднюю панель [Источник 4] можно было ввести только машинный код, который по сути являлся исходным. Совместно с появлением первых компьютеров появился и первый исходный код- перфокарты [Источник 5] . Эти перфокарты вначале программировались на ассемблере [Источник 6] , а в дальнейшем перешли на более совершенный язык Fortran. Когда исходный код был дематериализованы в текстовые файлы, появились текстовые редакторы. Ограниченные возможности компьютеров того времени часто требовали печати исходного кода на непрерывной бумаге.
На сегодняшний день существуют среды разработки, так называемые IDE,которые содержат много функций для создания, изменения, компилирования, развертывания и отладки программного обеспечения, что позволяет абстрагироваться от выполнения вспомогательных задач, тем самым программист может сосредоточиться на решении собственно алгоритмической задачи и избежать потерь времени при выполнении типичных технических действий (например, вызове компилятора), что значительно повышает производительность труда разработчика.
Назначение
Исходный код может быть написан на любом из сотен языков программирования , которые были разработаны. Некоторые из наиболее популярных из них являются 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] . Есть несколько причин , по которым разработчики проприетарного программного обеспечения предпринимают большие усилия , чтобы держать в секрете исходные коды, в том числе опасения , что:
- Другие разработчики могут копировать некоторые фрагменты из их кода и использовать его в других программах.
- Хакеры смогут найти уязвимы места в коде , что позволит им разрабатывать вирусы, шпионские программы или другие вредоносных программы.
- Публичное раскрытие исходного кода может подвергнуть его разработчикам обвинений, что часть кода была списана из других программ.
- Клиенты будут пытаться модифицировать исходный код, что может привести к новым проблемам, которые будеттрудно исправить.
Наталья Баранова
Всего материалов: 602
Чем отличается открытое и свободное программное обеспечение? Что такое открытая лицензия и исходный код? В этой статье мы разберем основные термины и определения, которые нужно знать для изучения темы открытого кода.
FOSS (Free and Open Source Software) – эту аббревиатуру используют, когда говорят про свободное и открытое программное обеспечение с открытым исходным кодом.
Открытое программное обеспечение (open-source software) – это программное обеспечение с открытым исходным кодом, который доступен для просмотра, изучения и изменения. Пользователь может сам доработать открытую программу с помощью кода. Открытое ПО пользователь может использовать и изменять под свои требования.
Открытое ПО может существенно отличается от свободного ПО. К примеру, лицензия продукта может разрешать исследовать его исходный код, но при этом запрещать вносить в него изменения, распространять копии. В этом случае продукт будет открытым, но не свободным.
Известные открытые программы: веб-сервер Apache, операционная система Linux и браузер Netscape Navigator.
Исходный код – текст компьютерной программы на каком-либо языке программирования или языке разметки, который может быть прочтен человеком. Наиболее популярные языки программирования: C, C ++, Fortran, Java, Perl, PHP , Python. Открытый исходный код распространяется под открытой лицензией.
Открытая лицензия – лицензионный договор, по которому можно использовать исходный код программы для нужд пользователей с минимальными ограничениями. К таким ограничениям относится требование ссылаться на предыдущих создателей или сохранять свойство открытости, если программа будет распространена в дальнейшем.
Таким образом, чтобы считать лицензию открытой, должен быть доступ к исходникам и возможность вносить в них изменения. Открытая лицензия подразумевает, что ПО можно свободно использовать, изменять и делиться им. На сайте Open Source Initiative есть список одобренных лицензий для свободного ПО.
Donationware (от английского donation «пожертвование» и software «программное обеспечение», сокращенно donateware) – один из вариантов монетизации проектов с открытым кодом. Дело в том, что открытое ПО не всегда распространяется бесплатно. Разработчики внедряют различные схемы поддержки проекта.
Например, популярная модель donateware предполагает, что пользователи могут сделать пожертвование и тем самым поддержать разработчиков. При этом пользователю предоставляется полностью функционирующее программное обеспечение.
Впервые такой способ был опробован в 1987 году для игры Ballerburg. Программист распространял игру бесплатно, но просил о пожертвовании, предлагая взамен исходный код игры.
LAMP – группа открытых программ с открытым исходным кодом для создания и запуска веб-серверов. Аббревиатура образована от первых букв входящих в группу компонентов: операционная система Linux, веб-сервис Apache, свободная система управления базой данных MySQL, язык программирования PHP. В широком смысле под термином понимают независимый и гибкий подход к созданию серверного приложения.
Github – крупнейшая платформа для разработки программного обеспечения и его хостинга на облачном сервере. Сообщество объединило более 24 миллионов человек. На сайте разработчики публикуют свои проекты с открытым исходным кодом, просматривают код друг друга, оставляют комментарии и помогают в разработке. Исходный код проекта хранится в репозитории, так называют хранилище исходного кода вашего программного проекта.
Например, такие компании как Microsoft, Google, Facebook используют данный ресурс для размещения исходных кодов своих разработок. Теплица социальных технологий также всегда публикует исходный код проектов на Github.
Ключевые организации
Проект GNU – операционная система типа Unix, состоит из множества свободных программ: приложений, библиотек, средств разработки, игр. Название проекта произошло от фразы GNU’s Not Unix.
Проект основал программист Ричард Столлман в 1984 году, именно с его запуска началось движение в поддержку свободного программного обеспечения. У проекта есть собственная лицензия GNU General Public License (GNU GPL) для ПО.
Фонд свободного программного обеспечения (Free Software Foundation, FSF) – некоммерческая организация, которую основал Ричард Столлман в 1985 году. Сейчас сотрудники и добровольцы фонда работают над юридическими и организационными вопросами в области свободного ПО.
При поддержке ЮНЕСКО фонд разработал каталог свободного ПО Free Software Directory. Также фонд учредил две премии: за продвижение свободного программного обеспечения и свободного ПО за социально значимые проекты.
Open Source Initiative – некоммерческая организация, которая занимается защитой и продвижением программного обеспечения с открытым исходным кодом. Ее создали хакеры, программисты-хакеры Эрик Реймонд и Брюс Перенс в 1998 году. Деятельность организации поддерживают и спонсируют крупные компании: Facebook, GitHub, Google, Heptio, Hewlett Packard Enterprise, IBM и Percona.