只改变IDE是不够的

互联网上各种IDE新创意不绝于耳,感兴趣的朋友可以看看Bret Victor的视频演示。Chris Granger在推介自己IDE的相关概念方面相当成功。Josh Marinacci探讨了IDE改进的一些可能性。(译注:还有一篇相关文章:即时C#我在IDE开发领域已经工作了十几个年头,对于这些声音我的感情非常复杂。一方面,为人们展示IDE可能提供的新功能并将他们从麻木中唤醒是一件好事。然而另一方面,我也担心人们会把这些新创意和新功能应用到现有的编程语言上。我不认为“只要给Java或JavaScript加上一个完美的IDE世界就变得更加美好”,我担心这样只会带来失望和悲观。

代码同步执行是一个具有启发性的功能:用实际执行结果作为代码的注释,在编辑代码的同时可以看到语义变化,连调试代码都不需要了!过去30年间,这个超酷的功能被人不断提起。长久以来,代码同步执行功能始终没能摆脱演示阶段(包括我自己的工作),很多棘手的基本问题尚未解决。可变状态要怎么处理?(参考Circa)I/O要怎么处理?非确定性和异步要怎么处理?只有阶乘函数或之类的代码可以同步执行,那么这个功能便无法应用到实际编程工作中。一般说来,你还是需要编辑无效代码并利用传统的调试器来检查代码的执行情况。所以,一个复杂的IDE已经提供了你所需要的所有功能。为什么还要画蛇添足呢?

很多花哨的代码可视化方案同样因为折衷而被否决。数以百计研究查询和可视化代码的论文被发表。对于精心挑选的示例代码,它们都表现出色,但还是不能很好地应对现实的代码。那么,为什么还要设计用途有限却如此复杂的功能呢?要实现通用的代码可视化非常难,在不允许修改语言本身以提供帮助的时候时尤其如此。

IDE最根本的问题在于,它们受制于编程语言的语法和语义。我们的编程语言都是为文本编辑器设计的,也就难怪我们的IDE看上去像是浓妆艳抹的写字板。同样的,我们的编程语言都被设计成命令式语义,尽管与硬件配合很高效但却不支持静态可视化。如果为旧语言直接设计一个全新的IDE就可以魔术般地改变语法和语义,这就是一种奇迹。然而我不相信奇迹会发生。

(译者注:命令式语义:命令式编程语言,例如C#,Java或C++。语言特征在于,代码除了体现出想要解决的问题,还要关心机器是如何处理的,例如会在代码里写for循环,if语句等等。)

语言和IDE彼此息息相关,牵一发而动全身。这也就是我3年前开始搁置IDE的工作转而关注语言设计的原因。摆脱命令式语义的束缚是工作的目标之一。另一个目标是去除源代码文件(同样也需要摆脱AST——抽象语法树,它承载了所有文本编码信息但不具备可读性)。这项工作极其困难而且孤独,甚至没有人愿意谈论这些疯狂的想法。尽管如此,我始终坚信只要采用汇编语言的后代编程,就不可能摆脱由文本编辑器发展出来的开发工具。

 

英文原文: Jonathan Edwards  编译:伯乐在线 – 唐尤华

【如需转载,请标注并保留原文链接、译文链接和译者等信息,谢谢合作!】

 

1 收藏 1 评论

关于作者:唐尤华

唐尤华:我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其实我是一个程序员。 个人主页 · 我的文章 · 18 ·    

相关文章

可能感兴趣的话题



直接登录
最新评论
  • 每个人的用法已习惯不一样,自然本身IDE也不一样,人生观本就不同,何苦碍于IDE的各种横生呢?当然不反对IDE的增进,但是我觉得功能够用即可,剩下是自己的架构和开发框架,最重要的是操作习惯。

跳到底部
返回顶部