Articles

Should Programmers Learn Linux?

Stop me if you’ve heard this one: „Programiści używają tylko Linuksa. Komputery PC i Mac są dla noobów!”

Tak, nie.

Linux jest narzędziem. Windows jest narzędziem. MacOS jest również narzędziem. Każdy z nich jest systemem operacyjnym (OS), którego potrzebujesz, aby komputer był użyteczny, i każdy z nich ma swoje wady i zalety. Problem polega na tym, że tak jak wiele innych narzędzi, te popularne OS-y mają swoje plemiona. Jeśli Windows jest DC Comics i macOS jest Marvel, to Linux jest Dark Horse.

Uh, What Is Linux, Anyway?

Zacznijmy od początku. (Jest to jedno z moich ulubionych miejsc do rozpoczęcia.) Jeśli pytasz, czy powinieneś nauczyć się Linuksa, prawdopodobnie przydałoby ci się szybkie wprowadzenie do tego, czym jest Linux. Podczas gdy Windows i macOS są indywidualnymi systemami operacyjnymi, które Microsoft i Apple sprzedają i wspierają, to czym jest (i czym nie jest) Linux jest trochę bardziej skomplikowane.

Way back w 1991 roku, programista o imieniu Linus Torvalds wydał nowe jądro, które nazwał Linux. Jądro jest, z grubsza rzecz biorąc, programem komputerowym, który siedzi w środku systemu operacyjnego i kontroluje interakcje między sprzętem a oprogramowaniem. Oparł go na Uniksie i innym systemie operacyjnym podobnym do Uniksa, zwanym Minix. Jak widać, nazwy rymujące się z Unixem były już na porządku dziennym, więc jądro Torvalda całkiem nieźle nazwało się samo.

Jądro szybko zyskało popularność, a kolejni programiści przyczynili się do jego projektu. Wkrótce wokół jądra wyrósł nowy system operacyjny, zwany także Linuksem.

Ale otwarte źródło ma otwarte źródło, i nie ma – i nigdy nie będzie – tylko jednej wersji Linuksa. Linux jest rodziną systemów operacyjnych, zwykle określanych jako dystrybucje lub distro. Dystrybucja zawiera jądro Linuksa i resztę oprogramowania potrzebnego do funkcjonowania komputera. Strona DistroWatch wymienia 100 dystrybucji, ale zatrzymuje się na niej tylko dlatego, że 100 to ładna, okrągła liczba.

developing an understanding of any major distribution gives you a significant set of skills that you can map over to any one of them.

Najpopularniejsze z nich to Debian, Red Hat, Ubuntu i Fedora. Ubuntu jest właściwie oparte na Debianie, a Fedora na Red Hat. Oczywiście jest też CentOS, który również bazuje na Red Hat, i Mint, który bazuje na Ubuntu… Jak widać, jest to skomplikowane. Bitwa o to, które distro jest najlepsze generuje tyle samo ciepła, co i mniej światła niż bitwy o systemy operacyjne czy komiksy.

Wróćmy więc do pierwotnego pytania. Kiedy pytasz „Czy programiści powinni uczyć się Linuksa?”, jedną z możliwych odpowiedzi jest „Którego?”

Ale to nie jest zbyt pomocna odpowiedź, prawda?

So, Should I Learn Linux?

Cóż, to zależy. Jakie są twoje cele?

To jest pytanie, które zawsze powinieneś mieć na uwadze, gdy natkniesz się na narzędzie lub zalecenie, aby zacząć używać jednego z nich. Czego musisz się nauczyć i czy poświęcenie czasu na to pomoże Ci to osiągnąć?

What are your goals? That's a question you should always keep in mind you come across a tool or a recommendation to start using one. What do you need to learn, and will spending time on this help you get there?

Linux jest najczęściej używanym systemem operacyjnym dla serwerów. Prawie wszystkie strony internetowe, które odwiedzasz każdego dnia działają pod Linuksem, podobnie jak serwery, które stoją za nimi, aby uruchomić aplikacje „back-end”, takie jak bazy danych. Na przykład banki intensywnie wykorzystują Linuksa do zarządzania transakcjami finansowymi. Większość serwerów baz danych również działa pod Linuksem.

Linux jest bardzo popularny na platformach wbudowanych. Raspbian jest popularną dystrybucją dla Raspberry Pi. System operacyjny Android firmy Google jest pochodną Linuksa, a wiele routerów i przełączników sieciowych również go używa.

