Articles

Sollten Programmierer Linux lernen?

Stoppt mich, wenn ihr das schon mal gehört habt: „Programmierer benutzen nur Linux. PCs und Macs sind für Anfänger!“

Ja, nein.

Linux ist ein Werkzeug. Windows ist ein Werkzeug. MacOS ist auch ein Werkzeug. Jedes ist ein Betriebssystem (OS), das man braucht, um einen Computer nützlich zu machen, und jedes hat seine Vor- und Nachteile. Das Problem ist, dass diese beliebten Betriebssysteme, wie viele andere Werkzeuge auch, ihre Stämme haben. Wenn Windows DC Comics ist und macOS Marvel, dann ist Linux Dark Horse.

Was ist Linux überhaupt?

Lassen Sie uns am Anfang beginnen. (Wenn Sie sich fragen, ob Sie Linux lernen sollten, können Sie wahrscheinlich eine kurze Einführung in das, was Linux ist, gebrauchen. Während Windows und macOS individuelle Betriebssysteme sind, die von Microsoft und Apple verkauft und unterstützt werden, ist das, was Linux ist (und nicht ist), etwas komplizierter.

Im Jahr 1991 veröffentlichte ein Programmierer namens Linus Torvalds einen neuen Kernel, den er Linux nannte. Ein Kernel ist, grob gesagt, ein Computerprogramm, das in der Mitte eines Betriebssystems sitzt und die Interaktionen zwischen der Hardware und der Software steuert. Er stützte sich dabei auf Unix und ein anderes Unix-ähnliches Betriebssystem namens Minix. Wie Sie sehen können, waren Namen, die sich auf Unix reimen, bereits sehr beliebt, so dass Torvalds Kernel sich selbst einen Namen gab.

Der Kernel gewann schnell an Popularität, und weitere Programmierer trugen zu seinem Projekt bei. Schon bald entstand um den Kernel herum ein neues Betriebssystem, das auch Linux genannt wurde.

Aber Open Source muss Open Source sein, und es gibt nicht nur eine Version von Linux – und wird es auch nie geben. Linux ist eine Familie von Betriebssystemen, die gewöhnlich als Distributionen oder Distros bezeichnet werden. Eine Distribution enthält den Linux-Kernel und den Rest der Software, die benötigt wird, um einen Computer nutzbar zu machen. Die Website DistroWatch listet 100 Distributionen auf, aber sie hört nur dort auf, weil 100 eine schöne runde Zahl ist.

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

Einige der beliebtesten Distributionen sind Debian, Red Hat, Ubuntu und Fedora. Ubuntu basiert eigentlich auf Debian, und Fedora basiert auf Red Hat. Und dann gibt es natürlich noch CentOS, das ebenfalls auf Red Hat basiert, und Mint, das auf Ubuntu basiert… Wie Sie sehen, ist es kompliziert. Der Kampf darüber, welche Distribution die beste ist, erzeugt genauso viel Hitze und weniger Licht als die Schlachten über Betriebssysteme oder Comics.

So, lassen Sie uns zur ursprünglichen Frage zurückkehren. Wenn man fragt „Sollten Programmierer Linux lernen?“, ist eine der möglichen Antworten „Welches?“

Aber das ist nicht wirklich eine hilfreiche Antwort, oder?

Sollte ich Linux lernen?

Nun, es kommt darauf an. Was sind Ihre Ziele?

Diese Frage sollten Sie immer im Hinterkopf behalten, wenn Sie auf ein Tool oder eine Empfehlung stoßen, es zu benutzen. Was wollen Sie lernen, und wird Ihnen die Zeit, die Sie dafür aufwenden, helfen, dieses Ziel zu erreichen?

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 ist das am häufigsten verwendete Betriebssystem für Server. Fast alle Websites, die Sie jeden Tag besuchen, laufen unter Linux, ebenso wie die Server, die dahinter stehen und auf denen „Backend“-Anwendungen wie Datenbanken laufen. Banken zum Beispiel nutzen Linux häufig für die Verwaltung von Finanztransaktionen. Die meisten Datenbankserver laufen ebenfalls unter Linux.

Linux ist auf eingebetteten Plattformen sehr beliebt. Raspbian ist eine beliebte Distribution für den Raspberry Pi. Googles Android-Betriebssystem ist ein Linux-Derivat, und viele Netzwerk-Router und -Switches verwenden es ebenfalls.

Wenn Ihr Ziel also darin besteht, Serversoftware, Code für das Internet der Dinge (IoT) oder Software für eingebettete Systeme zu schreiben, wird Ihnen der Umgang mit Linux das Leben sehr erleichtern.

Wenn Sie davon träumen, Apps für das iPhone oder schöne Webseiten zu schreiben, ist das Erlernen von Linux im Moment vielleicht nicht die beste Art, Ihre Zeit zu verbringen.

Was sollte ich über Linux lernen?

Die nächste Frage ist: Was bedeutet „Linux lernen“?

Tja, das kommt darauf an. (Tut mir leid, ich konnte nicht widerstehen.)

Wenn Sie Serversoftware schreiben, die unter Linux läuft, muss sie auf Systemen eingesetzt werden, auf denen sie läuft. Je nachdem, wo Sie arbeiten, kann das bedeuten, dass Sie Ihren Code an eine DevOps-Organisation weitergeben, oder dass Sie es selbst tun. So oder so können Sie Ihr Leben – und das Ihrer Mitarbeiter – sehr viel angenehmer gestalten, wenn Sie sich mit der Kommandozeile und der Organisation von Dateien auf einem Linux-System vertraut machen.

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.

Diese Fähigkeiten sind übertragbar, unabhängig davon, auf welcher Distribution Sie lernen und welche Ihr zukünftiger Arbeitgeber verwendet. Es gibt zwar einige (oft ärgerliche) Unterschiede zwischen ihnen, aber die Entwicklung eines Verständnisses für jede der Hauptdistributionen verschafft Ihnen einen bedeutenden Satz von Fähigkeiten, die Sie auf jede von ihnen übertragen können. Außerdem verschafft es Ihnen einen Wettbewerbsvorteil gegenüber Entwicklern, die sich nur in der geschützten Welt ihrer Lieblings-IDE wohlfühlen.

Wenn Sie daran interessiert sind, Software für die Robotik oder für eingebettete Systeme zu entwickeln, dann müssen Sie sich mit Linux auf der Kernel-Ebene vertraut machen. Für Sie bedeutet „Linux lernen“, den Linux-Kernel zu lernen.

Auch hier ist es weniger wichtig, welche Distribution Sie wählen, als dass Sie sich einfach die Füße nass machen. Zwar aktualisieren nicht alle Distributionen die Kernel-Versionen zur gleichen Zeit (und einige sind komisch langsam), aber der Linux-Kernel ist der Linux-Kernel. Suchen Sie sich eine Distribution aus und fangen Sie an zu spielen.

Wie mache ich das?

Wenn Sie sich für Robotik oder IoT interessieren, können Sie sich auch einfach einen Raspberry Pi besorgen und gleich loslegen. Du solltest sicherstellen, dass du eine USB-Maus und einen Monitor hast, an den du ihn anschließen kannst. Der Rest ist ziemlich einfach.

Wenn Sie sich für Serversoftware interessieren, wählen Sie eine Distribution und installieren Sie sie.

Welche Distribution Sie wählen, ist wirklich eine Frage der Wahl. Manche halten Ubuntu für die einsteigerfreundlichste. Andere halten Linux Mint für ein bisschen besser. Die gute Nachricht ist, dass sie alle kostenlos sind, so dass Sie sie alle ausprobieren können!

Die kostengünstigste Möglichkeit, Linux zu installieren und die Türen zu öffnen, ist die Installation einer Software für virtuelle Maschinen auf dem Computer, den Sie bereits haben. VirtualBox ist kostenlos und läuft unter Windows und macOS. Es führt Sie sogar durch die Installation von Linux, nachdem Sie es eingerichtet haben.

Wenn Sie Linux installiert haben, können Sie anfangen zu spielen! Das Schöne am Spielen mit dem Raspberry Pi oder einer virtuellen Maschine ist, dass Sie immer wieder von vorne anfangen können, wenn Sie etwas vermasseln. Sie werden sehen, dass es ziemlich schwer ist, ein Linux-System zu zerstören.

Sollten Programmierer Linux lernen?

Die Chancen stehen gut, dass Sie in Ihrer Karriere als Programmierer irgendwann auf Linux stoßen werden. Wenn Sie sich im Voraus damit vertraut machen, können Sie sich einen Wettbewerbsvorteil gegenüber anderen Entwicklern verschaffen, die das nicht tun. Besorgen Sie sich ein Exemplar und fangen Sie jetzt an, damit zu spielen.

Dieser Beitrag wurde von Eric Goebelbecker geschrieben. Eric arbeitet seit 25 Jahren an den Finanzmärkten in New York City und entwickelt Infrastrukturen für Marktdaten und FIX-Protokollnetzwerke (Financial Information Exchange). Er liebt es, darüber zu sprechen, was Teams effektiv (oder nicht so effektiv!)

macht.