Kreuvfs Allerweltsblog

2008-09-19

Programmieren lernen mit C, 4. Auflage

Abgelegt unter Rezension,Software von Kreuvf um 16:20:56

Rezensiert wird im folgenden das Buch “Programmieren lernen mit C” von Karlheinz Zeiner in der vierten Auflage (ISBN: 3-446-21596-4). Die beiliegende CD habe ich dabei nicht beachtet, da das Buch aus einer Bibliothek ausgeliehen wurde und die CD nicht dabei war.

Das Buch wurde mir von einem Informatiker empfohlen, der am Warzone 2100 Resurrection Project teilnimmt, als ich den Wunsch äußerte eben auch das benötigte C zu lernen, um Code beisteuern zu können (auf absehbare Zeit).

Gute Seiten

Es ist für einen Anfänger äußerst hilfreich, wenn wie im Buch geschehen, Standards beachtet werden. Der Autor beschreibt sowohl C89 als auch C99 und gibt darüberhinaus noch Anleitung wie man mit dem auf der CD mitgelieferten Programm und gcc kompiliert unter Beachtung eben jener Standards.

Das Buch ist in übersichtliche Kapitel angeordnet und es werden Kapitel zu den Themen strukturierte Programmierung und Softwareentwicklung angeschnitten, man erhält also über das Basiswissen in der Programmiersprache auch gleich noch weiterführende Informationen.

Viele der Beispiele erläutern den teils schwierigen Stoff gut, allerdings ist dies noch verbesserungswürdig. Das Buch ist so aufgebaut, dass ein Anfang gemacht wird mit einfachen Hallo Welt!-Programmen, bei denen man als Leser nicht zu viel des verwendeten Codes hinterfragen sollte, da man teilweise erst in einigen Kapiteln später erklärt bekommt, was man da eigentlich genau gemacht hat. Es ist also für Anfänger leicht die ersten paar Programmzeilen zusammenzuschreiben und halbwegs zu wissen was das Programm macht.

Die Kapitel zu den einzelnen Themen widmen sich vielen Themen, manche werden auch mehrfach, aber aus einem anderen Blickwinkel, behandelt, um so das Verständnis zu vertiefen.

Sehr gut gelungen sind die vielen Übungsaufgaben im Buch, auch wenn dies meiner Meinung nach teilweise über das Ziel hinausgeschossen war.

Schlechte Seiten

Viele Erklärungen sind für ein Lehrbuch zu schwammig und ungenau, andere Erklärungen wiederum sind richtig, erklären aber nicht den Sinn (warum sollte ich das benutzen, wenn es so doch auch geht?) eines bestimmten Konstrukts oder die Unterschiede zu einem ähnlichem Konstrukt.

Äußerst ärgerlich sind Fälle wie die Erklärung zu dem Wesen einer inline-Funktion. Man spürt förmlich wie sich der Autor darum windet eine Erklärung abzuliefern. Natürlich hat dies vermutlich den Sinn niemanden zu verschrecken, aber dann sollte man doch explizit sagen, warum man etwas nicht erklärt bzw. erklären kann/will.

Ebenfalls wird erst zu spät im Buch erklärt was der Sinn ist, der hinter der Benutzung von Zeigern steckt. Grundsätzlich ist die Erklärung zu Zeigern, also was Zeiger sind, in wenigen Worten getan, warum aber ist es unmöglich bereits an dieser Stelle zu erklären, dass man Zeiger zum Beispiel deswegen an eine Funktion übergibt, weil man nicht die Variable an sich übergeben möchte, sondern eben nur einen Verweis darauf, um unnötige Kopierarbeiten zu sparen und so effizienter zu sein? Es gibt einige weitere Beispiele dieser Art, die es mir unnötig schwer machten den Sinn hinter bestimmten Features von C zu finden.

Weiterhin finde ich es absolut schwachsinnig mitten im Buch mehrere Kapitel zu bringen (da musste ich mich regelrecht durchquälen), die nichts mit C an sich zu tun hatten, sondern sich um Softwareentwicklung im Allgemeinen drehten. Sowas kann ans Ende gepackt werden in einen Anhang, aber es hat nichts unmittelbar damit zu tun eine Programmiersprache zu lernen, also zu lernen sich in einer Programmiersprache korrekt auszudrücken.

