Trollwut: Eclipse

Ich programmiere nun schon seit einigen Jahren mit den verschiedensten Sprachen, Tools und Bibliotheken. Bei der Frage ob eine Umgebung für mich nutzbar ist, kommt es auf einige wenige Variablen an. In diesem Artikel will ich mich kurz mit Eclipse befassen und prüfen inwiefern dieser Haufen Hackermist für meine Belange geeignet ist.

Bevor wir jedoch zu Eclipse selbst kommen, sollten wir vlt. meine Erwartungen etwas definieren...

Die wichtigste Frage ist wohl, wie schnell ich mit dieser Umgebung programmieren kann, also wie gut ich beim Finden von Funktionsnamen, bei reinen Syntaxfragen oder der Verwendung von SVN/CVS/Wasauchimmer unterstützt werde.

So ist mir z.B. eine Erleichterung wie Code-Completion einiges wert, da es mir beim Programmieren viel Zeit mit dem Nachschlagen von irgendwelchen Funktionsnamen erspart. Wichtig sind dafür natürlich auch sprechende Funktionsnamen, z.B. PHP als Sprache eignet sich dafür überhaupt nicht, da alle gängigen Funktionen unsortiert auf einem Haufen liegen und teilweise Bezeichner haben, deren Sinn sich mir auch noch verschließt wenn ich weiß was sie tun. Wirklich überzeugt hat mich dies jedoch bisher selten, einzig Delphi/Lazarus haben bisher wirklich zeitweise eine Befehlsreferenz für mich unnötig gemacht, Visual Studio.Net versucht dem nahe zu kommen, scheitert jedoch an den verwendeten Sprachen und Bibliotheken. (VCL und das Free-Pascal-Pendant waren halt wirklich sehr auf derartiges ausgelegt und wurden nicht erst nachträglich angepasst.)
Selbst wenn man diese Funktion hat, gibt es natürlich immer Funktionen deren Name und Kurzbeschreibung nicht alles aussagt, in diesem (und vielen anderen Fällen) ist sehr praktisch wenn man eine gute Hilfefunktion zur Verfügung hat. Erneut können Delphi und Artverwandte hier punkten, bei einem Druck auf F1 sofort die Beschreibung des Elementes unter der Cursorposition zu erhalten liegt ziemlich nahe am Optimum.
Hier finden sich allerdings auch schon viele andere Umgebungen die das ähnlich gut können. Namen zu nennen sprengt hier fast schon den Rahmen, erstaunt war ich jedoch besonders über die Qualität dieser Funktion bei einigen Prolog-spezialisierten Umgebungen.
Die Liste derartiger Funktionen lässt sich beliebig fortsetzen, wichtig wären z.B. noch die grafische Erstellung von GUIs, Syntax-Hervorhebung (Welche IDE kann das heutzutage nicht?), automatisches Einrücken oder die Anzeige von Syntax-Fehlern direkt im Code.

Nahezu ebenso wichtig ist mir, wie schnell ich eine IDE zum produktiven Funktionieren bringe. Was habe ich schon davon dass ich mit einer IDE wahnsinnig komfortabel Ook! schreiben kann, wenn ich für das nächste Projekt Malbolge verwende, für das übernächste Whitespace und ich für jeden Wechsel die IDE länger Einstellen muss, als ich für das ganze Projekt an Zeit benötige.
Hier muss man natürlich zwischen Sprach-/Systemspezifischen und generell verwendbaren Umgebungen unterscheiden, Delphi ist sicher schnell verwendbar, kann jedoch außer für Object Pascal/Delphi nur noch für C++ verwendet werden (zumindest bei den älteren Versionen die man noch ernsthaft verwenden konnte und auch C++ benötigte dort eine komplette Neuinstallation fast des selben Programms unter einem anderem Namen). Ein einfacher Texteditor mit Shell-Tools auf der anderen Seite kann nicht nur fast unter jedem System für jede Sprache (natürlich mit Einschränkungen, z.B. wird nicht immer jede Sprache von jedem Editor für Syntax-Hervorhebung unterstützt) eingesetzt werden. Auch die Zeitdauer die ich zum setzen aller Einstellungen benötige ist meist überschaubar (was zum Teil auch an der geringen Menge der Funktionen liegt).

