Для чего учить линукс

Осваиваем Linux за три недели

Идея вводного курса по работе с Linux возникла у нас с коллегами довольно давно. Я с 2011 года занимаюсь биоинформатикой в Лаборатории алгоритмической биологии СПбАУ РАН (тут и тут мой напарник писал про то, чем мы занимаемся). Сразу нужно сказать, что работа биоинформатика без Linux практически невозможна, поскольку большинство биоинформатических программ созданы именно под эту операционную систему и работают только на ней.

В силу того, что это область на стыке наук, мы постоянно общаемся с биологами. Биологам же сейчас приходится работать с очень большими объемами данных, поэтому умение использовать Linux, оптимальную для подобных задач операционную систему, становится необходимым навыком. На самом деле, речь не только об умении обращаться с Linux, а в целом о компьютерной грамотности: какие существуют правила работы на сервере, как загружать и эффективно хранить файлы с данными, какие программы запускать для их обработки и как это сделать и т.д. — все те вещи, которые как упрощают и ускоряют вашу работу, так и значительно облегчают совместную деятельность с коллегам. Несмотря на то, что разобраться с Linux можно и самостоятельно, почитав умные книжки и сайты, для людей из не технической среды это часто вызывает определенные сложности и многие сдаются на начальных этапах освоения этой ОС (например, на знакомстве с командной строкой).

На основе нашего опыта я и мой коллега Андрей Пржибельский (@andrewprzh) изначально собирались провести несколько занятий для биологов по компьютерной грамотности. А потом эта идея выросла в трехнедельный открытый онлайн-курс (MOOC) Института биоинформатики на русском языке, который позже был сужен до именно введения в Linux, как отправной точки, — поскольку вместить все в три недели оказалось очень и очень трудно. Курс уже начался и оказался достаточно популярен (на данный момент на него записалось более пяти тысяч человек), но первый дедлайн по заданиям — 24 ноября, поэтому еще можно присоединиться без потери баллов или просто изучать курс в свободном режиме (все материалы останутся открытыми).

Про саму подготовку первого в нашей жизни онлайн-курса, если сообществу интересно, мы напишем отдельный пост — это совсем не так просто и быстро, как может показаться на первый взгляд.

Но сначала хотелось бы остановиться на ответах на вопросы, которые нам задавали чаще всего. При подготовке курса мы общались с самыми разными людьми и столкнулись с тем, что многие совсем не понимают, где используется Linux, и не догадывались, что система может быть им полезна. Итак:

Зачем сейчас нужно уметь обращаться с Linux?

Многие не замечают, но Linux уже вокруг нас. Все Android устройства работают на Linux, большинства серверов в Интернете также используют эту операционную систему и есть множество других примеров. Конечно, можно продолжать пользоваться всеми этими вещами и не зная Linux, но освоив основы этой системы, можно лучше понять поведение окружающих вас вещей. Кроме того, при работе с большим объемом данных, Linux просто необходим, ведь большинство сложных вычислений над огромными массивами данных выполняются именно на компьютерах под управлением Linux. И это не случайный выбор: большинство вычислительных задач выполняются на Linux гораздо быстрее, чем на Windows или Mac OS X.

Как Linux связан с освоением других дисциплин?

Огромная доля научного ПО, особенно программ для обработки больших данных (например, в области биоинформатики) разработана специально под Linux. Это значит, что эти приложения просто не могут быть запущены под Windows или Mac OS X. Так что если вы не умеете работать в Linux, то автоматически лишаетесь возможности использовать самые современные научные наработки. Кроме того, изучая Linux, вы лучше понимаете как работает компьютер, ведь вы сможете отдавать ему команды практически напрямую.

Почему для этого нужен отдельный курс?