Mir hat auch nicht gefallen, dass am Anfang fast nichts erklärt wird, man den Code in einer “Friss oder stirb!”-Mentalität vor den Latz geknallt bekommt und dann erst später nach und nach alles systematisch angegangen wird. Ein Ansatz, bei dem von Anfang an systematisch erklärt wird, hätte mir um Längen besser gefallen.

Effizienzbetrachtungen habe ich an vielen Stellen vergeblich gesucht. Es ist in jeder Programmiersprache wichtig zu wissen wie effizienter Code arbeitet und welche Probleme es häufig in ineffizientem Code gibt. Gerade C kann doch hervorragend eingesetzt werden, um zeitkritische Dinge mit für andere Sprachen atemberaubender Geschwindigkeit auszuführen und das noch unter geringem Speicherverbrauch (huhu, Java).

Dass viele Dinge am Ende des Buches offen blieben, erkenne ich daran, dass ich insgesamt 53 Fragen (nach der Zahl der Fragezeichen gerechnet) an den Informatiker weitergeleitet habe. Darunter waren eher lapidare Dinge wie Unterschiede zu anderen Plattformen (Endianness), aber auch fundamentale wie der Sinn hinter Unionen, da gerade diese im Buch nur sehr kurz dran kamen. Ebenfalls vermisste ich Beispiele aus der realen Welt, die Gebrauch von Funktionen machen, die eben nicht aus den Standardbibliotheken stammen (Bibliotheken Dritter, keine selbstgemachten). Aber auch Hinweise zum Debugging von Programmen, vor allem welche Möglichkeiten man dazu nutzen kann, wären sehr hilfreich gewesen. Das hätte man als letzte Kapitel nehmen können und, wenn das Buch dann zu dick wäre, eben die Kapitel über Softwareentwicklung rauslassen oder vekürzen können.

Zusätzlich zu all diesen Problemen kommen die vielen kleinen Dinge, die mich enorm störten. Darunter ist das typografische Unding (imho) normalen Text linksbündig zu gestalten. Dazu gesellen sich viele kleine Unschönheiten wie etwa “z.B.” statt “z. B.” und so weiter. Das dauernd zu lesen, sorgt dafür, dass der Spaß daran enorm darunter leidet.

Es hat zwar nur nebensächlich etwas mit dem Buch zu tun, aber Herr Zeiner hat seine Meinung zu C als erste Programmiersprache mittlerweile gewandelt, die Relevanz zur Rezension zum Buch kommt nach dem Zitat:

Heute würde ich für den Schulunterricht vorschlagen, gleich mit C# (oder Java) zu beginnen. Das Hauptproblem von C ist, dass die Programmierung einer zeitgemäßen grafisch orientierten Benutzerschnittstelle in C heute uninteressant ist. Der heutige Jugendliche ist eher für die Gestaltung eines Fensters mit Controls zu motivieren als für das Nachdenken über Algorihmen. Eine Konsolapplikation ist für ihn sehr unattraktiv. In C# kann auch der Anfänger relativ rasch eine Windows-Applikation mit einigen Edit-Controls für die Ein-/Ausgabe erstellen. Allerdings gilt auch für C#: Was man in C lernen muss, muss man auch in C# lernen. Lediglich die Zeiger sind verschwunden.

Quelle: Seite zum Buch von Herrn Zeiner Hervorhebungen von mir.
So wie es mir im Buch vorkam, nehmen Zeiger und die dahinterstehende Logik aber großen Raum in C ein. Wenn man Zeiger nun aber “weglässt”, dann muss dieses Konzept doch denjenigen, der dann doch C machen will, erst noch beigebracht werden, oder nicht? Und die Gestaltung eines Fensters ist nicht die Aufgabe eines Programmierers, sondern die eines GUI-Designers, der sich nach allen Usability-Regeln darum kümmert, dass die Funktionen des Programms über die vorhandene Oberfläche so intuitiv und sinnvoll wie nur irgend möglich genutzt werden können. Und auch wenn sich das einfach anhört, kann dies ein hochbezahlter Job sein. Ich merke daran aber, dass es Herrn Zeiner mit seinem Buch wohl eher darauf angekommen ist das Programmieren zu lehren als Programmieren in C zu lehren. Dies ist sehr schade.

Fazit

Alles in allem kann ich dieses Buch nicht weiterempfehlen für diejenigen, die wie ich gerne ein bisschen mehr wissen wollen, also über den Tellerrand hinausblicken möchten. Nach dem schrittweisen Durcharbeiten des Buches über gut zwei Wochen, sind noch viele Fragen geblieben und da mir o. g. Informatiker anbot meine Fragen zu beantworten, bekam er vier DIN A4-Seiten (mit dem Computer geschrieben) mit 22 teils fundamentalen Problemen und insgesamt 53 Fragen.

