Linux, Windows чи macOS? Сеньйор-розробники та інженери — про улюблені операційні системи

Що краще для розробника та інженера — Linux, Windows чи macOS? Це питання хвилює багатьох технічних спеціалістів, зокрема початківців у IT-сфері. Ми запитали фахівців Senior-рівня про переваги та недоліки ОС, з якими вони працюють, аби скласти об’єктивну картину щодо причин вибору айтівцями тих чи інших операційних систем.

Linux: гнучке налаштування

Андрій Шевченко, Linux Driver Engineer в Intel Corporation

ОС Linux була розроблена як експеримент і дипломна робота, але зросла до гіганта індустрії так, що навіть Microsoft випустила свій редактор коду Visual Studio Code під Linux. Але не можна забувати: Linux завжди дотримувався ідей Unix, а під Unix і створили основні засоби розробки. Тому і в Unix, і в Linux доступні десятки рідних засобів компіляції, інтерпретації та налагодження для різних мов програмування. Ба більше, історія Web і сучасного інтернету базувалася на серверному програмному забезпеченні, яке історично походило з Unix, а тепер через більшу доступність — Linux.

Заглиблюючись у ядро ​​операційної системи, можна виділити кілька важливих моментів для технічних фахівців. Так, мережева підсистема, крім традиційних дата-центрів, та її гнучке налаштування можуть бути корисними на біржових майданчиках, де ведуться так звані високошвидкісні торги. Система віртуалізації та її тонке конфігурування, зрозуміло, важливі в хмарних рішеннях. Можливості описувати обладнання в межах ACPI або Device Tree корисні для розробників IoT та інших вбудованих рішень. Не можна забувати і про увагу до Linux з боку академічного сектора, оскільки майже кожен студент може поставити свій експеримент або втілити нову ідею в галузі Computer Science (і не тільки) за допомогою цієї ОС.

Опанування Linux новачками багато в чому залежить від вивчення нюансів як самої ОС, так і її нутрощів, наприклад ядра. Якщо, скажімо, людина не збирається заглиблюватися в деталі й основна робота проходитиме на рівні використання високорівневих утиліт та програмних пакетів, Ubuntu — чудовий вибір!

Якщо ж ми бачимо перед собою допитливого фахівця, який хоче дізнатися набагато більше про систему, краще дистрибутиви «з людським обличчям» не чіпати. Там усе далеке від реальності. З іншого боку, я не закликаю починати все компілювати самим (підхід Gentoo). Я б виділив компромісний варіант у вигляді Arch Linux — його і збирати «з нуля» не потрібно, але налаштовувати все ж таки доведеться самому через командний рядок. На мою думку, ідеально для девопсів.

Цікавий факт: WSL2 цілком прийнятний варіант для тих, хто не бачив раніше нічого, крім Windows, але хоче спробувати Unix-подібне оточення.

Окремо скажу про драйвери: основна особливість написання драйверів під Linux — це тримати руку на пульсі змін внутрішніх API ядра. Драйвер, який місяцями не бачить біле світло, «протухає». А це сильно збільшує навантаження на тих, хто перевіряє код і є мейнтейнером відповідної підсистеми ядра. Насправді я все чекаю на проєкт, який сам писатиме драйвер за описом з Datasheet за допомогою штучного інтелекту. Тому що більшість драйверів не є чимось унікальним.

Насамперед я ціную Linux за відкритість. У 1998 році, коли я вперше з ним зіткнувся, мене також вразила велика кількість корисної та цікавої інформації, що видається ядром під час завантаження. Все-таки я захоплювався електронікою, багато часу провів і за «Спектрумами», і за PC саме як хардверник. Ось цією близькістю до «заліза» він і позитивно відрізняється від Windows і macOS, хоча в їхніх сучасних інтерфейсах можна знайти всі технічні деталі, якщо багато клацати мишкою. Linux однозначно програє їм, оскільки не має єдиного стилю і продуманості елементів інтерфейсу. Саме вищезгадана Ubuntu прагне цього, але проблема у тому, що це «зоопарк» з мільйона бібліотек, зокрема і графічних, ПЗ.

