Jump to content

Исходный код

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

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

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

Первые программируемые компьютеры, появившиеся в конце 1940-х годов, [2] были запрограммированы на машинном языке (простые инструкции, которые могли быть непосредственно выполнены процессором). Машинный язык было трудно отлаживать, и его нельзя было переносить между различными компьютерными системами. [3] Первоначально аппаратные ресурсы были скудными и дорогими, а человеческие ресурсы были дешевле. [4] По мере усложнения программ производительность программистов стала узким местом. Это привело к появлению языков программирования высокого уровня, таких как Фортран, в середине 1950-х годов. Эти языки абстрагировали детали аппаратного обеспечения и вместо этого были разработаны для выражения алгоритмов, которые людям было бы легче понять. [5] [6] Поскольку инструкции отличаются от базового компьютерного оборудования высокого уровня, , программное обеспечение появилось сравнительно недавно и восходит к таким ранним языкам программирования как Fortran , Lisp и Cobol . [6] Изобретение языков программирования высокого уровня произошло одновременно с появлением компиляторов, которые должны были автоматически транслировать исходный код в машинный код, который можно было напрямую выполнять на аппаратном обеспечении компьютера . [7]

Исходный код — это форма кода, которая модифицируется непосредственно людьми, обычно на языке программирования высокого уровня. Объектный код может выполняться непосредственно машиной и генерируется автоматически из исходного кода, часто с помощью промежуточного этапа — языка ассемблера . Хотя объектный код будет работать только на определенной платформе, исходный код можно перенести на другую машину и перекомпилировать там. Для одного и того же исходного кода объектный код может существенно различаться — не только в зависимости от машины, для которой он скомпилирован, но и в зависимости от оптимизации производительности компилятора. [8] [9]

Организация

[ редактировать ]

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

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

Разработчики программного обеспечения часто используют управление конфигурацией для отслеживания изменений в файлах исходного кода ( контроль версий ). Система управления конфигурацией также отслеживает, какой файл объектного кода соответствует какой версии файла исходного кода. [11]

Количество строк исходного кода часто используется в качестве показателя при оценке производительности программистов, экономической ценности базы кода, оценки усилий для проектов, находящихся в разработке, и текущих затрат на обслуживание программного обеспечения после выпуска. [12]

Коммуникация

[ редактировать ]

Исходный код также используется для передачи алгоритмов между людьми – например, фрагменты кода в Интернете или в книгах. [13]

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

Исходный код часто содержит комментарии — блоки текста, помеченные для игнорирования компилятором. Это содержимое не является частью логики программы, а предназначено для того, чтобы помочь читателям понять программу. [15]

Компании часто сохраняют конфиденциальность исходного кода, чтобы скрыть алгоритмы, считающиеся коммерческой тайной . Собственный секретный исходный код и алгоритмы широко используются в конфиденциальных государственных приложениях, таких как уголовное правосудие , что приводит к поведению «черного ящика» с отсутствием прозрачности методологии алгоритма. Результатом является избегание общественного внимания к таким вопросам, как предвзятость. [16]

Модификация

[ редактировать ]

Доступ к исходному коду (а не только к объектному коду) необходим для его изменения. [17] Понимание существующего кода необходимо, чтобы понять, как он работает. [17] и перед его изменением. [18] Скорость понимания зависит как от базы кода, так и от навыков программиста. [19] Опытным программистам легче понять, что делает код на высоком уровне. [20] Программная визуализация иногда используется для ускорения этого процесса. [21]

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

Обзоры кода, проводимые другими разработчиками, часто используются для тщательного изучения нового кода, добавляемого в проект. [24] Целью этого этапа часто является проверка того, что код соответствует стандартам стиля и удобства сопровождения и что он является правильной реализацией проекта программного обеспечения . [25] По некоторым оценкам, проверка кода значительно снижает количество ошибок, сохраняющихся после тестирования программного обеспечения . завершения [24] Наряду с тестированием программного обеспечения, которое осуществляется путем выполнения кода, статический анализ программы использует автоматизированные инструменты для обнаружения проблем с исходным кодом. Многие IDE поддерживают инструменты анализа кода, которые могут предоставить показатели ясности и удобства сопровождения кода. [26] Отладчики — это инструменты, которые часто позволяют программистам пошагово выполнять выполнение, отслеживая, какой исходный код соответствует каждому изменению состояния. [27]

