5 преимуществ Linux для программистов
Linux — высокопроизводительная и стабильная система, которая отлично работает на высоконагруженных серверах и предоставляет комфортное использование среды рабочего стола. Для ОС разработаны различные графические оболочки — например, KDE, LXDE и GNOME. Разработчик может выбрать понравившийся интерфейс. Также система довольно хорошо защищена от взлома и вирусов, так как имеет специфическую архитектуру. И хотя Linux устанавливается бесплатно, как и системные программы, это совершенно не говорит о низком качестве продукта. Проект постоянно поддерживается сообществом независимых программистов и энтузиастов-пользователей.
Распределённые файловые системы Linux делают совместную работу над файлами более быстрой и простой, а также обеспечивают дополнительную гибкость сети. Система имеет встроенную поддержку SSH для удобного управления серверами через терминал — это протокол удалённого управления компьютером. Кроме того, в дистрибутивах Linux есть Bash для чтения и запуска команд, выполнения скриптов, работы с файлами. Этот язык помогает пользователям создавать сценарии для автоматизации различных операций в процессе решения прикладных задач.
Дистрибутивы Linux устанавливаются быстро и просто. Во многих из них есть крупные репозитории программного обеспечения с открытым исходным кодом — например, в Debian GNU. У дистрибутива Fedora тоже есть преимущество — это девятимесячный цикл выпуска, в котором все новые функции включены в последнюю сборку. Пользователи могут обновить версию без переустановки. А Ubuntu совместим с Android Open Source Project, которым часто пользуются разработчики Android.
И это ещё только общие нюансы — дальше в статье мы рассмотрим 5 основных преимуществ Linux для программистов.
1. Понимание связей кода и управление ими
Linux учит пользователей самостоятельно во всём разбираться, а не безоговорочно полагаться на инструменты готовой платформы. При программировании же в других ОС разработчик обычно не задумывается, где находятся заголовочные файлы и внешние библиотеки.
В целом ничего страшного нет в том, чтобы доверять системе и не вникать в эти нюансы. Но всё же разработчику лучше научиться осмысливать процессы и понимать, что вообще происходит. И Linux в этом может здорово ему помочь — в системе всё прозрачно, в любой момент программист может углубиться в недра системы, найти и прочитать соответствующий код.
Такой навык обязательно ему пригодится в ситуациях, когда готовых решений для решения конкретной задачи не окажется. Это относится и к другим ОС. В Linux можно написать код, чтобы его потом запустить в других системах. И важно понимать, по какому принципу он компилируется.
2. Автоматизация и логичность
В Linux есть мощный терминал. С его помощью разработчик может делать всё то, что позволяет ему сделать доступ через ssh на его веб-сервер, при этом у него есть доступ к локальному. В ОС используются принципы автоматизации. Она специально сделана так, чтобы основные приложения запускались из терминала с дополнительными опциями. Есть возможность и полностью извлекать их из терминала.
Разработчики иногда неправильно воспринимают автоматизацию Linux, так как думают, что написание работающей с терминала программы означает прилагать минимум усилий для получения функционирующего приложения. Но это лишь говорит о том, что они неверно понимают принципы работы кода. Программисту кажется, что чем больше строк кода в приложении, тем лучше, в действительности же количество строк кода мало что значит.
Одну и ту же задачу можно решить вручную и затратить час, а можно использовать нужную команду терминала и потерять не более минуты своего времени. Поэтому Linux ещё и помогает значительно сократить время. Здесь главное — понять нестандартный принцип работы механизмов ОС и привыкнуть к ним.
Приведём пример. Нам нужно добавить изображение обложки к 40 файлам PDF.
Наверняка мы будем действовать по такой схеме:
- Запустим документ в PDF-редакторе.
- Откроем главный файл с обложкой.
- Добавим к нему документ PDF.
- Сохраним этот файл как новый PDF-файл.
- Проделаем всё это для всех старых документов PDF.
Времени выполнение такой задачи уйдёт немало, да и к тому же, процесс будет рутинным. А вот в Linux всё значительно упрощается. Требуется лишь предварительно продумать все шаги для достижения поставленной цели.
После некоторых поисков решения мы вскоре наткнёмся на команду pdftk-java и выведем простое решение:
$ pdftk A=cover.pdf B=document_1.pdf \
cat A B \
output doc+cover_1.pdf
Теперь нужно проверить, работает ли команда. Достаточно испробовать её на примере одного документа. После этого нужно будет поизучать утилиты, которые обрабатывают наборы данных.
Здесь мы обнаружим команду parallel:
$ find ~/docs/ -name "*.pdf" | \
parallel pdftk A=cover.pdf B={} \
cat A B \
output {.}.cover.pdf
В результате задача будет решена быстрее и более разумным способом. Итак, вот что здесь главное, — научиться мыслить нестандартно, ведь обработка данных происходит не по привычному принципу линейности.
3. Возможность читать открытый существующий код
Итак, мы уже выяснили, что программисту лучше уметь самому разбираться, где конкретно располагаются заголовочные файлы и библиотеки. Но на этом обучающие способности Linux не исчерпаны — система также помогает разработчикам читать открытой код других программистов. Это здорово помогает специалистам развиваться.
Разработчики могут посмотреть код почти всех приложений, за исключением тех, которые не открыты, но работают на Linux. Такая возможность помогает им со временем всё лучше и лучше разбираться в задачах. Программист может использовать для этого какое-нибудь приложение, которым он постоянно пользуется. Он сможет обнаружить именно тот функционал, который хочет реализовать, и найти исходный код. То есть можно видеть не только сам код, но и как он работает.
Если код закрыт, пользователь может найти документацию для разработчиков, в которой есть примеры кода.
4. Наличие набора слоёв абстракции
Пользователи Linux получают также возможность использовать слои абстракции. Это помогает уменьшить объём работы при решении некоторых задач. В операционной системе Linux три главных уровня, и слои абстракции здесь находятся в середине, между физическим уровнем аппаратного обеспечения и установленным на компьютере ПО.
Эта возможность в ОС дана для того, чтобы большую часть кода, работающую в режиме ядра, не нужно было менять при её запуске на системах с различным аппаратным обеспечением. Слои абстракции скрывают различия в аппаратном обеспечении от основной части ядра ОС.
Есть немало подходящих инструментов в Qt и Java. Также можно использовать стеки наподобие Pulse Audio, Pipewire и gstreamer.
5. Получение прямого доступа к устройствам
При использовании многих ОС часто возникает сложность подключения к периферийным девайсам. Путь лежит через запутанные сети из SDK, библиотек с закрытым кодом. Также приходится сталкиваться с соглашениями о конфиденциальности.
В Linux же универсальный и понятный интерфейс. Например, все камеры разработчик видит в системе в виде устройств /dev/video0, /dev/video1 и так далее. То есть управляющей программе не требуется информация об отдельных камерах — она взаимодействует с ними через стандартный интерфейс. И к единой системе наблюдения можно подключить абсолютные любые устройства.
Запомнить
1 преимущество Linux для программистов — возможность научиться понимать связи кода, управлять ими и решать нестандартные задачи.
2 преимущество — автоматизация и логичность ОС, за счёт чего на выполнение задач уходит меньше времени.
3 преимущество — возможность читать открытый существующий код других разработчиков и таким способом развиваться.
4 преимущество — наборы слоёв абстракции в Linux, с их помощью в разы уменьшается объём работы.
5 преимущество — прямой доступ к периферийным устройствам и максимально простой интерфейс платформы.