An dritter Stelle meiner Erwartungen würde ich darauf achten wie stabil eine Umgebung ist (es nervt ungespeicherten Quellcode zu verlieren) und wie solche Dinge wie Ladezeiten die Arbeit verzögern. Die relativ späte Platzierung rechtfertige ich nur damit dass die meisten Systeme stabil und schnell genug sind, man verbringt heute einfach nicht mehr 2/3 der Zeit mit dem Anblick eines Ladebildschirmes.

Nun wollen wir mal Eclipse in Relation zu diesen Anforderungen setzen...

Was die Funktionsbandbreite betrifft lässt Eclipse wohl wenige Wünsche übrig, es gibt Erweiterungen für Code-Vervollständigung, für SVN-Unterstützung, für GUI-Erstellung und was auch immer ein Entwickler sich sonst noch wünschen kann.
Diese Funktionen sind jedoch fast alle frickelmäßig Programmiert, Eclipse ist eine der wenigen Umgebungen unter der ich lieber von Hand meine Button-Positionen eintippe als sie im Fenster zusammen zu schieben (wer das mal unter Java und Eclipse versucht hat wird wohl wissen was ich meine). Auch ist die Code-Vervollständigung und Hilfe für die meisten Sprachen einfach unbrauchbar oder nur über Drittsoftware zu ermöglichen. Was wirklich nicht ganz schlecht funktioniert sind Dinge wie CVS/SVN-Unterstützung und Syntax-Hervorhebung. Dieser kleine Triumph hat leider nur einen kleinen Makel: so ziemlich JEDES andere System kann das auch.
All diese Funktionen werden natürlich über Plugins realisiert, wo wir dann auch schon beim Zweiten Punkt sind. Eclipse für eine neue neue Sprache um zurüsten ist grauenvoll. Man hat schon eine IDE die den Anspruch stellt für so ziemlich jede Sprache verwendbar zu sein, doch dann braucht man für so ziemlich jede Sprache zum Einrichten länger als wenn man eine neue IDE installiert.
Man hätte die Plugins auch über die Paketverwaltung des Betriebssystems abhandeln können, doch Eclipse verlässt sich lieber auf sein eigenes Paketsystem. Ich habe inzwischen einige Eclipse-Distributionen verwendet, doch das einfache Installieren von weiteren Funktionen über das dafür gedachte Menü (das übrigens im Punkt "Hilfe" so ziemlich an der bescheuertsten Stelle seit "Start->Beenden" platziert ist) funktionierte nur in den wenigsten Fällen "out-of-the-box". Das Ganze ist so umständlich zu verwenden, dass ich irgendwann angefangen habe mir lieber für jede(s) Sprache/Framework/API eine spezielle Eclipse-Distri parallel zu bereits vorhandenen zu installieren. Eine eigentlich wirklich bescheuerte Idee.
Auch das Einbinden eines neuen Projektes dauert extrem lange. Natürlich hat man das passende Plugin für SVN oder welche Quelle man auch immer gerade braucht nicht bereits installiert und natürlich hat man vom letzten Projekt her keine Ahnung mehr über welches der 10 Dutzend Projekt Anlegen/Importieren/Öffnen-Menüs man es das letzte Mal geschafft hat das Projekt so einzubinden dass es möglichst wenig Probleme gab. Auf der Konsole wäre man mit diesem Vorgang sicher um Längen schneller gewesen, im Notfall tippt man halt mal ein "svn help" ein um auf ca. 1-2 Bildschirmseiten die wichtigsten Kommandos zusammengefasst zu lesen.