Da Herr Zeiner auch vor Veröffentlichung des Buches schon Programmierübungen gegeben hat, liegt es nahe zu vermuten, dass er durch das Zusammenstellen aller Lehreinheiten und Übungsaufgaben versucht hat mit bereits getaner Arbeit Geld zu machen (dies ist eine pure Vermutung, sollte aber nicht unerwähnt bleiben).

Für jemanden, der allerdings noch nie in irgendeiner Form programmiert hat, kann es den ersten Kontakt mit der Programmiersprache C herstellen und, wenn man die Übungen macht (habe ich größtenteils ausgelassen), sollte man auch schnell fit in der Syntax und im “Denken in C” werden. Ich nehme daher auch an, dass das Buch nicht mich als Zielgruppe hatte, da ich bereits erste Erfahrungen darin hatte “wie ein Computer zu denken” und mir wenige Teile daher auch auf die Nerven gingen. Es hilft allerdings jedem, der dieses Buch liest, ungemein, wenn jemand, der sich in C auskennt und etwaige Fragen beantworten kann, zur Verfügung steht.

Da ich keinerlei Praxiserfahrung habe, würde ich mich dennoch immer noch nur als C-Anfänger bezeichnen, was aber nichts mit der Qualität des Buches zu tun hat. Ich wäre wahrscheinlich nach dem Lesen jedes Buches, das in eine Programmiersprache einführt, nicht mehr als ein Anfänger.

Kommentare zu diesem Artikel abgeben (benötigt Boardaccount)

2008-09-16

KgL – Teil 03: Neue Heimat Linux

Abgelegt unter In eigener Sache,Software von Kreuvf um 21:20:48

Über ein Jahr ist es jetzt her seit ich den letzten Teil meiner Pseudo-Dokumentation “Kreuvf goes Linux” veröffentlicht habe. Die interessanteste Frage dürfte dabei schon mit dem Titel beantwortet sein: Ich bin immer noch bei Linux und werde auch nicht zurück.

Eine Neuerung in diesem Artikel wird sein, dass ich keinen Ausblick auf den nächsten Teil mehr geben werde, weil mich das zum einen einschränkt und zum zweiten nicht so interessant wird für diejenigen, die dann den nächsten Teil lesen (weil der ungefähre Inhalt bereits bekannt ist).

Nun gut, ich habe dennoch im Teil 02: Distributionswahl in die Zukunft geschaut und in Aussicht gestellt, dass es dieses Mal Details zu meiner Hardware gibt (was habe ich mir dabei nur gedacht oO) und ich zudem noch meine Ersatzprogramme für Windows-only-Kram wie mIRC und WinAmp aufschreibe.

Wie man aus dem Titel schon erkennen kann, habe ich darüber hinaus aber noch einiges anderes geplant.

Kreuvfs Hardware

  • Pentium III mit 1 GHz
  • 512 MB SD-RAM
  • Geforce 4 Ti-4200 mit 64 MB Speicher

Der Rest ist sowas von egal, bis auf das CD/DVD-Kombilaufwerk, die Festplatte und der Netzwerkkarte (gab es für 5,12 € und bei dem Preis muss man doch einfach zuschlagen) ist an dem Rechner genau nichts neu, alles gebrauchte Teile. Aus welchem Grund? Geld! Wer keine Erfahrung mit Linux hat, wird das nicht auf einem neuen Rechner ausprobieren und da ich mit meinem absolut topmodernen Windows 98 auch nicht auf einen neuen Rechner wechseln konnte und Linux auf dem alten ausprobieren, musste ich das eben so machen.

Ein Seitenhieb muss noch sein: Vista ist natürlich viel zu scheiße, um auch nur irgendwie auf meinen Rechnern zu laufen. Jetzt warte ich auf die Heise-Foren-Gänger, die mich da eines Besseren belehren wollen, mir dann sagen, dass ich zu scheiße bin, weil ich keine besseren Rechner habe und dann einsehen müssen, dass Vista (aka Windows ME 2) scheiße ist. Kurzzusammenfassung: Ich mag Vista nicht nur nicht wegen des Ressourcenverbrauchs, sondern auch nicht wegen diverser technischer Mängel (DRM ist ein Mangel). Dass ich für derartige Produkteigenschaften auch tatsächlich noch zahlen soll, grenzt schon eindeutig an Verblendung. Dass ich für ein Betriebssystem, das ich nicht mag, auch nicht noch eine Straftat begehen will (@Rechtsmenschen: wäre es das überhaupt?), habe ich bereits im ersten Teil von Kreuvf goes Linux geschrieben.

