Почему программисты используют Linux
Обновлено: 21.11.2024
Linux был разработан и публично выпущен Линусом Торвальдсом в сентябре 1991 года. Linux — это бесплатная операционная система с открытым исходным кодом, в отличие от ОС Windows или macOS. Linux предлагает несколько настольных и серверных дистрибутивов. Обычно ОС Linux используется для облачного и серверного программного обеспечения. Некоторые популярные дистрибутивы Linux — это Ubuntu, Debian и RedHat Enterprise Linux. Поскольку Linux является бесплатным и открытым исходным кодом, он позволяет конечным пользователям свободно изменять, использовать, распространять и публиковать программный код. Лицензии с открытым исходным кодом, такие как Стандартная общественная лицензия GNU и Лицензия MIT, дают разработчикам свободу изменять исходный код в соответствии со своими потребностями.
Некоторые разработчики предпочитают Linux (почему Linux?)
- Linux надежен и безопасен. Программисты и разработчики часто устраняют проблемы, что, в свою очередь, снижает риски безопасности.
- Linux предоставляет конечным пользователям множество дистрибутивов (разновидностей). Пользователи могут настраивать и оптимизировать Linux для своих нужд. Эластичность, обеспечиваемая Linux, позволяет повысить производительность пользователей.
- Linux является бесплатным продуктом с открытым исходным кодом. Программисты и разработчики могут сэкономить деньги на лицензиях и программном обеспечении.
- Пользователи могут использовать инструменты с открытым исходным кодом, такие как Wine, чтобы позволить приложениям Windows работать в Linux. Обычно геймеры используют Wine, но в базе данных Wine есть множество инструментов для повышения производительности.
- Пользователи Linux могут контролировать свои обновления. Их не должны раздражать прерывания обновлений и перезагрузки. Установка по сравнению с Windows также занимает меньше времени.
- Linux работает намного плавнее и быстрее, чем Windows. С Linux пользователи получают больше свободного места на жестком диске и в памяти. Меньше использования центрального процессора (ЦП).
- Linux имеет широкое сообщество поддержки, и существует множество доступных учебных курсов, таких как курс Cybrary Fundamental Linux Administration.
В Linux также есть Bash
Linux предлагает несколько оболочек, которые пользователь может выбрать для использования. Тип оболочки, которую выбирает пользователь, зависит от того, чего он стремится достичь. Некоторыми примерами являются оболочка Bourne (sh), оболочка Korn (ksh) и Bourne-Again SHell (bash). Bourne-Again SHell является результатом объединения некоторых функций оболочки Korn и оболочки C.
Оболочка не сможет творить чудеса, пока конечный пользователь не введет некоторые команды в интерфейсе командной строки (CLI). CLI получает инструкции пользователя, а затем передает эти инструкции оболочке. Как только оболочка получила команды, она считывает и переводит команды пользователя, чтобы ОС могла выполнить задачу.
Заключение
Идеальной ОС не существует. Windows, macOS, Linux имеют свои преимущества и недостатки. Многие программисты и разработчики предпочитают ОС Linux другим операционным системам, потому что это позволяет им работать более эффективно и быстро. Это позволяет им адаптироваться к своим потребностям и быть инновационными. Огромным преимуществом Linux является то, что он бесплатный и с открытым исходным кодом. ОС Linux позволяет программистам и разработчикам свободно изменять, использовать, распространять и публиковать свои разработки. Существует обширная база данных языков программирования, которые работают в Linux. Конечные пользователи могут использовать различные текстовые редакторы, такие как Vim, Atom и VS Code. Linux также предлагает массу бесплатного программного обеспечения. Программисты и разработчики также выигрывают от того, что они являются членами большого сообщества по исправлению ошибок, что делает выпуски более надежными и безопасными, чем такие операционные системы, как Windows. Вот некоторые из причин, по которым программисты и разработчики предпочитают Linux, а не Windows.
Linux может быть просто лучшей операционной системой для разработки программного обеспечения.
Существует ли идеальная операционная система (ОС) для разработки программного обеспечения? По мнению некоторых, Linux может быть настолько близок, насколько это вообще возможно.
Давайте кратко рассмотрим, что может предложить Linux, и порекомендуем несколько отличных дистрибутивов (дистрибутивов) Linux, которые вы, возможно, захотите проверить сами.
Что такое Linux?
Поскольку вы читаете эту статью, скорее всего, вы уже имеете представление о том, что такое Linux. Но для непосвященных Linux — это такой же тип операционной системы, как Windows, iOS, macOS и т. д.
Это очень популярная ОС. На самом деле операционная система Android построена на основе ядра Linux, поэтому можно сказать, что ядро Linux является основой, на которой построен Android. Но Linux также используется во многих других интернет- и бизнес-серверах, включая многочисленные фондовые биржи по всему миру. Он существует с середины 1990-х, плюс-минус. Сегодня Linux буквально повсюду.
Она считается одной из самых надежных, стабильных и безопасных операционных систем. Фактически, многие разработчики программного обеспечения выбирают Linux в качестве предпочтительной ОС для своих проектов. Однако важно отметить, что термин «Linux» на самом деле относится только к основному ядру ОС.
Одним из наиболее важных аспектов Linux является тот факт, что это открытый исходный код. Это означает, что код, использованный для его создания, является бесплатным и доступным для просмотра, редактирования и даже участия в его разработке (если у вас достаточно опыта).
Linux похожа на другие операционные системы, к которым вы, возможно, привыкли, такие как Windows, macOS и т. д. Она поставляется с графическим интерфейсом и даже имеет версии стандартных программ, к которым вы, вероятно, привыкли, таких как текстовые процессоры, фоторедакторы, видеоредакторы. редакторы и т. д.
Однако Linux отличается от других операционных систем тем, что его основные части, как правило, имеют открытый исходный код. Кроме того, доступно множество дистрибутивов Linux, которые содержат различные варианты программного обеспечения.
На практике это означает, что операционная система, в отличие от многих ее конкурентов, невероятно настраиваема. Многие его аспекты, а не только приложения, можно заменить и поэкспериментировать с ними в соответствии с вашими конкретными потребностями и вкусами.
Пользователи Linux также могут выбирать основные компоненты, например, какая система отображает графику и так далее.
Однако важно отметить, что термин «Linux» немного вводит в заблуждение. С технической точки зрения, любая операционная система Linux состоит из комбинации программного обеспечения GNU с ядром Linux. Первая на самом деле представляет собой автономную операционную систему, которая изначально была разработана для замены Unix.
В оставшейся части статьи для краткости мы будем называть GNU/Linux просто Linux. Вы также должны знать, что использование любой из этих аббревиатур по отдельности вызывает споры.
Хорош ли Linux для разработчиков?
Как мы уже упоминали выше, Linux считается одной из лучших операционных систем. Это особенно верно для программистов.
Ваш выбор операционной системы, как мы описали в предыдущей статье, в конечном итоге будет зависеть от вашего личного вкуса, потребностей среды разработки программного обеспечения и т. д.
Однако существует огромное количество программистов, которые клянутся преимуществами Linux перед конкурентами. Это происходит по разным причинам, но аргументы, как правило, хвалят его природу с открытым исходным кодом и его общую удобную для пользователя экосистему.
Некоторые из основных причин, по которым программисты любят Linux, заключаются в следующем.
1. Вы не можете получить дешевле, чем бесплатно
Linux с открытым исходным кодом можно бесплатно загрузить и установить на свой компьютер. Это делает его идеальным для разработчиков программного обеспечения, независимо от того, являются ли они любителями, студентами, начинающими программистами или профессионалами.
Поскольку у вас нет никаких финансовых первоначальных затрат, вам придется потратиться только на понимание этого. Конечно, сюда не входят затраты на приобретение Linux-совместимого компьютера (что встречается довольно часто).
Большая часть программного обеспечения для него также имеет открытый исходный код, что является приятным бонусом.
2. Linux очень легко установить (обычно)
Если вы никогда не собирали компьютер с нуля, скорее всего, вам никогда не приходилось самостоятельно устанавливать операционную систему. К счастью, установка Linux относительно проста — вам не нужно быть опытным ИТ-специалистом (хотя это помогает).
Это не сильно отличается от установки программы в Windows. Еще одно преимущество заключается в том, что вы также можете сохранить любую существующую операционную систему, например Windows, используя опцию двойной загрузки.
Однако для некоторых дистрибутивов Linux могут потребоваться дополнительные технические знания. Считай себя предупрежденным.
3. Если вы любите что-то настраивать, Linux для вас
Linux – идеальная операционная система для тех, кто любит экспериментировать и настраивать под себя. Благодаря открытому исходному коду можно экспериментировать практически со всеми его элементами, от графического интерфейса до основного ядра.
У вас будет почти полная свобода экспериментировать с различными вариантами, и вам не придется беспокоиться о каких-либо юридических последствиях. На самом деле от вас обычно не требуется принимать какое-либо пользовательское лицензионное соглашение.
4. Linux отлично поддерживает большинство языков программирования
Если вам нужно писать на C, C++, CSS, Java, JavaScript, HTML, PHP, Perl, Python, Ruby или Vala, Linux поддерживает их все. Хотя время от времени вы можете сталкиваться с некоторыми проблемами, в большинстве случаев все пройдет гладко.
Вообще говоря, если язык программирования не ограничен конкретной операционной системой, например Visual Basic для Windows, он должен работать в Linux. Но сначала проведите тщательное исследование, чтобы убедиться в этом.
Если у вас возникнут проблемы с поддержкой, вы обычно можете получить необходимые пакеты из репозиториев дистрибутива Linux.
5. В Linux есть масса приложений на выбор
В Linux есть много отличных поддерживаемых приложений, которые удобны для многих программистов. Хотя вы можете просто написать свой код, используя простой текстовый файл, в Linux есть несколько очень полезных и экономящих время текстовых редакторов, которые значительно облегчат вам жизнь.
По умолчанию вы получаете такие приложения, как Gedit и Kate. Обычно это все, что вам нужно, но вы также можете получить Emacs, nano и Vim, которые можно использовать внутри терминала. Не говоря уже об Атоме, конечно.
Вы также можете выбрать ядерный вариант и использовать полнофункциональную интегрированную среду разработки (IDE) с Linux.
6. Можем ли мы представить вашему лорду-программисту и спасителю сценарии Bash?
Если вам нужно запрограммировать что-то более конкретное и вам не нужно заботиться о языке, вы можете использовать "скрипт Bash" с помощью команд Linux. Сценарий Bash — это обычный текстовый файл, содержащий ряд команд. В Linux эти команды входят в стандартную комплектацию, но при необходимости вы можете установить и другие. Они невероятно эффективны, не говоря уже о мощности, и многие программисты, любящие Linux, предпочитают работать в терминале.
7. Научившись пользоваться Linux, вы сможете найти отличную работу
Linux — отличный вариант, если вы просто живете и дышите программированием. Но большинству из нас тоже нужно платить по счетам.
Именно здесь обучение использованию Linux действительно может улучшить ваши шансы на трудоустройство на рынке. Опыт использования Linux является очень желательным навыком для многих высокооплачиваемых должностей.
Независимо от того, потребует ли ваша потенциальная работа от вас управления сервером компании или разработки их облачных сервисов, потенциальные работодатели взывают к людям, которые разбираются во всех тонкостях Linux.
Даже если у вас нет реальных амбиций стать легендой Linux, наличие некоторых базовых функциональных знаний о нем даст вам конкурентное преимущество как программиста.
Что вам терять?
Сложно ли изучать Linux?
Как и все в жизни, насколько легко или сложно что-то в этом отношении, определяется вашим личным опытом, самоотверженностью и готовностью учиться. В конце концов, сколько времени вам понадобилось, чтобы привыкнуть к Windows, macOS/iOS, Android и т. п.?
Операционная система довольно проста в освоении. Но здесь есть одна оговорка: полезно, если у вас есть некоторый опыт работы с технологиями, а также изучение синтаксиса и основных команд операционной системы.
Один из лучших способов освоить Linux — это разработать несколько проектов с его использованием. Это поможет быстрее освоить Linux.
Как упоминалось ранее, изучение синтаксиса является ключевым. Вам также потребуется выучить основные команды.
Проще говоря, начните использовать его и практикуйтесь, практикуйтесь, практикуйтесь. Если вы новичок в Linux, вот несколько основных шагов, необходимых для освоения ОС.
Нужен ли Linux для программирования?
Короче нет, но он очень популярен среди программистов по разным причинам. Если, конечно, вы не хотите присоединиться, скажем, к RedHat или стать разработчиком, использующим Linux — в этом случае это обязательно.
Для всех остальных есть определенные преимущества Linux перед другими ОС. Мы рассмотрели некоторые из них выше, но есть и другие преимущества Linux перед операционными системами конкурентов:
- Linux, как правило, поставляется с большинством компиляторов и интерпретаторов, которые вам понадобятся для выполнения работы. Другие операционные системы, такие как Windows, обычно этого не делают.
- Если в Linux нет нужных вам компиляторов, обычно их можно получить из командной строки ОС. Примеры команд включают "yum install" или "apt-get install".
- Linux, как правило, содержит лучший набор низкоуровневых инструментов, таких как sed, grep, awk piping и т. д. Подобные инструменты используются программистами для создания таких вещей, как инструменты командной строки и т. д.
- Многие программисты, предпочитающие Linux другим операционным системам, ценят его универсальность, мощность, безопасность и скорость.
- Linux имеет огромное сообщество, которое поможет вам, если вы по какой-либо причине застряли. Обычно они очень терпеливы с новичками, но приготовьтесь к легкомысленной шутке.
- Операционная система также поставляется с удобным встроенным менеджером пакетов.
- Возможность настройки Linux с любым из его дистрибутивов отлично подходит для адаптации ОС к вашим потребностям.
- Сообщения об ошибках в других операционных системах, таких как Windows или macOS, как правило, менее чем полезны. В Linux вы обычно можете найти решение у кого-то, кто уже его решал. Если нет, просто спросите у службы поддержки сообщества.
- Одна замечательная особенность Linux заключается в том, что многие повторяющиеся задачи часто можно автоматизировать с помощью простых строк кода. Например, если вы изучаете C и хотите создать новый файл, вы можете запустить простой код, чтобы автоматически создать файл с тем же синтаксисом, который вы регулярно используете.
Какой дистрибутив Linux лучше всего подходит для разработки программного обеспечения?
Если вы решили использовать Linux в качестве разработчика программного обеспечения, ваш следующий вопрос может заключаться в том, какой дистрибутив лучше всего подходит для ваших нужд? Как оказалось, есть довольно много вариантов, которые действительно помогут вам быстрее, плавнее, безопаснее и счастливее программировать под Linux в будущем.
Но имейте в виду, что любой выбор такого рода в конечном счете субъективен по самой своей природе. При этом вам следует искать самые безопасные и стабильные дистрибутивы, которые также предлагают процветающее сообщество поддержки.
Поступая таким образом, вы будете получать регулярные обновления и множество ресурсов, таких как официальные форумы или вики, а также сторонние ресурсы, такие как сабреддиты. Вот некоторые из дистрибутивов Linux с самым высоким рейтингом.
1. Debian получил высокую оценку
Дистрибутив Debian — это не только один из самых популярных дистрибутивов, но и основная операционная система для многих других дистрибутивов Linux. Причиной его популярности является тот факт, что он поставляется с большим количеством пакетов, направленных на стабильность и безопасность.
Для новичков в мире Linux имеется огромное количество руководств и другой поддержки в сети, чтобы решить многие распространенные проблемы, с которыми вы столкнетесь.
Одна важная вещь, которую следует помнить при работе с Debian, заключается в том, что если вы хотите использовать Linux для изучения нюансов программирования, это может быть не лучшим вариантом для вас. Лучшие варианты включают Ubuntu 20.04, Linux Mint или Zorin.
2. Ubuntu тоже очень хорош
Если вы занимаетесь веб-разработкой, Python и т. д., то Ubuntu, вероятно, станет для вас одним из лучших дистрибутивов Linux. Благодаря поддержке со стороны таких организаций, как Canonical и сообщества разработчиков ПО с открытым исходным кодом, Ubuntu также стала одним из ярких представителей экосистемы Linux.
Ubuntu, производная от Debian, сегодня широко используется в облачных и серверных приложениях. Этот дистрибутив также поставляется в различных формах с различными средами рабочего стола и другими функциями на любой вкус.
Огромное сообщество поддержки пользователей и безупречное взаимодействие с пользователем, не говоря уже о регулярных выпусках с долгосрочной поддержкой (LTS), делают его отличным выбором для разработчиков программного обеспечения. Он также поддерживает высоко оцененную систему управления пакетами .deb.
3. CentOS отлично подходит для разработки Red Hat
Бесплатная общедоступная версия Red Hat Enterprise Linux (RHEL) CentOS — отличная альтернатива первоклассной версии RHEL.Во многом это то же самое, что и платная версия Linux от Red Hat, с одним существенным отличием: она бесплатна.
Это очень стабильный дистрибутив Linux, который также поставляется с набором инструментов разработчика, который предлагает набор необходимых инструментов для большинства разработчиков программного обеспечения. Платформа виртуализации Xen в CentOS также предлагает способ разделения ваших проектов и безопасного запуска приложений внутри виртуальной машины.
4. Pop!_OS отлично подходит для программистов
Pop!_OS — еще один замечательный дистрибутив Linux. Отличие этого варианта в том, что он был разработан с нуля, чтобы быть ориентированным на программиста и производителя.
Он основан на Ubuntu, а также включает очень популярную среду рабочего стола GNOME, которую вы тоже полюбите. Он поставляется с множеством полезных функций, таких как удобные сочетания клавиш, надежный магазин приложений и доступ к репозиториям, таким как TensorFlow (платформа машинного обучения с открытым исходным кодом).
Его великолепная система управления окнами и плавное переключение между встроенной и выделенной графикой предлагают то, что многие считают беспрецедентным опытом программирования.
5. Fedora предпочитает создатель ядра Linux Линус Торвальд
И, наконец, в нашем списке лучших дистрибутивов Linux есть Fedora. В каком-то смысле похожий на CentOS, он включает в себя многие функции RHEL и даже является одним из предпочтительных дистрибутивов Линуса Торвальда.
Он обладает передовыми функциями и очень популярен среди разработчиков программного обеспечения по всему миру. Это связано с его стабильностью, современным набором функций и великолепным порталом для разработчиков.
Fedora также является хорошей альтернативой Red Hat Enterprise Linux и поставляется с многоязычной IDE в Eclipse, которую можно использовать для таких вещей, как PHP, Java, C, C++ и многих других.
И это завершение.
Вы готовы перейти на Linux для разработки программного обеспечения? Если да, наслаждайтесь приключением, в которое вы собираетесь отправиться. Если нет, сообщите нам почему.
Хотя я признаю, что говорю с позиции невежества, поскольку я никогда не пробовал использовать Linux, простой факт заключается в том, что я его не понимаю.
Я не получаю преимущества. Если я собираюсь что-то программировать, скорее всего, это будет для Windows, или, по крайней мере, вы захотите сделать поддержку Windows приоритетной. В чем преимущество программирования вне родной ОС?
Я разбираюсь в виртуальных машинах, но думаю, что меня смущает, так это то, почему я столкнулся с такими проблемами, когда я могу просто загрузить Windows и программировать в ней.
Если я собираюсь что-то программировать, скорее всего, это будет для Windows, или, по крайней мере, вы захотите отдать приоритет поддержке Windows.
Ну, тогда вы разработчик программного обеспечения для Windows, и вам, вероятно, следует разрабатывать указанное программное обеспечение для Windows.
Это не относится к тому, почему Linux отлично подходит для программистов. Список точек.
Открытый исходный код — это круто, если вы программист. Это означает, что если у вас что-то не работает или в программе не хватает чего-то, что вам нужно, вы можете просто отправить патч. В мире закрытых исходных кодов вы застряли, умоляя поставщика или, возможно, если есть подключаемая система, пытаетесь взломать ее тем или иным способом. Для других платформ существует открытый исходный код, но в то время как Windows является гражданином «первого класса» для игр, Linux определенно является гражданином первого класса для открытого исходного кода. Если вы используете пакет с открытым исходным кодом в Windows, весьма вероятно, что он был перенесен из Linux и не является целью разработки.
Многие типичные дистрибутивы Linux не только с открытым исходным кодом, но и основаны на сценариях. Я помню, как впервые обнаружил, что весь процесс инициализации SysV легко читать, изменять и отслеживать — всего лишь несколько текстовых файлов. Это круто. Отслеживание проблем в Linux, как правило, намного удобнее, чем в Windows, где вы можете столкнуться с непрозрачным двоичным файлом.
Система Unix означает, что программы командной строки имеют одинаковый пользовательский интерфейс и API. Если вы знаете, как использовать ifconfig, вы знаете, как писать программы, использующие предоставляемые им данные. Это абсолютно феноменально для написания сценариев и создания быстрых программ.Например, я могу написать быстро зашифрованную программу VoIP с использованием сжатия в конвейере с ssh и lame. Я уже знаю, как использовать ssh, потому что я использую его все время, и раньше я иногда использовал lame. Я могу написать сценарий с netcat, grep и sed, чтобы сказать мне, какой тип веб-сервера работает на удаленной машине в другой строке; добавьте nmap, и я только что написал новую программу, которая находит работающие компьютеры в сети и сообщает, какие веб-серверы они используют. Тот факт, что барьер для написания одноразовых программ невероятно низок, означает, что кто-то, кто знает, как программировать, может просто собирать программы для решения программ, с которыми они сталкиваются каждый час. Для их обозначения часто используется термин «однострочный», хотя я написал много многострочных одноразовых программ. Если вы изучаете Linux и умеете программировать, вам редко приходится выполнять какую-либо повторяющуюся работу.
Существует множество отличных инструментов разработки, которые можно загрузить бесплатно. Valgrind особенно нравится.
/proc и /sys хороши. Вы получаете доступ к внутренностям вашей системы и возможность возиться с языками очень высокого уровня. Я могу запросить автоматически определяемую скорость моего сетевого интерфейса (/sys/class/net/eth0/speed) или заставить мою систему игнорировать запросы ping (echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all). р>
Поскольку многие пользователи Linux (и Unix) на протяжении многих лет были разработчиками или, по крайней мере, "искушенными пользователями", за эти годы появилось много программного обеспечения, ориентированного на них. Как правило, программное обеспечение позволяет вам крутить ручки, сообщает вам, что ломается на техническом уровне (а не MSIE, говорящее «Internet Explorer не удалось установить связь с этим веб-сайтом» или тому подобное, заставляя меня задаться вопросом: «Итак, не удалось ли разрешить DNS? удаленный веб-сайт возвращает код ошибки HTTP? Не отвечает ли он на запрос TCP-подключения?") и поддерживает использование текстовых редакторов для настройки.
Похоже, что большинство разработчиков используют много программного обеспечения. В Linux большинство программ можно загрузить бесплатно. Вы слышите о чем-то, вы можете использовать это. Если вы изучите пакет, он будет доступен везде. Одна команда для загрузки и установки на большинстве дистрибутивов. Ваш набор навыков не исчезнет, потому что какой-то сайт не купил лицензию на программный пакет X, и поэтому он недоступен. Разочарование, которое я испытал при использовании Windows, потому что инструмент, который я использовал и изучил, недоступен, значителен. Изучите valgrind в Linux, и вы сможете отследить проблемы с памятью где угодно. Научитесь очищать на Windows, и. Что ж, я надеюсь, что у вас есть копия Purify на компьютере, на котором вам нужно отследить проблему.
Если вы пишете кроссплатформенное программное обеспечение, может оказаться целесообразным разработка для Linux. В настоящее время я работаю над кроссплатформенным пакетом и разрабатываю для Linux; это дружественная среда для создания тестов и разработки. Кармак (Doom, Quake) разрабатывал кросс-платформенное программное обеспечение, и я полагаю, что исторически он занимался разработкой для Linux, но если вы пишете программное обеспечение только для Windows, нет, я бы не советовал пытаться ориентироваться на WINE или что-то в этом роде. Однако Linux великолепен, когда вы не ограничены в разработке специально для Windows. :-) Если вы пишете, скажем, что-то, что работает на стороне сервера, сетевое устройство и т. д., вам не придется зацикливаться на написании кода для Windows, и тогда вы сможете выбирать.
«Программисты любят Linux» не следует приравнивать к «Программистам, пишущим внешние интерфейсы Visual Basic для клиентов Windows, следует попытаться выяснить, как разработать их для Linux», потому что это было бы ужасным совпадением, с чем я согласен. .
Linux — отличная платформа для программирования: она логична, ее исходный код легко увидеть и она очень эффективна.
В 2021 году людей любят Linux больше, чем когда-либо прежде. В этой серии я расскажу о 21 способе использования Linux. Здесь я объясню, почему так много программистов выбирают Linux.
Когда я впервые начал использовать Linux, это было связано с его отличной поддержкой мультимедиа, поскольку я работал в кинопроизводстве. Мы обнаружили, что типичные проприетарные приложения для редактирования видео не могут обрабатывать большую часть материалов, которые мы получаем практически с любого устройства, которое может записывать изображение. В то время я не знал, что Linux имеет репутацию операционной системы для серверов и программистов. Чем больше я занимался Linux, тем больше мне хотелось контролировать каждый его аспект. И, в конце концов, я обнаружил, что компьютер был наиболее мощным, когда его пользователь мог «говорить» на его языке. В течение нескольких лет после перехода на Linux я писал сценарии автоматического редактирования видео, связывал вместе аудиофайлы, массово редактировал фотографии и делал все, что мог вообразить, а затем изобретал решение.Мне не потребовалось много времени, чтобы понять, почему программисты любят Linux, но именно Linux научил меня любить программирование.
Оказывается, Linux — отличная платформа для программистов, как новичков, так и опытных. Дело не в том, что вам нужен Linux для программирования. На самых разных платформах есть успешные разработчики. Однако Linux может многое предложить разработчикам. Вот несколько вещей, которые я нашел полезными.
Основы логики
Дополнительные ресурсы по Linux
Linux построен на автоматизации. Мы специально сделали так, чтобы основные приложения в Linux можно было, по крайней мере, запускать с терминала с дополнительными параметрами, а часто их даже можно использовать полностью с терминала. Эта идея иногда ошибочно принимается за примитивную вычислительную модель, потому что люди ошибочно полагают, что написание программного обеспечения, работающего с терминала, — это просто минимум действий для получения работающего приложения. Это досадное непонимание того, как работает код, но время от времени многие из нас этим грешат. Мы считаем, что больше всегда лучше, поэтому приложение, содержащее 1000 строк кода, должно быть в 100 раз лучше, чем приложение с десятью строками кода, верно? Правда в том, что при прочих равных условиях предпочтительнее приложение с большей гибкостью, независимо от того, как это выражается в строках кода.
В Linux процесс, который может занять у вас час при выполнении вручную, может быть буквально сокращен до одной минуты с помощью правильной команды терминала и, возможно, меньше при анализе в GNU Parallel. Это явление требует изменения ваших представлений о том, что делает компьютер. Например, если ваша задача состоит в том, чтобы добавить обложку к 30 файлам PDF, вы можете подумать, что это разумный рабочий процесс:
- Открыть PDF-файл в редакторе PDF
- Откройте переднюю крышку.
- Добавить PDF-файл в конец файла обложки.
- Сохранить файл как новый PDF-файл
- Повторите этот процесс для каждого старого PDF-файла (но не повторяйте этот процесс для каждого нового PDF-файла)
В основном это здравый смысл, и, хотя он до боли повторяется, он выполняет свою работу. Однако в Linux вы можете работать умнее. Мыслительный процесс аналогичен: во-первых, вы разрабатываете шаги, необходимые для успешного результата. После некоторых исследований вы узнаете о команде pdftk-java и обнаружите простое решение:
После того, как вы убедились, что команда работает с одним документом, вам нужно время, чтобы изучить параметры цикла, и вы остановились на параллельной операции:
Это немного другой способ мышления, потому что "код", который вы пишете, обрабатывает данные не так, как принудительная линейность, к которой вы привыкли. Однако отказ от прежнего линейного образа мышления важен для последующего написания фактического кода, а побочным преимуществом этого подхода является то, что вы сможете более эффективно выполнять вычисления.
Соединения кода
Независимо от того, для какой платформы вы программируете, когда вы пишете код, вы создаете сложную сеть невидимых связей между множеством разных файлов. Во всех случаях, кроме самых редких, код извлекается из заголовков и опирается на внешние библиотеки, чтобы стать полноценной программой. Это происходит на любой платформе, но Linux обычно побуждает вас понять это самостоятельно, а не слепо доверять комплекту разработки платформы, который позаботится об этом за вас.
Теперь нет ничего плохого в том, чтобы доверить набору средств разработки разрешение библиотеки и пути включения. Напротив, такая абстракция — это роскошь, которой вы должны наслаждаться. Однако, если вы никогда не понимаете, что происходит, вам будет намного сложнее переопределить процесс, когда вам нужно сделать что-то, о чем не знает комплект разработчика, или устранить проблемы, когда они возникнут.
Это также работает на разных платформах. Вы можете разрабатывать код для Linux, который вы собираетесь запускать в Linux, а также в других операционных системах, и ваше понимание того, как код компилируется, поможет вам достичь поставленных целей.
По общему признанию, вы не усвоите эти уроки, просто используя Linux. Вполне возможно писать код в хорошей среде IDE и никогда не думать о том, какая версия библиотеки у вас установлена или где находятся заголовки для разработки. Однако Linux ничего от вас не скрывает. Легко копаться в системе, находить важные части и читать код, который они содержат.
Существующий код
Знать, где расположены заголовки и библиотеки, полезно, но наличие ссылок на них — еще один дополнительный бонус к программированию в Linux. В Linux вы можете увидеть исходный код практически всего, что вам нужно (за исключением приложений, исходный код которых не является открытым, но которые работают в Linux). Преимущество здесь невозможно переоценить. Когда вы узнаете больше о программировании в целом или о программировании чего-то нового для вас, вы сможете многое узнать, обращаясь к существующему коду в вашей системе Linux. Многие программисты научились программировать, читая открытый исходный код других людей.
В проприетарных системах вы можете найти документацию для разработчиков с примерами кода. Это здорово, потому что документация важна, но она меркнет по сравнению с поиском точных функций, которые вы хотите реализовать, а затем поиском исходного кода, демонстрирующего, как это было сделано в приложении, которое вы используете каждый день.
Прямой доступ к периферийным устройствам
Что-то, что я часто считал само собой разумеющимся после разработки кода для медиа-компаний с использованием Linux, — это доступ к периферийным устройствам. Например, при подключении видеокамеры к Linux вы можете получать входящие данные из /dev/video0 или аналогичного. Все находится в /dev, и это всегда кратчайший путь между двумя точками, чтобы добраться туда.
На других платформах это не так. Подключение к системам за пределами операционной системы часто представляет собой лабиринт SDK, библиотек с ограниченным доступом, а иногда и соглашений о неразглашении. Это, конечно, зависит от того, для чего вы программируете, но трудно превзойти простой и предсказуемый интерфейс Linux.
Слои абстракции
С другой стороны, Linux также предоставляет полезный набор уровней абстракции для тех случаев, когда прямой доступ или ручное кодирование создают больше работы, чем вы хотите. Есть удобства, которые можно найти в Qt и Java, и есть целые стеки, такие как Pulse Audio, Pipewire и gstreamer. Linux хочет, чтобы вы могли программировать, и это видно.
Добавить в этот список
Есть и другие причины, по которым кодирование в Linux доставляет удовольствие. Некоторые из них представляют собой общие концепции, а другие — слишком конкретные детали, которые сэкономили мне часы разочарования. Linux — отличное место, независимо от того, на какую платформу вы ориентируетесь. Если вы только изучаете программирование или кодер ищете новый цифровой дом, нет лучшего рабочего пространства для программирования, чем Linux.
Читайте также: