为什么源代码只是文本?

时间:2011-11-14 14:04:16

标签: ide editor wysiwyg

我一生都使用过基于文本的源代码编辑器。 我无法相信我们仍然在做这个!必须有更好的方法。

我并不是说我想使用所见即所得的编辑器,我通常讨厌这些编辑器,因为它们并不完全符合您的要求。

不,我指的是一个基于文本的源代码编辑器,它通过以下附加功能大大增强:

  • 包括图片,excel-data,pdf等。在源代码中,解释某些数据结构,包括(模型)客户端实际需要的屏幕截图等。当然还有选项缩小/隐藏/折叠这些东西。 (与单独文件相反,这一点很明显,您希望将这些信息与源代码一起存储)

  • 评论不是文字,更像是类似邮寄的项目,可以调整大小,可移动,可点击等。

  • 类定义和实例不是文本,而是可点击的对象框,甚至可以使用图标在源代码中快速查看对象是哪个类。

  • 现在有2个字符作为1个符号的运算符。例如: - >在PHP中作为真正的箭头。

  • 在源代码中使用颜色,不同文本大小和其他布局工具的可能性(我不是在谈论自动语法着色,有时通过使用布局工具强调某些文本块可能很方便你在Word中做)

  • 在不同文件中包含单独的文件,但仍然可以编辑/查看这些文件,就像它是1个文件一样(与Adobe Illustrator相比,您可以在文档中放置单独的文件,但仍然可以编辑它们)。

我知道很多铁杆程序员对这些事情感到震惊,但他们仍然可以编辑他们想要的方式,我只是觉得拥有这些额外的可能性是很好的。为什么源代码只有STILL文本,其中许多其他类型的文档要复杂得多?

有没有人知道任何具有这些功能的源代码编辑器?

3 个答案:

答案 0 :(得分:4)

过去曾尝试制作视觉开发工具 - 但问题是计算机需要使用正式语言进行非常精确的陈述才能完全满足用户的特定要求。

事实上,如果你写下一个要求,然后以不同的重点阅读它,你会发现写一个明确的陈述是非常困难的。

这个例子来自软件工艺:Pete McBreen的新命令(978-0201733860)。

  

玛丽有一只小羊羔 - 羊羔属于玛丽而不是其他任何人

     

玛丽有一只小羊羔< - 她不再拥有它

     

玛丽有一只一只小羊羔 - 只有一只

     

玛丽有一只羔羊 - 它非常小

     

玛丽有一点羊肉 - 其他人都吃了鸡肉

这就是为什么我们需要一种语言,要求我们更加明确自然语言需要以及为什么开发的视觉辅助无用。

例如,使用“post-it”注释代码对编写易于其他人阅读的干净可读代码没那么有用。事实上,与其他开发人员共享代码意味着更改文本大小和颜色会要求其他开发人员受到个人风格的影响,这并不酷。

您提到的一些想法现在实际可用。能够通过单击“框”类来查看类图并导航到代码是Visual Studio的一项功能 - 就像在树视图中单个文件后面的多个文件的组织一样。

答案 1 :(得分:1)

这当然是我的看法,所以请耐心等待。我认为没有做到这样的事情的主要原因是因为编译器仍然期望纯文本。如果你有一个像你提到的源代码编辑器,它将只是一个前端 - 实际的源文件仍然是纯文本。您遇到的问题是采用这种方法的每个源编辑器可能有不同的方式来实现某些功能,因此看起来相同的源实际上在纯文本中完全不同。

当您编译该源代码时,您将陷入困境。对于你提到的PHP的例子,它可能没什么问题,但对于我所处理的事物类型(工业的实时C ++应用程序),我需要对源代码进行精确的低级控制,以便我确切地知道我的代码是如何存在的编译。这绝不会对绝大多数程序员有用,这就是为什么它从未完成过。目标受众充其量只是小。

答案 2 :(得分:0)

你所描述的内容对我来说听起来很像https://en.wikipedia.org/wiki/Literate_programming

在此方面取得了一些进展,其中一些现在很有用

带有连字的字体(以及支持它们的编辑器)

Java source code with -> and != rendered as symbols

https://github.com/tonsky/FiraCode中的https://www.jetbrains.com/idea/

Jupyter Notebook,虽然你不能轻易地为最终用户“纠缠”可执行文件或库。

Jypyter Notebook screenshot from their website

http://jupyter.org/

Fortress(来自Sun的编程语言)

Fortress支持utf-8中的源代码并鼓励其使用,尤其是用户定义的运算符。他们尝试在编辑器中排版源代码(因为大多数是计算科学,所以很多数学)。

Elastic tabstops

Elastic tabstops demo from its website

http://nickgravgaard.com/elastic-tabstops/

结论

实际上有很多这样的努力。对于开发人员工具来说,还没有像UX运动这样的东西,但我希望它能在未来几年中获得动力。