Mit diesem Artikel möchte ich die Leute dazu auffordern, mit der Programmierung auf dem GNU/Linux-Betriebssystem (von hier an nur noch „Linux“ genannt) zu beginnen. Studenten, die gerade mit dem Programmieren anfangen; Pädagogen, die unterrichten oder eine Rolle dabei spielen, neuen Studenten das Programmieren beizubringen; Hobby-Programmierer, die auf Windows programmieren – ich bitte Sie alle, weiterzulesen und Linux zumindest eine Woche lang auszuprobieren. Wenn Sie der Meinung sind, dass das Programmieren unter Linux tatsächlich eine bessere Erfahrung ist als Ihre bisherige Plattform, dann bleiben Sie dabei und genießen Sie die Freiheit, die der Rest von uns hat!
Nur um Missverständnisse auszuräumen: Ich ziele nicht darauf ab, Sie dazu zu bringen, Code für den Linux-Kernel selbst zu schreiben (obwohl das durchaus folgen könnte, wenn Ihr Komfort und Ihre Programmierkenntnisse wachsen). Stattdessen spreche ich über das Schreiben von User-Space-Programmen – einschließlich der Übungen, Hausaufgaben und Projektarbeiten, die die meisten Informatik-Studiengänge beinhalten. Bevor wir beginnen, hier ein Haftungsausschluss: Dieser Artikel enthält starke persönliche Meinungen und Überzeugungen; ich beabsichtige in keiner Weise, beleidigend zu sein, aber einige dieser Ideen könnten einen Versuch wert sein – für Sie – um zu sehen, ob Sie genauso empfinden!
Attacking the mindset
Es wird allgemein angenommen, dass Linux „schwer zu benutzen“ ist. Sicher, es ist anders als das, was Leute, die Windows gewohnt sind, gewohnt sind – aber es ist nicht schwer. Wenn Sie sich erst einmal an die Unterschiede gewöhnt haben, werden Sie wahrscheinlich selbst über diesen Irrglauben lachen und anderen sagen, wie falsch ihre Wahrnehmung ist!
Betrachten Sie nur die vielen Informatikstudenten, die sich von der Begeisterung, die Linux seit langem auslöst, inspirieren ließen. Sie haben sich entschlossen, auf eigene Faust zu lernen, wie man es benutzt – und stellen Fragen auf Mailinglisten, in Foren und über IRC-Kanäle. Innerhalb weniger Wochen sind sie in der Lage, mehr zu tun als nur herumzukommen. Oft sind sie innerhalb eines Monats so sehr mit Linux vertraut, dass sie beginnen, andere in das Betriebssystem einzuführen. Erstaunlich? Es mag so erscheinen – aber es ist einfach so, dass diese Studenten entschlossen waren, zu erforschen und zu lernen, und die Schreie „Das ist schwierig.“
Es gibt immer eine Lernkurve, wenn man sich eine neue Fähigkeit aneignet, und Linux ist da keine Ausnahme. Wenn man Schülern beibringt, Linux zu benutzen und zu programmieren, werden sie es nicht nur lernen, sondern auch einfach finden. Es würde ihnen einfach natürlich erscheinen – etwas zu lernen, das sie vorher nicht kannten. „Linux ist schwierig“ ist ein moderner Mythos, mit dem es aufzuräumen gilt. Wenn Sie ein Pädagoge sind, tun Sie bitte Ihren Teil dazu. Sie sind derjenige, zu dem die Schüler aufschauen, und wenn Sie ihnen den richtigen Weg zeigen, werden sie Ihrem Beispiel folgen.
Linux zum Laufen bringen
Okay, wenn Sie sich entschieden haben, Linux einzusetzen, wie gehen Sie dann vor? Sie haben vielleicht schon von den vielen verschiedenen Linux-„Distros“ (auch Distributionen genannt) gehört: Ubuntu, Fedora, Debian und mehr. Warum so viele „Linuxe“? Lassen Sie mich das erklären. Technisch gesehen ist „Linux“ der Name eines Kernels (weitere Informationen finden Sie in diesem Wikipedia-Artikel, oder auf der offiziellen Homepage von Linux). Da ein Kernel für sich allein wenig taugt, wurden die User-Space-Tools des GNU-Projekts (einschließlich der gängigsten Implementierung der C-Bibliothek, einer populären Shell und vieler gängiger UNIX-Tools, die viele grundlegende Betriebssystemaufgaben ausführen) mit dem Linux-Kernel kombiniert, um ein brauchbares Betriebssystem zu schaffen. Die grafische Benutzeroberfläche (oder GUI), die von den meisten Linux-Systemen verwendet wird, basiert auf einer Implementierung des X Window Systems. Verschiedene freie Software-Projekte und -Anbieter stellen unterschiedliche Kombinationen von Paketen und Funktionen zusammen, um verschiedenen Zielgruppen unterschiedliche Linux-Erfahrungen zu bieten – was zu unzähligen Linux-Distributionen führt.
So, welche Linux-Distribution sollten Sie verwenden? Ubuntu und Fedora haben beide für sich genommen das Linux-Erlebnis für Gelegenheitsnutzer des Computers sehr benutzerfreundlich gemacht – für das Surfen im Internet, für E-Mails und die Bearbeitung von Dokumenten. Beide sind ideal für den Einstieg.
Die Linux-Installation kann allerdings etwas knifflig sein, vor allem wenn Sie ein Dual-Boot-System einrichten wollen, bei dem Sie entweder Linux oder Ihr altes Windows starten können. Ansonsten ist es ganz einfach: Laden Sie das CD-Image (ISO) herunter, brennen Sie es auf einen Datenträger, starten Sie Ihren Computer davon und lassen Sie es installieren! Der beste Weg, ein Dual-Boot-Setup beim ersten Mal zu machen, ist, jemanden in Ihrer Schule, Ihrem Ort oder Ihrem Büro zu erreichen, der sich damit auskennt, und ihn zu bitten, Sie anzuleiten.
Auch gibt es andere Möglichkeiten, wenn Sie Linux ausprobieren wollen, ohne es zu installieren, ohne Windows zu ersetzen oder ein Dual-Boot-Setup zu machen. Einige dieser Ideen finden Sie im Abschnitt „Umgang mit praktischen Dingen“ am Ende dieses Artikels.
Der Ultimate Linux Newbie Guide ist ein gutes Nachschlagewerk, das Ihnen hilft, Dinge selbst zu lernen. Bei Linux hilft ein experimentelles Vorgehen beim Lernen sehr. Sichern Sie also Ihre Daten und fangen Sie mit den Installations-Discs an, wenn Sie niemanden finden, der Ihnen hilft. Heutzutage sind bei den meisten Linux-Distributionen nur die wichtigsten Anwendungen und Bibliotheken installiert – was für Programmierzwecke wahrscheinlich nicht ausreicht.
Um die Installation neuer Software zu erleichtern, haben die meisten Distributionen einen Paketmanager (in der Linux-Welt wird Software in Form von „Paketen“ verteilt), mit dem Sie neue Software einfach aus dem Internet herunterladen und installieren können. Der Ultimate Linux Newbie Guide ist eine gute Referenz für dieses Thema.
Damit dieser Artikel von maximalem Nutzen ist, werde ich versuchen, allgemeiner zu sein und keine bestimmte Distribution zu bevorzugen.
Auswahl eines Texteditors
Wir werden keine integrierte Entwicklungsumgebung (IDE) verwenden, zumindest anfangs. Wir werden es auf die einfache Art und Weise tun: Code mit einem Texteditor schreiben, ihn speichern und mit einem geeigneten Compiler/Interpreter kompilieren/interpretieren. In der Linux-Welt haben Sie eine Fülle von Texteditoren zur Auswahl. Einer der Editoren, wie z. B. gedit oder kwrite, wird auf jeden Fall installiert, wenn Sie Linux installieren – Sie können beide verwenden. Wenn Sie eine Distribution wie Ubuntu installieren, die die GNOME-Desktop-Umgebung hat, dann haben Sie gedit bereits installiert. Es ist genau wie Notepad, nur nützlicher und funktionsreicher.
C/C++-Programmierung unter Linux
C ist normalerweise die erste Sprache, die vielen Studenten an indischen Ingenieursschulen und Colleges beigebracht wird, also lassen Sie uns zuerst einen Blick darauf werfen, wie wir in C unter Linux programmieren. Beachten Sie, dass der C-Code, den Sie unter Linux schreiben, der gleiche ist, den Sie unter Windows/DOS schreiben würden, solange Sie ANSI-C-Code schreiben. Einige Bibliotheksfunktionen, wie die von conio.h
und graphics.h
, sind nicht Teil des ANSI-Standards. Daher können Sie diese unter Linux nicht verwenden.
Der C-Compiler, den Sie unter Linux verwenden, ist GCC. Er ist Teil der GNU Compiler Collection. Öffnen Sie ein Terminal und führen Sie den Befehl aus: gcc
. Wenn Sie etwas wie die folgende Ausgabe sehen, bedeutet das, dass GCC bereits installiert ist.
gcc: no input files
Wenn Sie jedoch etwas wie „Befehl nicht gefunden“ sehen, müssen Sie GCC mit dem Paketmanager installieren.
Neben einem Compiler benötigen Sie auch die C-Standardbibliothek, genannt glibc
, um Ihre C-Programme korrekt zu kompilieren. Geben Sie locate glibc
ein und überprüfen Sie die Ausgabe. Wenn er Verzeichnisstrukturen der Form /foo/bar/glibc
oder ähnliches anzeigt, dann haben Sie glibc
installiert; andernfalls müssen Sie es installieren.
Okay, nachdem wir nun das Vorhandensein eines Texteditors, eines Compilers und der Standardbibliothek bestätigt haben, lassen Sie uns unseren ersten Code in C unter Linux schreiben. Für den Zweck dieses Artikels legen wir ein Unterverzeichnis namens „codes“ unter Ihrem „home“-Verzeichnis an, in dem wir unseren gesamten Quellcode speichern werden.
Starten Sie gedit und geben Sie diesen einfachen C-Code ein, um die Fakultät einer Zahl auszugeben:
#include<stdio.h>int main(int argc, char **argv){ int n, i,fact=1; printf("Enter a number for which you want to find the factorial:: "); scanf("%d", &n); for(i=1;i<=n;i++) fact=fact*i; printf("Factorial of %d is :: %dn", n,fact); return 0;}
Speichern Sie diesen Code im Unterverzeichnis codes mit dem Namen fact.c
. Starten Sie Ihr Shell-Programm (Terminal), und führen Sie cd codes
aus, um in dieses Verzeichnis zu gelangen. Sobald Sie dort sind, geben Sie den folgenden Befehl ein:
gcc factorial.c
Nachdem Sie den Befehl ausgeführt haben, führen Sie ls
aus und Sie sehen eine a.out
Datei im aktuellen Verzeichnis. Dies ist die ausführbare Datei Ihres C-Programms, kompiliert und gelinkt mit den entsprechenden Bibliotheken. Um es auszuführen, führen Sie aus (beachten Sie das führende ./
, das ist wichtig!):
./a.outEnter a number for which you want to find the factorial:: 5Factorial of 5 is :: 120
Glückwunsch, Sie haben soeben Ihr erstes C-Programm unter Linux geschrieben! Das war ganz normales C, das Sie unter DOS oder Windows schreiben – keine Überraschungen also! Ein wenig mehr über diese a.out
-Datei: Dies ist das Linux-Äquivalent der .exe-Datei, die Sie unter DOS/Windows sehen würden; es ist die ausführbare Form Ihres Codes. Wie Sie vielleicht schon vermutet haben, kann diese Datei unter DOS oder Windows nicht ausgeführt werden, da sie ein anderes Format hat.
Anstatt Ihre ausführbare Datei bei jedem Kompilieren umbenennen zu müssen, können Sie dem Compiler nun den Namen der Ausgabedatei angeben:
gcc -o factorial factorial.c
Versuchen Sie ein paar weitere Programme aus Ihrem C-Programmier- und Datenstrukturunterricht.
Die Programmiersprache C ist ein bekanntes Programmierbuch von Brian Kernighan und Dennis Ritchie, das Ihnen die C-Programmierung mit einem starken Linux-Einschlag beibringt. Es wäre eine gute Idee, die Beispiele und Übungsprogramme aus diesem Buch auszuprobieren, um einen Eindruck von der C-Programmierung unter Linux zu bekommen.
Lassen Sie uns nun unser erstes C++-Programm unter Linux schreiben. Der Zyklus des Codierens, Kompilierens und Ausführens ist dem für C sehr ähnlich, mit Ausnahme des Compilers, den wir verwenden, nämlich g++
. Prüfen Sie, ob er bereits installiert ist, indem Sie den Befehl in einem Terminal ausführen, wie wir es für gcc
getan haben. Als nächstes überprüfen Sie mit Ihrem Paketmanager, ob libstdc++
, die Standard-C++-Bibliothek, installiert ist (wenn nicht, installieren Sie sie). Sobald beides installiert ist, öffnen Sie gedit und geben Sie dieses einfache C++-Programm ein:
#include<iostream>#include<string>using namespace std;int main(int argc, char **argv){ string s1="Hello"; string s2="World"; cout <<s1+" " + s2 << "n"; return 0;}
Speichern Sie diese Datei als string-demo.cxx
im Unterverzeichnis codes.
Kompilieren Sie die Datei und führen Sie sie aus:
g++ -o string-demo string-demo.cxx./string-demo
Das Ausführen des obigen Befehls sollte Folgendes auf dem Terminal ausgeben:
Hello World
Der C++-Code, den Sie sehen, ist Standard-C++, wobei das .h
in den Header-Dateien weggelassen wurde. C++-Quelldateien verwenden üblicherweise eines der Suffixe .C
.cc
.cpp
.c++
.cp
, oder .cxx
.
Lassen Sie uns nun ein einfaches C++-Programm schreiben, das Klassen verwendet:
#include<iostream>using namespace std;class Circle{ float r; public: void init(float x) /* Inline function */ { r = x; } float area();};float Circle::area(){ return 3.14*r*r;}int main(int argc, char **argv){ float radius; Circle circle; cout << "Enter the radius of the circle:: "; cin >> radius; circle.init(radius); cout << "Area of the Circle:: "<<circle.area()<<"n"; return 0;}
Speichern Sie die Datei im Unterverzeichnis codes als class-demo.cxx
.
Kompilieren Sie es und führen Sie es aus:
g++ -o class-demo class-demo.cxx./class-demoEnter the radius of the circle:: 4Area of the Circle:: 50.24
Angenommen, Sie konnten diese Programme erfolgreich kompilieren, würde ich Ihnen nun empfehlen, einige Ihrer C/C++-Aufgaben und Probleme mit gcc und g++ zu schreiben, zu kompilieren und zu testen. Wenn Sie auf irgendwelche Probleme stoßen, können Sie mich gerne anpingen.
Java-Programmierung unter Linux
Java ist vielleicht die nächste Sprache, die in indischen Schulen und Colleges nach C/C++ am häufigsten unterrichtet wird. Das Beste an der Java-Programmierung unter Linux ist, dass Sie die gleichen Werkzeuge wie unter Windows verwenden – ja, das Sun Java Development Kit.
Um das JDK unter Linux zu installieren, laden Sie das Installationsprogramm für Linux von der offiziellen Website herunter.
Wählen Sie die .bin
-Datei und nicht die *rpm.bin
-Datei, es sei denn, Sie wissen, was Sie tun. (Die .bin
-Datei ist das Äquivalent zu .exe
unter Windows). Sobald der Download abgeschlossen ist, wechseln Sie in Ihrem Terminal cd
in das Verzeichnis, in das die Datei heruntergeladen wurde, und verwenden Sie die folgenden Befehle:
chmod +x jdk-6u18-linux-i586.bin./jdk-6u18-linux-i586.bin
Die obigen Dateinamen können je nach heruntergeladener JDK-Version abweichen. Die erste Zeile macht das Installationsprogramm ausführbar, und die zweite Zeile führt es aus. Das Installationsprogramm sollte nun starten, und Sie sollten die „Sun Microsystems, Inc.
Akzeptieren Sie die Lizenz und die Extraktion des JDK sollte beginnen. Sobald das Installationsprogramm beendet ist, sollten Sie ein neues Unterverzeichnis mit dem Namen „jdk1.6.0_18“ innerhalb des aktuellen Verzeichnisses sehen. Wenn Sie mit der Java-Programmierung unter Windows vertraut sind, sollte dies leicht zu erkennen sein. Innerhalb dieses Verzeichnisses befindet sich das Unterverzeichnis bin, in dem sich der Java-Compiler (javac
), der Java-Interpreter (java
) und andere befinden.
Damit sind wir bereit; schreiben wir unser erstes Java-Programm unter Linux. Starten Sie gedit und schreiben Sie den folgenden Java-Code, der die Verwendung eines Arrays von Ganzzahlen zeigt:
import java.util.Random;class ArrayDemo { public static void main(String args) { int arr = new int; for(int i=0;i<10;i++) arr = (new Random()).nextInt(); for(int i=0;i<10;i++) System.out.println("Element at index " + i + "is::" + arr); }}
Speichern Sie den Code in eine Datei ArrayDemo.java
, kompilieren Sie ihn und führen Sie ihn wie folgt aus:
/home/amit/jdk1.6.0_18/bin/javac ArrayDemo.java/home/amit/jdk1.6.0_18/bin/java ArrayDemo
Beachten Sie die ersten beiden Befehle, in denen ich den vollständigen Pfad zum Speicherort der ausführbaren Dateien javac und java angegeben habe. Je nachdem, wo Sie das JDK entpackt haben, wird Ihr Pfad variieren.
Wenn Sie den zweiten Befehl ausführen, sollten Sie folgendes in Ihrem Terminal ausgeben:
Element at index 0is:: 480763582Element at index 1is:: -1644219394Element at index 2is:: -67518401Element at index 3is:: 619258385Element at index 4is:: 810878662Element at index 5is:: 1055578962Element at index 6is:: 1754667714Element at index 7is:: 503295725Element at index 8is:: 1129666934Element at index 9is:: 1084281888
So können Sie also Ihre Java-Programme kompilieren, ausführen, testen und debuggen.
OpenJDK
Ein Artikel über Java-Programmierung in einem Open-Source-Magazin wäre unvollständig, ohne über OpenJDK zu sprechen. Es ist gut, dass Sie über dieses Projekt Bescheid wissen. Wie Sie vielleicht schon erraten haben, handelt es sich um eine GPL-lizenzierte Open-Source-Implementierung der Java Standard Edition – d.h. der Quellcode des JDK, den Sie so gut kennen, steht Ihnen nun auch zur Verfügung, falls Ihnen etwas im aktuellen JDK nicht gefällt.
So, ist das ein anderes Java? Nein – Sie schreiben den gleichen Java-Code. Sie können OpenJDK über den Paketmanager Ihrer Linux-Distribution installieren (bei manchen Distributionen ist es bereits vorinstalliert). Eine Installationsanleitung finden Sie hier.
Praktische Aspekte
Aus verschiedenen Gründen ist es nicht immer möglich, Linux im gesamten Labor einzusetzen. In solchen Fällen ist es eine gute Idee, einen einzelnen Linux-Rechner im Labor zu haben, der als SSH-Server fungiert; Sie können die notwendige SSH-Client-Software auf anderen Betriebssystemen installieren, die es ermöglicht, sich aus der Ferne mit dem Linux-Rechner zu verbinden.
Dieser Rechner sollte eine relativ gute Konfiguration haben, je nachdem, wie viele Studenten ihn für ihre Codierung und Kompilierung verwenden werden – eine Dual- oder Quad-Core-CPU mit 4 GB RAM und eine Festplatte von mindestens 320 GB ist eine gute Idee. Für Windows ist Putty ein weit verbreiteter SSH-Client. Wenn Sie den Code unter Windows schreiben und ihn zum Kompilieren und Ausführen auf den Linux-Rechner kopieren, müssen Sie außerdem das pscp
-Programm von der Website herunterladen, mit dem Sie Dateien vom lokalen Rechner auf den Linux-SSH-Server kopieren können.
Wenn Sie eine GUI-Sitzung vom Linux-Server auf dem Windows-Rechner benötigen (z. B. während der GUI-Programmierung), dann untersuchen Sie den OpenNX-Server (der auf dem Linux-Server-Rechner installiert werden muss) und den NoMachine NX-Client für Windows. Ein Rechner mit der oben angegebenen Konfiguration sollte etwa 10 Benutzersitzungen unterstützen, bevor er anfängt, langsamer zu werden. Die Feinabstimmung des Desktop-Managers (verwenden Sie einen leichten wie LXDE oder XFCE) und die Verwendung von leichteren Editoren wie GVim zum Schreiben von Code ist ein guter Anfang.
Eine andere Möglichkeit (die keine dedizierte Linux-Server-Maschine benötigt) ist die Installation von Linux in einer virtuellen Maschine auf Ihrem Desktop. Dies könnte sich auch auf einem Heimcomputer als nützlich erweisen. VirtualBox ist eine Virtualisierungssoftware, die, wenn sie auf Ihrem Windows-System installiert ist, es Ihnen ermöglicht, eine virtuelle Maschine zu erstellen, in der Sie Linux installieren können, ohne Ihre Windows-Installation zu stören. Sie benötigen natürlich etwas freien Speicherplatz (8 GB oder mehr) für die Festplattendatei der virtuellen Maschine. Sie brauchen das Linux-Installations-ISO in diesem Fall nicht auf eine CD zu brennen – Sie können VirtualBox einfach anweisen, die ISO-Image-Datei als Datenträger zu verwenden, der in das CD-ROM-Laufwerk der virtuellen Maschine eingelegt wird.
Dies ist auch eine gute Möglichkeit, die Installation von Linux zu üben und zu sehen, wie einfach sie sein kann. Speziell für Ubuntu gibt es Wubi, mit dem Sie Ubuntu wie jede andere Windows-Anwendung installieren (und deinstallieren) können, und zwar einfach und sicher, „mit einem Klick“. Die Ubuntu-Dateien werden in einem einzigen Ordner auf Ihrem Windows-Laufwerk gespeichert, und eine Option zum Starten von Ubuntu wird zu Ihrem Windows-Boot-Loader-Menü hinzugefügt.
Doch der Zugriff auf die Festplatte ist etwas langsamer als die Installation auf einer dedizierten Partition. Wenn Ihr Windows-Laufwerk stark fragmentiert ist, verschlechtert sich die Performance weiter. Hibernation wird unter Wubi nicht unterstützt. Außerdem ist das Wubi-Dateisystem anfälliger für harte Reboots (Ausschalten des Stroms) und Stromausfälle als eine normale Installation auf einer dedizierten Partition, die ein robusteres Dateisystem bietet, das solche Ereignisse besser verkraftet.
Im Allgemeinen erfordert die Programmierung unter Linux auch ein gewisses Maß an Vertrautheit im Umgang mit Shell-Befehlen. Machen Sie sich mit der Arbeit mit der Shell vertraut. Versuchen Sie, den Gebrauch der Maus zu minimieren 🙂
Verwenden Sie Ihre Lieblings-IDE unter Linux
Wenn Sie irgendwelche IDEs für Ihre Entwicklungsbedürfnisse verwendet haben, sollte es eine großartige Neuigkeit sein, dass zwei sehr populäre IDEs – NetBeans und Eclipse – auch Linux-Versionen haben, und beide unterstützen die Entwicklung in C, C++ und Java. Für GNOME-basierte Linux-Distributionen ist Anjuta DevStudio eine weitere leistungsfähige IDE für C, C++ und Java (und auch andere Sprachen). Alle drei sollten im Paketmanager Ihrer Distribution verfügbar sein.
Zum Abschluss dieses Artikels möchte ich Ihnen dringend ans Herz legen, einen ehrlichen Versuch zu unternehmen, Linux für die Programmierung zu nutzen. Es ist eine viel bessere Welt, in der man leben kann. Ich würde mich freuen, wenn Sie Fragen/Bedenken/Kommentare/Anregungen zu diesem Artikel haben.
Ressourcen
- graphics.h ähnliche Funktionalität mit GCC
- GNU Compiler Collection
- von Brian W. Kernighan und Dennis M. Ritchie, The C Programming Language
- Bjarne Stroustrup, The C++ Programming Language
- Neil Matthew, Richard Stones, Beginning Linux Programming
- StackOverflow ist ein Community-Forum, in dem Sie Ihre Fragen zur Programmierung stellen können. Es ist sprachneutral, was es sehr attraktiv macht.
- Eine grundlegende Einführung in SSH
- VirtualBox. Benutzerhandbuch.
- yolinux.com ist eine gute Quelle für allgemeine Linux-Informationen.