Ersatzsoftware für Windows-only-Programme

Vorweg: Es ist sehr schade, dass es heute noch Programme gibt, die es nur für eine Plattform bzw. einen Plattformtypen gibt (und noch dazu closed source sind, was die Arbeit für Dritte so gut wie unmöglich macht). Ein Programm, das nur für eine Plattform existiert, schränkt deren Benutzer unnötig eben auf genau nur diese eine Plattform ein. Spiele seien da mal außen vor gelassen, weil es da zu viele vertragliche Verstrickungen zu geben scheint zwischen Spieleentwicklern, Publishern, Hardware- und Softwareherstellern. Alle sonstigen Programme dürften nach einiger Portierungsarbeit aber auf vielen Plattformen nativ lauffähig sein (denn darauf kommt es an).

Für mich kommen daher Programme, die es eben nur auf einer Plattform gibt, nur noch in Ausnahmefällen in Frage. Ich will die von mir benutzte Software so gut wie überall einsetzen können (theoretisch), damit ich mich nicht für jede Plattform auf andere Tools umgewöhnen muss. Wie gesagt, gilt nur für Tools, Standardprogramme wie eines zum Abspielen von Ogg/Vorbis oder MP3 findet man überall.

Als Ersatz für mIRC dient mir bisher XChat relativ gut, auch wenn ich nach mehreren Suchläufen keine vernünftige Dokumentation dazu finden konnte und der/die Autor(en) die Windowsversion immer ein wenig aktueller halten als andere Versionen. Was mir besonders gefällt, ist die Möglichkeit die Logs nach Belieben organisieren lassen zu können (habe bei mIRC 6.03 aufgehört, kA, ob das da auch geht).

Ersatz für WinAmp sind mehrere Programme. Als “Spiele mir Musik ab und gut ist”-Programm dient das standardmäßig zum Einsatz kommende Rhythmbox, ich vermisse dort keine Features, weshalb ich damit auch zufrieden bin. Um meine ebenfalls heißgeliebten SPCs abspielen zu können, verwende ich das böse Programm Audio Overload (closed source). Das einzige, was mich ein wenig wurmt ist die miserable Midiwiedergabe, die über timidity erfolgt. Bei Freepats fehlen etliche Instrumente, sodass manche Stücke so gut wie leer sind. Wäre echt froh, wenn an dieser Stelle etwas getan werden könnte.
Update 07.01.2009: Gstreamer kann auch SPC, crasht allerdings beim Beenden nach mehreren Stunden Dauerlauf des gleiches Stücks (was ein Bug!). Zudem kann ich einzelne Kanäle nicht abschalten wie mit Audio Overload. Aber immerhin: SPC mit Gstreamer :D

Neue Heimat Linux

Nun aber zum eigentlichen Teil des Ganzen, nämlich der Erkenntnis, dass ich mich mittlerweile “Zuhause” fühle in Linux. Seit mehreren Monaten benutze ich meinen Linuxrechner weitaus häufiger als den Windows-Rechner (den eigentlich nur noch für Guild Wars und Warzone 2100) und ich plane auch fest den Windows-Rechner umzubauen, sodass ich dort ein Dualboot Windows/Linux habe, wobei mir die Linuxumgebung dann vor allem dazu dient mich mit Warzone 2100, Linux und C zu befassen. Ich habe eben nicht vor auf meinem Produktivsystem irgendwelche Experimente durchzuführen, vor allem nicht, wenn ich nicht zu 100% weiß was ich da tue. Zudem sind das einfach Freiheiten, die ich gerne habe: Machen, was einem so in den Sinn kommt, und dann gucken, ob es klappt. Nur so lassen sich mehr Erfahrungen sammeln und man kommt weiter.

Zudem will ich die Konsole nicht mehr missen, es ist einfach zu geil, was man selbst mit derart eingeschränkten Fähigkeiten wie ich sie auf diesem Gebiet bisher noch habe, schon alles machen kann. Zudem ist die Einfachheit, die vielfach dahintersteckt, einfach nur umwerfend. Weiterhin habe ich mich auch erfolgreich durch das Buch “Programmieren lernen mit C, 4. Auflage” gearbeitet und auch “Reguläre Ausdrücke, 3. Auflage” wartet darauf zuende gelesen zu werden (die Kapitel über Perl, VB.NET und Java habe ich allerdings ausgelassen, interessieren mich einfach nicht; Rezensionen folgen). Alles in allem also bin ich bereit mich tiefer in die FLOSS-Welt zu stürzen.

