GNU/Linux >> LINUX-Kenntnisse >  >> Linux

5 Gründe, warum ich es liebe, unter Linux zu programmieren

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 arbeitete. Wir stellten fest, dass die typischen proprietären Videobearbeitungsanwendungen den größten Teil des Filmmaterials, das wir von so ziemlich jedem Gerät, das ein Bild aufnehmen konnte, bezogen, nicht verarbeiten konnten. Dass Linux als Betriebssystem für Server und Programmierer bekannt ist, war mir damals nicht bewusst. Je mehr ich mit 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 schrieb ich Skripte für unbeaufsichtigte Videobearbeitungen, reiste Audiodateien aneinander, bearbeitete Fotos in großen Mengen und alles andere, was ich mir vorstellen konnte, und erfand dann eine Lösung dafür. Es dauerte nicht lange, bis ich verstand, warum Programmierer Linux liebten, aber es war Linux, das mir beibrachte, das Programmieren zu lieben.

Es stellt sich heraus, dass Linux eine hervorragende Plattform für Programmierer ist, sowohl für neue als auch für erfahrene Programmierer. Es ist nicht, dass Sie brauchen Linux zu programmieren. Es gibt erfolgreiche Entwickler auf allen Arten von Plattformen. Linux hat Entwicklern jedoch viel zu bieten. Hier sind ein paar Dinge, die ich nützlich fand.

Grundlagen der Logik

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Linux ist um Automatisierung herum aufgebaut. Es ist sehr beabsichtigt, dass Grundanwendungen unter Linux zumindest von einem Terminal mit zusätzlichen Optionen gestartet werden können, und oft können sie sogar vollständig von dem Terminal aus verwendet werden. Diese Idee wird manchmal als primitives Computermodell missverstanden, 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 unglückliches Missverständnis darüber, wie Code funktioniert, aber viele von uns machen sich von Zeit zu Zeit schuldig. Wir denken mehr ist immer besser, also muss eine Anwendung mit 1.000 Codezeilen 100 Mal besser sein als eine mit zehn Codezeilen, richtig? Die Wahrheit ist, dass bei sonst gleichen Bedingungen die Anwendung mit größerer Flexibilität vorzuziehen ist, unabhängig davon, wie sich das auf Codezeilen auswirkt.

Unter Linux kann ein Vorgang, der manuell eine Stunde dauern könnte, mit dem richtigen Terminalbefehl buchstäblich auf eine Minute reduziert werden, und möglicherweise weniger, wenn er an GNU Parallel geparst wird. Dieses Phänomen erfordert ein Umdenken darüber, was ein Computer tut. Wenn Ihre Aufgabe beispielsweise darin besteht, 30 PDF-Dateien ein Titelbild hinzuzufügen, halten Sie dies möglicherweise für einen sinnvollen Arbeitsablauf:

  1. PDF in einem PDF-Editor öffnen
  2. Öffnen Sie die vordere Abdeckung
  3. Fügen Sie eine PDF-Datei an das Ende der Umschlagdatei an
  4. Datei als neues PDF speichern
  5. Wiederholen Sie diesen Vorgang für jedes alte PDF (aber wiederholen Sie diesen Vorgang nicht für jedes neue PDF)

Es ist meistens gesunder Menschenverstand, und obwohl es schmerzhaft repetitiv ist, 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 von pdftk-java erfahren 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 bei einem Dokument funktioniert, nehmen Sie sich die Zeit, sich mit 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, weil der "Code", den Sie schreiben, Daten anders verarbeitet als die erzwungene Linearität, an die Sie gewöhnt sind. Das Verlassen Ihrer alten linearen Denkweise ist jedoch wichtig, um später echten Code zu schreiben, und es hat den Nebeneffekt, dass Sie intelligenter rechnen können.

Verbindungen codieren

Ganz gleich, für welche Plattform Sie programmieren, wenn Sie Code schreiben, weben Sie ein kompliziertes Gitter aus unsichtbaren Verbindungen zwischen vielen verschiedenen Dateien. Außer in den seltensten Fällen greift Code auf Header zurück und verlässt sich auf externe Bibliotheken, um ein vollständiges Programm zu werden. Dies passiert auf jeder Plattform, aber Linux neigt dazu, Sie dazu zu ermutigen, dies selbst zu verstehen, anstatt blind darauf zu vertrauen, dass das Entwicklungskit der Plattform es für Sie erledigt.

