【问题标题】:What are the most important features of an IDE for Perl development? [closed]用于 Perl 开发的 IDE 最重要的特性是什么? [关闭]
【发布时间】:2023-03-07 03:44:01
【问题描述】:

你们中的一些人可能知道我是Padre, The Perl IDE 的首席开发人员。在其开发的第一年,Padre 成为了一个可接受的文本编辑器,具有一些用于 Perl 开发的额外功能。

我想向 Stack Overflow 社区寻求一些帮助,以进一步推动该项目,使其成为一个出色的 Perl 开发 IDE。因此,我很高兴阅读您认为 Padre 仍然缺少的 IDE 最重要的功能是什么?。

我尤其对目前使用 Eclipse+EPICKomodo、Visual Studio 或任何程序员文本编辑器的人感兴趣。

【问题讨论】:

  • 我认为你也应该关心那些使用 vim 的人的意见(是的,还有 emacs(那里,我说过))。这些将是最难赢得的用户。
  • @Manni:作为一个 Vim 用户,我可以说我几乎不可能被说服。我的猜测是很多(大多数?)Vim 和 Emacs(我说过)用户会有同样的感觉。我们知道我们首选的编辑器和更“现代”的 IDE 之间的区别。我们更喜欢我们的。
  • 我自己是 vim 用户 - 或者曾经是 - 我同意 Telemachus 的观点,即我认为 vim 或 emacs 用户不会大量切换。至少在我们实现 emacs 和 vim 键绑定之前不会。与此同时,我们鼓励他们从 Padre 那里偷东西:code-and-hacks.blogspot.com/2009/07/…
  • 我真的不买那个,Artem。我目前似乎正朝着相反的方向前进,从 Eclipse 到 (g)vim。
  • @Artem Russakovskii 您认为这些 IDE 的哪些特性让 vim/emacs 用户印象深刻?他们是真的换了还是只是印象深刻?

标签: eclipse perl ide komodo padre


【解决方案1】:

用于 Perl 开发(包括 Padre)的 IDE 最重要的特性是:

一个实际工作的交互式调试器。例如。记住断点,深入研究复杂数据结构的能力,以及复制(到剪贴板)应该对监视的变量起作用——包括一个菜单命令 Copy Special,它允许以各种格式放置它;比如 CSV、XML 或制表符分隔。