Und seit ich zum Warzone 2100 Resurrection Project beitrage, lerne ich fast automatisch neue und vor allem interessante Dinge kennen, die mir auch im täglichen Leben weiterhelfen.

Was mir allerdings am stärksten auffällt, sind dann natürlich weitere Unzulänglichkeiten von Windows 98: Unter anderem die unglaublich beknackte Einschränkung, dass nach einiger Zeit, in der man durch tiefe Ordnerstrukturen gegangen ist, die Anzeige im Explorer immer länger dauert. Teilweise braucht man dann für sowas wie C:\Ordner 1\Ordner 2\Ordner 3\Ordner 4\Ordner 5\Ordner 6\ MINUTEN, nur um sich die Inhalte anzeigen zu können. Unter Ubuntu geht das zwar nicht immer so flott wie es unter Windows die ersten paar Ordner geht, aber dafür konstant gleich schnell.

Genug für dieses Mal, wie versprochen gibt es keine Informationen zum nächsten Teil, weil ich mich ja dann jetzt schon wieder festlegen müsste :P

Kommentare zu diesem Artikel abgeben (benötigt Boardaccount)

2007-09-26

Excel 2007: Probleme bei der Multiplikation

Abgelegt unter Software,Technologie von Kreuvf um 09:25:47

Vor einiger Zeit berichtete ich in einem Webtipps-Artikel darüber, dass Apples Numbers "absolut" nicht kann. Während die Heise-News dazu im Nachhinein geupdated wurde und es sich herausstellte, dass es kein generelles Problem ist, sondern "nur" mit der gewählten Lokalisierung zusammenhängt – aber auch das ist natürlich schlimm genug – dürfte das Problem, das jetzt über Microsofts Excel 2007 bekannt geworden ist, ein wenig schlimmer sein.

Scheinbar geben einige Multiplikationen, die eigentlich 65.535 (das ist 216-1) zurückgeben sollten, stattdessen lieber 100.000 zurück. Hat man also in Zelle A1 die Formel "=850*77,1", so wird in A1 nicht 65535 erscheinen, sondern 100.000. Rechnet man jetzt in Zelle A2 mit Zelle A1 weiter, stößt man je nach verwendeter Rechenart auf merkwürdige Ergebnisse:

  • "=A1+1" gibt 100.001 zurück,
  • "=A1*2" gibt 131.070 zurück,
  • "=A1*1" gibt 100.000 zurück,
  • "=A1-1" gibt 65534 zurück,
  • "=A1/1" gibt 100.000 zurück und schlussendlich gibt
  • "=A1/2" 32767,5 zurück.