Компиляция и исполнение

[ редактировать ]

Файлы исходного кода на языке программирования высокого уровня должны пройти этап предварительной обработки в машинный код, прежде чем инструкции смогут быть выполнены. [7] После компиляции программу можно сохранить в виде объектного файла , а загрузчик (часть операционной системы) может взять этот сохраненный файл и выполнить его как процесс на аппаратном обеспечении компьютера. [10] Некоторые языки программирования используют интерпретатор вместо компилятора. Интерпретатор преобразует программу в машинный код во время выполнения , что делает их в 10–100 раз медленнее, чем скомпилированные языки программирования. [22] [28]

Качество

[ редактировать ]

Качество программного обеспечения — это всеобъемлющий термин, который может относиться к правильному и эффективному поведению кода, его возможности повторного использования и переносимости или простоте модификации. [29] Обычно более рентабельно заложить качество в продукт с самого начала, чем пытаться добавить его позже в процессе разработки. [30] Код более высокого качества снизит затраты в течение всего срока службы как для поставщиков, так и для клиентов, поскольку он более надежен и его легче поддерживать . [31] [32]

Ремонтопригодность — это качество программного обеспечения, позволяющее легко модифицировать его, не нарушая существующие функциональные возможности. [33] Соблюдение соглашений по кодированию, таких как использование понятных имен функций и переменных, соответствующих их назначению, упрощает обслуживание. [34] Использование операторов условного цикла только в том случае, если код может выполняться более одного раза, а также исключение кода, который никогда не будет выполняться, также может повысить понятность. [35] Многие организации, занимающиеся разработкой программного обеспечения, пренебрегают удобством сопровождения на этапе разработки, даже несмотря на то, что это приведет к увеличению долгосрочных затрат. [32] Технический долг возникает, когда программисты, часто из-за лени или необходимости уложиться в сроки, выбирают быстрые и грязные решения вместо того, чтобы встроить в свой код удобство сопровождения. [36] Распространенной причиной является недооценка усилий по разработке программного обеспечения , что приводит к недостаточности ресурсов, выделяемых на разработку. [37] Проблема с удобством сопровождения заключается в том, что многие курсы по разработке программного обеспечения не уделяют этому особого внимания. [38] Инженеры-разработчики, которые знают, что они не будут нести ответственность за поддержку программного обеспечения, не имеют стимула повышать удобство сопровождения. [18]

[ редактировать ]

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

Несвободное программное обеспечение редко распространяется в виде исходного кода. [42] Хотя термин «программное обеспечение с открытым исходным кодом» буквально означает публичный доступ к исходному коду , [43] К программному обеспечению с открытым исходным кодом предъявляются дополнительные требования: свободное распространение, разрешение на изменение исходного кода и выпуск производных работ под одной и той же лицензией, а также отсутствие дискриминации между различными видами использования, включая коммерческое использование. [44] [45] Бесплатное повторное использование программного обеспечения с открытым исходным кодом может ускорить разработку. [46]

См. также

