- 5 причин, по которым я люблю программировать в Linux
- 1. Логичность Linux
- 2. Возможности по управлению связями кода
- 3. Удобство работы с существующим кодом
- 4. Прямой доступ к периферии
- 5. Хорошо продуманные абстракции
- Итоги
- 5 причин использовать Linux в 2020 году
- ZFS в Linux
- Прерывания Linux
- Linux в кармане
- Новые команды Linux
- Облако, работающее на Linux
- Рост open source
- На правах рекламы
5 причин, по которым я люблю программировать в Linux
Linux — это отличная платформа для занятий программированием. На нашей стороне — логичность, высокая эффективность, лёгкость работы с исходным кодом.
В 2021 году Linux выглядит как никогда привлекательно. Я собираюсь написать материалы, в которых расскажу о 21 способе использования Linux. А в этой статье я хочу поговорить о том, почему так много программистов выбирают Linux.
Когда я начал пользоваться Linux, я работал в сфере кинопроизводства. Я выбрал Linux из-за того, что эта ОС замечательно поддерживала работу с мультимедийными данными. Мы выяснили, что обычные коммерческие приложения для редактирования видео не способны обрабатывать большинство тех записей, которые мы извлекали из практически любых устройств, оснащённых камерами. Тогда я не знал о том, что Linux имеет репутацию операционной системы, рассчитанной на серверы и на программистов. Чем больше задач я решал с помощью Linux, тем сильнее мне хотелось научиться управлять всеми свойствами этой ОС. В итоге я выяснил, что компьютер показывает всю свою мощь тогда, когда его пользователь способен «говорить» на его языке. Через несколько лет после перехода на Linux я уже писал скрипты для автоматического редактирования видео, для объединения аудиофайлов, для пакетного редактирования фотографий, и для решения любых задач, которые мне удавалось сформулировать, и для которых удавалось найти решение. Мне не потребовалось много времени на то, чтобы понять, почему программисты любят Linux. Но именно Linux научила меня любить программирование.
Оказалось, что Linux — это отличная платформа для программистов, и для начинающих, и для опытных. Нельзя сказать, что Linux необходима для того, чтобы писать программы. Успешные разработчики пользуются самыми разными платформами. Но у Linux есть много такого, что она может предложить разработчикам. Кое о чём из этого я и хочу рассказать.
1. Логичность Linux
Linux построена вокруг идеи автоматизации. Основные приложения Linux совершенно осознанно сделаны такими, чтобы их можно было бы, как минимум, запустить из терминала, указав дополнительные опции. А часто их можно и полностью использовать тоже из терминала. Эту идею иногда ошибочно считают чем-то вроде примитивной модели организации вычислений, так как существует распространённое (и неправильное) мнение о том, что писать программы, работающие из терминала, это значит — прилагать абсолютный минимума усилий к тому, чтобы получить работающее приложение. Это — печальный результат непонимания того, как работает программный код, но многие из нас периодически страдают таким вот непониманием. Мы думаем, что больше — это всегда лучше, поэтому приложение, содержащее 1000 строк кода должно быть в 100 раз лучше, чем приложение, содержащее 10 строк кода. Так? Но правда заключается в том, что, при прочих равных условиях, лучше выбрать приложение, отличающееся большей гибкостью, при этом то, из скольких строк кода оно состоит, значения не имеет.
В Linux решение некоей задачи вручную может занять, например, час. То же самое можно, воспользовавшись подходящими инструментами командной строки, сделать буквально за минуту, а возможно — и за меньшее время, если прибегнуть к GNU Parallel. Для того чтобы к этому привыкнуть, нужно определённым образом изменить взгляд на то, как именно работают компьютеры, нужно научиться мыслить не так, как прежде. Например, если задача заключается в том, чтобы добавить к 30 PDF-файлам обложки, можно решить, что приемлемая последовательность действий будет выглядеть так:
- Открыть PDF-файл в редакторе.
- Открыть файл с обложкой.
- Присоединить PDF-файл к файлу с обложкой.
- Сохранить полученный документ в виде нового PDF-файла.
- Повторить эти действия при обработке остальных старых файлов (а вот новые файлы, полученные из старых, обрабатывать уже не нужно).
Эта последовательность действий вполне согласуется со здравым смыслом, и хотя в ней много неприятных повторений, она позволяет достичь цели. В Linux, правда, можно организовать работу гораздо разумнее. Процесс размышлений над этой задачей, учитывающий возможности Linux, похож на процесс размышлений над «ручным» способом решения задачи. А именно, всё начинается с поиска последовательности действий, необходимых для получения нужного результата. Проведя некоторые изыскания, можно узнать о команде pdftk-java , а потом выйти на простое решение:
После того, как удастся убедиться в работоспособности команды при обработке одного документа, надо будет вложить некоторое время в изучение утилит для обработки наборов данных. В ходе изучения можно обнаружить команду parallel :
Тут представлен подход к размышлениям над задачами, несколько отличающийся от обычного, так как «код», который мы пишем, обрабатывает данные не так, как мы привыкли. Обычно мы ограничены представлениями о последовательной ручной обработке данных. Но выход за границы старых представлений важен для того чтобы позже писать соответствующий код. А побочным полезным эффектом такого «выхода» является получение возможности писать более эффективные программы, чем раньше.
2. Возможности по управлению связями кода
Неважно, для какой платформы вы программируете, вводя в редакторе код. Всё сводится к тому, что программист плетёт сложную сеть из невидимых связей между множеством различных файлов. Практически во всех случаях, за исключением каких-то совсем уж экзотических, код, чтобы стать полноценной программой, обращается к заголовочным файлам и использует внешние библиотеки. Это происходит на всех платформах, но Linux подталкивает программиста к тому, чтобы он сам бы во всём этом разобрался, а не доверял бы заботу обо всём этом исключительно инструментам разработчика для некоей платформы.
Надо сказать, что нет ничего плохого в том, чтобы доверять инструментам разработчика решение задач по нахождению библиотек и по включению в состав программ внешних файлов. Это, наоборот, полезная возможность, наличие которой должно вызывать у программиста лишь чувство благодарности. Но если программист совершенно ничего не понимает в том, что происходит, ему будет гораздо сложнее взять управление всем этим на себя в том случае, если инструменты разработчика просто не будут знать о том, как справиться с некими проблемами.
Это имеет отношение не только к Linux, но и к другим платформам. В Linux можно писать код, который планируется запускать и в Linux, и в других операционных системах. Понимание того, как именно компилируется код, помогает программисту в достижении его целей.
Надо признать, подобным вещам нельзя научиться, просто пользуясь Linux. Можно счастливо писать код в хорошей IDE и никогда даже не задумываться о том, какая версия некоей библиотеки была установлена, или о том, где именно находятся какие-то заголовочные файлы. Но Linux ничего не скрывает от программиста. Очень просто углубиться в недра системы, найти в ней то, что нужно, и прочитать соответствующий код.
3. Удобство работы с существующим кодом
Полезно знать о том, где находятся заголовочные файлы и библиотеки, но возможность видеть их код — это ещё один пример дополнительного преимущества программирования в Linux. В Linux можно посмотреть код практически всего, о чём можно подумать (за исключением приложений, работающих на Linux, но не являющихся опенсорсными). Невозможно переоценить полезность этой особенности Linux. По мере того, как некто всё лучше и лучше осваивает программирование в целом, или разбирается с чем-то новым для себя, он может многое узнать, читая существующий код в своей Linux-системе. Многие программисты научились делать своё дело, читая опенсорсный код других людей.
При работе с системами, код которых закрыт, можно найти документацию, ориентированную на разработчиков и содержащую примеры кода. Это хорошо, документация — это важно, но это не сравнить с возможностью обнаружить именно тот функционал, который планируется реализовать, и с возможностью найти исходный код, демонстрирующий то, как это сделано в приложении, которым вы пользуетесь каждый день.
4. Прямой доступ к периферии
Я, после того, как разрабатывал на Linux программы для медиакомпаний, иногда принимаю как должное возможность доступа к периферийным устройствам. Например, при подключении к Linux-компьютеру видеокамеры можно загрузить входящие данные из /dev/video0 или из подобного устройства. Всё что нужно, можно найти в /dev , и это — всегда кратчайший путь из точки A в точку B.
А вот на других платформах это не так. Подключение к системам, находящимся за пределами ОС — это всегда лабиринт, построенный из SDK, библиотек с закрытым кодом, а иногда — и из соглашений о конфиденциальности. Ситуация, конечно, не везде одинакова, она зависит от того, для какой именно платформы пишет код программист, но другим системам сложно поспорить с простотой и предсказуемостью интерфейса Linux.
5. Хорошо продуманные абстракции
Linux, в то же время, даёт нам и разумный набор слоёв абстракции, применимых в ситуациях, когда прямой доступ к чему либо или ручное написание некоего кода может вылиться в больший объём работы, чем тот, к которому готов программист. Много удобных инструментов можно найти в Qt и Java, есть целые стеки вспомогательных технологий, вроде Pulse Audio, Pipewire и gstreamer. Linux стремится к тому, чтобы её пользователи могли бы заниматься программированием, и не скрывает этого.
Итоги
Есть гораздо больше причин того, что программировать в Linux — это удовольствие. Некоторые из них представляют собой широкомасштабные концепции, некоторые — мельчайшие детали, которые избавили меня от многих часов тяжких поисков решения неких задач. Linux — это место, в котором приятно находиться, при этом неважно — на какой именно платформе будет запускаться код, который пишут в Linux. Кем бы вы ни были — человеком который только начал осваивать дело написания программ, или опытным кодером, который ищет себе новый цифровой дом, нет лучше места для программирования, чем Linux.
Какой ОС вы пользуетесь при написании программ?
Источник
5 причин использовать Linux в 2020 году
Самые лучшие технологии — это движущаяся мишень. Когда технология стагнирует, общество обычно обгоняет и перерастает её. Linux, широко используемая операционная система с открытыми исходниками — это фундаментальная технология, являющаяся основой для одной из самых прогрессивных современных идей компьютерных систем. Поэтому, хотя на протяжении трёх десятков лет развития она остаётся поразительно неизменной, эта ОС обеспечивает адаптируемость. В результате этого Linux находится в уникальном положении — с одной стороны, это надёжная инвестиция в развитие своих навыков, потому что она не меняется, с другой — это кажущаяся бесконечной движущая сила для изучения новых навыков.
2020 год, как на него не взгляни, был странным, но для Linux он оказался продолжением обычного цикла разработки. В этой статье мы вспомним этот год и вкратце расскажем о том, что нужно знать о Linux в 2020 году.
ZFS в Linux
Файловая система ZFS обеспечивает проверку целостности данных и метаданных, резервирование данных с созданием зеркал, поддержку накопителей объёмом до 256 триллионов йобибайт, нативное шифрование с аппаратным ускорением и эффективную репликацию. ZFS — это инновация, созданная Sun Microsystems; к сожалению, лицензия препятствует её поставкам в комплекте с Linux по умолчанию. Однако коллектив OpenZFS портировал проект на BSD и Linux, поэтому вы можете использовать ZFS на любой системе, от ноутбука до дата-центра.
Осваивать ZFS на удивление легко в Fedora Linux; это продемонстрировал Шэн Мао в своей статье о настройке ZFS в Linux.
Прерывания Linux
Насколько бы ни было близким ваше знакомство с Linux, всегда есть возможность нырнуть глубже и разобраться в том, как ему удаётся настолько хорошо выполнять свою работу. Компьютерам, работающим на фондовых биржах, в студиях цифровых фильмов, звуковых рабочих станциях и других средах, требующих высокой производительности, необходима обработка в реальном времени; в то же время, другие компьютеры могут позволить себе слегка лениться при обработке запросов, поэтому управление множеством циклов, постоянно выполняемых внутри компьютера — непростая задача. Понимание того, как и зачем ядро Linux управляет запросами на прерывания (IRQ), может и не быть обязательным для обычного пользователя, однако изучать это увлекательно вне зависимости от того, чем вы обычно занимаетесь за компьютером. Подробную информацию можно узнать из статьи Стефана Авенведде «How the Linux kernel handles interrupts».
Linux в кармане
Так как ОС Android компании Google работает на ядре Linux, многие из нас могут сказать, что Linux и так находится у них в кармане. Однако несмотря на своё удобство, написанный на Java фронтенд Android не всегда передаёт ощущение Linux, к которому стремятся многие пользователи Linux. А у некоторых пользователей и вовсе нет телефона с Android.
Хорошая новость заключается в том, что в устройстве с Android или iOS можно запускать Linux, дополненный терминалом, Bash, Python, менеджером пакетов и всем тем, что вы любите в этой настольной ОС с открытым исходным кодом.
Если вы пользуетесь Android, то прочитайте мою статью о Termux. А если вы на iOS, то изучите превосходную статью Ли Тусмана о запуске командной строки Linux на устройстве с iOS.
Новые команды Linux
Время идёт вперёд, и иногда старые замысловатые команды прошлого оказываются недостаточными для современных систем. Хотя ваша мышечная память могла привыкнуть к командам наподобие crontab и ifconfig (а также iwconfig и wpa_supplicant ), существуют совершенно приемлемые замены для них и другие возможности. Если вы не можете расстаться со старыми командами, то познакомьтесь с алиасами Bash, потому что эти новые команды стоят изучения.
- Откажитесь от ifconfig в пользу nmcli . В какой-то момент времени вам придётся признать, что ужасное сочетание ifconfig плюс iwconfig и wpa_supplicant (от которой всё равно уже давно втайне отказались в пользу wicd ) попросту неэффективно. Сегодня Linux использует nmcli , и эта команда стала очень удобным, а иногда и интуитивно понятным способом взаимодействия с сетью. Прочитайте превосходный туториал по nmcli Дейва Маккея.
- Задания cron, at и batch — уникальные своим бессмертием команды, которые, вероятно, никогда и не следует заменять. Они отлично подходят для быстрого и простого планирования, однако для сложных задач можно найти функции, которые могут стать им поддержкой: таймеры systemd. Дэвид Бот написал подробный туториал по таймерам systemd, демонстрирующий, как писать и отслеживать важные системные задачи.
- gcore и gdb — важные отладчики, которые могут быть известны разработчикам. Новым подходом к реализации gcore стал ProcDump компании Microsoft, получающий дамп ядра ID процесса (PID), чтобы его можно было проанализировать с помощью gdb . Он является скорее альтернативой, а не заменой, но стоит его попробовать, если вам любопытно изучать разные инструменты. Более подробная информация представлена в туториале по ProcDump Гуарава Камате.
Облако, работающее на Linux
Облачные технологии на всех парах несутся вперёд, и их основной движущей силой остаётся Linux. Облако — это набор компьютеров (узлов) с массово-распределённой файловой системой (например, Ceph), обычно управляемый при помощи Kubernetes или OpenShift.
Как бы хорошо вы ни знали Linux на своём ноутбуке, настольном компьютере или даже частном дата-центре, существует целый новый мир для экспериментов с Linux, находящийся в облачных контейнерах. Для освоения эфемерного контейнера могут потребоваться усилия, но при наличии практики и небольшом знании контекста можно создавать интересные системы и управлять ими (то есть обновлять, масштабировать и настраивать их производительность) с помощью Kubernetes.
Кики Лю написал один из лучших обзоров о процессе работы с облаками в статье «A beginner’s guide to Kubernetes container orchestration». Прочитайте её, а затем скачайте Kubernetes eBook Криса Коллинза, чтобы собрать собственное облако на кластере Raspberry Pi.
Рост open source
Пользователи Linux наслаждаются надёжностью и стабильностью этой ОС, и это принцип архитектуры системы она позаимствовала у Unix: операционная система может оставаться одинаковой, при этом расширяя свои границы и осваивая новые виды технологий. Частью удовольствия от Linux и open source является ощущение исследования, возникающее при изучении новой команды, и ощущение успеха, когда она срабатывает и делает вашу жизнь проще. Узнайте о последних тенденциях Linux и приступите к изучению чего-то нового уже сегодня!
На правах рекламы
VDSina предлагает виртуальные серверы под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата.
Источник