Kommen wir nun zum dritten Punkt, bei dem es für Eclipse wirklich peinlich wird.
Eclipse läuft auf Java-Basis und das merkt man auch sehr deutlich, die Ladezeiten sind immens... Warum zum Henker verwendet jemand Java für ein Programm das permanent auf dem System laufen soll? Habt ihr zu viel RAM? Sind euch Ladezeiten egal? Warum muss eine Java-IDE unbedingt in Java geschrieben sein?
Bitte kommt jetzt nicht mit diesem Scheinargument dass Eclipse unbedingt Platformunabhängig sein soll, das kann so ziemlich jede andere Sprache auch. Im schlimmsten Fall bastelt man halt eine Portierung für die 3-4 wichtigsten Systeme, wenn man sich die verwendeten Bibliotheken gut ausgesucht hat hält sich der Aufwand dabei auch in Grenzen.
Ich sehe durchaus ein dass Java seine Daseinsberechtigung hat, aber es gibt da draußen Leute die würden dieses Bibliothekenmonster auf Precompilerbasis wirklich für jeden blöden Texteditor verwenden. Dafür wurde die Sprache nicht optimiert! Es gibt bessere für sowas und man sollte das auch einsehen. (Das gleiche Argument trifft übrigens auch auf die ganzen IDEs mit .Net-Basis da draußen zu. -.-)

Eclipse verwendet exzessiv Plugins, für jede kleine Standardfunktion ist ein Plugin zuständig. Wer schonmal was von der Neigung komplexer Systeme gehört hat, komplexe Probleme zu verursachen, dem muss ich die Schlussfolgerung daraus wohl nicht mehr nennen.
In der Tat hatte ich bei einigen Projekten permanent mit Eclipse-Abstürzen zu kämpfen, da hilft es auch nicht unbedingt weiter wenn man z.B. das hängen gebliebene Fenster für einen Commit mit einem Tastendruck in den Hintergrund bewegen kann (das Fenster verschwindet wirklich und wird durch eine kleine Anmerkung in der Statusleiste ersetzt), wenn man mit der IDE dann dennoch nicht weiterarbeiten oder sie gar regulär beenden kann... es läuft ja immerhin noch ein Vorgang.
Was in solchen Fällen bleibt ist dann also den ganzen Eclipse-Prozess zu killen und erneut zu starten... Die Ladezeiten (die übrigens manchmal länger sind als die meines ganzen OS inkl. grafischer Oberfläche) lassen grüßen.

Das alles zusammen ergibt dann eine Punktzahl irgendwo zwischen 0 und 0.5 von 3... Sehen wir es positiv, Eclipse hat viel Raum für Verbesserungen.

Importierte/Alte Kommentare:

#608: 18.Sep.2008 11:09 von Friedenspanzer

Ich finds ja gut, dass hier Eclipse gerantet wird, das verabscheue ich schon aus Prinzip und oben genannten Gründen, aber warum immer auf meinen armen kleinen Schatz PHP eindreschen?

Unter Windows (Bitte nicht schlagen) werd ich schon seit Jahren mit Proton glücklich, der kann zwar nicht viel, das dafür aber richtig gut. Unter Linux nehm ich was halt grad so rumliegt und das ist meistens Kate. Oder Vim, wenn jemand da ist, der mir hilft wenn ich mal wieder keine Ahnung hab, was da gerade passiert.

#609: 18.Sep.2008 11:09 von Dr. Azrael Tod

Ich schlag ja garnicht sinnlos auf PHP rum..
Ich halte PHP grundsätzlich erstmal für keine sonderlich gute Sprache, die massig Probleme mit ihrer Herkunft hat.
Ein Grundsätzlich Objektorientierter Ansatz, bei dem man z.B. die hunderte String und Datumsfunktionen in ihre jeweiligen Klassen eingeordnet hätte (oder sonst irgendeine Art die Funktionen nach Aufgabengebiet zu gruppieren), würde PHP bestimmt manchmal gut tun. Das ändert aber nichts daran wie gut es sich manchmal mit PHP arbeiten lässt. Wenn ich nur schnell ein Script auf dem Webserver schreiben will das eine HTML-Datei ausgibt und nur 1-2 Variablen einfügt ist PHP nunmal noch immer mein Mittel der Wahl.
Auch gibt es für PHP ziemlich gute Frameworks die einem wirklich ziemlich viel Arbeit abnehmen.
Das alles macht PHP nicht zu einer tollen Sprache, aber zu einem verwendbaren Werkzeug.. für manche Vorhaben.

#610: 18.Sep.2008 12:09 von CracKPod