У Linux очень много возможностей, которые полезно знать и, конечно же, уметь ими воспользоваться в нужный момент. К счастью, современные версии Linux гораздо более дружелюбны к пользователям, чем их собратья еще 5-6 лет назад. Сейчас можно не мучиться часами и даже днями ночами после установки системы, чтобы настроить себе выход в Интернет, печать на принтере, раскладки клавиатуры и так далее. Любой желающий сможет начать использовать Linux так же, как он использовал Windows или Mac OS X уже после минимального знакомства с этой системой, которое будет исчисляться минутами. Однако возможности Linux гораздо шире «повседневного» использования. Рассказать обо всей функциональности Linux просто невозможно даже за трехнедельный курс. Однако мы стараемся научить слушателей использовать большинство базовых возможностей Linux, а самое главное, надеемся, что прошедшие курс смогут успешно продолжить освоение Linux самостоятельно.

Читайте также:  Windows create process from driver

Что в Linux интересного?

Для нас Linux похож на очень интересную книгу, которую вы прочитали и с удовольствием рекомендуете своим друзьям и даже чувствуете зависть от того, что у них знакомство с этим произведением еще впереди. Единственная разница в том, что хоть мы и знакомы с Linux уже почти по 10 лет, не можем сказать, что «прочитали» его целиком. В нем постоянно можно найти что-то новое для себя, узнать что многие вещи, которые ты привык делать одним способом, можно сделать совершенно по-другому — гораздо проще и быстрее.

Чем больше знакомишься с Linux, тем он становится интереснее. И от первоначального желания «поскорее бы выключить и перезагрузиться в родную и знакомую Windows (Mac OS X)» вы вскоре переходите в состояние «хм, а тут не так и плохо» и еще немного позже в «как я вообще мог работать в этой Windows?!». А еще изучая Linux вы порою можете почувствовать себя немного хакером или героем фильма про программистов =)

Наш курс состоит из краткого обзора основных возможностей Linux, однако для начинающих пользователей этого должно быть вполне достаточно, чтобы заинтересоваться Linux и немного погрузиться в его философию. Например, большую часть курса мы будем проводить за работой в терминале, так что у новичков должно возникнуть и привыкание и понимание преимуществ такого подхода к управлению компьютером. Для более продвинутых пользователей могут представлять интерес отдельные занятия курса — например, про работу с удаленным сервером или программирование на языке bash. Полная программа онлайн-курса доступна здесь.

Как проверять решение задач на курсе по Linux? Это вообще возможно?

Ответ на этот вопрос был нетривиальным — мы долго думали, как проверять задания (например, что пользователь установил Linux себе на компьютер или отредактировал файл в определенном редакторе) и как придумать интересные задачи, чтобы действительно показать реальную работу с Linux. Для каких-то тем получились довольно любопытные подходы. Например, специально для курса был добавлен новый тип задач на платформе Stepic — подключение к удалённому серверу (и открытие «терминала») прямо в окне браузера — по отзывам первых пользователей, им понравилось. Конечно, в первый раз не обошлось без шероховатостей, но, в целом, всё работает довольно хорошо. Про техническую сторону этого вопроса скоро появится отдельный пост от разработчиков. Пример такого задания (для просмотра вживую можно записаться на курс):

Нужно сказать, что не все пользователи воспринимали задачи с юмором. Например, мы проверяли навык установки программ на Linux на примере программы VLC. Нужно было установить ее в свою систему одним из рассказанных способов, потом открыть справку о программе, найти фамилию первого автора и ввести ее в форму для проверки. Каких только комментариев мы не наслушались про это задание 🙂 А ошибались люди в основном в том, что вводили имя и фамилию, или только имя, или часть фамилии (а она там двойная, через дефис!). В общем, если решитесь проходить курс, то читайте условия задач внимательнее и это сэкономит много времени и нервов! Правда с тем же автором было замечание и по делу, оказалось что в старых версиях VLC он идет аж на 14 месте, так что добавили в проверку еще одного автора, который первый среди «старого» списка (и, кстати, третий в «новом»).

А почему всё-таки Linux так хорош?