До того ж є проблема доступності ПЗ: Windows — світ ігор; macOS — світ композиторів, дизайнерів, художників. Для них замало програмного забезпечення, що працює на Linux. Якщо перше якось компенсується Steam, то про налаштування та роботу в DAW (музиканти зрозуміють, про що я) можна забути, навіть з урахуванням наявних програм.

Михайло Сторчеус, DevOps Evangelist

Взагалі я гік зі стажем — перепробував купу дистрибутивів і навіть писав свої :) Linux допомагає точніше зрозуміти роботу інфраструктури та різних мов програмування, а також для нього доступний величезний набір утиліт та програм, щоб не вигадувати свої «милиці» (хоча одне одному не заважає — багато хто не знає про наявність вже готових рішень). Також зараз майже скрізь використовується Docker, а в нього під капотом ядро ​​Linux.

З мого досвіду, Linux відмінно підходить для розробників драйверів, Embedded розробки, розробників під Android, мережевих інженерів та фахівців з інформаційної безпеки.

DevOps та SRE обов’язково треба вміти користуватися Linux. Для початку — Ubuntu або Manjaro, але також колупати щось веселіше: Arch, Gentoo (це моє кохання), Debian, NixOS (моє друге кохання). Потрібно знати їхні відмінності та особливості. Потім це знадобиться. Мене ці знання ще жодного разу не підвели.

Мені дуже подобається Linux за те, що я можу налаштувати під себе абсолютно все. Зараз під цю ОС навіть є Steam, а компанія Valve випустила окрему операційну систему SteamOS на базі Linux.

Windows я не перетравлюю, на мій смак — все в ній працює не так, як слід. Використовую, щоб кілька старих ігор запустити, і іноді доводиться стикатися з цією ОС по роботі.

macOS останнім часом використовую як основну систему: якісний софт, зручна техніка, але є свої нюанси та проблеми. Коли потрібно терміново щось зробити на Linux, то без проблем використовую на macOS Docker і Vagrant локально або віддалені сервери під Linux.

Сам десктопний Linux у мене слугує лише для роботи. Там немає ні месенджерів, ні пошти — нічого, що може заважати та відволікати. Тільки робота та задоволення :)

Windows: user-friendly інтерфейс і багато сумісного ПЗ

Андрій Губський, Software Architect в video intelligence AG

Windows — це зручна і звична система, яка при цьому має весь спектр необхідних для програмістів можливостей. Кількість IDE та засобів розробки для Windows наразі найширший з усіх ОС, тому незалежно від того, чи йдеться про розробку для .NET, написання коду на Python або С++, фахівець завжди може розраховувати на те, що йому будуть доступні всі необхідні звичні інструменти.

Сучасні версії Windows можуть ефективно використовувати різні спеціалісти — від розробників до дизайнерів. Єдине обмеження — це розробка під macOS/iOS, де є жорстка прив’язка до обладнання та ОС.

За час своєї кар’єри мені довелося працювати з різними операційними системами, іноді дуже рідкісними та специфічними. Можу впевнено сказати, що і з погляду користувача, і з погляду розробника, Windows сьогодні, як і двадцять років тому, залишається найбільш зручною. І назвати її менш гнучкою за Linux не можна. Варто враховувати, що з Windows 10 з’явилася підтримка Windows Subsystem for Linux. Простіше кажучи, WSL дає змогу прозоро вбудувати можливості ОС Linux у Windows, таким чином розробнику стають доступні можливості одразу двох операційних систем без потреби залишати звичне робоче оточення.

До того ж IDE від JetBrains дозволяє розробнику мати практично ідентичний інструментарій і на Windows, і на macOS, і на Linux. Практично всі інструменти розробника сьогодні кросплатформенні.

Безперечно, сильна сторона Windows — це принципи побудови її інтерфейсу, які за роки стали вже практично стандартом для операційних систем. Не можна сказати, що решта ОС однозначно у чомусь програють — з кожним новим випуском вони запозичують можливості одна в одної. Але що виділяє Windows — це системний підхід до реалізації інтерфейсу.