Verwirrt? Macht nichts, die Software kostet schließlich was und muss daher ja auch was taugen (#1-Argument der Open-Source-Software-per-se-Ablehner) und vielleicht ist die Mathematik ja auch falsch?

Natürlich kann man Excel in Schutz nehmen und behaupten, dass man ja so selten eine Multiplikation hätte, die 65535 ergibt, dass das bestimmt niemanden behindern könnte. Aber was ist, wenn jemand 850 Arbeitsstunden zu je 77,1 € mit Excel abrechnet und dann aus den Daten eine PDF erstellt, die später als Rechnung für den Kunden gelten soll? Wer würde dann auf die Idee kommen, dass die überschüssigen 34465 € durch einen Fehler in Excel entstanden sind? Und wenn man auf die Idee kommt und das noch rechtzeitig merkt, der Kunde seine Rechnung aber schon in den Händen hält, mit welchen Worten wird man dann dem Kunden versuchen zu erklären, dass der Betrag durch einen Fehler in Excel entstanden ist? Eine Firma, die mir das auf die Schnelle versuchen würde zu erklären, wäre gleich in einer unseriösen und inkompetenten Ecke (“Die können ja nicht mal ihr Excel richtig bedienen >.<“) bis man sich dann davon hat überzeugen können, dass tatsächlich das teure1 Excel der Schuldige ist.

1 Preise zu Excel 2007 und Office 2007 bei Amazon:

Und all diese Versionen enthalten den tollen Multiplikationsfehler…

Nachtrag 10.10.2007 um 19:15 Uhr

Hotfix beseitigt Rechenfehler in Excel 2007 – heise online

Quellen: Excel 2007 Multiplication Bug – Slashdot via Fefes Blog, Kommentar über die Art der Multiplikationsfehler

Kommentare zu diesem Artikel abgeben (benötigt Boardaccount)

2007-09-10

GnuPG und digitales Signieren

Abgelegt unter In eigener Sache,Software,Technologie von Kreuvf um 10:45:35

Weil ich am Wochenende mehrere Stunden nach einer für mich verständlichen Erklärung gesucht habe, diese letztendlich im FAQ von GPG gefunden habe und ich finde, dass diese Information nicht weit genug verteilt ist, will ich hiermit dazu beitragen, dass man eher auf diese Information stößt.

Ausgangslage

Mit meinem Wechsel zu Linux habe ich auch vor mich mit GPG-Verschlüsselung zu beschäftigen (in absehbarer Zeit gibt es daher auf kreuvf.de auch meinen Public Key) und im Zuge dessen habe ich mich auch mit dem digitalen Signieren von E-Mails beschäftigt.

Asymmetrische Verschlüsselung

Da wahrscheinlich nicht jeder etwas mit GPG oder dem Begriff der "asymmetrischen Verschlüsselung" anfangen kann, möchte ich dies kurz umreißen.

Bei symmetrischen Verschlüsselungsverfahren wird sowohl für das Verschlüsseln wie auch für das Entschlüsseln der gleiche Schlüssel verwendet. Somit muss dieser Schlüssel beiden Parteien bekannt sein. Das Problem ist nur, dass man einen sicheren Kommunikationskanal finden muss, auf dem dieser Schlüssel übertragen wird. Gibt es diesen nicht, kann der Schlüssel abgefangen werden und jede abgefangene Nachricht kann mitgelesen werden.

Diesem Problem entgeht man durch asymmetrische Verschlüsselungsverfahren, da bei diesen für das Ver- und Entschlüsseln verschiedene Schlüssel verwendet werden müssen. Die Sache läuft dann so ab, dass jeder Teilnehmer zwei Schlüssel hat: einen öffentlichen Schlüssel (Public Key), der für jedermann verfügbar sein darf und für das Verschlüsseln von Nachrichten an den Besitzer des dazugehörigen Private Keys dient, und einen privaten Schlüssel (Private Key), der streng geheimgehalten werden muss und für das Entschlüsseln der mit dem öffentlichen Schlüssel verschlüsselten Nachrichten dient.

Digitales Signieren

Nun kommt aber der Teil, den ich erst nach langer Antwortsuche verstanden habe: Beim digitalen Signieren "unterschreibt" man die eigene Nachricht mit seinem Private Key. Unterschreiben heißt hierbei, wenn ich das richtig verstanden habe, dass von der gesamten Nachricht ein Prüfwert errechnet wird und dieser dann mit dem Private Key verschlüsselt und mit der Nachricht mitgeschickt wird.

Nun ist die Frage: Warum mit dem Private Key verschlüsselt?

Es wurde leider nirgendswo deutlich gemacht – und das hat mich auch so verwirrt -, dass der Private Key auch zum Verschlüsseln dienen kann und nur mit dem Public Key entschlüsselt werden kann. Durch den aus der Entschlüsselung zu Tage tretenden Prüfwert kann dann zusätzlich bestätigt werden, dass die Nachricht nicht manipuliert wurde. Man hat also zwei Fliegen mit einer Klappe geschlagen: Zum einen bestätigt man durch die Entschlüsselbarkeit des Prüfwertes mit dem Public Key, dass der dazugehörige Private Key verwendet wurde. Zum anderen lässt der Prüfwert einem nachvollziehen, ob die Nachricht in irgendeiner Weise manipuliert wurde.

Kommentare zu diesem Artikel abgeben (benötigt Boardaccount)

2007-09-04

KgL – Teil 02: Distributionswahl

Abgelegt unter In eigener Sache,Software von Kreuvf um 19:31:14

Vor einiger Zeit habe ich den ersten Teil der Artikelserie Kreuvf goes Linux (KgL) veröffentlicht, in dem es hauptsächlich um meine Gründe für die Abkehr von Windows und die Hinwendung zu Linux ging.

Im zweiten Teil meiner Artikelreihe will ich einen für einen Anfänger wohl sicherlich schweren Schritt beschreiben: Die Wahl der "richtigen" Linuxdistribution.

Um es gleich vorweg zu sagen: Ich habe mich vorerst für Ubuntu entschieden, habe allerdings auch vor mich bei anderen Distributionen, vor allem Debian, umzuschauen.

Entscheidungskriterien

Ich habe mich im Vorfeld zu meinem Entschluss ein wenig mit Linux auseinandergesetzt und dabei auch solch geniale Features wie Live-Umgebungen kennengelernt – der wohl einfachste Weg sich mit Linux im Allgemeinen und einer bestimmten Distribution im Speziellen anzufreunden.

Die Live-Umgebung ist praktisch nichts weiter als ein von CD/DVD gestartetes Betriebssystem, das sich in sehr weiten Teilen genau so verhält wie eine Installation auf der Festplatte. So kann man sich langsam und sicher an ein neues Betriebssystem heranwagen ohne auch nur die geringsten Spuren davon auf der Festplatte zu haben. Man kann das System sogar komplett zerschießen und braucht dann nur einen Neustart, um wieder ein funktionstüchtiges Betriebssystem zu haben. Logischer Nachteil davon ist, dass nach einem Neustart alle gemachten Veränderungen am System ebenfalls gelöscht sind.

Man könnte annehmen, dass dieser Nachteil ein besonders schwerwiegender Nachteil ist, schließlich ist man als Windows-User ja auch schon an eine Art "Neustart-Spamming" gewöhnt getreu dem Motto "Ohne Neustart ändere ich nix!". Also liegt aus Gewohnheit die Vermutung nahe, dass dies unter Linux ähnlich läuft und man für jede kleine Änderung einen Rechnerneustart benötigt, womit eben auch die durchgeführte Änderung nicht mehr vorhanden wäre.

Dem ist natürlich nicht so, Linux ist wunderbar modular aufgebaut und sollte man mal einen "Neustart" benötigen, reicht es aus, wenn die entsprechende Komponente einzeln neugestartet wird. Das kann man sich am Beispiel eines Webservers wie Apache ein wenig anschaulicher klar machen. Ändert man die Konfiguration des Webservers, muss man nur den Webserver neustarten und das ist im Endeffekt nichts weiter als ein Programm, weshalb ein kompletter Rechnerneustart überflüssig ist. Dies gilt auch für den XServer, der die grafische Oberfläche zur Verfügung stellt.

Ich habe im Vorfeld auch einiges über Paketverwaltungen unter Linux gelesen, konnte allerdings als Laie nicht erkennen, ob DEB oder RPM besser für mich ist und mir ist im Endeffekt vorerst auch egal welches von beiden ich verwende, solange es problemlos funktioniert.

Und da wäre ich schon beim nächsten Punkt, dem "Einfach-Funktionieren". Mein Test unter Ubuntu hat erbracht, dass sich verschiedene in den sogenannten "Paketquellen" vorhandene Pakete so leicht installieren lassen, dass es damit niemals Probleme geben sollte. Übrigens erscheint mir das Wort "installieren" schon fast zu hoch gegriffen, es ist mehr ein "Zusammenklicken" von Programmen, die man gerne hätte.

Das Ganze wird dann via Internet auf den eigenen Computer überspielt und ist sofort – und wieder (im Normalfall) ohne Neustart – nutzbar, etwas, das mich sehr fasziniert hat. Sowas wäre unter Windows 98 (und wahrscheinlich auch Nachfolger davon) undenkbar, zumal ich Software erhalte, die für meine Zwecke ausreicht und daher durchaus mit kommerzieller Software konkurrieren kann. Zudem kann man z. B. die allerneuesten Features von Microsoft Office schon aus Kompatibilitätsgründen nicht nutzen, weil das Dokument sonst für ältere Versionen nicht mehr lesbar wäre, was natürlich auch dadurch verstärkt wird, dass Microsoft die älteren Betriebssysteme immer weniger berücksichtigt. So ist schon Office 2003 nicht mehr unter Win9x lauffähig (Quelle).

Aber zurück zu den Paketquellen: Ein Nachteil dieser Paketquellen ist, dass es immer etwas dauert bis die aktuellste Version einer Software auch in den Paketquellen vorhanden ist, was meiner Meinung nach aber im Austausch für den gewonnenen Komfort verkraftbar sein sollte. Und da es einem nicht die Möglichkeit nimmt sich die aktuellste Version anderweitig zu besorgen, sehe ich darin auch kein Problem.

Das, was die meisten potentiellen Linuxnutzer wohl davon abhält tatsächlich Linuxnutzer zu werden, ist sicherlich die häufig genannte Konsole. Zugegeben, heutzutage – und damit meine ich im Zeitalter der grafischen Benutzeroberfläche (inkl. der vielen zur Produktivität nichts beitragenden Effekte) – ist man als Benutzer sehr verwöhnt. Wann immer irgendwo auch nur die kleinste Berührung mit diesem Thema stattfindet, ist der Durchschnittsuser hoffnungslos überfordert. Als klassisches Beispiel unter Windows wäre da das Hinzufügen von Kommandozeilenparameter zu einer Verknüpfung mit einem Programm zu nennen. Was weiß der Durchschnittsuser aber auf jeden Fall von Linux? Richtig: “Ey, ist ja voll doof, weil ohne Konsole geht ja nix, Alter.”

Ich möchte nicht das Gegenteil behaupten, glaube aber, dass mit einer steigenden Linuxnutzerschaft auch die Zahl der Programme, die mit grafischer Oberfläche funktionieren, kräftig ansteigen wird. Und wenn man sich die Ankündigungen zum "bulletproof x" so ansieht, dürfte es in Zukunft sogar nicht mehr dazu kommen, dass man ohne grafische Benutzeroberfläche arbeiten muss. Aber so düster wie sich das anhört ist die Linuxwelt sowieso nicht. Der Durchschnittsuser, der seinen Rechner ausschließlich für Standardaufgaben – dazu zähle ich die Benutzung von Office-Programmen, den Versand und Empfang von E-Mails, das Surfen im Internet und das Betrachten verschiedener Multimediainhalte – einsetzt, braucht die Konsole mit der passenden Distribution wahrscheinlich gar nicht. Alles ist zusammenklickbar und seinen Mailklienten, den Browser oder die Office-Programme musste man auch unter Windows auf eigene Bedürfnisse zuschneiden, falls man mit dem Standard nicht zufrieden war (Anmerkung: Durchschnittsusers sind in der Regel damit zufrieden, wenn sie das Programm so bedienen können wie es ist, Veränderungen am Programm würden nur die Routiniertheit nehmen). Es kommt auf die eigenen Vorlieben an, es kommt darauf an, was man mit seinem Rechner tun möchte, daher empfiehlt es sich mehrere Distributionen zu verwenden, falls man nicht mit der erstbesten 100%ig zufrieden ist.

Qual der Wahl

Nun gibt es sehr viele Linuxdistributionen und ohne alle davon zu kennen (ich kenne bislang sowieso nur eine), bin ich mir sicher, dass ein Großteil dieser Linuxdistributionen viele oder sogar alle der oben genannten Entscheidungskriterien erfüllt, weshalb sich die nächste Frage stellt:

Warum Ubuntu?

Die Antwort ist simpel und vielleicht auch ein wenig enttäuschend: Weil es die medienpräsenteste Linuxdistribution ist (sozusagen sowas wie eine "Mainstream-Distribution") und lt. eigener Aussage sehr viel Wert auf eine möglichst hohe Anfängerfreundlichkeit gelegt wird.

Ich habe auf Anhieb eine große und überaus freundliche deutsche Community gefunden und im englischsprachigen Raum gibt es ebenfalls sehr viele Seiten, die sich mit vielen Fragestellungen rund um Ubuntu beschäftigen. Jedes Problem, das ich bislang mit Ubuntu hatte, konnte ich lösen – und das als Linux-Newbie!

Ich will an dieser Stelle deutlich machen, dass ich niemanden irgendeine Distribution empfehlen möchte. Dies ist eine Entscheidung, die jeder für sich treffen muss. Und es ist auch sicher ratsam mehr als nur eine Distribution auszuprobieren, bevor man sich für eine Installation entscheidet, aber ich bin nunmal mit Ubuntu so zufrieden, dass ich bisher nicht wüsste, was noch besser werden könnte.

Vorschau auf KgL – Teil 03

Im nächsten Teil von Kreuvf goes Linux werde ich auf mein System (Hardware) eingehen und versuchen aus dem riesigen Software-Pool passende Alternativen zu Windows-only-Programmen wie mIRC und Winamp zu finden, mit denen sich die Windowsprogramme hinreichend gut ersetzen lassen.

Kommentare zu diesem Artikel abgeben (benötigt Boardaccount)

« Vorherige SeiteNächste Seite »