AKTUALISIEREN
Ich habe mich entschieden, jetzt mit Clojure zu gehen.
LispDev ist nicht bereit, und Eclipse / cusp war nicht stabil genug, um mich wohl zu fühlen.
Was Clojure angeht, nach einem langen, sehr frustrierenden, sehr nervigen Prozess, der versucht, Eclipse / CCW, Netbeans / Enclojure und IntelliJ / La Clojure zum Laufen zu bringen, hat I endlich Eclipse / CCW funktioniert. Der Rest ist immer noch in den meisten gebrochenen Zuständen.
(Wenn ich dazu komme, werde ich dokumentieren, was es für mich brauchte, damit Eclipse / CCW funktioniert.)
Also, jetzt werde ich das benutzen. Ich kann wieder in CL eintauchen und die kostenlosen Versionen von LispWorks und AllegroLisp ausprobieren, aber Clojure fühlt sich für mich als natürlicherer Schritt an, wenn ich innerhalb der Microsoft CLR-Umgebung arbeiten kann.
Danke allen für die Hilfe.
Ursprüngliche Frage
Ich bin ein C # -Entwickler, der Visual Studio (mit Resharper) sehr gut bekannt ist.
Ich bin neu bei Lisps. Ich habe mich in letzter Zeit sowohl für Common Lisp als auch für Clojure interessiert und viel gutes Material zu beiden gefunden.
Ich habe Emacs + Slime ausprobiert, aber es fühlt sich an wie eine sehr rückständige, veraltete Lösung. Ich habe keine Zweifel an seiner Macht, aber es ist Usability ist nichts wie das, was ich gewohnt bin. Ich möchte nicht mit einer IDE zusätzlich zur Sprache kämpfen.
Es gibt Eclipse-Plugins für Clojure und CL. Es gibt noch ein paar Optionen, die ich für Clojure gesehen habe. Da ich kein Java-Entwickler bin, weiß ich nichts über diese IDEs.
Ist Eclipse ein guter Anfang? Gibt es andere gute Möglichkeiten?
BEARBEITEN:
Hier sind die Funktionen, die ich gewohnt bin:
Fast alles ist in einem Kontext-Kontextmenü verfügbar, oder als eine schwebende Combobox oder Textbox während der Eingabe.
Ich sage nicht, dass Emacs / Schleim das nicht kann, aber wenn es so ist, verwendet es nichts ähnliches in Bezug auf Usability-Techniken.
Wenn Sie an Visual Studio gewöhnt sind und ein ähnliches Produkt für Lisp suchen, wird das Äquivalent wahrscheinlich eine ähnliche kommerzielle IDE sein. Die größten, die ich kenne, sind Allegro und
Aber viel Glück mit was auch immer du wählst!
C # wird meistens im Stapelmodus verwendet. Die IDE zeigt dies an. Es kennt die Syntax einer festen Sprache, ruft einen Compiler auf und verwendet die Ausgabe von verschiedenen Werkzeugen, wie dem Compiler.
Common Lisp ist etwas anders. Die IDEs sind entweder in Common Lisp (Allegro CL, LispWorks, CCL) integriert oder befinden sich in etwas wie Emacs und verbinden sich mit einem laufenden Lisp (SLIME / Emacs). Die Hauptentwicklungsart ist interaktiv. Ein Programm läuft und die IDE ändert es.
Für Emacs benutzt man SLIME mit den Erweiterungen PaRedit und Redshank . Siehe: Bearbeiten von Lisp-Code mit Emacs .
Syntax Highlighting und Autoindentation (jeder hat das, also ist es ein strittiger Punkt)
Dies wird von den IDEs bereitgestellt.
Automatische Vervollständigung von Funktionen und Variablennamen
Dies wird von den IDEs bereitgestellt.
Echtzeitanzeigen aller Funktionsüberlastungen und -parameter und der Fähigkeit, während der Eingabe der Parameter
durch die Liste zu blätternCommon Lisp hat keine Überladungen. Es ist möglich, generische Funktionen (CLOS) in IDEs zu durchsuchen.
Syntaxvorschläge für die Codeverbesserung mit der Fähigkeit, sie für Sie auszuführen ("const verwenden", "in LINQ Ausdruck (FP) konvertieren", "Variable wird niemals zugewiesen", "Variable wird niemals verwendet" , "Variable könnte null sein", "Funktion wird nie benutzt", etc.)
Lisp-Compiler geben Hinweise und Warnungen aus. Es gibt auch Stilvorschläge von einigen.
CL-USER 15 & gt; (defun foo (a b) a) FOO
CL-USER 16 & gt; (Kompiliere 'foo) ;;; * Warnung in FOO: B ist gebunden, aber nicht referenziert FOO
Implementierungen wie LispWorks können die Gruppe von Warnungen und Fehlern durchsuchen.
Extract Method / Function Refactoring: Wählen Sie einen Textblock, der in eine neue Funktion extrahiert werden kann.
Tools können das tun. Siehe zum Beispiel Redshank.
Erstellen Sie ein variables Refactoring: Wählen Sie einen Textblock aus und erstellen Sie eine Variable (z. B. ein let)
Nachsehnen.
Rename Refactoring: Benennen Sie eine Funktion oder eine Variablendeklaration um und alle anderen Funktionen, die sie verwenden, werden aktualisiert (automatisches Suchen / Ersetzen)
Verwenden Sie die Such- und Ersetzungstools der IDE. Da Lisp über eine programmierbare Syntax verfügt, ist das Problem nicht allgemein lösbar.
Gehe zu Definition einer Methode / Funktion, Variable
Meta-. , Meta-X Edit-Definition
Suchen Sie Verwendungen / Verweise auf eine bestimmte Methode / Funktion, Variable
Wer ruft Features in IDEs auf.
Integrierte Ordner-basierte Projektmanagement-Tools und Build-Tools
Siehe Systemtools.
"Klasse in neue Datei verschieben", die eine neue Datei basierend auf dem Klassennamen erstellt und alle ihre Methoden enthält
Common Lisp funktioniert nicht so. Methoden und Klassen sind nicht wie in C # verbunden.
"Datei umbenennen basierend auf dem Klassentyp", der die Datei umbenennt, wenn Sie den Klassennamen ändern
Common Lisp funktioniert nicht so. Man schreibt keine Datei für eine Klasse.
F9 / Klicken Sie links neben der Zeile, um Haltepunkte hinzuzufügen / zu entfernen
Hängt von der IDE ab. Verwenden Sie andernfalls die Funktion BREAK.
F10 / F11, um beim Debugging in oder über Code zu gehen, zusammen mit einem Pfeil und Hervorhebung, um anzuzeigen, welcher Code gerade ausgeführt wird (Schritt in eine func Ausführung, oder einfach hier ausführen)
Verwenden Sie die Funktion STEP oder das IDE-Tool.
Fast alles ist in einem Kontext-Kontextmenü verfügbar, oder als Hovering-Combobox oder Textbox während der Eingabe.
Ja.
Ich würde denken, dass Sie SLIME genauer untersuchen müssen, da es vieles, was Sie beschreiben, in Kombination mit üblichen Common-Lisp-Funktionen wie STEP, BREAK und TRACE bietet.
Es kann auch nützlich sein, das Handbuch der LispWorks IDE zu lesen, das die entsprechenden Funktionen in einer portablen GUI und mehr bietet:
Lispworks für Windows, IDE-Benutzerhandbuch
Ich sage nicht, dass Emacs / Schleim das nicht kann, aber wenn es so ist, verwendet es nichts ähnliches in Bezug auf Usability-Techniken.
SLIME basiert auf Emacs, also ist es von seiner Benutzeroberfläche geprägt. LispWorks verwendet zum Beispiel die Emacs-Ideen hauptsächlich nur für die Editor-Komponente (die auf einem Emacs-ähnlichen Editor basiert, der in Common Lisp geschrieben wurde). LispWorks verwendet GUI-Tools zum Durchsuchen der Klassen, Durchsuchen der generischen Funktionen, zur Systemverwaltung, zum Debugger, zum Inspektor usw.
Vielleicht solltest du Jabberwocky ausprobieren.
Es gibt auch LispIDE und Lisp Studio .
Allegro Common Lisp hat eine IDE zur Verfügung gestellt, die von Interesse sein könnte ( obwohl ich mir nicht sicher bin, ob du es mit anderen Lisps verwenden kannst). Das Eclipse-Plugin heißt Cusp und kann hier gefunden werden, obwohl es eine Abzweigung davon gibt hier nannte lispdev, das möglicherweise in letzter Zeit aktualisiert wurde.
Es kann einige nützliche Dinge im Lisp Game Wiki geben, besonders die Seite hier .
Persönlich mag ich Emacs + Slime mit einigen der Emacs-Tools, die entworfen wurden, um es IDE-ähnlicher zu machen.
Wenn Sie Lisp noch nicht kennen und kein Emacs-Benutzer, dann würde ich Ihnen die kostenlosen Editionen von Allegro Lisp oder LispWorks empfehlen. Oder, wenn Sie die Schema-Route gehen, PLT-Schema (das jetzt Racket genannt wird).
Alle drei haben sehr funktionsreiche IDEs. Rufen Sie Bäume auf, tippen Sie voraus, In-Editor-Breakpoints und die meisten Dinge, die Sie von herkömmlichen IDEs gewohnt sind.
Ich weiß, das ist eine alte Frage, aber - für Clojure - wie wäre es mit Nightcode? Ich wollte in ähnlicher Weise auch keine Sprachlernzeit mit dem Erlernen eines neuen Editors (d. H. Emacs / SLIME) verschwenden. Ich fand Nightcode sehr brauchbar.
Ich finde nun, dass Nightcode auch Common Lisp (vielleicht in Form von ABCL) unterstützen soll!
Obwohl diese Frage alt ist und das OP sich Clojure zugewandt hat, denke ich, dass dies immer noch eine gültige Frage ist, besonders für diejenigen, die Common Lisp lernen wollen und entweder nur ungern von Visual Studio wechseln oder einfach nur etwas Neues lernen wollen mit einem Werkzeug, mit dem sie vertraut sind, um zumindest die Schranke für den Zugang zu solch einer großartigen Sprache zu reduzieren, die gleichen Gründe, warum diese Frage gestellt wurde.
Ich habe einen Artikel geschrieben, der genau erklärt, wie man das erreicht, indem ich Visual Studio als Lisp-IDE , was eine fast perfekte Alternative für EMACS + SLIME wäre.
Die Schritte zum Erreichen dieser Einstellung sind:
Mit dieser Konfiguration oben haben Sie eine eingebettete REPL, und wenn Sie die Maus über die Lisp-Funktionen / Makros bewegen, erhalten Sie Tooltips mit den Signaturen und Definitionen. Dies sollte die meisten der in der ursprünglichen Frage geforderten Funktionen erfüllen.
Es mag bedauerlich gewesen sein, dass zum Zeitpunkt, als diese Frage gestellt wurde, diese Werkzeuge nicht ausgereift genug waren, um vollständig integriert zu sein, wie es jetzt ist, oder niemand war sich dessen damals bewusst oder interessiert genug.
>Wenn Sie bereits mit C ++ vertraut sind, empfehlen wir Ihnen als Empfehlung, Embeddable Common Lisp (ECL), da Sie Lisp in Ihren C ++ - Code einbetten oder C ++ von Lisp aufrufen können, wie gut ist das in Kombination mit Visual Studio?
Tags und Links eclipse ide c# visual-studio common-lisp