Владислав Медведовський, VP R&D в IConduct

Якщо казати про .NET або іншу розробку під Windows, то в цю операційну систему добре інтегровані IDE, SDK, рантайм — усе можна поставити в один клік і працювати одразу після інсталяції без додаткових налаштувань.

Поза контекстом .NET-розробки останнім часом Windows рухається у бік розширення можливостей для автоматизації та інтеграції з Linux. Наприклад, Powershell останніх версій та WSL, яка транслює Linux-специфічні виклики з програм у Windows API виклики там, де це можливо. Тобто тепер немає великої різниці у тому, яку ОС використовувати для розробки. Якщо це не щось специфічне, то можна обрати будь-яку ОС до вподоби — розробникам зазвичай не треба створювати багато скриптів для автоматизації часто виконуваних задач.

Windows насамперед буде зручною для спеціалістів, які щось для неї розробляють. І це необов’язково .NET-розробники. Також згадаємо про спеціалістів технічної підтримки або нетехнічних спеціалістів на кшталт маркетологів/SEO тощо, для яких Windows зазвичай просто більш звичний/зручний порівняно з Linux/macOS, оскільки там є стандартні програми (наприклад, MS Office).

Розробнику зазвичай не потрібна велика гнучкість операційної системи, якщо ми не кажемо про дуже специфічні сценарії. Переважно фахівець або працює у вже налаштованому Docker-середовищі, або в IDE на вибір. IDE зазвичай підтримує всі необхідні сценарії. Якщо дуже хочеться щось запустити зі світу Linux, можна скористатись WSL. Я жодного разу не стикався з чимось незручним на Windows.

Спеціалістам Trainee та Junior рівнів раджу поменше часу витрачати на холівари Windows vs others, а спробувати їх та зробити власний висновок, що зручніше. Наприклад, я сам так і не зміг збагнути повсюдного захоплення macOS. Як на мене, вона незручна, а деякі банальні речі — приміром, встановлення програм, — зроблені дивно.

Останнім часом у Windows з’являється все більша кількість можливостей для автоматизації та підтримки скриптингу плюс WSL. Серед переваг цієї ОС варто згадати ширшу підтримку різноманітного «заліза» — наприклад, у мене досі працює сканер, якому вже 15 років (драйвери мають той самий вік).

З недоліків для повсякденного користування насправді важко щось згадати. Мені здається, через звичність і зручність Windows виграє в інших ОС.

macOS: якісна підтримка та інструменти для power users

Дмитро Скороход, Senior iOS Software Engineer

Я програмував на macOS останні 10 років. І в далекому 2012 році я не вибирав, на чому працювати. Тоді вивчав C++, програмував на Windows, проходив співбесіду на C++, а вже у тренінг-центрі компанії СМК нас ознайомили з macOS та перевчили на Objective-C. За мною не стояла черга з компаній, і я пішов на ту роботу, на яку мене взяли. А потім завдяки здобутому досвіду я знову і знову опинявся на позиціях розробника Objective-C та Swift.

Для iOS-розробника, що пише на Objective-C та Swift, серйозної альтернативи macOS просто немає. Для спеціалістів, які працюють з іншими стеками, це може бути питанням їхнього свідомого вибору. Наприклад, для Android-розробників.

Я не впевнений, що заради macOS варто переплачувати за техніку Apple. Останнім часом думаю про те, щоб придбати собі недорогий телефон під Android. Доки мені служитиме мій iMac, я користуватимусь macOS, однак я не можу дати гарантій, що моїм наступним комп’ютером не стане потужна і недорога машина під іншою операційною системою. Інструментів, доступних на macOS, мені було цілком достатньо як iOS-розробнику, оскільки iOS-розробка є органічною складовою екосистеми Apple. До того ж в основі macOS — Unix, як і у Linux. Тому я не сказав би, що мені не вистачало чогось, що є у Linux. Але ціни на техніку Apple вважаю невиправданими.