Ich finde Eclipse klasse! Python mit PyDev C++ Mit der C++ Version von der Homepage. Ich habe aber auch 4gb Ram und zwei Dual Core Prozzesoren. Java ist nicht schlecht, und ich liebe Java dafür das es so portabel ist und das die meisten Applikationen noch nicht einmal eine Installation brauchen. Für mich hört sich das hier alles sehr nach Vorurteilen an. Nur zur Info: Ich würde selber wahrscheinlich auch nie mit Java anfangen aber deswegen sind nicht gleich alle Java-Apps unglaubliche RAM-Fresser, bzw. selbst wenn sie es sind ist das bei den heutigen PC Generationen ja wohl zu vernachlässigen.

Greetz,
CracKPod

#611: 18.Sep.2008 12:09 von profmakx

also, ich bin immernoch bei (g)vim. Kann alles (was ich brauche), ist klein, schnell und ist (nahezu) überall installiert.

#612: 18.Sep.2008 12:09 von Dr. Azrael Tod

Das Problem ist nicht dass alle Java-Apps extreme RAM-Fresser wären, sondern dass die Java-Umgebung ein solcher ist. Eclipse an sich geht dann nochmal zusätzlich nicht gerade sparsam mit den Ressourcen um.

Nur weil du dir alle 2-3 Monate einen neuen PC kaufst und das daher nicht sofort merkst muss es nicht bedeuten dass andere ihre Ressourcen auch so verschwenden wollen.

Ich habe kein Problem mit Java allgemein, JavE ist z.B. ein tolles Tool das ich nur alle 2-3 Jahre mal verwende. Dort kommt auch die Portabilität von Java zum Tragen, es würde sich schlicht nicht lohnen Jave auf andere Systeme zu portieren.
Welchen Vorteil hast du aber bei Eclipse durch die Verwendung von Java? Du kannst Eclipse unter Windows und Linux verwenden? Das ist kein Argument, das kann ich mit Firefox, Gajim (ok, Interpretersprache) oder Vi/Emacs/$wahlloser_anderer_Editor auch.
Das Einzige was ich in der Richtung gelten lass ist dass der Workspace zwischen den verschiedenen Versionen austauschbar sein sollte und ich nicht für jedes OS neu anfangen muss meine Einstellungen und Projekte zu organisieren. Das geht aber ebenfalls unter so ziemlich jeder Sprache.

Noch eine kleine Randbemerkung: Ich code auf einem mehrere Jahre altem Notebook, das von Prozessorleistung und Arbeitsspeicher her mit Ach und Krach noch bei aktuellen Versionen von EeePC und Co. mithalten kann.
Meine (einzelne und 32-Bittige) CPU taktet sich zwischen 1400Mhz und 600Mhz hin und her und mein RAM umfasst gerade mal 1GB statt deiner 4.
Ich habe aber auch nicht dringend vor mir jetzt ein anderes System zuzulegen, nur weil irgendwelche Programme auf die Idee kommen sie könnten auf keinen Fall mit dem doppelten RAM den früher ähnliche Programme benötigten das gleiche tun wie diese alten Programme

#613: 18.Sep.2008 09:09 von wayne

Bin beruflich zu eclipse + java gezwungen und kann nur sagen full ack! aber gut zu wissen, dass man nicht der einzige ist, der sich mit solchen überflüssigen problemen rumschalgen muss.. als hätte man nicht schon genug andere sorgen

#614: 19.Sep.2008 08:09 von Thomas

Das ist mehr als verständlich, dass man nicht seine Ressourcen verschwenden möchte! Ich versuche auch alles so sparend zu halten wie möglich, obwohl ich das garnicht so unbedingt nötig habe. Ich habe einen Dell Inspiron 1525 mit 1,73 GHZ Dual Core und 2 GB Ram und benutze diesen nur zum Programmieren, Musik hören, Chatten, Surfen usw.

Jedenfalls bin ich so krank und benutze einen Musikplayer, der auf der Konsole läuft, "moc" nennt sich dieser. Eigentlich habe ich immer Rhythmbox benutzt, doch moc kann auch alles was ich brauche und verbraucht - ich glaub so in etwa 20-30MB weniger, als Rhythmbox. Irgendwann hab ich mal so einen Vergleich gemacht. Das ist gerade mal ein Prozent meines gesamten Arbeitsspeichers und wahrscheinlich ziemlich irrelevant, und trotzdem versuch ich zu sparen wo es - ohne Funktionsverluste und ohne großen Aufwand - geht.

