Common Lisp IDE für C # Entwickler?

7

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:

  • Syntax-Highlighting und Autoindentation (jeder hat das, also ist es ein strittiger Punkt)
  • Automatische Vervollständigung von Funktionen und Variablennamen
  • Echtzeitanzeigen aller Funktionsüberlastungen und -parameter und der Fähigkeit, während der Eingabe der Parameter
  • durch die Liste zu blättern
  • Syntaxvorschläge zur Codeverbesserung, mit der Fähigkeit, diese für Sie zu tun ("const verwenden", "in LINQ Ausdruck (FP) umwandeln", "Variable wird niemals zugewiesen", "Variable wird niemals verwendet" , "Variable könnte null sein", "Funktion wird nie benutzt", etc.)
  • Extract Method / Function Refactoring: Wählen Sie einen Textblock, der in eine neue Funktion extrahiert werden kann
  • Erstellen von variablem Refactoring: Wählen Sie einen Textblock und erstellen Sie eine Variable (z. B. ein let)
  • Umbenennung umbenennen: Benennen Sie eine Funktion oder eine Variablendeklaration um und alle anderen Funktionen, die diese Funktion verwenden, werden aktualisiert (automatisches Suchen / Ersetzen)
  • Gehe zu Definition einer Methode / Funktion, Variable
  • Suchen nach Verwendungen / Referenzen zu einer bestimmten Methode / Funktion, Variable
  • Integrierte Ordner-basierte Projektmanagement-Tools und Build-Tools
  • "Klasse in neue Datei verschieben", die eine neue Datei basierend auf dem Klassennamen erstellt und alle ihre Methoden enthält
  • "Datei umbenennen basierend auf dem Klassentyp", der die Datei umbenennt, wenn Sie den Klassennamen ändern
  • F9 / Klicken Sie links neben der Zeile, um Haltepunkte hinzuzufügen / zu entfernen
  • F10 / F11, um beim Debugging in oder über Code zu springen, 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)

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.

    
Jonathan Mitchem 18.02.2011, 14:39
quelle

7 Antworten

7

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!

    
Ken 18.02.2011 15:09
quelle
4

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ättern

    Common 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.

Rainer Joswig 19.02.2011 14:03
quelle
3

Vielleicht solltest du Jabberwocky ausprobieren.

Es gibt auch LispIDE und Lisp Studio .

    
Ishpeck 18.02.2011 14:48
quelle
2

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.

    
Amos 18.02.2011 14:52
quelle
1

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.

    
Chris Perkins 22.02.2011 02:39
quelle
1

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!

    
Paul 22.07.2014 16:28
quelle
1

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:

  1. Visual Studio 2015 (offensichtlich die Hauptkomponente)
  2. Lisp Integration Visual Studio-Erweiterung
  3. Haben Sie ConEmu bereits installiert und greifen Sie die ConEmuIntegration Visual Studio-Erweiterung
  4. Eine Common-Lisp-Implementierung Ihrer Wahl, die in Ihrem% PATH% (über die Umgebungseinstellungen) festgelegt wurde

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?

    
Jason Robinson 03.06.2017 20:18
quelle