Спеціалістам, що починають працювати на macOS, раджу добре опанувати Unix Shell, інтерфейс командного рядка в Unix-подібних операційних системах. На мою думку, ця складова macOS найменш user friendly, але я б радив спочатку «з’їсти цю жабу», а вже потім переходити до опанування всього, що є в графічному користувацькому інтерфейсі. Гарні знання shell завжди справляють враження на роботодавців і не менше допомагають у роботі.

Для мене перевага macOS полягає в хорошій підтримці від компанії Apple. Якщо щось іде не так, я завжди можу їм написати. Не завжди це сприятиме розвʼязанню моєї проблеми, але я знаю, що, доки користуюся macOS, принаймні маю з ким поспілкуватись, коли сумно і самотньо.

Павло Дмитрієв, Senior iOS Developer в Luxury Escapes

Як iOS-розробник я не маю альтернативи в питанні ОС — Mac та Xcode створені один для одного, і будь-які намагання зробити інакше — це суцільний біль.

Але ще за часів активної розробки на Python, з 2011 року, я вже використовував MacBook і вважаю, що Mac — це найкращий вибір для розробки.

Втім, Windows теж не стоїть на місці, і Microsoft зараз має вигляд дуже developer-friendly компанії, тому я майже впевнений, що це відбивається і на їхній ОС.

Спробую розповісти про переваги macOS. По-перше, це зручна десктопна операційна система. Тобто тут немає якихось проблем з повсякденними задачами: інтернет, офісні програми, відео тощо. В інтернеті інколи з’являються статті на кшталт «Я намагався перейти на macOS, але відкриття файлів через Cmd+Down мені в цьому завадило», але насправді після місяця-двох звикання усе стає на свої місця. До деяких речей на кшталт Quick View при натисканні пробілу я вже звик настільки, що не уявляю життя без цього.

По-друге, це все ж таки Unix, тобто тут є усі потрібні та звичні речі від компіляторів до шелів, які можна налаштовувати. Якщо до цього додати дружній менеджер пакетів у вигляді Homebrew — взагалі зникають проблеми типу «встановити бібліотеку Х та додати Python пакет для неї».

По-третє, трохи парадоксально, але Apple створює багато інструментів для power users, якими майже ніхто не користується. Колись це був Automator і можливість усе заскриптувати мовою сценаріїв AppleScript (там смішний синтаксис, до речі). Зараз це Shortcuts, які дозволяють швидко зробити багато чого. Але справді мало хто у це пірнає.

По-четверте, на macOS є чимало крутих інструментів, які покращують життя: BetterTouchTool, Alfred, iTerm та багато інших.

Тож думаю, що macOS є гарним вибором для будь-яких розробників, які не прив’язані до платформо-специфічних речей на кшталт .NET чи розробки драйверів.

Щодо незручностей, то я, мабуть, звик і не пригадую жодного випадку, коли б мені забракло «гнучкості» операційної системи. Тож єдиний нюанс — це необхідність купувати «залізо» від самої Apple. Вони майже не роблять бюджетних моделей, тому інвестувати доводиться доволі значну суму. Але і якість у середньому в них краща. До того ж з появою Apple Silicon навіть моделі початкового рівня стали доволі приємними у роботі, що трохи знижує «поріг входження».

Похожие статьи:
С 29 по 31 июля приглашаем всех в Одессу на 7-ю конференцию WebCamp, которая посвящена технологиям веб-разработки, управлению проектами...
Привет! Меня зовут Александр, я Scrum-мастер в Trionika. Хочу поделиться своими личными наблюдениями о том, как изменилась эффективность...
Head of Technological R&D MacPaw Сергій Кривоблоцький на волонтерській основі розробив застосунок «Баночки» для iOS та macOS, що дозволяє...
Троє співробітників Reface анонімно повідомили DOU, що в компанії масове скорочення. Імовірно, звільняють одразу...
Генштаб заявляє, що на Донецькому і Таврійському напрямках ворог готовий до наступальних дій, тим часом...
Яндекс.Метрика