V roce 2021 existuje více důvodů, proč lidé milují Linux než kdykoli předtím. V této sérii se podělím o 21 různých způsobů, jak používat Linux. Zde vysvětlím, proč tolik programátorů volí Linux.
Když jsem poprvé začal používat Linux, bylo to pro jeho vynikající multimediální podporu, protože jsem pracoval ve filmové produkci. Zjistili jsme, že typické proprietární aplikace pro úpravu videa nezvládají většinu záběrů, které jsme stahovali z téměř jakéhokoli zařízení, které dokáže zaznamenat obraz. V té době jsem nevěděl, že Linux má pověst operačního systému pro servery a programátory. Čím víc jsem toho na Linuxu dělal, tím víc jsem chtěl mít pod kontrolou každý jeho aspekt. A nakonec jsem zjistil, že počítač byl nejvýkonnější, když jeho uživatel uměl „mluvit“ jeho jazykem. Během několika let po přechodu na Linux jsem skriptoval bezobslužné úpravy videa, spojoval zvukové soubory, hromadně upravoval fotografie a cokoli jiného, co jsem si dokázal představit, a pak jsem vymyslel řešení. Netrvalo mi dlouho, než jsem pochopil, proč programátoři milovali Linux, ale byl to Linux, který mě naučil milovat programování.
Ukazuje se, že Linux je vynikající platforma pro programátory, nové i zkušené. Není to tak, že potřebujete Linux na programování. Existují úspěšní vývojáři na všech různých druzích platforem. Linux má však vývojářům co nabídnout. Zde je několik užitečných věcí.
Základy logiky
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Linux je postaven na automatizaci. Je velmi záměrné, že základní aplikace v Linuxu lze přinejmenším spouštět z terminálu s dalšími možnostmi a často je lze dokonce používat zcela z terminálu. Tato myšlenka je někdy mylně považována za primitivní výpočetní model, protože lidé se mylně domnívají, že psaní softwaru, který funguje z terminálu, dělá jen naprosté minimum pro získání funkční aplikace. Toto je nešťastné nepochopení toho, jak kód funguje, ale je to něco, čím se mnozí z nás čas od času provinili. Myslíme více je vždy lepší, takže aplikace obsahující 1 000 řádků kódu musí být 100krát lepší než aplikace s deseti řádky, že? Pravdou je, že jsou-li všechny věci stejné, je výhodnější aplikace s větší flexibilitou, bez ohledu na to, jak se to přenese do řádků kódu.
V Linuxu může být proces, který vám může trvat hodinu, když se provádí ručně, doslova zkrátit na jednu minutu pomocí správného terminálového příkazu a možná i méně, když je analyzován na GNU Parallel. Tento jev vyžaduje změnu v tom, jak přemýšlíte o tom, co počítač dělá. Pokud je například vaším úkolem přidat titulní obrázek ke 30 souborům PDF, můžete si myslet, že je to rozumný pracovní postup:
- Otevřete soubor PDF v editoru PDF
- Otevřete přední kryt
- Připojte soubor PDF na konec souboru s obálkou
- Uložte soubor jako nový soubor PDF
- Tento proces opakujte pro každý starý soubor PDF (ale neduplikujte tento proces pro každý nový soubor PDF)
Většinou jde o věci se zdravým rozumem, a i když se to bolestivě opakuje, práci to odvede. Na Linuxu však můžete pracovat chytřeji. Myšlenkový proces je podobný:Nejprve vymyslíte kroky potřebné pro úspěšný výsledek. Po nějakém výzkumu byste se dozvěděli o pdftk-java
a objevili byste jednoduché řešení:
$ pdftk A=cover.pdf B=document_1.pdf \
cat A B \
output doc+cover_1.pdf
Jakmile si prokážete, že příkaz funguje na jednom dokumentu, věnujete čas tomu, abyste se seznámili s možnostmi cyklování, a rozhodnete se pro paralelní operaci:
$ find ~/docs/ -name "*.pdf" | \
parallel pdftk A=cover.pdf B={} \
cat A B \
output {.}.cover.pdf
Je to trochu jiný způsob uvažování, protože „kód“, který napíšete, zpracovává data jinak než vynucená linearita, na kterou jste zvyklí. Opustit svůj starý lineární způsob myšlení je však důležité pro pozdější psaní skutečného kódu a má to vedlejší výhodu v tom, že vám umožňuje chytřeji počítat.
Připojení kódu
Bez ohledu na to, pro jakou platformu programujete, když píšete kód, vytváříte složitou mřížku neviditelných spojení mezi mnoha různými soubory. Ve všech, kromě těch nejvzácnějších případů, kód čerpá ze záhlaví a spoléhá na externí knihovny, aby se stal kompletním programem. To se děje na jakékoli platformě, ale Linux má tendenci vás povzbuzovat, abyste to pochopili sami, spíše než slepě důvěřovat vývojovému kitu platformy, že se o to postará za vás.
Nyní není nic špatného na tom, když důvěřujete vývojové sadě při řešení knihovny a zahrnout cesty. Naopak, taková abstrakce je luxus, který byste si měli užívat. Pokud však nikdy nerozumíte tomu, co se děje, je mnohem těžší tento proces potlačit, když potřebujete udělat něco, o čem vývojářský kit nezná, nebo odstraňovat problémy, když nastanou.
To platí i pro různé platformy. Na Linuxu můžete vyvíjet kód, který hodláte provozovat na Linuxu i na jiných operačních systémech, a vaše porozumění tomu, jak se kód kompiluje, vám pomůže dosáhnout vašich cílů.
Je pravda, že tyto lekce se nenaučíte pouze používáním Linuxu. Je zcela možné blaženě kódovat v dobrém IDE a nikdy nepřemýšlet o tom, jakou verzi knihovny jste nainstalovali nebo kde jsou umístěny vývojové hlavičky. Linux však před vámi nic neskrývá. Je snadné proniknout do systému, najít důležité části a přečíst si kód, který obsahují.
Stávající kód
Vědět, kde jsou umístěny hlavičky a knihovny, je užitečné, ale mít na ně odkaz je dalším bonusem k programování v Linuxu. V Linuxu můžete vidět zdrojový kód v podstatě čehokoli, co chcete (kromě aplikací, které nejsou open source, ale běží na Linuxu). Přínos zde nelze přeceňovat. Když se dozvíte více o programování obecně nebo o programování něčeho nového, můžete se toho hodně naučit odkazem na existující kód ve vašem systému Linux. Mnoho programátorů se naučilo kódovat čtením otevřeného zdrojového kódu jiných lidí.
Na proprietárních systémech můžete najít vývojářskou dokumentaci s ukázkami kódu. To je skvělé, protože dokumentace je důležitá, ale bledne ve srovnání s nalezením přesné funkce, kterou chcete implementovat, a pak nalezením zdrojového kódu demonstrujícího, jak to bylo provedeno v aplikaci, kterou používáte každý den.
Přímý přístup k periferním zařízením
Po vývoji kódu pro mediální společnosti používající Linux jsem často považoval za samozřejmý přístup k periferiím. Například při připojení videokamery k Linuxu můžete stahovat příchozí data z /dev/video0 nebo podobné. Vše je v /dev a vždy je to nejkratší cesta mezi dvěma body, jak se tam dostat.
Na jiných platformách tomu tak není. Připojení k systémům mimo operační systém je často bludištěm sad SDK, omezených knihoven a někdy i NDA. To se samozřejmě liší v závislosti na tom, pro co programujete, ale je těžké překonat jednoduché a předvídatelné rozhraní Linuxu.
Vrstvy abstrakce
Naopak Linux také poskytuje zdravou sadu abstrakčních vrstev pro případy, kdy přímý přístup nebo ruční kódování skončí vytvářením více práce, než chcete. Existují vymoženosti, které se nacházejí v Qt a Java, a existují celé sady jako Pulse Audio, Pipewire a gstreamer. Linux chce abyste mohli kódovat, a ukáže se to.
Přidat do tohoto seznamu
Existuje více důvodů, proč je kódování v Linuxu potěšením. Některé jsou široké pojmy a jiné jsou příliš specifické detaily, které mi ušetřily hodiny frustrace. Linux je skvělé místo, kde můžete být, bez ohledu na to, na jakou platformu se zaměřujete. Ať už se programování teprve učíte, nebo jste kodér, který hledá nový digitální domov, neexistuje lepší pracovní prostor pro programování než Linux.