【讨论】:

    【解决方案2】:

    我发现的两个最宝贵的功能:

    • 逐行调试、观察点、断点等,这样我就可以正确调试我的代码了。
    • 代码完成,因此我不必去查找文档(甚至在线)。

    【讨论】:

      【解决方案3】:

      好的,这是我的第三个答案,虽然我不想这么说。

      比赛很容易安装。帕德里不是。我今天尝试更新到最新版本,但测试再次失败。

      【讨论】:

      • 我们知道我们需要简单的安装程序,我们已经在 Windows 上安装了它,并且有一天我们也会在 Linux 和 MacOSX 上安装它。我们只是需要一些帮助。与此同时:哪些测试失败了?那些 Padre 或一些先决条件?在什么操作系统上?您是否报告了失败的测试?
      • 别担心。我知道你们正在努力解决这个问题,我今天打算试一试你们的票务系统。但既然你问我在 Perl IDE 中寻找什么特性,我(犹豫地)回答了。
      • 公开记录:在我尝试报告之前几分钟,该错误已修复。
      【解决方案4】:

      我是一个重度 Perl EPIC 用户,我最大的抱怨是无法跳转到在当前上下文中明确定义的函数(通常通过按 F3)。很漂亮 在这一点上非常成功或错过。

      【讨论】:

      • +1 Padre 也不需要从头开始实现这一点。它可以使用 ctags。
      【解决方案5】:

      稳定性。如果他们的编辑器崩溃并失去工作,人们会很快转身离开。

      【讨论】:

        【解决方案6】:

        我与 Komodo 合作。我也使用其他编辑器,但我大部分时间都会回到 Komodo。一个好的 IDE 应该有:

        1. 一个好的调试器。断点、监视列表以及您需要的一切。
        2. 远程调试。线程调试能力。
        3. 还包括加权字体的语法突出显示(我对 Oxygen 非常失望,例如,XSLT IDE,我不能使用粗体字体来强调保留术语)
        4. 语法补全。
        5. 项目管理工具,最好通过插件扩展。

        【讨论】:

          【解决方案7】:

          良好的 VCS 集成。这是我在 Eclipse 中绝对喜欢的东西:您可以立即看到哪些文件有本地更改,哪些还没有添加到存储库中。只需单击鼠标,您就可以浏览不同的版本并获得漂亮的差异视图。

          【讨论】:

            【解决方案8】:

            项目经理。能够定义包含特定代码库的文件和文件夹集对我来说至关重要。会话很有用,但不能替代。

            【讨论】:

            • 同意!一个体面的项目经理甚至不应该太难实施。此外,竞争相当弱。 Komodo IDE 的项目令人难以置信,反直觉,并且该功能与他们自己的 VCS 集成发生冲突。我所知道的 EPIC/Eclipse 没有类似的东西。
            • EPIC/Eclipse 有项目(或至少称为“项目”)。我记得是因为我上次尝试语法高亮时不起作用,除非项目中有一个文件,这让我很恼火。
            • Padre 有一个(部分实现)但自动的项目管理。任何看起来像 CPAN 模块的目录结构都被视为一个项目,无需任何手动配置。这意味着任何存在 Makefile.PL 或 Build.PL 的目录都被视为项目的根目录。作为项目管理,您希望看到什么?
            • @Michael:呃!你是对的。我曾经将这些项目用作某种文件浏览器。要求一切都必须在某种项目中,并且项目不喜欢它,当你工作区之外的生活是,err....,次优。
            • @szabgab:基本功能是能够定义一组文件、目录(隐含包括其内容,可能带有过滤)和逻辑分组(可以包含文件和目录的虚拟文件夹)。应该有用于浏览和打开项目中文件的树视图和用于在项目之间切换的机制。拥有根目录很有用(特别是如果您重新定位数据),但文件不必位于根目录下才能在项目中。其他任何东西都是肉汁:例如构建、运行测试套件或创建发行版。
            【解决方案9】:

            测试集成。

            Perl 有很好的单元测试工具。当我运行我的测试套件并失败时,我想查看失败的测试的代码。

            有一个很好的方法可以跳过测试结果并查看失败测试的代码以及预期和实际结果将是一个巨大的福音。

            【讨论】:

              【解决方案10】:

              我首先要查找的是当前活动文件的某种概览。我想看看方法/函数,如果可能的话,还想看看使用的模块,尤其是任何 use base 语句。

              你在 Padre 中很好地解决了这个问题。

              【讨论】:

                【解决方案11】:

                Visual-Studio 风格的变量和函数名称重构以及函数提取。 Visual Studio 在整个模块中搜索所有引用,并允许您查看所有更改的行,以防您不想更改一个实例(无论出于何种原因)...

                【讨论】:

                • 目前的 Padre 开发人员可能都没有 Visual Studio,您能否更详细地描述这些重构工具?在这里还是给我发电子邮件? (szabgab@gmail.com)
                • 我认为从microsoft.com/express/product/default.aspx下载免费的windows版本是最简单的。我个人使用 C#。如果您需要一些屏幕截图,请告诉我。
                • 好的 - 它被命名为 Lexically Rename Variable - 但我无法让它像在 C# 中那样工作 - 我已经给你发了一些截图。
                • 感谢您的屏幕截图,我打开了票 padre.perlide.org/trac/ticket/492 padre.perlide.org/trac/ticket/494 但您必须在 Lexically Rename Variable 中解释什么对您不起作用,以便我们可以解释它是如何工作的或修复它。
                【解决方案12】:

                这个问题似乎比可回答的问题更值得商榷。 冒着被指控滥用版权的风险,我将发布我记得的内容,这些内容来自 David R. Barstow、Howard E. Shrobe、Erik Sandewall 所著的“交互式编程环境”一书。

                它不会完全一样,因为我多年前读过这本书,我已经用另一种语言记下了它。

                良好的交互式编程环境的原则

                1: Know the user
                    + Know the previous knowledge and practice of the user
                    
                2: Minimize the memorization
                    + Selection and not characters entering
                    + Names and not numbers
                    + Predictable behavior: the user should have a previous impression of what the system will do
                    + Possible access and changing of the parameters of the system      
                
                3: Optimization of operations
                    + Fast execution of common operations
                    + Inertia of visualization: the screen should change the less possible
                    + Memorization of system operation in user's memory
                    + The meaning of specific operations should have a simple relationship with the state of the system
                    + The system must be prepared to accept more than 10 followed commands per second, so that it can operate on the user's muscular memory
                    + The system should be prepared to organize the parameters of a command
                
                4: Engineer for the errors
                    + Provide good error messages.
                    + Engineer it to remove away the common errors.
                    + The system should provide reversible actions.
                    + Redundancy: the operations should have more than one way of being done.
                    + Integrity of data structures.
                

                【讨论】:

                  【解决方案13】:

                  配置和运行外部(命令行)工具的能力。插件很棒,但最终用户不一定想要编写一个只是为了与外部工具集成。允许用户配置他们自己的工具提供了很大的可扩展性,并且进入门槛最低。

                  我选择的编辑器是 UltraEdit。它不是 IDE,但通过它对用户工具的支持,我已经能够集成 IDE 功能,例如 lint、版本控制、调试等。

                  【讨论】:

                    【解决方案14】:

                    这可以通过use strict 实现;但即使没有明确use'd 也可能是一个有价值的功能,即:

                    前几天我们花了大约 10-20 分钟调试以下行为:

                    my %hash;
                    
                    $hash->{'key1'} = value1;
                    
                    # on reading in a different module
                    print $hash{'key1'}; # is, of course, empty, but was so easy to overlook in the code above
                    

                    简历: IDE 引入了适当的 Perl 类型安全性。

                    它可能已经在 Padre 中实现了,因为它不是在 Eclipse+EPIC 中实现的

                    【讨论】:

                    • 我认为正确的解决方案是告诉用户他必须使用 strict 并适当引用汽车类比。类似于不让你的孩子不系安全带走的事情。否则,您无法判断用户是否真的同时拥有 %hash 和 $hash。 (尽管对于标量和散列或数组不使用相同的变量名,我们可能会收到特殊警告)
                    • 嗯,这当然是有道理的。我所描述的案例发生在两位相当有经验的 Perl 开发人员疲倦的眼前。不知何故,很容易忘记严格,然后就可以了。另一方面——这个案例展示了一些与 Perl 本身相关的更深层次的问题,比如弱类型安全。所以我认为这些类型的简单问题可以通过 IDE(或用于完整性检查的插件)来解决。
                    【解决方案15】:

                    我使用 emacs。我想要一个可以帮助我重构代码的系统,尤其是当我正在编写丑陋的 1999 年代码时,该代码使用了从开始到结束的哲学与复制和修改相结合。

                    我查看了 Eclipse,但我无法使用需要我创建项目才能对文件进行单字符更正的系统。

                    我查看了 Padre,但它很慢而且崩溃。

                    我查看了声称由 CSS 配置的 Kod,但我找不到可以告诉我将 CSS 放在哪里的手册页。

                    【讨论】:

                    • 我没有看到你在 Padre 邮件列表或 IRC 频道上报告 Padre 崩溃。
                    • 我没有坚持足够长的时间来弄清楚它失败的原因。我看到它在我的笔记本电脑上作为 CentOS 的一部分安装了新的,它似乎可以工作。我期待着尝试一下。
                    【解决方案16】:

                    读取-评估-打印循环的集成。作为一个重度 Emacs 用户,我非常感谢Sepia。在我将它们提交给代码之前尝试一下非常有用。

                    【讨论】:

                      【解决方案17】:

                      能够创建和调试 XS 代码。

                      【讨论】:

                        【解决方案18】:

                        能够使用我自己选择的编辑器(据我所知,它可能具有)。这有机会赢得 vim/emacs 人的支持。

                        【讨论】:

                          【解决方案19】:

                          不知道Padre能不能做到这一点,但是分屏能力对我来说很重要。作为一个 VIM 用户,我在编码时经常分屏查看另一个文件。

                          【讨论】:

                            【解决方案20】:

                            文件、目录和项目范围的行结束策略。

                            所以,对于一个给定的项目或目录,我想让所有的行结尾都是 LF。在另一个目录中,我可能希望混合使用 CRLF 和 LF 文件。

                            我在 Unix 和 Win32 环境之间来回转换的东西上做了很多工作。

                            当一个人从一个平台移动到另一个平台时,自动来回转换所有文件的典型解决方案对我来说效果不佳。

                            当一个文件意外地以错误的格式创建时,可能会很痛苦。

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 2010-10-13
                              • 1970-01-01
                              • 2011-03-18
                              • 2010-11-09
                              • 1970-01-01
                              • 2010-09-10
                              • 1970-01-01
                              相关资源
                              最近更新 更多