[ редактировать ]
  1. ^ Керниган, Брайан В. «Программирование на C: Учебное пособие» (PDF) . Bell Laboratories, Мюррей-Хилл, Нью-Джерси. Архивировано из оригинала (PDF) 23 февраля 2015 года.
  2. ^ Габбриелли и Мартини 2023 , с. 519.
  3. ^ Габбриелли и Мартини, 2023 , стр. 520–521.
  4. ^ Габбриелли и Мартини 2023 , с. 522.
  5. ^ Габбриелли и Мартини 2023 , с. 521.
  6. ^ Jump up to: а б Трейси 2021 , с. 1.
  7. ^ Jump up to: а б Трейси 2021 , с. 121.
  8. ^ Лин и др. 2001 , стр. 238–239.
  9. ^ Катьял 2019 , с. 1194.
  10. ^ Jump up to: а б Трейси, 2021 г. , стр. 122–123.
  11. ^ О'Риган 2022 , стр. 230–231, 233, 377.
  12. ^ Фостер 2014 , стр. 249, 274, 280, 305.
  13. ^ Jump up to: а б с Спинеллис, Д.: Чтение кода: взгляд на открытый исходный код . Аддисон-Уэсли Профессионал, 2003 г. ISBN   0-201-79940-5
  14. ^ « Искусство и компьютерное программирование » ONLamp.com. Архивировано 20 февраля 2018 г. в Wayback Machine (2005).
  15. ^ Качмарек и др. 2018 , стр. 68.
  16. ^ Катьял 2019 , стр. 1186–1187.
  17. ^ Jump up to: а б Катьял 2019 , с. 1195.
  18. ^ Jump up to: а б с Оффатт, Джефф (январь 2018 г.). «Обзор сопровождения и развития программного обеспечения» . Университета Джорджа Мейсона Факультет компьютерных наук . Проверено 5 мая 2024 г.
  19. ^ Трипатия и Найк 2014 , с. 296.
  20. ^ Трипатия и Найк 2014 , с. 297.
  21. ^ Трипати и Найк 2014 , стр. 318–319.
  22. ^ Jump up to: а б О'Риган 2022 , с. 375.
  23. ^ Трипатия и Найк 2014 , с. 94.
  24. ^ Jump up to: а б Дули 2017 , с. 272.
  25. ^ О'Риган, 2022 , стр. 18, 21.
  26. ^ О'Риган 2022 , с. 133.
  27. ^ Качмарек и др. 2018 , стр. 348–349.
  28. ^ Sebesta 2012 , p. 28.
  29. ^ Галин 2018 , с. 26.
  30. ^ О'Риган, 2022 , стр. 68, 117.
  31. ^ О'Риган 2022 , стр. 3, 268.
  32. ^ Jump up to: а б Варга 2018 , с. 12.
  33. ^ Варга 2018 , с. 5.
  34. ^ Трипати и Найк 2014 , стр. 296–297.
  35. ^ Трипатия и Найк 2014 , с. 309.
  36. ^ Варга 2018 , стр. 6–7.
  37. ^ Варга 2018 , с. 7.
  38. ^ Варга 2018 , стр. 7–8.
  39. ^ Лю, Джозеф П.; Доган, Стейси Л. (2005). «Закон об авторском праве и специфика предмета: случай компьютерного программного обеспечения» . Ежегодный обзор американского права Нью-Йоркского университета . 61 (2). Архивировано из оригинала 25 июня 2021 года.
  40. ^ Apple Computer, Inc. против Franklin Computer Corporation возвращает байт под защиту авторских прав для компьютерных программ. Архивировано 7 мая 2017 года в Wayback Machine в Обзоре права Университета Голден Гейт, том 14, выпуск 2, статья 3, Ян Л. Нуссбаум (январь). 1984)
  41. ^ Лемли, Менелл, Мерджес и Самуэльсон. Программное обеспечение и интернет-право , с. 34.
  42. ^ Бойл 2003 , с. 45.
  43. ^ Морин и др. 2012 , Открытый исходный код против закрытого исходного кода.
  44. ^ Сен и др. 2008 , с. 209.
  45. ^ Морин и др. 2012 г. , Лицензирование свободного и открытого программного обеспечения (FOSS).
  46. ^ О'Риган 2022 , с. 106.

Источники

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5d480685cb4fae80088713afb486398f__1722874980
URL1:https://arc.ask3.ru/arc/aa/5d/8f/5d480685cb4fae80088713afb486398f.html
Заголовок, (Title) документа по адресу, URL1:
Source code - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)