Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Простой пример исходного кода на языке C , процедурный язык программирования . Получившаяся программа выводит на экран компьютера «привет, мир». Это первый известный « Привет мир » фрагмент из семенных книги Язык программирования C берет свое начало от Керниган в Bell Laboratories в 1974 году [1]

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

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

Определения [ править ]

Linux Информация о проекте определяет исходный код , как: [2]

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

Понятие исходного кода также может быть понято более широко, включая машинный код и нотации на графических языках, ни один из которых не является текстовым по своей природе. Пример из статьи, представленной на ежегодной конференции IEEE и по анализу исходного кода и манипуляции с ним: [3]

Для ясности «исходный код» означает любое полностью исполняемое описание программной системы. Поэтому он построен таким образом, чтобы включать машинный код, языки очень высокого уровня и исполняемые графические представления систем. [4]

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

История [ править ]

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

Когда IBM впервые предложила программное обеспечение для работы с ее машиной, исходный код был предоставлен бесплатно. В то время стоимость разработки и поддержки программного обеспечения была включена в стоимость оборудования. На протяжении десятилетий IBM распространяла исходный код со своими лицензиями на программные продукты, вплоть до 1983 года. [6]

Большинство ранних компьютерных журналов публиковали исходный код в виде программ для ввода .

Иногда весь исходный код большой программы публикуется в виде книги в твердом переплете, такой как Computers and Typesetting , vol. B: TeX, Программа по Дональд Кнут , PGP Исходный код и по Philip Zimmermann , PC SpeedScript по Рэнди Томпсон и мкКл / OS, Real-Time Kernel Жан Labrosse.

Организация [ править ]

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

Более сложный пример исходного кода Java . Написанный в стиле объектно-ориентированного программирования , он демонстрирует шаблонный код . Комментарии к прологу отмечены красным, встроенные комментарии - зеленым, а программные операторы - синим.

Исходный код для конкретной части программного обеспечения может содержаться в одном файле или в нескольких файлах. Хотя такая практика встречается редко, исходный код программы может быть написан на разных языках программирования. [7] Например, программа, написанная в основном на языке программирования C , может иметь части, написанные на языке ассемблера в целях оптимизации. Также возможно, чтобы некоторые компоненты программного обеспечения были написаны и скомпилированы отдельно на произвольном языке программирования, а затем интегрированы в программное обеспечение с использованием метода, называемого связыванием библиотек . В некоторых языках, например Java , это можно сделать во время выполнения. (каждый класс компилируется в отдельный файл, который связывается интерпретатором во время выполнения).

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

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

Цели [ править ]

Исходный код в основном используется в качестве входных данных для процесса, который создает исполняемую программу (т. Е. Компилируется или интерпретируется ). Он также используется как метод передачи алгоритмов между людьми (например, фрагменты кода в книгах). [8]

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

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

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

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

Правовые аспекты [ править ]

Ситуация варьируется во всем мире, но в Соединенных Штатах до 1974 года программное обеспечение и его исходный код не охранялись авторскими правами и, следовательно, всегда являлись общественным достоянием . [10]

В 1974 году Комиссия США по новому технологическому использованию произведений, защищенных авторским правом (CONTU), решила, что «компьютерные программы в той степени, в которой они воплощают оригинальное творение автора, являются надлежащим объектом авторского права». [11] [12]

В 1983 году в суде США по делу Apple против Франклина было решено, что то же самое применимо и к объектному коду ; и что Закон об авторском праве предоставил компьютерным программам статус авторского права на литературные произведения.

В 1999 году в суде США по делу Бернштейн против Соединенных Штатов было также постановлено, что исходный код может считаться конституционно защищенной формой свободы слова . Сторонники свободы слова утверждали, что, поскольку исходный код передает информацию программистам, написан на каком-то языке и может использоваться для обмена юмором и другими художественными занятиями, это защищенная форма общения. [13] [14] [15]

Лицензирование [ править ]

Пример уведомления об авторских правах: [16]

Авторские права [гггг] [имя правообладателя]

Под лицензией Apache License версии 2.0 («Лицензия»); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию лицензии по адресу

http://www.apache.org/licenses/LICENSE-2.0

Если это не требуется действующим законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, распространяется на УСЛОВИЯХ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, явных или подразумеваемых. См. Лицензию для получения информации о конкретных языках, регулирующих разрешения и ограничения в соответствии с Лицензией.

Автор такой нетривиальной работы, как программное обеспечение [12], имеет несколько исключительных прав , среди которых авторские права на исходный код и объектный код . [17] Автор имеет право и возможность предоставлять клиентам и пользователям своего программного обеспечения некоторые из своих исключительных прав в форме лицензирования программного обеспечения . Программное обеспечение и сопровождающий его исходный код могут быть связаны с несколькими парадигмами лицензирования; Самое важное различие - бесплатное и несвободное программное обеспечение . Это делается путем включения уведомления об авторских правах, в котором объявляются условия лицензирования. Если уведомление не найдено, то по умолчанию Все права защищены. подразумевается.

