繁体   English   中英

适用于C#Developer的Common Lisp IDE?

[英]Common Lisp IDE for C# Developer?

UPDATE

我决定现在和Clojure一起去。

LispDev还没准备好,Eclipse / cusp不够稳定让我觉得舒服。

至于Clojure,在经历了一个漫长的,非常令人沮丧的,非常讨厌的过程,试图让Eclipse / CCW,Netbeans / Enclojure和IntelliJ / La Clojure工作之后,我终于让Eclipse / CCW工作了。 其余的仍处于大多数破碎状态。

(如果我避开它,我会记录什么了, 得到的Eclipse / CCW工作。)

所以现在,我打算用它。 我可能会回到CL,查看LispWorks和AllegroLisp的免费版本,但在Microsoft CLR环境中工作,Clojure对我来说感觉更自然。

谢谢大家的帮助。


原始问题

我是一名非常熟悉Visual Studio的C#开发人员(使用Resharper)。

我是Lisps的新手。 我最近对Common Lisp和Clojure都感兴趣,并且发现了很多关于它们的好材料。

我已经尝试过Emacs + Slime,但它感觉就像一个非常倒退,过时的解决方案。 我毫不怀疑它的力量,但它的可用性与我以前的习惯完全不同。 除了语言之外,我不想使用IDE。

Clojure和CL都有Eclipse插件。 还有一些我见过的Clojure选项。 由于我不是Java开发人员,所以我对这些IDE一无所知。

Eclipse是一个很好的起点吗? 还有其他好的选择吗?

编辑:

这是我习惯的功能:

  • 语法高亮和自动注释(每个人都有这个,所以这是一个有争议的点)
  • 自动完成功能和变量名称
  • 实时显示所有函数重载和参数,以及在键入参数时向上/向下滚动列表的功能
  • 代码改进的语法建议,能够为你完成(“使用const”,“转换为LINQ表达式(FP)”,“变量永远不会被赋值”,“变量永远不会被使用”,“变量”可能为null“,”函数将永远不会被使用“,等等)
  • 提取方法/函数重构:选择一个文本块,然后将其提取到一个新函数中
  • 创建变量重构:选择一个文本块并创建一个变量(例如,let)
  • 重命名重构:重命名函数或变量声明,使用它的所有其他函数将被更新(自动搜索/替换)
  • 转到方法/函数的定义,变量
  • 查找特定方法/函数变量的用法/参考
  • 集成的基于文件夹的项目管理工具和构建工具
  • “将类移动到新文件”,它根据类名创建一个新文件,并包含其所有方法
  • “基于类类型重命名文件”,如果更改类名,则重命名文件
  • F9 /单击该行左侧以添加/删除断点
  • F10 / F11在调试时进入或超过代码,同时带有箭头和突出显示以显示当前正在执行的代码(进入func执行,或者只是在此处执行)

大多数所有内容都可以在右键单击上下文菜单中使用,或者在您键入时作为悬停组合框或文本框。

我不是说emacs / slime不能这样做,但如果确实如此,它就不会在可用性技术方面使用任何类似的东西。

如果你已经习惯了Visual Studio并想要一个类似的产品用于Lisp,那么等效的可能是类似的商业IDE。 我所知道的最重要的是AllegroLispworks

虽然我已经尝试过演示,但我个人并没有将其中任何一个用于实际工作(即一个大项目)。 他们似乎很好,如果有点复杂和奇怪的用户界面,但没有比史莱姆更好,值得我的钱。 但是如果你想要像VS这样的东西,它们可能就是你想要的东西。

FWIW,我在Emacs中同时使用C#和Common Lisp,我觉得Slime比我迄今为止编辑C#的任何模式都要好10倍。 想想看,我不知道任何我宁愿使用的语言或平台的开发环境 - 它就是那么好。

