- 5 причин, по которым я люблю программировать в Linux
- 1. Логичность Linux
- 2. Возможности по управлению связями кода
- 3. Удобство работы с существующим кодом
- 4. Прямой доступ к периферии
- 5. Хорошо продуманные абстракции
- Итоги
- Давайте разберёмся, какие у Linux преимущества перед Windows
- реклама
- реклама
- Бесплатность операционной системы
- реклама
- Под Линукс очень много бесплатных программ, в том числе аналогов платных
- реклама
- Подключение устройств
- Безопасность
- Надёжность
- Линукс быстрее работает на старых и медленных ПК
- Техподдержка. Сообщество
- Открытый исходный код
- Простота использования
- Заключение
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.
Какой ОС вы пользуетесь при написании программ?
Источник
Давайте разберёмся, какие у Linux преимущества перед Windows
реклама
Эта информация будет полезной для пользователей Windows, которые присматриваются к Linux как альтернативной операционной системе, в качестве полноценной замены продукта от Microsoft.
реклама
Стоит определиться, а зачем вам Линукс? Что вы сможете от него получить? Рассмотрим по порядку основные аргументы, сделав в конце каждого пункта вывод, есть ли в этом у Линукс преимущество перед Windows. Мы здесь не будем устраивать подробный разбор – такая цель не стоит, а рассмотрим каждый из аргументов в целом.
Бесплатность операционной системы
Вообще-то, на многих новых ПК операционная система Windows уже предустановлена и её стоимость, относительно стоимости «железа», не сильно заметна. В случае, когда ОС не установлена или комп не новый, давайте будем реалистами – дело-то не в деньгах, особенно в северо-восточной части нашей планеты.
реклама
Если у вас имеется молоток, то неважно, купили вы его или спёрли и в том и в другом случае он работает одинаково. «Недополученная прибыль», доводит правоторговцев до исступления, но что имеем то имеем – этот пункт пока проблемой не является.
Преимущество – незначительно.
Под Линукс очень много бесплатных программ, в том числе аналогов платных
реклама
Бесплатных программ достаточно и для Windows и их ничуть не меньше, чем для линукса. При этом, более-менее серьёзные линукс-программы обычно есть и для Windows (GIMP, Inkscape, LibreOffice и т.д.) и для их использования переходить на Линукс не обязательно. А во вторых, чтобы всерьёз назвать тот же GIMP аналогом фотошопа, нужно обладать весьма развитым чувством юмора. Примерно то же самое можно сказать и про остальные программы – они сгодятся для неприхотливого пользователя, но далеко не всегда могут стать заменой. Многие, привычные для пользователя Windows программы и игры, на Линукс отсутствуют, а функционал «аналогов» меньше.
Операционная система, это всего лишь инструмент – что-то вроде прокладки, между пользователем и аппаратурой компьютера, позволяющая запустить и использовать нужную программу и у Windows выбор программ, в том числе и бесплатных, намного богаче.
Преимущество – нет.
Подключение устройств
А вот тут у Линукса всё гораздо хуже, чем у Windows. Если драйвера не вшиты в ядро и устройство не распозналось автоматически, то его подключение с вероятностью 99%, выльется в длительное курение интернетов, портянки в командной строке (Божественном Терминале) и не факт, что это благополучно закончится. Да, автоматически распознаваемых устройств в Линукс много. Очень много. Но разумеется не «абсолютно все выпущенные», даже на день релиза ядра (это в принципе невозможно). Драйверами для Линукс озадачиваются очень немногие производители железа, а дожидаться пока их добавят в ядро или репозитарии — удовольствие «на любителя».
В свою очередь, альтернативные драйвера написанные энтузиастами, нередко не обеспечивают весь функционал/производительность и даже, если устройство благополучно распознано, вы можете не получить 100% того, на что оно рассчитано. Особенно, это актуально для не очень стандартных устройств. В Windows это развито намного лучше, даже с нонейм устройствами от «дядюшки Ляо».
Преимущество – нет.
Безопасность
Если вы являетесь постоянным посетителем сайтов с сомнительной репутацией и принципиально не соблюдаете правил элементарной компьютерной безопасности, то да — Линукс это то что вам нужно.С учётом того, что доля Линукса в десктопах около 2%, написанием вирусов под него, пока всерьёз никто не занимается и именно в плане вирусных атак, Линукс безопаснее. Но это никоим образом не касается вашего поведения в интернете и данных, которые вы там публикуете. В этом случае, нужно быть таким же аккуратным и внимательным, как и на Windows. Также, Линукс не избавляет вас от необходимости делать резервные копии важных файлов. Как бы ОС ни была хороша, а от потери данных, например в результате выхода накопителя из строя, вы всё равно не застрахованы.
Наличие на ПК линукса не делает вас неуязвимым – об этом следует помнить.
Преимущество – частично.
Надёжность
С надёжностью у Линукс точно так же как и у Windows, не лучше и не хуже. Кривыми руками можно и страну уничтожить, что уж говорить о программе (пусть даже большой). Настойчивому человеку преграды не страшны и он их в любом случае преодолеет. В Windows пользователь имеет UAC, точки восстановления, безопасный режим, загрузку последней удачной конфигурации и т.д. В Линуксе он имеет пароль, который нужно постоянно вводить и необходимость обладать определёнными знаниями, а в случае краха увидит перед собой пустой экран с командной строкой, воспользовавшись которой сможет легко извлечь данные, запустить необходимую программу или восстановить систему (Для вас ведь это и правда легко и вы знаете что нужно делать, увидев пустой чёрный экран с мигающим курсором, не так ли?). И Линукс точно так же, может вести себя нестабильно, особенно при обновлениях.
Если вы не ковыряете систему, не экспериментируете с софтом и прочими подобными вещами, а выполняемые на компьютере задачи постоянны и в целом, не меняются, то никакой разницы между Линукс и Windows нет. Любая из них может работать годами, и «положить» что ту, что другую, достаточно тяжело. Надёжность и стабильность обоих операционных систем довольно высокая, в этом плане Линукс и Windows равноценны и особых преимуществ друг перед другом не имеют.
Преимущество – нет.
Линукс быстрее работает на старых и медленных ПК
А что именно под этим подразумевается? Линукс быстрее передвигает окна по рабочему столу? Или быстрее их на весь экран разворачивает? А может, если запустить аудиоплеер, музыка станет быстрее играть? Разумеется нет. Если вы решили, что на ПК с Линуксом имеющем 1 Гб ОЗУ и видеокарту на шине AGP, вы поставите гугл Хром и захотев открыть в нём полсотни вкладок – «всё будет летать» и ютуб 1080р 60fpf посмотрите, то вы сильно заблуждаетесь. Чудес не бывает. Сама по себе ОС ничего подобного не делает, всю работу выполняют программы. Быстродействие ПК зависит от его аппаратной составляющей, а операционная система лишь распределяет вычислительные ресурсы между работающими приложениями. И на этом всё. Одна из самых быстрых ОС для ПК – это DOS, потому что она отдаёт все 100% ресурсов ПК одному-единственному приложению, ну так и что из этого?
Запуск «тяжёлых» программ просаживает ПК с любой операционной системой. Переход на Линукс, может заставить вас (именно заставить!) использовать другие программы, а не те к которым вы привыкли и уже они-то, возможно и смогут использовать выделяемые ресурсы более рационально. Если же речь идёт об одних и тех же программах, но для разных ОС, то увеличения скорости ждать не стоит. В том случае, когда ваш компьютер не очень быстрый, а модернизация аппаратной части в планы не входит, то вам лучше подобрать для своих задач менее ресурсоёмкие приложения или изменить стиль работы, не запуская «всё сразу». От перехода на Линукс, ваше железо быстрее работать не станет и работа на медленном ПК, в любой ОС удовольствия не доставит.
Преимущество – нет.
Техподдержка. Сообщество
Там точно такие же люди, как и на форумах посвящённых Windows, они ничуть не злее и не дружелюбнее. Их просто меньше, как и самих форумов, хотя бы в силу меньшей распространённости Линукс. В каком случае решить проблему вероятнее — когда вы можете попросить помощи у ста человек или у двоих? То-то же!
При этом следует учесть, что разнообразие дистрибутивов Линукс, в данном случае, вовсе не плюс. Предложение «поискать другой дистрибутив» не редкость, а способ, который устраняет ошибку в одном дистрибутиве, не всегда подходит для остальных Ну и наоборот соответственно тоже. Огромный выбор самых разных вариантов линукса, «на любой вкус», приводит к отвратительной техподдержке любого, отдельно взятого.
Преимущество – нет.
Открытый исходный код
Вот, один из аргументов с которым носятся как с писанной торбой. Открытый исходный код (ОИК) не панацея «от всего». Для обычного пользователя, что открытый код, что закрытый — китайская грамота, читать и править исходники он всё равно не станет, так как ничего в этом не понимает. То, что код доступен для просмотра означает, что его могут изучать не только порядочные программисты, но и «не очень честные», которые не станут сообщать про ошибки, но смогут ими воспользоваться. А исправляются обнаруженные ошибки далеко не сразу и не всегда, и если авторы программы её забросили, то устранять ошибки, соответственно некому.
ОИК ещё не гарантия, что программа будет идеальной.
Преимущество – частично.
Простота использования
Для начала нужно вспомнить, что идеологом для Линукс, послужила ОС Unix разработанная в конце 60х, начале 70х годов. В те далёкие времена, «когда компьютеры были большими», такие понятия как «интуитивное осваивание» и «простота использования», в качестве хоть сколько-нибудь важных параметров не рассматривались в принципе. Линукс, разработанная в конце 80х «по мотивам» Unix, эти принципы переняла и с упорством, достойным восхищения, продолжает им следовать.
Дело в том, что подавляющее большинство пользователей линукс, это люди увлечённые высокими технологиями (гики), программисты, администраторы различных систем и прочий люд очень хорошо разбирающийся в компьютерах. Они обладают определённым багажом знаний, а командная строка для них – предел технологического развития. Им не нужны интуитивно понятный интерфейс и прочие удобства, которые можно было бы освоить «методом тыка». На них это и рассчитано.
Впрочем, ситуация с этим уже несколько улучшилась, а некоторые вещи, давно имеющиеся в Линукс «по умолчанию» (например, альтернативные графические оболочки или виртуальные рабочие столы), в Windows до последнего времени, могли быть реализованы только сторонними программами. Вообще же, Линукс имеет совершенно другую идеологию и структуру. Из-за этого, некоторые привычки, которые у пользователей Windows уже закрепились на уровне подсознательных рефлексов, будут сильно осложнять изучение нового.
Если у вас есть знакомый Гуру, который всё установит, настроит и которому, вы имеете возможность регулярно выносить мозг, то почему бы и нет? Если же это не так и осваивать глубины Линукс планируется самостоятельно, то запаситесь успокоительными препаратами – на всякий «пожарный». По простоте использования и освоения – это не к Линукс, она может достаточно качественно потрепать вам нервы.
Преимущество — нет.
Заключение
Окончательный выбор конечно же за вами, но предварительные выводы уже можно сделать — слухи, которые так любят распускать о «явных преимуществах линукса», сильно преувеличены. Рассказывая о достоинствах Линукс авторы, как правило, «забывают» рассказать о недостатках, передёргивают факты или откровенно вводят в заблуждение и было бы неплохо развеять, хотя бы часть напущенного тумана.
Переход на Линукс это потери. Вам придётся смириться с её ограниченностью и архаичностью, научиться самостоятельно решать проблемы, повышать свой уровень знаний (вы же любили ходить в школу?), а от некоторых привычных вещей и вовсе отказаться. Если вы к этому готовы и сложности вас не пугают – добро пожаловать в мир Линукс!
Источник