7
votes

IDE LISP commun pour le développeur C #?

mise à jour

J'ai décidé d'aller avec Clojure pour l'instant.

LISPDEV n'est pas prêt, et Eclipse / CUSP n'était pas assez stable pour que je me sente à l'aise.

Quant à Clojure, après un processus très long, très frustrant et très gênant, essayant d'obtenir Eclipse / CCW, Netbeans / Couchrojure et Intellij / La Clojure, je enfin Eclipse / CCW fonctionnel. Les autres sont toujours dans des états principalement brisés.

(Si je me débrouille, je vais documenter ce qu'il a fallu pour moi pour faire fonctionner Eclipse / CCW.)

Alors pour le moment, je vais l'utiliser. Je peux me remettre dans CL et vérifier les versions gratuites de Lispworks et Allegrolisp, mais le clojure ressemble à une étape plus naturelle pour moi de travailler dans l'environnement Microsoft CLR.

Merci à tout le monde pour l'aide.


Question originale

Je suis un développeur C # très familier avec Visual Studio (avec Resharper).

Je suis nouveau à Lisps. J'ai récemment pris intérêt pour les Lisp et la clojure communes, et j'ai trouvé beaucoup de bons matériaux à leur deux.

J'ai essayé Emacs + Slime, mais cela ressemble à une solution datée très reculée. Je n'ai aucun doute sur son pouvoir, mais c'est une convivialité n'est rien comme ce que j'ai l'habitude de. Je ne veux pas lutter avec une IDE en plus de la langue.

Il y a des plug-ins Eclipse pour le clojure et CL. Il y a aussi un couple de plus d'options que j'ai vues pour le clojure. Puisque je ne suis pas un java dev, je ne sais rien de ces idées.

Eclipse est un bon endroit pour commencer? Y a-t-il d'autres bonnes options?

EDIT:

Voici les fonctionnalités que je suis habituées à:

  • Syntaxe en surbrillance et autoindentation (tout le monde a ceci, donc c'est un point de théâtre)
  • Autocompéquation des fonctions et des noms de variables
  • Écrans en temps réel de toutes les surcharges et paramètres de la fonction et la possibilité de saisir la liste dans la liste lors de la saisie des paramètres
  • Syntaxe Suggestions pour l'amélioration du code, avec la possibilité de les faire pour vous ("Utiliser un const", "Convertir en expression Linq (FP)" "," La variable ne sera jamais affectée à "", "la variable ne sera jamais utilisée" , "La variable pourrait être null", "la fonction ne sera jamais utilisée", etc.)
  • Extrait Méthode / Fonction Refactoring: Sélectionnez un bloc de texte et peut être extrait dans une nouvelle fonction
  • Créer une variable refactoring: sélectionnez un bloc de texte et créer une variable (par exemple, A let)
  • Renommer refactoring: renommer une fonction ou une déclaration variable et toutes les autres fonctions à l'aide de celle-ci seront mises à jour (recherche automatisée / remplacement)
  • aller à la définition d'une méthode / fonction, variable
  • Rechercher des usages / références à une méthode / une fonction particulière, variable
  • Outils de gestion de projet basés sur des dossiers intégrés et outils de construction
  • "Déplacer la classe en un nouveau fichier" qui crée un nouveau fichier basé sur le nom de la classe et contenant toutes ses méthodes
  • "Renommer le fichier basé sur le type de classe" qui renomme le fichier si vous modifiez le nom de la classe
  • f9 / cliquez à gauche de la ligne pour ajouter / supprimer des points d'arrêt
  • F10 / F11 Pour entrer dans ou sur le code ou sur le code lors du débogage, avec une flèche et une surbrillance pour montrer quel code exécute actuellement (pas dans une exécution de fonctionnement, ou simplement l'exécuter ici)

    La plupart de tout est disponible dans le menu contextuel de clic droit, ou comme une combinaison de combinaison de ComboBox ou de zone de texte à mesure que vous tapez.

    Je ne dis pas que Emacs / Slime ne peut pas faire ça, mais si c'est le cas, cela n'utilise rien de similaire en termes de techniques de convivialité.


3 commentaires

La plupart de ces fonctionnalités que vous êtes habitués à être assez spécifiques aux langues C # -Type. Les LISP communes ont des cours, mais vous ne les utiliserez probablement pas très souvent. Les LISP communes ont un système de condition et une replaction, qui a tendance à entraîner une manière différente de déboguer. Peu importe ce que vous choisissez (Emacs ou IDE), vous n'allez probablement pas être très heureux si vous essayez de faire le développement C # -Style dans Lisp. Lisp ne va jamais être un meilleur c # que c #.


@Ken: Les classes de bibliothèques et d'applications de LISP communes sont très souvent utilisées.


Rainer: Peut-être que j'utilise les mauvaises bibliothèques et j'écris mon code faux? Je pense que je vois un déficide chaque ligne (ordre de magnitude) 1000 lignes, tandis que dans C # I Voir classe toutes les 100 lignes.


7 Réponses :


3
votes

Peut-être que vous devriez donner Jabberwocky a essayez.

Il y a aussi lispide et Studio LISP .


3 commentaires

Malheureusement, Jabberwocky n'est plus en développement. La dernière version est sortie en septembre 2007.


Parfois, le logiciel fonctionne simplement et n'a pas besoin d'être mis à jour. : P Je suppose que je devrais lui donner plus d'options, tho '


J'ai mis à jour la question à mentionner les fonctionnalités que je suis habituées, car je suppose que la plupart des devs LISP ne savent pas ce que propose VS 2010 + Resharper.




7
votes

Si vous êtes habitué à Visual Studio et que vous souhaitez un produit similaire pour LISP, l'équivalent sera probablement un IDE commercial similaire. Les grands que je connaisse sont allegro et Lispworks .

Je n'ai utilisé personnellement ni un pour un travail réel (c'est-à-dire un grand projet), bien que j'ai essayé des démos. Ils semblaient assez beaux, si un peu complexe et avec des UIS étranges, mais pas tant mieux que la monteuse de mourir d'argent pour moi. Mais si vous voulez quelque chose comme vs, ils peuvent être exactement ce que vous recherchez.

FWIW, je fais à la fois C # et des Lisp communs dans Emacs, et je trouve la boue d'être 10 fois supérieure à tout ensemble de modes que j'ai trouvés pour l'édition C # jusqu'à présent. Venez penser à cela, je ne connais aucun environnement de développement pour une langue ou une plate-forme de développement, je préfère utiliser - c'est ce bien.

Un problème que vous avez peut-être, c'est que LISP elle-même est une langue suffisante différente de ce que vous êtes habitué à cette vieille manières de faire des choses ne s'appliquent plus, alors tout IDE peut sembler "en arrière" à vous. (J'ai appris Lisp bien avant que c #, et c # semble en arrière et daté de moi!) Donc, au lieu d'apprendre quelques commandes SLime (il n'y a pas beaucoup de choses dont vous avez vraiment besoin), vous apprenez des commandes IDE, ce qui pourrait ne pas être plus facile pour Depuis que les concepts sont identiques et ne correspondent pas nécessairement aux fonctionnalités de l'IDE ressemblant à VS.

Mais bonne chance avec tout ce que vous choisissez!


3 commentaires

Ouais, je peux comprendre c # dans un environnement non-vs, bien, subparent. Des versions plus anciennes de Visual Studio pâle pour même d'utiliser une instance VIM pour éditer et une fenêtre de commande pour construire C #. Cependant, VS 2010 + Resharper est une combinaison de meurtres. Je pense que je pourrais éditer le poste pour signaler spécifiquement les fonctionnalités que je recherchent dans un environnement.


J'ai mis à jour la question à mentionner les fonctionnalités que je suis habituées, car je suppose que la plupart des devs LISP ne savent pas ce que propose VS 2010 + Resharper.


Je ne pense pas que leurs idées sont «bizarres».



4
votes

C # est principalement utilisé en mode lot. L'IDE montre ceci. Il connaît la syntaxe d'une langue fixe, invoque un compilateur et utilise la sortie de divers outils, comme le compilateur.

Le LISP commun est légèrement différent. Les IDes sont soit intégrés dans les LISP commun (Allegro Cl, Lispworks, CCL), soit dans quelque chose comme Emacs et se connecter à une LISP en cours d'exécution (SLIME / EMACS). Le mode de développement majeur est interactif. Un programme est en cours d'exécution et l'IDE le modifie.

Pour Emacs, on utilise Slime avec les extensions Paredit et Redshank . Voir: Modification du code LISP avec Emacs .

  • Syntaxe de la syntaxe et autoindentation (tout le monde a ceci, donc c'est un point de théâtre)

    Ceci est fourni par les IDES.

  • Autocompéquation des fonctions et des noms de variables

    Ceci est fourni par les IDES.

  • Affichages en temps réel de toutes les surcharges et paramètres de fonction et la possibilité de monter / descendre dans la liste lors de la saisie des paramètres

    Les LISP communes n'ont pas de "surcharges". Il est possible de parcourir les fonctions génériques (Clos) dans IDes.

  • Suggestions de syntaxe pour l'amélioration du code, avec la possibilité de les faire pour vous ("Utiliser un const", "Convertir en expression Linq (FP)" "," La variable ne sera jamais affectée à "", "la variable ne sera jamais attribuée être utilisé "," variable pourrait être null "," la fonction ne sera jamais utilisée ", etc.)

    Compilateurs LISP SORTIE CONSEILS ET AVERTISSEMENTS. Il y a aussi des suggestions de style par certains.

    CL-UTILISER 15> (DEFUN FOO (A B) A) Foo

    CL-User 16> (Compiler 'FOO) ;;; * avertissement dans FOO: B est lié mais non référencé Foo

    Les implémentations tels que Lispworks peuvent parcourir l'ensemble des avertissements et des erreurs.

  • Méthode d'extrait / Fonction Refactoring: Sélectionnez un bloc de texte et peut être extrait dans une nouvelle fonction.

    Les outils peuvent le faire. Voir par exemple Redshank.

  • Créer une variable refactoring: sélectionnez un bloc de texte et créez une variable (par exemple, A let)

    reshank.

  • Renommer refactoring: renommer une fonction ou une déclaration de variable et toutes les autres fonctions utilisant son utilisation seront mises à jour (recherche automatisée / remplacement)

    Utilisez la recherche et remplacez les outils de l'IDE. Notez que, puisque Lisp a une syntaxe programmable, le problème n'est pas satisfable de manière générale.

  • Aller à la définition d'une méthode / fonction, variable

    méta-. , Définition de la définition META-X EDIT

  • Recherche d'usages / références à une méthode / une fonction particulière, variable

    Appels Qui fonctionne dans IDES.

  • Outils de gestion de projet basé sur des dossiers intégrés et outils de construction

    Voir Outils système.

  • "Déplacer la classe en un nouveau fichier" qui crée un nouveau fichier basé sur le nom de la classe et contenant toutes ses méthodes

    Common Lisp ne fonctionne pas de cette façon. Les méthodes et les classes ne sont pas connectées comme en C #.

  • "Fichier Renommer basé sur le type de classe" qui renomme le fichier si vous modifiez le nom de la classe

    Common Lisp ne fonctionne pas de cette façon. On n'écrire pas de fichier pour une classe.

  • f9 / cliquez à gauche de la ligne pour ajouter / supprimer des points d'arrêt

    dépend de l'IDE. Utilisez la fonction de fonction sinon.

  • f10 / f11 Pour entrer dans ou sur le code ou sur le code lors du débogage, avec une flèche et une surbrillance pour montrer quel code exécute actuellement (étape dans une exécution de fonctionnement, ou simplement l'exécuter ici)

    Utilisez l'étape de fonction ou l'outil IDE.

  • La plupart de tout est disponible dans un menu contextuel de clic droit ou comme une combinaison de combinaison de ComboBox ou de zone de texte à mesure que vous tapez.

    oui.

    Je penserais que vous devez vérifier la boue plus en détail, car cela fait beaucoup ce que vous décrivez en combinaison avec des caractéristiques habituelles de LISP commun telles que l'étape, la rupture et la trace.

    Il peut également être utile de lire le manuel de l'IDE LISPWorks, qui fournit les fonctionnalités équivalentes dans une interface graphique portable et plus:

    Lispworks pour Windows, Guide de l'utilisateur IDE


1 commentaires

Merci pour l'explication de l'article-by-item. On dirait que j'ai juste besoin de creuser plus profondément et de surmonter le fait qu'il "se sent" différente. (Re: l'autre fil, je ne voulais pas que cela soit argumentatif; je tente juste d'apprendre et de comprendre)



1
votes

Si vous êtes nouveau dans LISP et non un utilisateur EMACS actuellement, je recommande vivement les éditions gratuites de Allegro Lisp ou de Lispworks. Ou, si vous allez la route du schéma, PLT Schéma (qui est maintenant appelé Raquette).

Tous les trois ont très bien des idées riches. Appeler des arbres, tapez à l'avance, les points d'arrêt de l'éditeur et la plupart des choses que vous êtes habitués à partir de l'IDE traditionnel.


0 commentaires

1
votes

1 commentaires

Je suis content que quelqu'un a posté ceci. Non seulement la boîte de nuit est incroyable (et plus amicale de débutant que l'éclairage à mon avis), mais ils ont même une version en nuage à zéro setup sur NightCoders.net



2
votes

Bien que cette question soit ancienne et que l'OP s'est tourné vers Clojure, je pense que cela reste une question valable, en particulier pour ceux qui cherchent à apprendre des LISP courants et sont réticents à passer de Visual Studio ou de vouloir simplement apprendre quelque chose de nouveau Avec un outil auquel ils sont familiers, de réduire au moins la barrière à l'entrée dans une langue aussi importante, les mêmes raisons pour lesquelles cette question a été posée.

J'ai écrit un article expliquant exactement comment y parvenir, en utilisant Visual Studio en tant que IDE LISP , qui serait une substitution presque grande pour la combinaison EMACS + SLIME.

Les étapes pour atteindre cette configuration sont les suivantes:

  1. Visual Studio 2015 (évidemment l'ingrédient principal)
  2. Intégration LISP Extension Visual Studio.
  3. avoir CONEMU Déjà installé et saisissez le Extension de la conemuintégration Visual Studio .
  4. Une implémentation commune LISP de votre choix, définie dans votre% de path% (via des paramètres d'environnement)

    Avec cette configuration ci-dessus, vous aurez une réplique intégrée et voler la souris sur les fonctions / macros LISP vous donnera des info-bulles avec les signatures et les définitions. Cela devrait accomplir la plupart des fonctionnalités demandées dans la question initiale.

    Il a peut-être été malheureux qu'au moment de la poser de cette question, ces outils n'étaient pas assez matures / créés pour être entièrement intégrés, car il s'agit maintenant, ou personne n'était au courant ou suffisamment intéressé à l'époque.

    En tant que bonus, si vous connaissez déjà C ++, ma recommandation serait de vérifier intégrable Common Lisp (ECL) , comme cela vous permet d'intégrer LISP dans votre code C ++ ou d'appeler C ++ de LISP, quelle est la qualité de celle combinée à Visual Studio?


0 commentaires