Вопрос, конечно, неоднозначный. На мой взгляд одним из ключевых преимуществ Linux перед Windows или Mac OS X является то, что эта операционная система разрабатывается огромным сообществом программистов по всему миру, а не в двух, пусть и очень больших компаниях (Microsoft и Apple). Исходный код этой системы открыт, и каждый может познакомится с внутренним устройством Linux или поучаствовать в его развитии. Разработчики развивают его не только для пользователей-покупателей, но и для самих себя, с чем и связан такой большой прогресс в развитии и многие другие его преимущества. В качестве «бонусов» для обычных пользователей: Linux бесплатный, на Linux практически нет вирусов (а сами разработчики вирусов зачастую сидят под Linux!), существую огромное число версий этой системы и каждый может выбрать понравившуюся именно ему!

И напоследок хотелось бы рассказать о своем первом знакомстве с Linux именно в рабочем процессе (до этого был еще отдельный курс по учебе, но из него я не очень много вынес, к сожалению). Этот случай меня так впечатлил, что помню его до сих пор. Когда я работал на кафедре в Политехе на 3-ем курсе мне понадобилось запускать одну программу для обработки данных. Программа была написана на С++, а работали мы тогда в Windows XP. Запусков нужно было сделать много, были они довольно однотипные и занимали обычно пару минут. За это время ничего другого сделать на компьютере было нельзя — он полностью «подвисал», так что можно было поболтать с другими сотрудниками или просто прогуляться по кабинету. Примерно через пару недель таких запусков, мой научный руководитель посоветовал попробовать мне сделать всё тоже самое, но не в Windows, а в Linux. Я тогда подумал «ну какая разница», но так руководителя уважал, то программу перекомпилировал и его совет исполнил. Какового же было моё удивление, когда я запустил ту же самую программу на тех же самых данных и получил результат (естественно, точно такой же) за несколько секунд! Я даже со стула встать не успел, не то что прогуляться…

Читайте также:  Не запускается загрузчик линукс

Кстати, помимо нашего русскоязычного онлайн-курса по Linux, существует хороший англоязычный вводный курс от Linux Foundation, про который уже писали на хабре. Судя по сайту, он снова начнется 5 января 2015.

Если вы знаете ещё интересные онлайн-курсы или обучающие материалы по азам Linux, будем рады увидеть ссылки на них в комментариях.

Источник

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-файлам обложки, можно решить, что приемлемая последовательность действий будет выглядеть так:

  1. Открыть PDF-файл в редакторе.
  2. Открыть файл с обложкой.
  3. Присоединить PDF-файл к файлу с обложкой.
  4. Сохранить полученный документ в виде нового PDF-файла.
  5. Повторить эти действия при обработке остальных старых файлов (а вот новые файлы, полученные из старых, обрабатывать уже не нужно).

Эта последовательность действий вполне согласуется со здравым смыслом, и хотя в ней много неприятных повторений, она позволяет достичь цели. В Linux, правда, можно организовать работу гораздо разумнее. Процесс размышлений над этой задачей, учитывающий возможности Linux, похож на процесс размышлений над «ручным» способом решения задачи. А именно, всё начинается с поиска последовательности действий, необходимых для получения нужного результата. Проведя некоторые изыскания, можно узнать о команде pdftk-java , а потом выйти на простое решение:

После того, как удастся убедиться в работоспособности команды при обработке одного документа, надо будет вложить некоторое время в изучение утилит для обработки наборов данных. В ходе изучения можно обнаружить команду parallel :

Тут представлен подход к размышлениям над задачами, несколько отличающийся от обычного, так как «код», который мы пишем, обрабатывает данные не так, как мы привыкли. Обычно мы ограничены представлениями о последовательной ручной обработке данных. Но выход за границы старых представлений важен для того чтобы позже писать соответствующий код. А побочным полезным эффектом такого «выхода» является получение возможности писать более эффективные программы, чем раньше.

Читайте также:  Linux raid read only

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.

Какой ОС вы пользуетесь при написании программ?

Источник

Оцените статью