Więc, jeśli twoim celem jest pisanie oprogramowania serwerowego, kodu Internetu rzeczy (IoT), lub oprogramowania dla systemów wbudowanych, poznanie Linuksa ułatwi ci życie.

Jeśli twoim marzeniem jest pisanie aplikacji dla iPhone’a lub pięknych stron internetowych, nauka Linuksa może nie być najlepszym sposobem na spędzenie czasu w tej chwili.

What Should I Learn About Linux?

Następne pytanie brzmi: Co oznacza „nauka Linuksa”?

Cóż, to zależy. (Przepraszam, nie mogłem się oprzeć.)

Jeśli zamierzasz pisać oprogramowanie serwerowe, które działa na Linuksie, musi ono zostać wdrożone na systemy, które go obsługują. W zależności od tego gdzie pracujesz, może to oznaczać przekazanie kodu do organizacji DevOps, lub może to oznaczać zrobienie tego samemu. Tak czy inaczej, możesz sprawić, że twoje życie, nie wspominając o życiu twoich współpracowników, stanie się o wiele przyjemniejsze, jeśli będziesz się dobrze czuł z wierszem poleceń i sposobem organizacji plików w systemie Linux.

Get comfortable with the command line and how files are organized on a Linux system. These skills are transferable regardless of which distribution you learn on and which one your future employer uses.

Te umiejętności są przenośne niezależnie od tego, na jakiej dystrybucji się uczysz i jakiej używa twój przyszły pracodawca. Podczas gdy istnieją pewne (często irytujące) różnice między nimi, rozwijanie zrozumienia każdej z głównych dystrybucji daje ci znaczący zestaw umiejętności, które możesz wykorzystać w każdej z nich. Da ci to również przewagę nad programistami, którzy czują się komfortowo w świecie swojego ulubionego IDE.

Jeśli jesteś zainteresowany tworzeniem oprogramowania dla robotyki lub systemów wbudowanych, musisz zapoznać się z Linuksem na poziomie jądra. Dla Ciebie, „nauka Linuksa” oznacza naukę jądra Linuksa.

W tym przypadku, ponownie, dystrybucja, którą wybierzesz jest mniej ważna niż po prostu zamoczenie stóp. Podczas gdy nie wszystkie dystrybucje aktualizują wersje jądra w tym samym czasie (a niektóre są komicznie powolne), jądro Linuksa jest jądrem Linuksa. Wybierz dystrybucję i zacznij grać.

How Do I Do That?

Jeśli jesteś zainteresowany w robotyce lub IoT, równie dobrze możesz po prostu dostać Raspberry Pi i dostać się do niego. Będziesz chciał, aby upewnić się, że masz mysz USB i monitor, aby podłączyć go do. Reszta jest całkiem prosta.

Jeśli jesteś zainteresowany oprogramowaniem serwerowym, wybierz dystrybucję i zainstaluj ją.

Która dystrybucja jest naprawdę kwestią wyboru. Niektórzy uważają Ubuntu za najbardziej przyjazną dla początkujących. Inni uważają, że Linux Mint jest nieco lepszy. Dobrą wiadomością jest to, że są one darmowe, więc możesz spróbować ich wszystkich!

Najmniej kosztowną opcją instalacji Linuksa i kopania drzwi oraz trzaskania oponami jest zainstalowanie oprogramowania maszyny wirtualnej na komputerze, który już posiadasz. VirtualBox jest darmowy i działa na Windows i macOS. To nawet poprowadzi Cię na instalacji Linuksa po ustawieniu go.

Gdy masz zainstalowanego Linuksa, zacznij grać! Piękno gry z Raspberry Pi lub maszyny wirtualnej jest to, że zawsze można zacząć od zera, jeśli wysadzić coś w powietrze. Przekonasz się, że bardzo trudno jest zepsuć system Linux.

So, Should Programmers Learn Linux?

Jest duża szansa, że zetkniesz się z Linuksem gdzieś w swojej karierze programisty. Zapoznanie się z nim zawczasu może dać ci przewagę nad innymi programistami, którzy go nie znają. Zdobądź sobie kopię i zacznij się nim bawić już teraz.

Ten post został napisany przez Erica Goebelbecker. Eric pracuje na rynkach finansowych w Nowym Jorku od 25 lat, rozwijając infrastrukturę dla danych rynkowych i sieci protokołów wymiany informacji finansowych (FIX). Uwielbia rozmawiać o tym, co sprawia, że zespoły są efektywne (lub nie tak efektywne!)

.