Исходный код программы что такое: Исходный код и его 11 составляющих
Действительно ли вам нужен исходный код? / Хабр
Во многие знания многие печали
Если вы спросите любого разработчика встроенного ПО, хочет ли он иметь доступ к исходному коду операционной системы реального времени, которую он использует, ответ почти наверняка будет — конечно. Точно так же обстоит дело с любым покупным ПО. Является ли такой ответ разумным для всех случаев и почему исходный код иногда необходим, а иногда его наличие менее полезно, чем ожидалось?
Есть ряд ключевых критериев, которые инженеры применяют при выборе операционной системы реального времени (ОСРВ). Многие из них — стоимость, функциональность, лицензирование, поддержка — несомненно, весьма важны (особенно стоимость — таковы наши реалии). Тем не менее, еще один критерий — наличие исходного кода — может быть не столь важен, но всегда оценивается как сильный фактор.
Доступность исходного код не означает, что он поставляется автоматически и бесплатно. Такой подход справедлив только для продуктов с открытым исходным кодом, а в других случаях производители могут взимать плату за исходный код или сделать его доступным по запросу.
Разработка железа. Здесь тоже есть исходный код, что особенно верно для разработки с использованием 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 от большого, хорошо известного и стабильного поставщика, который может предложить долгосрочную поддержку, то наличие исходного кода не является актуальным и может даже быть занесено в недостатки.
Программный код — это… Что такое Программный код?
Исходный код, написанный на JavaScript
Исхо́дный код (также исхо́дный текст) — текст компьютерной программы на каком-либо языке программирования. В обобщённом смысле — любые входные данные для транслятора.
Исходный код либо транслируется в исполняемый код при помощи компилятора, либо исполняется непосредственно по тексту при помощи интерпретатора.
Назначение
Исходный код либо используется для получения объектного кода, либо выполняется интерпретатором. Изменения никогда не выполняются над объектным кодом, только над исходным, с последующим повторным преобразованием в объектный.
Другое важное назначение исходного кода — в качестве описания программы. По тексту программы можно восстановить логику её поведения. Для облегчения понимания исходного кода используются комментарии. Существуют также инструментальные средства, позволяющие автоматически получать документацию по исходному коду — т. н. генераторы документации.
Кроме того, исходный код имеет много других применений. Он может использоваться как инструмент обучения; начинающим программистам бывает полезно исследовать существующий исходный код для изучения техники и методологии программирования. Он также используется как инструмент общения между опытными программистами, благодаря своей (идеально) лаконичной и недвусмысленной природе. Совместное использование кода разработчиками часто упоминается как фактор, способствующий улучшению опыта программистов.
Программисты часто переносят исходный код из одного проекта в другой, что носит название повторного использования кода (Software reusability).
Исходный код — важнейший компонент для процесса портирования программного обеспечения на другие платформы. Без исходного кода какой-либо части ПО, портирование либо слишком сложно, либо вообще невозможно.
Организация
Исходный код некоторой части ПО (модуля, компонента) может состоять из одного или нескольких файлов. Код программы не обязательно пишется только на одном языке программирования. Например, часто программы, написанные на языке Си, с целью оптимизации, содержат вставки кода на языке ассемблера. Также возможны ситуации, когда некоторые компоненты или части программы пишутся на различных языках, с последующей сборкой в единый исполняемый модуль при помощи технологии известной как компоновка библиотек (library linking).
Сложное программное обеспечение при сборке требует использования десятков, или даже сотен файлов с исходным кодом. В таких случаях для упрощения сборки обычно используются файлы проектов, содержащие описание зависимостей между файлами с исходным кодом, и описывающие процесс сборки. Эти файлы так же могут содержать и другие параметры компилятора и среды проектирования. Для разных сред проектирования могут применяться разные файлы проекта, причем в некоторых средах эти файлы могут быть в текстовом формате, пригодном для непосредственного редактирования программистом с помощью универсальных текстовых редакторов, в других средах поддерживаются специальные форматы, а создание и изменения файлов производится с помощью специальных инструментальных программ. Файлы проектов обычно включают в понятие «исходный код». В подавляющем большинстве современных языковых сред обязательно используются файлы проектов вне зависимости от сложности прочего исходного кода, входящего в данный проект. Часто под исходным кодом подразумевают и файлы ресурсов, содержащие различные данные, например, графические изображения, нужные для сборки программы.
Для облегчения работы с исходным кодом, для совместной работы над кодом командой программистов, используются системы управления версиями.
Качество
В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то, как написан код, может сильно влиять на процесс сопровождения ПО. О качестве исходного кода можно судить по следующим параметрам:
- читаемость кода (в том числе наличие или отсутствие комментариев к коду;
- лёгкость в поддержке, тестировании, отладке и устранении ошибок, модификации и портировании;
- низкая сложность;
- низкое использование ресурсов — памяти, процессора, дискового пространства;
- отсутствие замечаний, выводимых компилятором;
- отсутствие «мусора» — неиспользуемых переменных, недостижимых блоков кода, ненужных устаревших комментариев и т. д.
Неисполняемый исходный код
Копилефтные лицензии для свободного ПО требуют распространения исходного кода. Эти лицензии часто используются также для работ, не являющихся программами — например, документации, изображений, файлов данных для компьютерных игр.
В таких случаях исходным кодом считается форма данной работы, предпочтительная для её редактирования. В лицензиях, предназначенных не только для ПО, она также может называться версией в «прозрачном формате». Это может быть, например:
- для файла, сжатого с потерей данных — версия без потерь;
- для рендера векторного изображения или трёхмерной модели — соответственно, векторная версия и модель;
- для изображения текста — такой же текст в текстовом формате;
- для музыки — файл во внутреннем формате музыкального редактора;
- и наконец, сам файл, если он удовлетворяет указанным условиям, либо если более удобной версии просто не существовало.
См. также
Ссылки
Wikimedia Foundation.
2010.
Исходный код что это – что такое source code
Главная » Что такое программный код, приложений, ошибки
Что такое программный код, приложений, ошибки
Опубликованно 24.02.2018 02:55
Любого программного обеспечения или онлайн-сервисов, например, Word, для Windows, whatsapp или браузера, которые ежедневно работают сотни миллионов людей, так или иначе, включают специальные инструкции. Или специальный программный код, который понятен машине, рассказывает ему, что делать или не делать. Или как правильно реагировать на действия пользователя. Какой код программы будет рассмотрен в этой статье.Описание
Программа программный код-это текст выполняется на специальном языке, понятном машине. Она может быть выполнена непосредственно в тексте переводчика или передача в специальную форму компилятором.
Исходный код может состоять из нескольких файлов. Все они должны быть одинакового формата. Текст программы, содержащиеся в них, должны быть написаны на одном языке. Однако, там могут быть некоторые исключения. Например, в веб-разработке файла страницы может содержать несколько различных языков программирования и стандартов. В зависимости от сложности проекта, можно представить, таких языков и технологий как PHP, HTML и javascript, Java и других.
Сложных программных систем в сборе может потребоваться большое количество файлов, которые могут быть как целые сотни. Для совместной работы над такими крупными проектами, программисты очень часто используют системы контроля версий. Они позволяют одновременно работать с несколькими экземплярами исходный код, который на определенном этапе развития могут быть объединены в один общий.
Качество кода
Компьютер не способен понять, как ваш код написан для него, хорошо или плохо. Если он здоров и не содержит ошибок, машина будет в любом случае запустить его. Плохой код может усложнить задачи сопровождения программного обеспечения. Это особенно актуально для крупных проектов. Как правило, качественный код характеризуется несколькими параметрами:Читаемость кода. Одного взгляда на него должно быть достаточно, чтобы вообще понять, что реализуется фрагмент кода.Присутствие четкие и емкие комментарии. Этот параметр значительно влияет на удобочитаемость, простота отладки, тестирования, поддержки и устранения неполадок программного кода.Низкая сложность.Оптимизация кода. Организовать это так, что использовать программу меньше системных ресурсов, таких как память, процессорное время и дисковое пространство.Отсутствие мусора. То есть, не используемых переменных или блоки кода, которые никогда не доходит до программы управления.Вредоносного кода
Помимо полезных программ, которые могут навредить системе или даже оборудования. Как правило, такой код пишется людьми, которые заинтересованы в каких-либо преимуществ от текущего процесса. Например, программы, которые могут похищать личную информацию от пользователей компьютера. Они могут быть номер карты, паспортные данные или любую другую конфиденциальную информацию. Другие же могут просто влиять на систему, тем самым вызывая сбои и предотвращая полную функциональность. Рекомендации по написанию хорошего кода
Джефф Вогель — программист с большим опытом работы, поделился несколькими советами для того, чтобы научить начинающих правила хорошего кода.
В частности, он предлагает всегда комментировать свой код. Что такое обзор? Это четкое и краткое описание того, что происходит в этой строке кода или функции. Тот факт, что разработка конкретной программы может быть отложено на месяц или даже приостановили на некоторое время. Возвращаясь к работе над проектом пару месяцев, даже опытный программист будет трудно разобраться в программе. Но подробные комментарии смогут восстановить цепь событий и поведения.
Далее он рекомендует как можно чаще использовать глобальные переменные. Это происходит потому, что при изменении кода программы, необходимо скорректировать значение переменной только в одном месте. С использованием значения функции или процедуры сразу об этом узнают и будет работать с новыми данными.Имена переменных и выявления ошибок
Правильное название переменных также поможет значительно сократить время на изучение исходного кода программы, даже если код написан своими руками. То есть, хороший код-это текст, где переменные и функции имеют имена, можно понять, что они делают или хранят. При этом необходимо стараться не использовать длинные имена переменных.
Очень важно уделять большое внимание своевременному исправлению ошибок. Что такое программный код, который прекрасно выполнил? Этот код не имеет ошибки. То есть любая ветвь цикла или изменение переменной, или даже любых неожиданных действий пользователя, всегда приведет к ожидаемому результату. Это достигается путем тестирования программного продукта на нескольких случаев.
Обнаружения ошибок кода, а точнее, их прогноз возможен на этапе проектирования программы. Наличие в коде проверку различных условий и возможных исключений, поможет вести управление программой курса.
Оптимизация необходима для написания работоспособной программы, которые будут эффективно использовать компьютерные ресурсы и чтобы избежать ошибок выполнения кода программы. Какова оптимальная программа? Это продукт, который может выполнять все заявленные функции, ведет себя в этом «тихом» и экономичный.
Почти всегда оптимизация для стабильной работы программы может быть достигнута лишь путем проведения нескольких тестов на разных платформах и в разных условиях. Если программа начинает вести себя непредсказуемо, нужно определить, чем она вызвана и устранить или захватить процесс.Заключение
Что такое код? Простыми словами, это набор инструкций и понятий для компьютера. Он содержит текст, который компилятор или интерпретатор может превратить в понятный машине язык. То есть, по сути, кодекс является посредником между человеком и компьютером, что упрощает их отношения.
Категория: Мобильная техника
Открытый исходный код — это… Что такое Открытый исходный код?
Открытое программное обеспечение (англ. open source software) — это программное обеспечение с открытым исходным кодом. Исходный код создаваемых программ открыт, то есть доступен для просмотра и изменения. Это позволяет использовать уже созданный код для создания новых версий программ, для исправления ошибок и, возможно, помочь в доработке открытой программы.
«Открытая» лицензия не требует, чтобы открытое ПО предоставлялось бесплатно. Многие из наиболее успешных проектов открытого ПО, тем не менее, бесплатны. Открытое программное обеспечение имеет большие перспективы в России в связи с принятием правительством и президентом РФ решений по обеспечению национальной безопасности в сфере ИТ на основе внедрения открытого и свободного ПО в государственные и бюджетные организации.
Открытое и свободное ПО
Термин open source (англ. Открытое программное обеспечение) был создан вместе с определением в 1998 году Эриком Реймондом и Брюсом Перенсом, которые утверждали, что термин free software (Свободное программное обеспечение) в английском языке неоднозначен и отпугивает коммерческих предпринимателей.[1]
Подавляющее большинство открытых программ является одновременно свободными. Определения открытого и свободного ПО не полностью совпадают друг с другом, но близки, и большинство лицензий соответствуют обоим.
Отличие между движениями открытого ПО и свободного ПО заключается в основном в приоритетах. Сторонники термина «open source» делают упор на эффективность открытых исходников как метода разработки, модернизации и сопровождения программ. Сторонники термина «free software» считают, что именно права на свободное распространение, модификацию и изучение программ являются главным достоинством свободного открытого ПО.
Существуют программы, попадающие по мнению некоторых[кто?] под определение открытых, но не являющиеся свободными, например, UnRAR, распаковщик [2]
По мнению Ричарда Столлмана, разрекламированность «Open Source» несколько вредит свободному ПО, так как некоторые разработчики и пользователи открытого ПО совсем не против собственнического ПО, и люди останавливаются на Open Source, не доходя до понятий о свободе.[3]
По словам Брюса Перенса открытое ПО всегда было лишь способом объяснить предпринимателям идею свободного ПО, и это ему удалось.[4]
Несмотря на стремление авторов определения избавиться от неоднозначности слова free[5], выражение open source тоже очень часто используется для обозначения сущностей, противоречащих определению OSI или не имеющих к нему никакого отношения, но способных привести к путанице. Например, спецслужбы США используют его в значении «открытый источник» (см.: OSINT, Open Source Intelligence),[6] что упомянуто в объявлении на сайте Реймонда.[1]
Враждебные к свободному ПО компании — например, Microsoft — используют только выражение open source.
Определение открытого программного обеспечения Open Source Initiative
Open Source является торговой маркой организации Open Source Initiative. Существует специальный комитет, решающий, может ли лицензия носить имя Open Source. Определение, которым он при этом руководствуется, приведено в The Open Source Definition.[7]
Вынесенное OSI определение признается за руководство многими другими организациями — например, порталом Debian Free Software Guidelines.
Лицензии
Исходные коды открытых программ выпускаются либо как общественное достояние, либо на условиях «свободных» лицензий — как, например, GNU General Public License или BSD License. Свободная лицензия позволяет использовать исходный код программы для своих нужд с минимальными ограничениями, не противоречащими определению OpenSource.org. Таким ограничением может быть требование ссылаться на предыдущих создателей или требование сохранять свойство открытости при дальнейшем распространении той же самой или модифицированной открытой программы (копилефт). В некоторых случаях (например, FreeBSD) эти ограничения очень малы, в других (например, GNU General Public License) достаточно распространять ПО вместе с исходным кодом и текстом лицензии, не изменяя её.
Открытое программное обеспечение в России
В настоящее время открытое программное обеспечение не получило широкого распространения в России, среди причин чему называют широкое нелегальное распространение собственнического программного обеспечения.
Однако, решениями правительства и президента РФ Дмитрия Анатольевича Медведева, отечественное открытое программное обеспечение в 2008 году внедрено во всех школах Российской Федерации и будет установлено во всех государственных и бюджетных организациях для обеспечения национальной безопасности в сфере ИТ.
Открытое программное обеспечение может свободно устанавливаться и использоваться во всех школах, офисах, вузах и на всех личных компьютерах и во всех государственных, бюджетных и коммерческих организациях и учреждениях России и в странах СНГ согласно Генеральной публичной лицензии (GPL).
Открытое программное обеспечение в школах
Решением правительства Российской Федерации в марте 2008 года, все средние школы России получили базовые пакеты лицензионного собственнического и открытого программного обеспечения для обучения компьютерной грамотности, основам информатики и новым информационным технологиям с операционными системами Windows и Linux.
В трёх регионах России в 2008 году развёрнуты эксперименты по внедрению и использованию в средних школах базовых пакетов программ для кабинетов информатики и вычислительной техники и начата подготовка учителей и преподавателей информатики технологии работы с открытым программным обеспечением в среде Windows и Linux.
Согласно Доктрине информационной безопасности РФ, обучение компьютерной грамотности и информатике должно сопровождаться правовым ликбезом в обучении защите информации в ЭВМ, защите от компьютерных вирусов, порно-сайтов и обеспечению информационной безопасности в локальных и глобальных сетях ЭВМ на базе лицензионного и свободного открытого программного обеспечения.
В 2007 году выпущены первые учебники информатики для вузов и школ для обучения информатике в соответствии с государственными стандартами образования со свободным и проприетарным программным обеспечением в среде Windows и Linux.
Российские разработчики открытого программного обеспечения
Российские разработчики в основном помогают развитию англоязычных проектов или выпускают локализованные редакции международных проектов (например, OpenOffice Pro на базе
Также, существует незначительное количество российских репозиториев открытого ПО (таких, как репозитарий Сизиф).
Примечания
См. также
Ссылки
- Ричард Столлман
Wikimedia Foundation.
2010.
Открытый исходный код — благо или троянский конь? / Хабр
Сразу хочется сузить рамки — разговор идет о продаже программного продукта (php+MySQL).
Вопрос — (про)давать ли исходный код?
Аргументы в пользу закрытого кода.
— Подавляющему большинству клиентов нужно чтобы продукт работал и исходный код не нужен.
— При закрытом коде проще осуществлять тех. поддержку — клиент своими руками не залезет куда не надо и не породит новых уникальных ошибок, в которых хрен разберешься.
— Сложнее стырить исходный код. А точнее его можно получить, но вот что-то серьезное переделать в этом «исходнике» сложно — максимум сломать защиту, внести незначительные правки.
— Есть некоторая надежда разработчика, что закрытый код спасет от перепродажи его продукта лихими людьми.
— Есть легкая надежда, что купят продукт, потому как «сломать» не смогут, либо «ломанный» побоятся использовать.
— Народ (наш народ 🙂 ) привык что если код открыт, значит бесплатно!
Аргументы в пользу открытого кода.
— Иногда клиенту просто хочется иметь возможность взглянуть на код. То есть не обязательно даже его иметь, но чтобы возможность такая была. Это могут быть параноики безопасности в хорошем смысле или просто борцы за какие-то права.
— Клиент имеет возможность внести правки, причем весьма серьезные. Вплоть до потери совместимости с последующими версиями продукта (хотя вот это возможно уже в минус).
— Нет проблем с дешифратором закрытого кода. Не секрет, что такие проблемы встречаются (отсутствие Зенда и иже с ним, какие-то локальные глюки т.д.).
— Есть возможность построить сообщество разработчиков купивших скажем девелоперскую лицензию с доступом к открытому коду.
Добавлю немного конкретики.
Вопрос «открытого кода» интересует в связи с «внутрифирменной» дискуссией по поводу развития одного из наших продуктов (CNCat). Мы проходили разные стадии (открытый код, Зенд) и сейчас осуществляем обфрускейтивание (замену названий переменных на бессмысленные) и легкую шифрацию. Когда мы давали продукт в открытом коде и давали его бесплатно — много кто тырил код и на его основе делали свои продукты без всяких ссылок на нас. Что было немного обидно и сейчас не хочется на этом обжечься опять.
Однако правильное позиционирование открытого кода (АПИ, поддержка, контроль и т.д.) может дать нам приток сторонних разработчиков новых фич, мощную обратную связь, отладку — в общем новый импульс.
Дык хочется получить какие-то дополнительные аргументы или мысли по данному вопросу. Как бы Вы повели себя как клиент, как разработчик (конечно желательно чтобы Вы им являлись, чтоб не голословно)? Может есть какие в мире устоявшиеся теории и доказанные практикой подходы (типа фри версия закрыта, купленная открыта)?
Открытый исходный код: особенности, термины и понятие
Одно из условий программы с открытым исходным кодом — постоянное совершенствование, чтобы она могла соответствовать всем необходимым требованиям в будущем. Это требование препятствует ее коммерциализации и защищает права первоначального автора. Распространяемое ПО также может иметь дополнительные условия, предъявляемые автором, например, не должна перепрограммироваться для целей, отличающихся от оригинальных.
История развития концепции
В настоящее время существует множество программ с открытым исходным кодом отличного качества: Linux LibreOffice, Firefox, Audacity, WordPress, Emule и другие, которые дают представление об уровне развития и востребованности этой идеи в мире. В каждой программе сотни людей по всему миру работают бескорыстно, отвечая за улучшение и обновление ПО.
Хронология процесса:
- 22 января в 1998 году Netscape объявляет, что он будет выпускать исходный код для Netscape Navigator.
- 3 февраля 1998 года на встрече в Пало-Альто был придуман термин «открытый исходный код», и на следующей неделе Брюс Перенс и Эрик Рэймонд запустили проект «opensource.org».
- 31 марта 1998 года открыт код Netscape Navigator и уже через несколько часов первые улучшения ПО поступили в сеть.
- 7 мая 1998 года корпорация Corel объявляет об экономичном компьютере Netwinder, работающем под управлением GNU/Linux.
- 11 мая 1998 Corel объявляет о своих планах по адаптации WordPerfect и остальной части своего офисного программного обеспечения к GNU/Linux.
- 28 мая 1998 года Sun Microsystems и Adaptec присоединились к Linux International, первым крупным поставщикам оборудования и операционных систем с открытым исходным кодом.
- 13- 17 июля 1998 года, Oracle и Informix сообщает, что подключают свои базы данных для GNU/Linux.
- 10 августа 1998 года Sun Microsystems предлагает Solaris, операционную систему, предназначенную для отдельных пользователей и образовательных или некоммерческих организаций.
- 1 ноября 1998 года опубликованы планы Microsoft против GNU/Linux и других проектов с открытым исходным кодом.
- 16 декабря 1998 IDG объявляет, что доля рынка GNU/Linux увеличилась на 212% в 1998 году.
- 1- 5 в марте в 1999 году первая выставка Linux World Conference Expo.
- Hewlett-Packard, IBM и SAP начинают поддержку коммерческих фирм.
- 15 марта 1999 Apple запускает Darwin по лицензии с открытым исходным кодом.
- 4 июня 1999 Microsoft согласился с тем, что Linux в целом продает больше лицензий, чем Windows 98.
В период между 1998 и 2019 годами популярность GNU/Linux значительно выросла, а также появилось много компаний с OS. Это движение привлекло внимание программной индустрии, привнеся предложения консолидированных компаний-разработчиков, таких, как Sun Microsystems с StarOffice и IBM с OpenAFS.
Термин Open Source
Термин «открытый исходный код» продолжает оставаться двойственным, поскольку в настоящее время он используется программистами, которые не предлагают бесплатное ПО, а исходники программ для их пересмотра или модификации.
Учитывая это, использование термина «Open Source Software» является предпочтительным для обозначения программ, предлагаемых с полной свободой модификации, использования и распространения в соответствии с неявным правилом не изменять указанные свободы в будущем. Компьютерная концепция на английском «Open Source Software» относится к ПО в свободном доступе с разрешениями модификации и улучшения.
«Open Source Software» отвечает философии сообщества, которое стремится к демократизации знаний через совместную работу разработчиков со всего мира. Эта инициатива преследует цели по внедрению инновационных решений, связанных с технологиями, посредством сотрудничества, обмена информацией, гибкости процессов и снижения затрат.
Следует отметить, что, хотя многие программы OS могут быть доступны бесплатно, в качестве врожденной характеристики не обязательно подразумевается, что все они распространяются так. Термин «свобода» делает больше намеков на философию, частью которой является сообщество, и меньше на цену.
Функции свободного ПО
Все больше и больше пользователей и компаний интегрируют ПО OS в свою деятельность, и это то, что многие преимущества делают его очень привлекательным рабочим инструментом.
Свободный термин, или свобода, связан со следующими функциями:
- Использование. Можно использовать программу, независимо от того, была ли она предназначена для конкретных задач нее или нет.
- Исследование. Доступность исходного кода позволяет анализировать его более глубоко, адаптируя к потребностям пользователя и оценивая возможные улучшения, которые необходимо выполнить.
- Распространение. Обычно встречается в местах бесплатного скачивания и разглашается, без ограничений.
- Открыт для улучшений и инноваций. Предоставляя доступ к исходному коду, пользователи и программисты со всего мира могут внести свой вклад в коллективные знания и наблюдения, обсуждения ошибок и улучшения продукта.
В деловом мире наблюдается повышение открытости ПО, так как организации осознали преимущества, которые она имеет, в дополнение к прибыльности.
Для компаний эти выгоды связаны с малыми затратами, гибкостью, свободой, безопасностью, ответственностью и поддержкой коллективного рабочего сообщества. Было показано, что это ПО может быть жизнеспособным в долгосрочной перспективе и постоянно обновляемым.
Различия между бесплатными программами
Многие пользователи слышали о свободном программном обеспечении и ПО с открытым исходным кодом, но не все знают разницу между этими терминами. В компьютерных средах эти понятия присутствуют в повседневной жизни, поскольку они влияют на программы всех электронных устройств, таких как компьютер, планшет или смартфон.
Проприетарное программное обеспечение защищает только интересы компании, которая его продает, и это не может быть изменено внешними людьми для удовлетворения конкретных потребностей. Напротив, обеспечение с открытым исходным кодом доступно каждому пользователю и может быть изменено в соответствии с его же требованиями.
По словам Ричарда Столлмана, основателя Движения за свободное программное обеспечение, «эти свободы имеют жизненно важное значение не только для пользователя, но и для всего общества, поскольку они способствуют солидарности. Его актуальность возрастает, поскольку культура и повседневная деятельность все больше связаны с цифровым миром».
Для учебных организаций наличие свободного программного обеспечения является бесценным преимуществом, поскольку оно позволяет им экономить, на использовании проприетарного ПО. Такие программы жизненно важные для тех, кто хочет научиться программировать, поскольку чтение чужого кода поможет получить новые знания, решению проблем и процессу обучения.
Базовые принципы с открытым исходным кодом
Компании, пользователи и программисты вовлекаются в постоянное изучение работы программы с четкой целью улучшить ее. Таким образом, можно осуществлять эффективный процесс обнаружения ошибок, исправления и внедрения новых функций. Одна из особенностей процесса — отсутствие капиталовложений, так как это не требует затрат средств на покупку лицензий.
Основные принципы платформы:
- Система с открытым исходным кодом снижает барьеры с инновациями, так что любой пользователь может поделиться своей идеей на рынке. Точно так же при использовании этих программ она больше не зависит от работы компании, занимающейся исключительно обслуживанием ПО, и может открыть двери любому человеку, который обладает знаниями и необходимой способностью делать это удаленно.
- У ПО нет ограничений на продажу или распространение продукта, стоимость их значительно ниже, чем продуктов с проприетарными лицензиями, а в большинстве случае является нулевой.
- Исходный код доступен, так можно изменять ПО без каких-либо ограничений, что позволяет создавать скомпилированные дистрибутивы.
- Свобода совершенствования и публикации изменений, когда каждый имеет право изменять исходник, а также публиковать сделанные изменения.
- Использование программы бесплатно для любых целей.
- Каждый желающий может свободно изучать, как она работает и адаптировать ее к потребностям любого пользователя.
Требования к платформе
Для того чтобы понять, имеем ли пользователь дело с программным обеспечением с открытым исходным кодом следует проверить, соответствуете ли ПО следующим требованиям:
- Использование программы для любых целей и без ограничений.
- Возможность изучения, как она работает.
- Свободное распространение программы.
- Свободное изменение ПО.
Модель разработки программного обеспечения OS основана на обмене знаниями. Это традиционная схема научных областей и именно поэтому это была первоначальная модель, на которой был разработан интернет, а также инструменты TCP/IP, Unix, C.
В модели разработки человек или организация координирует большое сообщество независимых разработчиков, распределенных по всей планете. Программное обеспечение можно увидеть, протестировать и изменить даже до того, как выйдет первая полная версия.
По мере продвижения пользователей и разработчиков в различных экономических, социальных и правовых условиях, результат приобретает большую гибкость, адаптивность и универсальность.
Примеры программ
В интернете в открытом доступе сегодня существует множество программ «Open Source Software» с отличной репутацией и характеристиками.
Перечень ПО OS:
- Linux имеет открытый исходный код. Это многозадачная, многопользовательская система, которая обеспечивает командный и графический интерфейс. Кроме того, это самый известный пример открытого кода.
- Apache Openoffice. Это мощный текстовый процессор, вычислений и графики, идеально подходит для сферы образования. Может обогатить как учителей, так и студентов.
- Android. Благодаря тому, что это ПО OS многие разработчики могут использовать его для создания приложений, которые будут использоваться этой системой.
- Firefox. Многие пользователи хорошо знают этот веб-браузер Mozilla, и большая часть его кода представлена большим сообществом добровольцев.
Обеспечение систем безопасности
Многих пользователей беспокоит вопрос, является ли свободное ПО более безопасным, чем проприетарное. Хорошо известно, что пользователи ПО OS, такие, как те, кто обычно работает с компьютерами, управляемыми системами Linux, обычно гордятся безопасностью, которую эти программы обеспечивают по отношению к самым закрытым системам, скажем, Microsoft Windows или Apple Mac.
Однако с этим сегодня эксперты, после многих лет дискуссий, все еще не согласны. Правда состоит в том, что обе стороны имеют свои причины для защиты своих аргументов. Пользователи приложений и систем OS защищают модель, поскольку исходный код доступен для всех, гораздо проще обнаружить возможные дыры в безопасности и уязвимости.
С другой стороны, многие считают, что закрытые системы более безопасны из-за того, что, ограниченное количество экспертов имеют доступ к исходному коду таких приложений, поэтому утечки или вставки вредоносного программного обеспечения в этом типе усложняются.
Безопасность имеет первостепенное значение в обоих случаях и в любом случае доказано то, что безопасность не гарантируется в любой программе. Но также верно и то, что разработчики стремятся к тому, чтобы риски нападения были максимально уменьшены.
Например, системы Linux долгое время считались защищенной операционной системой, в значительной степени благодаря преимуществам, предлагаемым ее конструкцией. Поскольку его код открыт, есть много людей, которые внедряют улучшения и приносят пользу остальным пользователям Linux.
В этом — отличие от предлагаемой Windows или MacOS, где эти исправления, как правило, ограничиваются обнаруженными Microsoft и Apple.
Именно поэтому Windows доминирует в среде настольных компьютеров, Linux широко используется на серверах и других элементах, имеющих большое значение для обеспечения фундаментальной безопасности.
Преимущества Open Source
Программное обеспечение с OS (Open Source), отличается от ПО с закрытым исходным кодом особой лицензией. Для гарантии прав пользователей ПО OS, все копии должны распространяться вместе с уведомлением об авторских правах, копией лицензии и исходником.
Авторское право указывает на владельца ПО, поэтому оно не может быть присвоено третьей стороной, в то время как лицензия гарантирует ее статус OS, а код является основой для изучения и модификации ПО.
Преимущества ПО:
- Пользователь не платит за лицензию на использование программы.
- Поставщик взимает плату только за услуги, которые он предоставляет.
- Независимость от провайдера и улучшение услуг.
- Клиент не зависит от провайдера, поскольку, имея исходный код, любой провайдер может продолжить работу с того места, где закончился предыдущий.
- Поскольку поставщик платит только за свои услуги, а клиент не имеет связей, первый концентрирует свои усилия для обеспечения хорошего обслуживания клиентов.
- Со всем доступным кодом любая новая разработка может использовать данные и процессы клиента, интегрируя различные программы.
- Созданные данные всегда будут доступны, не заставляя клиента вкладывать средства в лицензию.
- Пользователь не попадает под санкции за использование программы.
- Имеет периодические обновления с высокой частотой выпуска в сеть.
- Продукт 100% без вирусов.
- Имеет большое сообщество поддержки.
- Технологическая независимость.
- Гибкие компьютерные решения.
- Экономичный вариант, с низкой или нулевой стоимостью продуктов.
- Свободное использование и распространение.
- Имеет стандартные форматы, которые обеспечивают более высокую совместимость между системами.
Бизнес с открытым исходным кодом
Компании, которые посвящают себя OS, применяют тарификацию не за лицензии на программное обеспечение, а за услуги, которые они предоставляют своим клиентам. В частности, они концентрируют свои доходы на видах деятельности, таких, как обучение, консалтинг, консультирование, сертификация и индивидуальные разработки.
Таким образом, клиенты не платят за возможность использования программой, но инвестируют в наличие поставщика услуг, оптимизируя свои инвестиции, и остаются независимыми от поставщика. С другой стороны, одна из услуг, которую может предоставить провайдер, заключается в разработке функциональности, которой нет в приложения с открытым исходным кодом.
Фактически, с помощью закрытого кода, посредством продажи лицензий, клиенты финансируют дальнейшую разработку системы и, как правило, продолжают платить за ее использование, когда разработка уже полностью профинансирована.
В OS клиент финансирует, если он того желает, ту функциональность, которая ему нужна. Таким образом, это также способствует развитию системы, принося пользу другим фирмам в той же степени, в которой это помогло развитию, финансируемому другими компаниями.
У программного обеспечения всегда есть владелец. Это указывается в примечании об авторском праве. Вот почему так важно, чтобы каждая копия распространяла указанную заметку.
Перспективы развития
Открытый код — это концепция, которая изменила мир. Она относится к тому, что «может быть изменено и передано, потому что согласно Open Source, его дизайн доступен для всей общественности». Большинство используют ПО OS не потому, что оно бесплатное, а потому, что оно безопасно и, как правило, является лучшим из доступных на рынке, имея поддержку сообщества.
Одна из последних новостей об открытых источниках относится к системе искусственного интеллекта Google. Поисковый титан выпустил внутреннее ПО в этой области. Он называется TensorFlow, и его обучающие библиотеки были переданы сообществу для ускорения процесса разработки.
Для общественности были открыты не только библиотеки кода, но также учебные пособия и примеры, которые работают под лицензией Apache 2.0, так что любое учреждение имеет возможность воспользоваться предложением.
Некоторые отмечают, что IBM продвигает использование Linux в компаниях, чтобы впоследствии они были привязаны к своим приложениям. Вот почему важна не система с открытым исходным кодом, подобная Linux, а использование лицензий.
Будущее этой системы очень многообещающе, эксперты утверждают, что к 2020 году компьютерное оборудование получит более 80 % своих компонентов через добровольные сообщества с Open Source.
Исходник — это… Что такое Исходник?
Исходный код, написанный на JavaScript
Исхо́дный код (также исхо́дный текст) — текст компьютерной программы на каком-либо языке программирования. В обобщённом смысле — любые входные данные для транслятора.
Исходный код либо транслируется в исполняемый код при помощи компилятора, либо исполняется непосредственно по тексту при помощи интерпретатора.
Назначение
Исходный код либо используется для получения объектного кода, либо выполняется интерпретатором. Изменения никогда не выполняются над объектным кодом, только над исходным, с последующим повторным преобразованием в объектный.
Другое важное назначение исходного кода — в качестве описания программы. По тексту программы можно восстановить логику её поведения. Для облегчения понимания исходного кода используются комментарии. Существуют также инструментальные средства, позволяющие автоматически получать документацию по исходному коду — т. н. генераторы документации.
Кроме того, исходный код имеет много других применений. Он может использоваться как инструмент обучения; начинающим программистам бывает полезно исследовать существующий исходный код для изучения техники и методологии программирования. Он также используется как инструмент общения между опытными программистами, благодаря своей (идеально) лаконичной и недвусмысленной природе. Совместное использование кода разработчиками часто упоминается как фактор, способствующий улучшению опыта программистов.
Программисты часто переносят исходный код из одного проекта в другой, что носит название повторного использования кода (Software reusability).
Исходный код — важнейший компонент для процесса портирования программного обеспечения на другие платформы. Без исходного кода какой-либо части ПО, портирование либо слишком сложно, либо вообще невозможно.
Организация
Исходный код некоторой части ПО (модуля, компонента) может состоять из одного или нескольких файлов. Код программы не обязательно пишется только на одном языке программирования. Например, часто программы, написанные на языке Си, с целью оптимизации, содержат вставки кода на языке ассемблера. Также возможны ситуации, когда некоторые компоненты или части программы пишутся на различных языках, с последующей сборкой в единый исполняемый модуль при помощи технологии известной как компоновка библиотек (library linking).
Сложное программное обеспечение при сборке требует использования десятков, или даже сотен файлов с исходным кодом. В таких случаях для упрощения сборки обычно используются файлы проектов, содержащие описание зависимостей между файлами с исходным кодом, и описывающие процесс сборки. Эти файлы так же могут содержать и другие параметры компилятора и среды проектирования. Для разных сред проектирования могут применяться разные файлы проекта, причем в некоторых средах эти файлы могут быть в текстовом формате, пригодном для непосредственного редактирования программистом с помощью универсальных текстовых редакторов, в других средах поддерживаются специальные форматы, а создание и изменения файлов производится с помощью специальных инструментальных программ. Файлы проектов обычно включают в понятие «исходный код». В подавляющем большинстве современных языковых сред обязательно используются файлы проектов вне зависимости от сложности прочего исходного кода, входящего в данный проект. Часто под исходным кодом подразумевают и файлы ресурсов, содержащие различные данные, например, графические изображения, нужные для сборки программы.
Для облегчения работы с исходным кодом, для совместной работы над кодом командой программистов, используются системы управления версиями.
Качество
В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то, как написан код, может сильно влиять на процесс сопровождения ПО. О качестве исходного кода можно судить по следующим параметрам:
- читаемость кода (в том числе наличие или отсутствие комментариев к коду;
- лёгкость в поддержке, тестировании, отладке и устранении ошибок, модификации и портировании;
- низкая сложность;
- низкое использование ресурсов — памяти, процессора, дискового пространства;
- отсутствие замечаний, выводимых компилятором;
- отсутствие «мусора» — неиспользуемых переменных, недостижимых блоков кода, ненужных устаревших комментариев и т. д.
Неисполняемый исходный код
Копилефтные лицензии для свободного ПО требуют распространения исходного кода. Эти лицензии часто используются также для работ, не являющихся программами — например, документации, изображений, файлов данных для компьютерных игр.
В таких случаях исходным кодом считается форма данной работы, предпочтительная для её редактирования. В лицензиях, предназначенных не только для ПО, она также может называться версией в «прозрачном формате». Это может быть, например:
- для файла, сжатого с потерей данных — версия без потерь;
- для рендера векторного изображения или трёхмерной модели — соответственно, векторная версия и модель;
- для изображения текста — такой же текст в текстовом формате;
- для музыки — файл во внутреннем формате музыкального редактора;
- и наконец, сам файл, если он удовлетворяет указанным условиям, либо если более удобной версии просто не существовало.
См. также
Ссылки
Wikimedia Foundation.
2010.
Объяснение исходного кода: Определение и примеры
Компьютеры — независимо от того, домашний ли это компьютер, современный смартфон или научный компьютер — работают в двоичной системе : вкл / выкл, загружен / не загружен, 1/0. Последовательность битов указывает компьютеру, что он должен делать. Хотя команды создавались таким образом на заре компьютерных технологий, мы давно перешли на написание приложений на языке программирования, понятном для человека. Поначалу это может показаться странным, поскольку исходный код может показаться непрофессионалам запутанной тарабарщиной.
В контексте «человекочитаемый» понимается как аналог термина « машиночитаемый ». В то время как компьютеры работают только с числовыми значениями, люди общаются с помощью слов. Итак, как и в случае с иностранным языком, нужно выучить хотя бы один из различных языков программирования, прежде чем научиться программировать и т. Д.
Различные языки программирования
Существуют сотни различных языков программирования. Невозможно с уверенностью сказать, что лучше или хуже, поскольку это зависит от контекста проекта и приложения, для которого используется исходный код.Некоторые из самых популярных языков программирования :
- BASIC
- Java
- C
- C ++
- Pascal
- Python
- PHP
- JavaScript
Однако, чтобы компьютер понимал эти языки, они сначала нужно перевести в машинный код.
Компилятор и интерпретатор
Чтобы компьютер мог дополнительно обрабатывать исходный код, написанный программистом, между ними должен быть перевод — это происходит в форме дополнительной программы.Это вспомогательное приложение может иметь форму компилятора или интерпретатора:
- Компилятор: Этот тип приложения переводит (компилирует) исходный код в код, который процесс понимает и может выполнять. Этот машинный код сохраняется в виде исполняемого файла.
- Интерпретатор: Интерпретатор переводит строку исходного кода за строку и выполняет ее напрямую. Процесс трансляции намного быстрее, чем компилятор, но выполнение медленнее и требует большого количества памяти.
Вы также не можете выбирать: каждый язык программирования определяет, будет ли использоваться в сочетании с ним компилятор или интерпретатор. В настоящее время все чаще используется промежуточное решение — Своевременная компиляция (JIT). Этот тип перевода пытается объединить преимущества обоих вариантов (быстрый анализ и быстрое выполнение) и используется в браузерах, например, для более эффективной обработки JavaScript, PHP или Java.
Языки разметки
Основа веб-сайта также называется исходным кодом.Однако это не относится к языку программирования, а скорее к языку разметки HTML. Язык разметки определяет структуру содержимого. Например, использование HTML позволяет определять заголовки, абзацы или выделение. Документ HTML сам по себе не является программой, но может содержать ее, например, в форме кода JavaScript. Аналогичный принцип применяется к другим языкам разметки, таким как XML.
.
Что такое исходный код? (с иллюстрациями)
Исходный код относится к языку программирования, который используется для написания программы. Существуют сотни, если не тысячи языков программирования, включая C ++, Java и Unix. Часто люди ссылаются на исходный код веб-сайтов, что означает программирование на HTML и, возможно, на Java.
Веб-сайты создаются с использованием исходного кода.
В большинстве Интернет-браузеров есть возможность просмотра Интернет-страницы в формате исходного кода. На самом деле это очень полезно для людей, которые учатся программировать на HTML, поскольку они могут использовать его, чтобы выяснить, как создать таблицу, создать список или создать гиперссылку. Люди часто используют программирование с веб-сайтов, которые им нравятся, для достижения внешнего вида страницы, которую они создают.
При просмотре исходного кода можно заметить, что все гиперссылки окружены конкретными инструкциями.
Хотя использование исходного кода для создания различных вещей, таких как таблицы, столбцы или разделения на веб-сайте, допустимо, важно не копировать графику, поступающую с других веб-сайтов, за исключением случаев, когда они могут использоваться бесплатно. Это подпадало бы под заголовок интернет-плагиата и могло бы привести к проблемам для нового веб-сайта.
В HTML исходный код можно отличить от текста и изображений, поскольку инструкции кода почти всегда будут начинаться в формате <>. Если кто-то из просматривает исходный код этой страницы, можно заметить, что выделенное жирным шрифтом слово «views» окружено кодом.Это связано с тем, что HTML требует, чтобы эта информация была выделена жирным шрифтом.
При просмотре исходного кода можно заметить, что все гиперссылки окружены конкретными инструкциями. Каждый абзац начинается и заканчивается на
, что означает «абзац.»Чтобы выделить курсивом слово, слово помещается между и .
Часто «/» означает завершение определенного набора инструкций.
Обратите внимание, что многие программы обработки текстов могут не подходить для написания HTML. Многие не узнают некоторые используемые символы, например кавычки.Часто можно получить бесплатные программы, которые позволяют пользователю писать исходный код, который легко загрузить на сайт в Интернете. Кроме того, многие программы для программирования веб-сайтов доступны для покупки и могут избавить от необходимости писать код.
.
Что такое программирование с открытым исходным кодом?
На простейшем уровне программирование с открытым исходным кодом — это просто написание кода, который другие люди могут свободно использовать и изменять. Но вы слышали старый каштан об игре в го, верно? «Так просто, что выучить правила занимает всего минуту, но так сложно, что на освоение требуется целая жизнь». Написание открытого исходного кода — очень похожий опыт. Легко добавить несколько строк кода на GitHub, Bitbucket, SourceForge или в свой собственный блог или сайт. Но чтобы сделать это правильно требует некоторых личных вложений, усилий и предусмотрительности.
Чем отличается программирование с открытым исходным кодом
Давайте проясним кое-что заранее: просто нахождение на GitHub в публичном репозитории не делает ваш код открытым. Авторское право почти во всех странах применяется автоматически, когда произведение фиксируется на носителе, без каких-либо действий со стороны автора. Для любого кода, который не был лицензирован автором, только автор может осуществлять права, связанные с владением авторскими правами. Нелицензионный код — независимо от того, насколько он общедоступен, — это бомба замедленного действия для любого, кто неразумен, чтобы использовать его.
Автор из лучших побуждений может подумать: «Что ж, очевидно, что это можно использовать бесплатно», и не планирует когда-либо подавать в суд на кого-либо, но это не означает, что использование кода безопасно. Независимо от того, что, по вашему мнению, кто-то сделает, этот автор имеет право подавать в суд на любого, кто использует, изменяет или внедряет этот код где-либо еще без явно предоставленной лицензии.
Очевидно, что вы не должны публиковать свой собственный код без лицензии и ожидать, что другие будут его использовать или вносить свой вклад. Я также рекомендовал бы вам избегать использования (или даже глядя на ) самостоятельно.Если вы создадите функцию или рутину, очень похожую на часть нелицензированной работы, которую вы проверяли в какой-то момент в прошлом, вы можете открыть для себя или своего работодателя судебные иски о нарушении.
Допустим, Джилл Шмилл пишет AwesomeLib и размещает его на GitHub без лицензии. Даже если Джилл ни на кого не подаст в суд, она может в конечном итоге продать все права на AwesomeLib компании EvilCorp, которая это сделает. (Думайте об этом как о скрытой уязвимости, ожидающей использования.)
Нелицензионный код небезопасный код, точка.
Выбор подходящей лицензии
Хорошо, вы решили, что хотите написать новую программу, и хотите, чтобы люди имели права с открытым исходным кодом для ее использования. Следующий шаг — выяснить, какая лицензия лучше всего соответствует вашим потребностям. Вы можете начать работу с сайта choosealicense.com, курируемого GitHub, и это именно то, что написано на банке. Сайт немного похож на простую викторину, и большинству людей достаточно одного-двух кликов, чтобы найти подходящую лицензию для своего проекта.
Нелицензионный код небезопасный код, точка.
Предостережение: не проявляйте чрезмерной фантазии или самоуважения. Если вы выберете широко используемую и хорошо известную лицензию, такую как лицензия Apache или GPLv3, людям будет легко понять, каковы их права и каковы ваши права, без необходимости в команде юристов для поиска подводных камней и проблем. Однако чем дальше вы отклоняетесь от проторенного пути, тем больше проблем вы открываете себе и другим.
Самое главное, не пишите свою лицензию! Создание собственной лицензии — ненужный источник путаницы для всех.Не делай этого. Если вам абсолютно необходимо , у должны быть свои особые условия, которые вы не можете найти ни в одной из существующих лицензий, напишите их как дополнение к хорошо понятной лицензии … и четко разделите основную лицензию и приложение, чтобы все участники знает, с какими частями им нужно быть особенно осторожными.
Я знаю, что некоторые люди упрямы и говорят: «Меня не волнуют лицензии и я не хочу о них думать; это общественное достояние». Проблема в том, что «общественное достояние» не является общепринятым термином в юридическом смысле.Это означает разные вещи от одной страны к другой, с разными правами и условиями. В некоторых странах вы даже не можете разместить ваших собственных работ в общественном достоянии, потому что государство оставляет за собой контроль. К счастью, безлицензия вас покрывает. В безлицензии используется как можно меньше слов, чтобы четко описать, что «просто сделайте это общественным достоянием»! означает ясным и универсальным способом.
Как подать заявку на лицензию
После того, как вы выбрали лицензию, вам необходимо четко и однозначно применить ее.Если вы публикуете где-то вроде GitHub, GitLab или BitBucket, у вас будет то, что составляет структуру папок для файлов вашего проекта. В корневой папке вашего проекта должен быть текстовый файл LICENSE.txt, содержащий текст выбранной вами лицензии.
Помещение LICENSE.txt в корневую папку вашего проекта — не совсем последний шаг — вам также понадобится блок комментариев, объявляющий лицензию, в заголовке каждого важного файла в вашем проекте. Это один из тех случаев, когда полезно использовать хорошо зарекомендовавшую себя лицензию.Комментарий, в котором говорится: # эта работа (c) 2018 myname, под лицензией GPLv3 - см. Https://www.gnu.org/licenses/gpl-3.0.en.html
намного, намного сильнее и больше полезнее, чем блок комментариев, который просто делает загадочную ссылку на полностью настраиваемую лицензию.
Если вы самостоятельно публикуете свой код на своем собственном сайте, вы захотите выполнить в основном тот же процесс. Создайте LICENSE.txt, поместите в него полную копию вашей лицензии и сделайте ссылку на вашу лицензию в сокращенном блоке комментариев в начале каждого важного файла.
Открытый исходный код отличается
Большая разница между закрытым исходным кодом и открытым исходным кодом состоит в том, что открытый исходный код предназначен для того, чтобы его видели. Как системный администратор с возрастом 40, я написал много кода. По большей части он был проприетарным — я начал писать код для себя, чтобы облегчить свою работу и избавить себя от зуда и / или своей компании. Цель такого кода проста: все, что он должен делать, — это работать в точном соответствии с тем, как задумал его создатель.Пока то, что вы ожидали, когда вы вызываете программу, происходит чаще, чем нет, это успех.
Большая разница между закрытым исходным кодом и открытым исходным кодом состоит в том, что открытый исходный код предназначен для того, чтобы его видели.
Открытый исходный код сильно отличается. Когда вы пишете открытый исходный код, вы знаете, что он не только должен работать, он должен работать в ситуациях, о которых вы даже не мечтали и, возможно, не планировали. Может быть, у вас был только один очень узкий вариант использования вашего кода, и вы каждый раз вызывали его точно так же.Однако люди, с которыми вы этим поделитесь … они будут раскрывать варианты использования, смеси аргументов и просто странные мыслительные процессы, которые вы никогда не рассматривали. Ваш код не обязательно должен удовлетворять все из них, но он должен, по крайней мере, изящно обрабатывать их запросы и отказываться предсказуемым и логичным образом, когда он не может их обслуживать. (Например: «Деление на ноль в строке 583» не является приемлемым ответом на отказ предоставить аргумент командной строки.)
Ваш открытый исходный код также не должен вас чрезмерно смущать.Это означает, что после того, как вы изо всех сил пытаетесь получить блокирующую функцию или подпрограмму, чтобы, наконец, произвести ожидаемый результат, вы не просто вздыхаете и переходите к следующему — вы очищаете его , потому что вы не хотите остальной мир видит ваш очевидный карточный домик. Это означает, что вы перестаете засорять свой код такими переменными, как $ variable
и $ lol
, и заменяете их значимыми именами, такими как $ iterationcounter
или $ modelname
. А это означает профессиональное комментирование вещей (даже если они очевидны для вас в самый разгар момента), поскольку вы ожидаете, что другие люди смогут следить за вашим кодом позже.
Поначалу это может быть немного болезненно и неприятно — это работа, которую вы не привыкли делать. Тем не менее, это делает вас лучшим программистом, а также улучшает ваш код. Не менее важно: даже если вы единственный участник своего проекта, это экономит вам работу в долгосрочной перспективе. Поверьте мне, через год, когда вам придется пересмотреть свое приложение, вы будете очень рады, что $ modelname
, которое анализируется несколькими потрясающе непрозрачными регулярными выражениями перед тем, как попасть в какой-то другой массив где-то, не назвал $ lol
больше.
Вы пишете не только для себя
Настоящее сердце открытого исходного кода — это вовсе не код: это сообщество. Проекты с сильным сообществом выживают дольше и принимаются гораздо чаще, чем проекты с сильным сообществом. Имея это в виду, неплохо не только принять, но и активно планировать сообщество, которое вы надеетесь построить вокруг своего проекта.
Бэтмен может провести сотни часов в уединении, яростно создавая проект в секрете, но вам это не обязательно.Зайдите в Twitter, Reddit или в списки рассылки, относящиеся к сфере вашего проекта, и объявите, что вы думаете о создании нового проекта. Обсудите свои цели в области дизайна и то, как вы планируете их достичь. Запрашивайте ввод, слушайте похожие (но, возможно, не идентичные) варианты использования и встраивайте эту информацию в свой процесс по мере написания кода. Вам не обязательно принимать все предложения или запросы, но если вы знаете о них заранее, вы можете избежать ошибок, которые потребуют серьезного капитального ремонта позже.
Этот процесс не заканчивается первоначальным объявлением.Если вы хотите, чтобы ваш проект был принят и использовался другими людьми, вам необходимо разработать и его таким же образом. Это не препятствие для входа; это просто шаблон для использования. Так что не стоит просто сидеть на корточках на своей машине с текстовым редактором — начните настоящий общедоступный проект на одном из крупных заводов и относитесь к нему так, как если бы сообщество уже было там и наблюдало.
Способы построить настоящий публичный проект
Вы можете бесплатно открывать учетные записи для проектов с открытым исходным кодом на GitHub, GitLab или BitBucket.После того, как вы открыли свою учетную запись и создали репозиторий для своего проекта, используйте его — создайте README, назначьте ЛИЦЕНЗИЮ и постепенно продвигайте код по мере его разработки. Это сформирует привычки, которые вам понадобятся для работы с настоящей командой позже, когда вы привыкнете писать свой код в виде измеримых, документированных коммитов с четкими целями. Чем дальше вы пойдете, тем больше вероятность, что вы начнете вызывать интерес — обычно в первую очередь со стороны конечных пользователей.
Пользователи начнут открывать тикеты, что будет вас и радовать, и раздражать.Вы должны серьезно отнестись к этим билетам и вежливо относиться к их владельцам. Некоторые из них будут основаны на огромном непонимании того, что представляет собой ваш проект, а что входит или не входит в его объем — относитесь к ним вежливо и профессионально. В некоторых случаях вы поможете этим пользователям разобраться в том, что вы делаете. В других случаях, пусть и неуверенно, они помогут вам осознать более крупную — или немного по-другому центрированную — область, которую вы, вероятно, изначально должны были запланировать.
Если вы хорошо поработаете с пользователями, рано или поздно появятся другие разработчики и проявят интерес.Это также будет вас радовать и раздражать. Сначала вы, вероятно, получите просто тривиальные исправления. В конце концов, вы начнете получать запросы на вытягивание, которые либо жестко запрограммируют действительно, действительно нишевые специальные варианты использования в ваш проект (что было бы кошмаром для поддержки), либо значительно изменит объем или даже фокус вашего проекта. Вам нужно будет узнать, как распознать, какие вклады есть, и решить, какие из них вы хотите принять, а какие вам следует вежливо отклонить.
Зачем все это?
Если все это звучит как много работы, есть веская причина: это так.Но это награды за работы, на которых вы можете заработать разными способами. Работа с открытым исходным кодом оттачивает ваши навыки такими способами, которые вы никогда не считали скучными — от написания более чистого, более удобного в обслуживании кода до обучения тому, как хорошо общаться и работать в команде. Это также лучший конструктор резюме для работающего или начинающего профессионального разработчика; потенциальные работодатели могут посетить ваш репозиторий и посмотреть, на что вы способны, а разработчики, с которыми вы работали над проектами сообщества, могут захотеть пригласить вас на оплату концертов.
В конечном счете, работа над проектами с открытым исходным кодом — вашими или чужими — означает личностный рост, потому что вы работаете над чем-то большим, чем вы сами.
.
Что такое программное обеспечение с открытым исходным кодом?
Термин «открытый исходный код» относится к тому, что люди могут изменять и публиковать, потому что его дизайн является общедоступным.
Термин возник в контексте разработки программного обеспечения для обозначения особого подхода к созданию компьютерных программ. Однако сегодня «открытый исходный код» означает более широкий набор ценностей — то, что мы называем «подходом с открытым исходным кодом». Проекты, продукты или инициативы с открытым исходным кодом охватывают и приветствуют принципы открытого обмена, совместного участия, быстрого прототипирования, прозрачности, меритократии и развития, ориентированного на сообщества.
Что такое программное обеспечение с открытым исходным кодом?
Программное обеспечение с открытым исходным кодом — это программное обеспечение с исходным кодом, которое каждый может проверять, изменять и улучшать.
«Исходный код» — это часть программного обеспечения, которую большинство пользователей компьютеров никогда не видит; это код, которым компьютерные программисты могут манипулировать, чтобы изменить то, как работает часть программного обеспечения — «программа» или «приложение». Программисты, у которых есть доступ к исходному коду компьютерной программы, могут улучшить эту программу, добавив в нее функции или исправив части, которые не всегда работают правильно.
В чем разница между программным обеспечением с открытым исходным кодом и другими типами программного обеспечения?
Некоторое программное обеспечение имеет исходный код, который может изменять только человек, группа или организация, создавшие его и сохраняющие исключительный контроль над ним. Люди называют такие программы «проприетарными» или «с закрытым исходным кодом».
Только оригинальные авторы проприетарного программного обеспечения могут законно копировать, проверять и изменять это программное обеспечение. А чтобы использовать проприетарное программное обеспечение, пользователи компьютеров должны согласиться (обычно подписывая лицензию, отображаемую при первом запуске этого программного обеспечения), что они не будут делать ничего с программным обеспечением, которое авторы программного обеспечения не разрешили прямо.Microsoft Office и Adobe Photoshop являются примерами проприетарного программного обеспечения.
Программное обеспечение с открытым исходным кодом отличается. Его авторы делают исходный код доступным для других, которые хотели бы просмотреть этот код, скопировать его, изучить его, изменить или поделиться им. LibreOffice и программа обработки изображений GNU являются примерами программного обеспечения с открытым исходным кодом.
Как и в случае с проприетарным программным обеспечением, пользователи должны принять условия лицензии, когда они используют программное обеспечение с открытым исходным кодом, но юридические условия лицензий с открытым исходным кодом сильно отличаются от таковых для закрытых лицензий.
Лицензии с открытым исходным кодом влияют на то, как люди могут использовать, изучать, изменять и распространять программное обеспечение. Как правило, лицензии с открытым исходным кодом предоставляют пользователям компьютеров разрешение на использование программного обеспечения с открытым исходным кодом для любых целей. Некоторые лицензии с открытым исходным кодом — то, что некоторые люди называют лицензиями с «авторским левом» — предусматривают, что любой, кто выпускает модифицированную программу с открытым исходным кодом, должен также выпустить исходный код этой программы вместе с ней. Более того, некоторые лицензии с открытым исходным кодом предусматривают, что любой, кто изменяет программу и делится ею с другими, должен также делиться исходным кодом этой программы без взимания за нее лицензионного сбора.
По замыслу, лицензии на программное обеспечение с открытым исходным кодом способствуют сотрудничеству и совместному использованию, поскольку они позволяют другим людям вносить изменения в исходный код и включать эти изменения в свои собственные проекты. Они поощряют компьютерных программистов открывать, просматривать и изменять программное обеспечение с открытым исходным кодом в любое время, если они позволяют другим делать то же самое, когда они делятся своей работой.
Программное обеспечение с открытым исходным кодом важно только для компьютерных программистов?
Нет. Технология с открытым исходным кодом и мышление с открытым исходным кодом приносят пользу как программистам, так и непрограммистам.
Поскольку первые изобретатели строили большую часть Интернета на основе технологий с открытым исходным кодом, таких как операционная система Linux и приложение веб-сервера Apache, любой, кто пользуется Интернетом, сегодня извлекает выгоду из программного обеспечения с открытым исходным кодом.
Каждый раз, когда пользователи компьютеров просматривают веб-страницы, проверяют электронную почту, общаются с друзьями, транслируют музыку онлайн или играют в многопользовательские видеоигры, их компьютеры, мобильные телефоны или игровые консоли подключаются к глобальной сети компьютеров, используя программное обеспечение с открытым исходным кодом для маршрутизации и передачи свои данные на «локальные» устройства, которые находятся перед ними.Компьютеры, которые выполняют всю эту важную работу, обычно расположены в отдаленных местах, которые пользователи фактически не видят или не имеют физического доступа — вот почему некоторые люди называют эти компьютеры «удаленными компьютерами».
Люди все больше и больше полагаются на удаленные компьютеры при выполнении задач, которые в противном случае они могли бы выполнять на своих локальных устройствах. Например, они могут использовать программное обеспечение для онлайн-обработки текста, управления электронной почтой и редактирования изображений, которое они не устанавливают и не запускают на своих персональных компьютерах.Вместо этого они просто получают доступ к этим программам на удаленных компьютерах с помощью веб-браузера или приложения для мобильного телефона. Когда они это делают, они занимаются «удаленными вычислениями».
Некоторые люди называют удаленные вычисления «облачными вычислениями», потому что они включают в себя действия (такие как хранение файлов, обмен фотографиями или просмотр видео), которые включают не только локальные устройства, но и глобальную сеть удаленных компьютеров, которые формируют вокруг них «атмосферу».
Облачные вычисления становятся все более важным аспектом повседневной жизни устройств, подключенных к Интернету.Некоторые приложения для облачных вычислений, например Google Apps, являются проприетарными. Другие, такие как ownCloud и Nextcloud, имеют открытый исходный код.
Приложения облачных вычислений работают «поверх» дополнительного программного обеспечения, которое помогает им работать бесперебойно и эффективно, поэтому люди часто говорят, что программное обеспечение, выполняющееся «под» приложениями облачных вычислений, действует как «платформа» для этих приложений. Платформы облачных вычислений могут быть с открытым или закрытым кодом. OpenStack — это пример платформы облачных вычислений с открытым исходным кодом.
Почему люди предпочитают использовать программное обеспечение с открытым исходным кодом?
Люди предпочитают программное обеспечение с открытым исходным кодом проприетарному программному обеспечению по ряду причин, в том числе:
Контроль. Многие люди предпочитают программное обеспечение с открытым исходным кодом, потому что у них есть больший контроль над этим видом программного обеспечения. Они могут изучить код, чтобы убедиться, что он не делает того, чего они не хотят, и могут изменить его части, которые им не нравятся. Пользователи, не являющиеся программистами, также извлекают выгоду из программного обеспечения с открытым исходным кодом, потому что они могут использовать это программное обеспечение для любых целей, которые пожелают, а не только так, как кто-то думает, что они должны.
Обучение. Другим людям нравится программное обеспечение с открытым исходным кодом, потому что оно помогает им стать лучшими программистами. Поскольку открытый исходный код общедоступен, студенты могут легко изучать его по мере того, как они учатся создавать лучшее программное обеспечение. Студенты также могут делиться своей работой с другими, предлагая комментарии и критику по мере развития своих навыков. Когда люди обнаруживают ошибки в исходном коде программ, они могут поделиться этими ошибками с другими, чтобы помочь им самим избежать тех же ошибок.
Безопасность. Некоторые люди предпочитают программное обеспечение с открытым исходным кодом, потому что они считают его более безопасным и стабильным, чем проприетарное программное обеспечение. Поскольку любой может просматривать и изменять программное обеспечение с открытым исходным кодом, кто-то может обнаружить и исправить ошибки или упущения, которые могли упустить оригинальные авторы программы. И поскольку так много программистов могут работать над частью программного обеспечения с открытым исходным кодом, не спрашивая разрешения у авторов, они могут исправлять, обновлять и обновлять программное обеспечение с открытым исходным кодом быстрее, чем проприетарное программное обеспечение.
Устойчивость. Многие пользователи предпочитают программное обеспечение с открытым исходным кодом проприетарному программному обеспечению для важных, долгосрочных проектов. Поскольку программисты публично распространяют исходный код программного обеспечения с открытым исходным кодом, пользователи, полагающиеся на это программное обеспечение для критических задач, могут быть уверены, что их инструменты не исчезнут или не выйдут из строя, если их первоначальные создатели перестанут работать над ними. Кроме того, программное обеспечение с открытым исходным кодом имеет тенденцию как включать, так и работать в соответствии с открытыми стандартами.
Сообщество. Программное обеспечение с открытым исходным кодом часто вдохновляет сообщество пользователей и разработчиков на создание вокруг себя. Это не уникально для открытого исходного кода; многие популярные приложения являются предметом встреч и групп пользователей. Но в случае с открытым исходным кодом сообщество — это не просто фанатская база, которая покупается (эмоционально или финансово) на элитную группу пользователей; это люди, которые производят, тестируют, используют, продвигают и в конечном итоге влияют на программное обеспечение, которое им нравится.
Разве «открытый исходный код» не означает, что что-то бесплатное?
№Это распространенное заблуждение относительно того, что подразумевается под «открытым исходным кодом», и значение этой концепции не только экономическое.
Программисты с открытым исходным кодом могут брать деньги за программное обеспечение с открытым исходным кодом, которое они создают или в которое они вносят. Но в некоторых случаях, поскольку лицензия с открытым исходным кодом может потребовать от них выпуска своего исходного кода при продаже программного обеспечения другим, некоторые программисты обнаруживают, что взимание с пользователей денег за программные услуги и поддержку (а не за само программное обеспечение) является более прибыльным. .Таким образом, их программное обеспечение остается бесплатным, и они зарабатывают деньги, помогая другим устанавливать, использовать и устранять неполадки.
Хотя некоторое программное обеспечение с открытым исходным кодом может быть бесплатным, навыки программирования и устранения неполадок программного обеспечения с открытым исходным кодом могут быть весьма ценными. Многие работодатели специально стремятся нанять программистов с опытом работы над ПО с открытым исходным кодом.
Что такое открытый исходный код «помимо программного обеспечения»?
В Opensource.com нам нравится говорить, что нас интересуют способы применения ценностей и принципов открытого исходного кода в мире помимо программного обеспечения .Нам нравится думать об открытом исходном коде не только как о способе разработки и лицензирования компьютерного программного обеспечения, но и как об отношении .
Подходить ко всем аспектам жизни «путем открытого исходного кода» означает выражать готовность делиться, сотрудничать с другими прозрачными способами (чтобы другие тоже могли смотреть и присоединяться), принимать неудачи как средство улучшения и ожидать — даже поощрение — все остальные делают то же самое.
Это также означает обязательство играть активную роль в улучшении мира, что возможно только тогда, когда каждый имеет доступ к тому, как устроен этот мир.
Мир полон «исходного кода» — чертежей, рецептов, правил — которые направляют и формируют то, как мы думаем и действуем в нем. Мы считаем, что этот базовый код (независимо от его формы) должен быть открытым, доступным и совместно используемым — поэтому многие люди могут приложить руку к его изменению к лучшему.
Здесь мы рассказываем истории о влиянии ценностей открытого исходного кода на все области жизни — науку, образование, правительство, производство, здравоохранение, право и организационную динамику. Мы — сообщество, стремящееся рассказать другим, что путь с открытым исходным кодом — это лучший способ для , потому что любовь к открытому исходному тексту ничем не отличается: лучше, когда им делятся.
Где я могу узнать больше об открытом исходном коде?
Мы собрали несколько ресурсов, которые помогут вам узнать больше об открытом исходном коде. Мы рекомендуем вам прочитать наши часто задаваемые вопросы с открытым исходным кодом, практические руководства и учебные пособия, чтобы начать работу.
.