Grüße, Thomas

#615: 22.Sep.2008 09:09 von Dr. Azrael Tod

Naja, bei einem Prozent Ram klingt das natürlich harmlos... aber man braucht ja nur ein paar mehr Programme von dieser Sorte im RAM liegen zu haben, dann wird sich das schnell zu einer gewissen Relevanz aufsummieren

#616: 20.Oct.2008 08:10 von Martin Ringehahn

Hm, krasser Rant über Eclipse.
In der Tat, das Ding ist kein Leichtgewicht. Die zentrale Aufgabe bei mir (Entwicklung von Java-Kram) erfüllt sie aber grossartig. Wichtig dabei sind:
* Code completion (Vervollständigen von Methodensignaturen, Return-Werten, Compiler-Hinweise, etc pp)
* Anzeigen von Javadoc inline (insbesondere bei code completion)
* Schnelle Navigation im Code
* Debugging (Breakpoints, Inspektion von Objekten, dynamisches ersetzen von neu übersetztem Code im laufenden Programm)
* Refactoring (Member umbenennen, sortieren, verschieben..)
* Sofortige Rückmeldung vom Compiler mit vernünftigen Hinweisen und Hilfen (hey, fang noch die Exception, soll ich dir die in deinen try-catch mit dazuschreiben oder lieber mit throws nach oben brinen?..)

Hm, wars das schon? Jedenfalls hab ich was vergleichbares noch nirgendwoanders für keine Sprache gesehen. Allerdings hat Java da auch einige wahnsinnige Vorteile ggü vielen anderen Sprachen (Javadoc, starke Typisierung).

Allerdings wird bei mir die Eclipse nur für Java verwendet. SVN? command line. PHP, alles andere? vim+ctags. IMHO: use the right tool for the right job. Für Java kommt man an Eclipse (vllt noch Netbeans) nicht vorbei.

Ebenso kommt man aber auch kaum an Visual Studio vorbei wenn es um .NET/C# etc pp geht. Ich habe VS200{3,5,8} verwendet (mit C# und C++/CLI) und werde jederzeit Java/Eclipse einem Visual Studio den Vorzug geben. Hier kommt auch die bereits erwähnte Plattformunabhängigkeit zum tragen, jedoch nicht ausschliesslich.

#617: 20.Oct.2008 10:10 von Dr. Azrael Tod

Naja... "für keine Andere Sprache" würde ich als alter Delphi 5/6-Fan etwas abschwächen, aber ansonsten muss ich dir leider zu großen Stücken recht geben.
Aber wird ein langsames und überladenes Programm wirklich besser wenn es Features bietet die kein anderes hat oder sind nur die anderen noch schlechter?

#618: 20.Oct.2008 10:10 von profmakx

Java ist einfach nur ein stinkender haufen wortreicher scheisse. Manch eines dieser Tools braucht man schlicht nur weil java so schlimm ist.

  • #619: 17.Mar.2010 11:03 von silentsnow

    lach geile Aussage. Ich bevorzuge C, und sehe keins der Probleme a la "DLL hell" und Co., wenn man die Arschbacken bissl zusammenkneift. Ich kann ich mir alles so zusammenbauen, wie ich es brauche. Wiederverwendbarkeit ist dann auch kein Problem.
    C++ ist OK fuer entsprechend komplexe Dinge (man moechte ja keine Zeit verschwenden), aber auch hier sehe ich den Konflikt: Einerseits jammern alle, dass RAM Latencies nicht mit der Entwicklung der CPU Leistungsfaehigkeit mithalten kann, andererseits verwendet man zunehmend OOP, wo die Speicherallokationsmuster einfach beschissen aussehen.
    Man vergebe mir meine OOP Kritik, ich beschäftige mich am liebsten mit Embeddedzeugs.

Geschrieben von Dr. Azrael Tod
Later article
Homeservergehäuse#1
Older article
Google IS evil