Mein doch nicht erster Post auf der Ruby-Mine. Also schmeiss ich mich gleich mal in die Predigerschale und versuche zu erklären, warum (ba|z|zc)sh zu den Kernfertigkeiten jedes Rubyisten gehört...
Regelmässig kommt die Frage auf: welche IDE benutzt man (als Anfänger) eigentlich für Ruby? Die Antwort darauf liest man dann sehr häufig das, was ich vor kurzem mal scherzhaft MDE (Modular Development Environment) genannt habe: ein guter Texteditor[1] und die Konsole. Warum eigentlich? Ich meine, was macht Ruby jetzt zu einer Sprache, die sich so schlecht in IDEs fasst? Jetzt könnte man sagen, dynamische Sprachen sind eh schon etwas schlechter in Sachen Code Completion//Sensing, aber eine IDE ist ja mehr nur das Vervollständigungstool - jeder ordentliche Editor kann das inzwischen auch. Irgendwie fiel mit da bisher kein griffiger Begriff ein, bis ich Charles Oliver Nutters Vortrag "JRuby: The Pain of Bringing an Off-Platform Dynamic Language to the JVM" gesehen habe. Da fällt mehrfach ein Begriff, dass das Ganze in seiner Trivialität erklärt: Command Line Culture. Kommandozeilenkultur.
Ruby lebt und atmet auf der Konsole. Ich konnte spontan zum Beispiel keinen Gem finden, dessen Dokumentation erklärt, wie man ihn mittels einer IDE installiert. In unserer Tools-Sektion findet sich zwei Referenzen zum Thema IDE und beides sind (veraltete) Releasemeldungen. Für viele Bibliotheken/Tools ausser Rails (z.B. rackup, cheat, sinatra) gibt es keine IDE-Unterstützung. Wieso? Es schert sich ausser den IDE-Entwicklern einfach niemand ernsthaft drum.
Das beste Tool zum rapid prototyping (irb oder für Railser script/console) lebt in der Konsole. Eins der beiden hat man am besten ständig offen, was bei den meisten IDEs einfach nur hinderlich ist.
Die meisten Ruby-Tools kommen mit einem ordentlichen und leicht verständlichen Kommandozeileninterface (im Zweifel ist --help die richtige Kommandozeilenoption) lange bevor sie von irgendeiner IDE adaptiert werden können. Meist schaffen sie den Weg dorthin garnicht, zum Beispiel die extrem praktischen Tools von seattle.rb. Wer sich also nur darauf verlässt, was die IDE ihm bietet, verliert den Blick auf weite Teile der Rubycommunity. Denn IDEs werden immer nur unterstützen, was eh schon jeder macht.
Ich habe bei meinen ersten Gehversuchen mit Ruby auch das gesucht, was ich aus dem Studium kannte. Erst die inzwischen nicht mehr sehr bekannten RDT für Eclipse, dann RadRails, vor nem halben Jahr hab ich mich sogar mal wieder an NetBeans versucht[2]. Ja, diese Tools sind gut und in den richtigen Händen sicherlich auch sehr mächtig. Allerdings verhindern sie eins: Rubys Kultur zu verstehen. Denn die hat 80 Spalten und 24 Zeilen. Gönnt euch deshalb zumindest hin und wieder und möglichst bald einen Urlaub dorthin - Reisen bildet.
Und wenn ihr anfangt: fangt auf der Konsole an. Sucht euch danach ein Tool, dass alles unterstützt, was ihr dort gemacht habt. Das kann eine IDE sein, muss aber nicht.
[1]: Hier gehen die Meinungen dann nochmal auseinander... ich find SciTE und Notepad++ zum Beispiel glorifizierte Eingabefelder, andere kommen damit zurecht.
[2]: Weil ich keinen guten Texteditor unter Windows gefunden habe ;).
Kommentar schreiben
Kommentare
Definitiv kein Aprilscherz. Kann ich nur zustimmen. Ob diese Kommandozeilenkultur jedoch das Optimum ist, steht auf einem anderen Blatt.
Dazu fällt mir der Slogan "Der Desktop ist die IDE" ein. :)
Interessant finde ich, das es bei Smalltalk (eine der wichtigsten Wurzeln Rubys) genau die entgegengesetzte Kultur gibt: Dort ist alles IDE. Vielleicht könnte man Ruby als Smalltalk der Kommandozeile bezeichnen.
Naja, bei Java ist das auch wieder anders. Ich würde sogar behaupten, dass man Java ohne IDE garnicht ernsthaft entwickeln kann (wer will den ganzen Boilerplate-Code schon selbst schreiben?) obwohl die Sprache selbst darauf ja nicht eingeht. Ich finde das aber auch nicht unbedingt grausam. Alle drei Sprachen haben einfach eine unterschiedliche Kultur unabhängig ihrer Features entwickelt. Wenn man ernsthaft eine Ruby-IDE haben wollte, die alles abfrühstückt, gäbe es ein entsprechend großes Projekt.
Ich mache ja faktisch nie etwas mit GUIs, sondern erstelle mir Hilfsmodule für die überwiegende Verwendung in irb oder in kurzen und kompakten Scripten - ...und oft vielen RegExes. Gerade bei Ruby fehlt mir dafür überhaupt kein spezieller Editor, weil es diese Module inclusive Rdoc am Ende sehr selten mehr als ein paar hundert Zeilen umfassen. SciTE nehme ich aus Bequemlichkeit, bei utf-8-Quellen anfangs sogar den normalen Notepad, weil das völlig ausreicht. Sobald irgendwie ein GUI reinkommt, wird das allerdings anders. Ich kenne das Theater zwar nicht von Java her, aber von C# - und da hätte man mit einem einfachen Texteditor auch das Problem die inhaltlichen Teile im Code-Gewimmel zu finden. Die Relation ändert sich bei Ruby auch nicht - die 10 Zeilen inhaltliche Bearbeitung verstecken sich unter den 150 Zeilen GUI-Code, den man (=ich) aber eher selten ändern muss. In diesem Zusammenhang ist eine IDE wohl angebracht. Web-Development wird wohl ähnlich sein(?), das kenne ich aber nicht.
Auch GUI-Building muss ja nicht zwingend IDE-integriert sein. Ich mag ja den QT-Editor ganz gerne, der steht aber alleine. Insofern erreicht er die Definition einer IDE einfach nicht. Shoes ist übrigens ein gutes Beispiel dafür, dass sich GUIs auch schön in eine DSL packen lassen. In der Webentwicklung wird oft alles von Hand gemacht. Die Qualität ist besser, die Barrierefreiheit meist auch. Genauso werden soviele Sachen speziell angepasst, dass ein GUI-Builder da wenig bringt. Dreamweaver ist das einzige Tool, dass es da halbwegs weit bringt.