Im Jahr 2021 gibt es mehr Gründe, warum Menschen Linux lieben als je zuvor. In dieser Serie werde ich 21 verschiedene Möglichkeiten zur Verwendung von Linux vorstellen. Hier erkläre ich, warum sich so viele Programmierer für Linux entscheiden.
Als ich anfing, Linux zu verwenden, war es wegen seiner hervorragenden Multimedia-Unterstützung, weil ich in der Filmproduktion gearbeitet habe. Wir stellten fest, dass die typischen proprietären Videobearbeitungsanwendungen den Großteil des Filmmaterials, das wir von so ziemlich jedem Gerät holten, das ein Bild aufnehmen konnte, nicht verarbeiten konnten. Damals war mir nicht bewusst, dass Linux einen Ruf als Betriebssystem für Server und Programmierer hatte. Je mehr ich unter Linux machte, desto mehr wollte ich jeden Aspekt davon kontrollieren. Und am Ende entdeckte ich, dass ein Computer am leistungsstärksten war, wenn sein Benutzer seine Sprache „sprechen“ konnte. Innerhalb weniger Jahre nach dem Wechsel zu Linux erstellte ich Skripte für unbeaufsichtigte Videobearbeitungen, kettete Audiodateien an, bearbeitete Fotos in großen Mengen und alles andere, was ich mir vorstellen und dann eine Lösung erfinden konnte. Es dauerte nicht lange, bis ich verstand, warum Programmierer Linux liebten, aber es war Linux, das mir beigebracht hat, das Programmieren zu lieben.
Es stellt sich heraus, dass Linux eine ausgezeichnete Plattform für Programmierer ist, sowohl für neue als auch für erfahrene. Es ist nicht so, dass du müssen Linux zu programmieren. Es gibt erfolgreiche Entwickler auf den unterschiedlichsten Plattformen. Linux hat Entwicklern jedoch viel zu bieten. Hier sind ein paar Dinge, die ich nützlich fand.
Grundlagen der Logik
Linux basiert auf Automatisierung. Es ist sehr bewusst, dass Stapelanwendungen unter Linux zumindest von einem Terminal mit zusätzlichen Optionen gestartet werden können und oft sogar vollständig vom Terminal aus verwendet werden können. Diese Idee wird manchmal als primitives Computermodell verwechselt, weil die Leute fälschlicherweise glauben, dass das Schreiben von Software, die von einem Terminal aus funktioniert, nur das Nötigste ist, um eine funktionierende Anwendung zu erhalten. Dies ist ein bedauerliches Missverständnis darüber, wie Code funktioniert, aber es ist etwas, dessen sich viele von uns von Zeit zu Zeit schuldig machen. Wir denken mehr ist immer besser, also muss eine Anwendung mit 1.000 Codezeilen 100-mal besser sein als eine mit zehn Codezeilen, oder? Die Wahrheit ist, dass bei gleichen Bedingungen die Anwendung mit größerer Flexibilität vorzuziehen ist, unabhängig davon, wie sich dies auf Codezeilen auswirkt.
Unter Linux kann ein Vorgang, der manuell eine Stunde dauern kann, mit dem richtigen Terminalbefehl buchstäblich auf eine Minute reduziert werden, und möglicherweise weniger, wenn er nach GNU Parallel geparst wird. Dieses Phänomen erfordert eine Änderung der Art und Weise, wie Sie über die Funktionsweise eines Computers nachdenken. Wenn Ihre Aufgabe beispielsweise darin besteht, ein Titelbild zu 30 PDF-Dateien hinzuzufügen, könnten Sie dies für einen sinnvollen Arbeitsablauf halten:
- Öffnen Sie ein PDF in einem PDF-Editor
- Öffnen Sie die vordere Abdeckung
- PDF an das Ende der Coverdatei anhängen
- Datei als neues PDF speichern
- Wiederholen Sie diesen Vorgang für jede alte PDF (aber duplizieren Sie diesen Vorgang nicht für jede neue PDF)
Es ist hauptsächlich Sachen mit gesundem Menschenverstand, und obwohl es sich schmerzhaft wiederholt, erledigt es die Arbeit. Unter Linux können Sie jedoch intelligenter arbeiten. Der Denkprozess ist ähnlich: Zunächst erarbeiten Sie die Schritte, die für ein erfolgreiches Ergebnis erforderlich sind. Nach einiger Recherche würden Sie herausfinden, pdftk-java
Befehl, und Sie würden eine einfache Lösung entdecken:
$ pdftk A=cover.pdf B=document_1.pdf
cat A B
output doc+cover_1.pdf
Sobald Sie sich selbst bewiesen haben, dass der Befehl in einem Dokument funktioniert, nehmen Sie sich die Zeit, um sich mit den Schleifenoptionen vertraut zu machen, und entscheiden sich für eine parallele Operation:
$ find ~/docs/ -name "*.pdf" |
parallel pdftk A=cover.pdf B={}
cat A B
output {.}.cover.pdf
Es ist eine etwas andere Denkweise, da der von Ihnen geschriebene “Code” Daten anders verarbeitet als die erzwungene Linearität, an die Sie gewöhnt sind. Es ist jedoch wichtig, dass Sie Ihre alte lineare Denkweise verlassen, um später tatsächlichen Code zu schreiben, und es hat den Nebenvorteil, dass Sie intelligenter rechnen können.
Anschlüsse codieren
Egal für welche Plattform Sie programmieren, wenn Sie Code schreiben, Sie weben ein kompliziertes Gitterwerk aus unsichtbaren Verbindungen zwischen vielen verschiedenen Dateien. In allen außer den seltensten Fällen schöpft Code aus Headern und verlässt sich auf externe Bibliotheken, um ein vollständiges Programm zu werden. Dies geschieht auf jeder Plattform, aber Linux ermutigt Sie dazu, dies selbst zu verstehen, anstatt blind darauf zu vertrauen, dass das Entwicklungskit der Plattform sich für Sie darum kümmert.
Nun, es ist nichts falsch daran, einem Entwicklungskit zu vertrauen, um es zu lösen Bücherei und enthalten Wege. Im Gegenteil, diese Art der Abstraktion ist ein Luxus, den man genießen sollte. Wenn Sie jedoch nie verstehen, was passiert, ist es viel schwieriger, den Prozess zu überschreiben, wenn Sie etwas tun müssen, von dem ein Entwicklungskit nichts weiß, oder Probleme zu beheben, wenn sie auftreten.
Dies lässt sich auch plattformübergreifend übertragen. Sie können Code unter Linux entwickeln, der sowohl unter Linux als auch auf anderen Betriebssystemen ausgeführt werden soll, und Ihr Verständnis dafür, wie Code kompiliert wird, hilft Ihnen, Ihre Ziele zu erreichen.
Zugegeben, Sie lernen diese Lektionen nicht nur mit Linux. Es ist durchaus möglich, in einer guten IDE glückselig zu programmieren, ohne sich Gedanken darüber zu machen, welche Version einer Bibliothek Sie installiert haben oder wo sich die Entwicklungsheader befinden. Linux verbirgt jedoch nichts vor Ihnen. Es ist einfach, in das System einzudringen, die wichtigen Teile zu finden und den darin enthaltenen Code zu lesen.
Vorhandener Code
Es ist nützlich zu wissen, wo sich Header und Bibliotheken befinden, aber sie als Referenz zu haben, ist ein weiterer zusätzlicher Bonus für die Programmierung unter Linux. Unter Linux sehen Sie den Quellcode von praktisch allem, was Sie wollen (außer Anwendungen, die nicht Open Source sind, aber unter Linux laufen). Der Nutzen kann hier nicht hoch genug eingeschätzt werden. Wenn Sie mehr über das Programmieren im Allgemeinen oder über das Programmieren von etwas Neuem lernen, können Sie viel lernen, indem Sie auf vorhandenen Code auf Ihrem Linux-System verweisen. Viele Programmierer haben das Programmieren gelernt, indem sie den Open-Source-Code anderer Leute gelesen haben.
Auf proprietären Systemen finden Sie möglicherweise Entwicklerdokumentation mit Codebeispielen darin. Das ist großartig, denn Dokumentation ist wichtig, aber sie verblasst im Vergleich dazu, die genaue Funktionalität zu finden, die Sie implementieren möchten, und dann den Quellcode zu finden, der zeigt, wie es in einer Anwendung gemacht wurde, die Sie täglich verwenden.
Direkter Zugriff auf Peripheriegeräte
Etwas, das ich oft als selbstverständlich angesehen habe, nachdem ich Code für Medienunternehmen entwickelt habe, die Linux verwenden, ist der Zugriff auf Peripheriegeräte. Wenn Sie beispielsweise eine Videokamera an Linux anschließen, können Sie eingehende Daten von /dev/video0 o.ä. Alles ist drin /dev, und es ist immer der kürzeste Weg zwischen zwei Punkten, um dorthin zu gelangen.
Auf anderen Plattformen ist das nicht der Fall. Die Verbindung zu Systemen außerhalb des Betriebssystems ist oft ein Labyrinth aus SDKs, eingeschränkten Bibliotheken und manchmal NDAs. Dies hängt natürlich davon ab, wofür Sie programmieren, aber es ist schwer, die einfache und vorhersehbare Oberfläche von Linux zu schlagen.
Abstraktionsschichten
Umgekehrt bietet Linux auch einen gesunden Satz von Abstraktionsschichten, wenn direkter Zugriff oder manuelles Codieren mehr Arbeit verursachen, als Sie tun möchten. Es gibt Annehmlichkeiten in Qt und Java, und es gibt ganze Stacks wie Pulse Audio, Pipewire und gstreamer. Linux will Sie können codieren, und es wird angezeigt.
Zu dieser Liste hinzufügen
Es gibt noch mehr Gründe, die das Programmieren unter Linux zum Vergnügen machen. Einige sind allgemeine Konzepte und andere sind zu spezifische Details, die mir stundenlange Frustration erspart haben. Linux ist ein großartiger Ort, egal für welche Plattform Sie sich entscheiden. Egal, ob Sie gerade Programmieren lernen oder als Programmierer ein neues digitales Zuhause suchen, es gibt keinen besseren Arbeitsbereich zum Programmieren als Linux.