Nun, es ist nichts Falsches daran, einem Entwicklungskit zu vertrauen, um library aufzulösen und einschließen Pfade. 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 Dev-Kit nichts weiß, oder Probleme zu beheben, wenn sie auftreten.

Dies lässt sich auch plattformübergreifend übersetzen. Sie können Code unter Linux entwickeln, den Sie unter Linux und anderen Betriebssystemen ausführen möchten, und Ihr Verständnis dafür, wie Code kompiliert wird, hilft Ihnen dabei, Ihre Ziele zu erreichen.

Zugegeben, Sie lernen diese Lektionen nicht nur durch die Verwendung von Linux. Es ist durchaus möglich, in einer guten IDE glücklich zu programmieren, ohne sich Gedanken darüber zu machen, welche Version einer Bibliothek Sie installiert haben oder wo sich die Entwicklungsheader befinden. Linux verbirgt Ihnen jedoch nichts. Es ist einfach, in das System einzudringen, die wichtigen Teile zu lokalisieren und den darin enthaltenen Code zu lesen.

Vorhandener Code

Es ist nützlich zu wissen, wo sich Header und Bibliotheken befinden, aber sie referenzieren zu können, ist ein weiterer zusätzlicher Bonus für die Programmierung unter Linux. Unter Linux können Sie den Quellcode von im Grunde allem sehen, was Sie wollen (mit Ausnahme von Anwendungen, die nicht Open Source sind, aber unter Linux laufen). Der Vorteil hier kann 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 sich auf vorhandenen Code auf Ihrem Linux-System beziehen. 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, weil Dokumentation wichtig ist, aber es 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, die Sie jeden Tag verwenden, gemacht wurde.

Direkter Zugriff auf Peripheriegeräte

Etwas, das ich oft als selbstverständlich angesehen habe, nachdem ich Code für Medienunternehmen mit Linux entwickelt habe, ist der Zugriff auf Peripheriegeräte. Wenn Sie beispielsweise eine Videokamera mit Linux verbinden, können Sie eingehende Daten von /dev/video0 abrufen oder ähnliches. Alles befindet sich in /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 Benutzeroberfläche von Linux zu übertreffen.

Abstraktionsschichten

Umgekehrt bietet Linux auch einen gesunden Satz von Abstraktionsschichten für den Fall, dass direkter Zugriff oder manuelles Codieren am Ende mehr Arbeit verursacht, 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 zeigt.

Zu dieser Liste hinzufügen

Es gibt noch mehr Gründe, die das Programmieren unter Linux zu einem Vergnügen machen. Einige sind weit gefasste Konzepte und andere sind übermäßig spezifische Details, die mir Stunden der Frustration erspart haben. Linux ist ein großartiger Ort, egal auf welche Plattform Sie abzielen. Egal, ob Sie gerade Programmieren lernen oder ein Programmierer sind, der nach einem neuen digitalen Zuhause sucht, es gibt keinen besseren Arbeitsplatz zum Programmieren als Linux.


Linux
  1. 10 Gründe, Linux im Jahr 2021 zu lieben

  2. Warum Programmierer die Linux-Paketierung lieben

  3. Warum ich mich in Antergos Linux verliebt habe

  4. Warum Linux? – Einige Gründe für die Umstellung auf Linux

  5. 12 Gründe, warum jeder Linux-Systemadministrator faul sein sollte

Linux vs. Mac:7 Gründe, warum Linux die bessere Wahl ist als Mac

Die 10 wichtigsten Gründe für die Verwendung von Linux

Die 20 wichtigsten Gründe, warum Sie sich für einen Linux-Server entscheiden sollten

Linux vs. Mac OS:15 Gründe, warum Sie Linux anstelle von Mac OS verwenden sollten

Gründe, warum ich die Verwendung von Debian Linux empfehle

6 Gründe, warum Linux nicht mehr Apps hat