Вообще говоря, программное обеспечение является бесплатным программным обеспечением, если его пользователи могут свободно использовать его для любых целей, изучать и изменять его исходный код, передавать или продавать его точные копии, а также передавать или продавать его модифицированные копии. Программное обеспечение является проприетарным, если оно распространяется, пока исходный код хранится в секрете, или находится в частной собственности и ограничен. Одной из первых лицензий на программное обеспечение, которые были опубликованы и прямо предоставляли эти свободы, была Стандартная общественная лицензия GNU в 1989 году; лицензия BSD является еще одним из первых примеров с 1990.

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

Качество [ править ]

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

См. Также [ править ]

  • Байт-код
  • Код как данные
  • Соглашения о кодировании
  • Компьютерный код
  • Бесплатно программное обеспечение
  • Устаревший код
  • Машинный код
  • Язык разметки
  • Обфусцированный код
  • Код объекта
  • Пакет (система управления пакетами)
  • Язык программирования
  • Репозиторий исходного кода
  • Подсветка синтаксиса
  • Язык визуального программирования

Ссылки [ править ]

  1. ^ a b «Программирование на C: Учебное пособие» (PDF) . Архивировано из оригинального (PDF) 23 февраля 2015 года.
  2. ^ Информационный проект Linux. «Определение исходного кода» .
  3. ^ Рабочая конференция SCAM , 2001–2010.
  4. ^ Почему анализ исходного кода и манипуляции с ним всегда будут важны , Марк Харман , 10-я Международная рабочая конференция IEEE по анализу и манипулированию исходным кодом (SCAM 2010). Тимишоара , Румыния , 12–13 сентября 2010 г.
  5. ^ "gnu.org" . www.gnu.org .
  6. Мартин Гетц (8 февраля 1988 г.). «Только объектный код: играет ли IBM честно?» . Компьютерный мир . Vol. 22 нет. 6. п. 59. В 1983 году IBM изменила свою 20-летнюю политику распространения исходного кода вместе с лицензиями на программные продукты.
  7. ^ «Расширение и внедрение интерпретатора Python» . docs.python.org .
  8. ^ a b c Спинеллис, D: Чтение кода: перспектива открытого исходного кода . Addison-Wesley Professional, 2003. ISBN 0-201-79940-5 
  9. ^ " Искусство и компьютерное программирование " ONLamp.com , (2005)
  10. ^ П., Лю, Джозеф; Л., Доган, Стейси (2005). «Закон об авторском праве и предметная специфика: случай компьютерного программного обеспечения» . Ежегодный обзор американского права Нью-Йоркского университета . 61 (2).
  11. Apple Computer, Inc. против Franklin Computer Corporation возвращает байт в защиту авторских прав для компьютерных программ в издании Law Review, том 14, выпуск 2, статья 3 Университета Золотых Ворот, Ян Л. Нуссбаум (январь 1984 г.)
  12. ^ а б Лемли, Менелл, Мергес и Самуэльсон. Программное обеспечение и Интернет-право , стр. 34.
  13. ^ "Информация" (PDF) . cr.yp.to . Проверено 27 декабря 2019 .
  14. ^ Бернштейн против Министерства юстиции США на eff.org
  15. EFF на 25: Вспоминая дело, которое установило Код как речь на EFF.org, Элисон Дам-Бойл (16 апреля 2015 г.)
  16. ^ "Лицензия" . www.apache.org . Проверено 27 декабря 2019 .
  17. Хэнкок, Терри (29 августа 2008 г.). «Что, если бы авторские права не распространялись на двоичные исполняемые файлы?» . Журнал свободного программного обеспечения . Проверено 25 января +2016 .

Источники [ править ]

  • (VEW04) «Использование декомпилятора для восстановления исходного кода», М. Ван Эммерик и Т. Ваддингтон, Рабочая конференция по обратному проектированию , Делфт , Нидерланды , 9–12 ноября 2004 г. Расширенная версия статьи .

Внешние ссылки [ править ]

  • Определение исходного кода от Linux Information Project (LINFO)
  • «Система обязательной аккредитации продуктов ИТ-безопасности» . MetaFilter.com. 22 сентября 2008 г. введет правила, обязывающие иностранные фирмы раскрывать секретную информацию о цифровой бытовой технике и других продуктах с мая следующего года, сообщает Yomiuri Shimbun со ссылкой на неназванные источники. Если компания откажется раскрыть информацию, Китай запретит ей экспортировать продукт на китайский рынок или производить или продавать его в Китае, говорится в сообщении.
  • Одна и та же программа, написанная на нескольких языках
  • Обфускатор Javascript