你可能遇到的一个问题是,Lisp本身的语言与你习惯的旧方式不再适用的语言不同,因此任何 IDE都可能看起来“倒退”给你。 (我在C#之前很久就学会了Lisp,而且C#似乎倒退并且和我约会!)因此,你不是学习一些Slime命令(你真的不需要它们),而是学习IDE命令,这可能并不容易。你,因为概念是相同的,不一定映射到类似VS的IDE功能。

但无论你选择什么,祝你好运!

C#主要用于批处理模式。 IDE显示了这一点。 它知道固定语言的语法,调用编译器并使用各种工具(如编译器)的输出。

Common Lisp略有不同。 IDE可以集成到Common Lisp(Allegro CL,LispWorks,CCL)中,也可以像Emacs一样连接到正在运行的Lisp(SLIME / Emacs)。 主要的发展模式是互动的。 程序正在运行,IDE会对其进行修改。

对于Emacs,人们使用带有扩展Paredit和Redshank的SLIME 请参阅: 使用Emacs编辑Lisp代码

  • 语法高亮和自动注释(每个人都有这个,所以这是一个有争议的点)

    这是由IDE提供的。

  • 自动完成功能和变量名称

    这是由IDE提供的。

  • 实时显示所有函数重载和参数,以及在键入参数时向上/向下滚动列表的功能

    Common Lisp没有'重载'。 可以在IDE中浏览通用功能(CLOS)。

  • 代码改进的语法建议,能够为你完成(“使用const”,“转换为LINQ表达式(FP)”,“变量永远不会被赋值”,“变量永远不会被使用”,“变量”可能为null“,”函数将永远不会被使用“,等等)

    Lisp编译器输出提示和警告。 一些人也有风格建议。

    CL-USER 15>(defun foo(ab)a)FOO

    CL-USER 16>(编译'foo);;; * FOO中的警告:B已绑定但未引用FOO

    像LispWorks这样的实现可以浏览一组警告和错误。

  • 提取方法/函数重构:选择一个文本块,然后将其提取到一个新函数中。

    工具可以做到这一点。 例如参见Redshank。

  • 创建变量重构:选择一个文本块并创建一个变量(例如,let)

    Reshank。

  • 重命名重构:重命名函数或变量声明,使用它的所有其他函数将被更新(自动搜索/替换)

    使用IDE的搜索和替换工具。 请注意,由于Lisp具有可编程语法,因此该问题无法以一般方式解决。

  • 转到方法/函数的定义,变量

    荟萃。 ,Meta-X编辑定义

  • 查找特定方法/函数变量的用法/参考

    谁在IDE中调用功能。

  • 集成的基于文件夹的项目管理工具和构建工具

    请参阅系统工具。

  • “将类移动到新文件”,它根据类名创建一个新文件,并包含其所有方法

    Common Lisp不能以这种方式工作。 方法和类没有像C#那样连接。

  • “基于类类型重命名文件”,如果更改类名,则重命名文件

    Common Lisp不能以这种方式工作。 一个人不会为一个类写一个文件。

  • F9 /单击该行左侧以添加/删除断点

    取决于IDE。 否则使用BREAK功能。

  • F10 / F11在调试时进入或超过代码,同时带有箭头和突出显示以显示当前正在执行的代码(进入func执行,或者只是在此处执行)

    使用STEP或IDE工具功能。

  • 大多数所有内容都可以在右键单击上下文菜单中使用,或者在您键入时作为悬停组合框或文本框。

    是。

我认为您需要更详细地查看SLIME,因为它与您通常的常见Lisp功能(如STEP,BREAK和TRACE)相结合所描述的内容非常多。

阅读LispWorks IDE的手册可能也很有用,它提供了便携式GUI中的等效功能以及更多功能:

Lispworks for Windows,IDE用户指南

  • 我不是说emacs / slime不能这样做,但如果确实如此,它就不会在可用性技术方面使用任何类似的东西。

    SLIME基于Emacs,因此它的UI形成了它。 例如,LispWorks使用Emacs的想法主要仅用于编辑器组件(它基于用Common Lisp编写的类似Emacs的编辑器)。 LispWorks使用GUI工具进行类浏览,通用功能浏览,系统管理,调试器,检查器等。

也许你应该试试Jabberwocky

还有LispIDELisp Studio

Allegro Common Lisp有一个IDE提供它可能是有意义的(虽然我不确定你是否可以与其他Lisps一起使用)。 Eclipse插件被称为尖,可以发现在这里 ,虽然有它的叉子这里称为可能已被最近更新lispdev。

在Lisp Game Wiki上可能会有一些有用的东西,特别是这里的有用的应用程序页面。

就个人而言,我喜欢使用Emacs + Slime和一些emacs工具,这些工具旨在使其更像IDE。

我知道这是一个古老的问题但是 - 对于Clojure来说 - Nightcode怎么样? 我同样也不想浪费语言学习时间来学习一个新的编辑器(即Emacs / SLIME)。 我发现Nightcode非常实用。

https://nightcode.info/

我发现自己现在想要Nightcode支持Common Lisp(也许是ABCL的形式)!

虽然这个问题已经过去了,并且OP已经转向Clojure,但我认为这仍然是一个有效的问题,特别是对于那些希望学习Common Lisp并且不愿意从Visual Studio切换或只是想用工具学习新东西的人他们熟悉,至少减少了进入如此优秀语言的障碍,这就是提出这个问题的原因。

我写了一篇文章,解释如何实现这一点,使用Visual Studio作为Lisp IDE ,这将是EMACS + SLIME组合的一个几乎很好的替代品。

实现此设置的步骤如下:

  1. Visual Studio 2015(显然是主要成分)
  2. Lisp集成 Visual Studio扩展。
  3. 已安装ConEmu并获取ConEmuIntegration Visual Studio扩展
  4. 您选择的Common Lisp实现,在%PATH%中设置(通过环境设置)

通过上面的设置,您将拥有一个嵌入式REPL,将鼠标悬停在Lisp函数/宏上将为您提供带有签名和定义的工具提示。 这应该完成原始问题中要求的大多数功能。

可能不幸的是,在提出这个问题的时候,这些工具还不够成熟/不能像现在那样完全整合,或者当时没有人知道或感兴趣。

作为奖励,如果您已经熟悉C ++,我的建议是查看Embeddable Common Lisp (ECL),因为它允许您将Lisp嵌入到C ++代码中或从Lisp调用C ++,与Visual结合使用有多好工作室?

如果您是Lisp的新手,而不是目前的emacs用户,那么我强烈推荐使用Allegro Lisp或LispWorks的免费版本。 或者,如果您要使用Scheme路线,PLT Scheme(现在称为Racket)。

这三个都有非常丰富的IDE功能。 调用树,提前输入,编辑器内断点,以及传统IDE中常用的大部分内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM