同学们,一起来可视化编程吧

jopen 12年前
   <p> 导读:我们知道编程工具的发展很快,而新工具的推广过程却不是一帆风顺的。 Kwindla Hultman Kramer 是洛杉矶电脑公司 Oblong Industries 的 CEO,这个公司因为电影《<a href="/misc/goto?guid=4958341829394741971" target="_blank">少数派报告</a>》开发手势界面著称于世,致力于推广可视化编程语言,这篇文章将介绍 Kwindla Hultman Kramer 在革新编程语言环境的过程中的一些经历与感悟。</p>    <p> 当我十五年前从 <a href="/misc/goto?guid=4958341830183216286" target="_blank">MIT</a><a href="/misc/goto?guid=4958341830183216286" target="_blank">媒体实验室</a>毕业时,我的研究小组每年都与来自 <a href="/misc/goto?guid=4958341831707903823" target="_blank">Xerox PARC</a> 的知名科学家出去度假旅行。我很崇拜他们与他们所从事的工作。但是那时我很年轻也有点急躁。每当我们这些青年人谈起我们的研究或是展示一个 demo,总有人会说,真不错,当年我们在 PARC 怎么怎么样,云云。事到如今,在过去几年里,每当我看到一件新的、小众的、开源的、可控的网络硬件、一个新的有声誉的引擎、有生命力的艺术品或是一个产品具有位置跟踪再加上实时信息推送,反正你已经明白我的意思了,每当这个时候我都会静静思考一下,是不是能让 PARC 的那群人闭嘴。一切都在证明,时代在进步。按照定义,新的工作总是全新的,虽然它不可能是彻底地完全的新,没有东西可以做到这一点。</p>    <p> 对于一篇编程工具的小文章而言,这个介绍实在是有点长。尤其是最近我一直在关注有关交互式开发环境的一些网络在线讨论。这些讨论由 <a href="/misc/goto?guid=4958332262048562162" target="_blank">Bret Victor</a> 和一个相关的 Kickstarter project 发起,Kickstarter project 现在演变成了 <a href="/misc/goto?guid=4958341833226581880" target="_blank">YCombinator company</a>,名叫 <a href="/misc/goto?guid=4958339347060917679" target="_blank">Light Table</a>, 由 <a href="/misc/goto?guid=4958341834739144387" target="_blank">Chris Granger</a> 创建。Bret 的东西很给力,Light Table 也很给力。如果你也感兴趣,你也会想使用他们正在研发的东西。现在投资 Kickstarter project 吧。可有趣的是,我们在 20 年前就有了这些工具一些相当有趣的版本。直到 20 世纪八十年代晚期,一些专业的 LISP and Smalltalk 环境有点像 Light Table 了。</p>    <p> 当我在 1996 年发现 <a href="/misc/goto?guid=4958341835536644324" target="_blank">Visual Age Smalltalk</a> 的时候我很震惊。Visual Age 和其他 Smalltalk 工具是建立在可以代表对象和方法的代码片段上的。那儿几乎没有文件操作。你可以运行代码,直接修改源代码,这都反映在正在运行的进程中了。开发环境和运行时间没有差别。你能够保存工作“图像”。我们有一些好的工具,可以管理 forks 及版本的归并,不仅在源代码中可以适用,而且可适用于完整系统映像。</p>    <p> 如果你用 Visual Age Smalltalk 写一个 GUI 应用,你可以使用调试器检测屏幕上所有的元素。而且,如果你再多写一点 Smalltalk 代码,所有的系统内部构件,包括虚拟化环境、编译器和调试器,都是可控制的。当我兴致勃勃的将这些讲给我朋友时,他们埋头于自己的老式家庭网络,说道:这玩意儿很不错,我们 10 年前在 <a href="/misc/goto?guid=4958341836333131248" target="_blank">Symbolics</a> 就开始在 <a href="/misc/goto?guid=4958341837122767275" target="_blank">LISP</a><a href="/misc/goto?guid=4958341837122767275" target="_blank">机器</a>中使用这些玩意儿了。所以我们可能要问,为什么这样的的编程工具没代替旧的工具,如果我们使用很长时间,目标能否将会更加明确,能否达成更大的共识呢?我可以想出一些可能的原因。</p>    <p> <strong>第一,</strong>在顶层构件动态环境需要动态的运营时间,这是件大事。Bret 在 JavaScript 环境下工作,Light Table 的目标是 JavaScript, Clojure 和 Python。这些天,我们有两个层级的语言。我们使用精确设计的语言,审美和实施过程缺乏变化。真正交互式的开发环境是很难为这些C-family 语言建造的。C-family 还是霸主,直到最近才开始动摇,因为他们不仅有真正的优势,也有惯性优势。另一方面,相对来说,我们有的动态语言还只是雏形。Javascript、 Ruby 和 Python 实用而且有趣。但大部分的动态语言工作都是陷入扭曲的语法、VM 级的白费力和以社区为基础的库的开发。这些我都很感兴趣,但是天呐,它确实让我为那个大约 200 人的精英团队朝思慕想,他们在 IBM 致力于 VisualAge 长达十年。</p>    <p> 也许谷歌,某种程度上可以说是 2012 的 IBM,将用 JavaScript 和 V8 把我们再一次带到那里。然后我们将拥有一个精确设计的动态语言栈,有点 IBM 的 Smalltalk 和 Symbolics LISP 的意思。</p>    <p> <strong>第二,</strong>我认为使用网络的编程和程序员的大爆炸阻碍了软件工具的发展,就像它曾经短暂的阻碍了用户界面设计。再者,我要立马澄清一件事,总的来说网络创造的东西还是很不错的。但天下没有免费的午餐,10年间,大部分技术世界的注意力转到了构件一个全球化的平台,而这在早些时候不能够很好的支持新的用户界面或者是运行时复杂的建构工作。但网络在逐渐成长。现代 JavaScript 框架的性能证实了这一点,一些低能阶的执行工作也证实了这一点,例如 V8。</p>    <p> <strong>第三,</strong>屏幕基板面很重要。传统的“<a href="/misc/goto?guid=4958341838640811085" target="_blank">一切均是文件</a>” 的方法可以完美地移植过来。你可以构建一个跟文件一起工作的环境,即使是很小的一个展示。你也能够跟文件一起工作,如果你只有一个行模式终端。但灵活设计的代码片段和完全交互式的图像调试器需要大量的像素点。而且不总是有足够的像素点。我每次去 Big Companies 都看到很多全职的程序员对着 15 寸的监视器工作,这让我很惊讶。这是种巨大的生产力浪费。虽然像素点现在越来越便宜了,但引进了很多形状因数。现在我们实际上能够构建专门为了同时利用笔记本屏幕和平板电脑屏幕的开发环境。当我每天使用 Visual Age Smalltalk 时,同时使用 Mac Air、iPad 比使用双监视器的台式机有更多的像素点。</p>    <p> <strong>第四,</strong>如果我们真的想要摆脱文件和程序的刻板表述,其实我们是想完全摆脱所有的文本。多年以来,图形程序设计环境有很多的学术成果。但这是两码事。</p>    <p> 这是些有关 LISP Machines 的<a href="/misc/goto?guid=4958341839427161044" target="_blank">不错的网页</a>,这真是未来所在。而且据我所知,最有可能为C-language 平台构建完全动态环境的是 Alexia Massalin 的综合操作系统。如果你或多或少对程序员感兴趣,我敢打赌,Alexia 的<a href="/misc/goto?guid=4958341840218766309" target="_blank">论文</a>能让你心醉神迷。因此,让我们重塑这些旧的工具吧。我想要使用 Light Table,还有不管 Light Table 催化出的任何我们无法想象的东西。但我保证不管出现什么新兴事物,我将告诉你我们上个世界最最末在 Media Lab 就已经有了早期版本(很记仇哦)。</p>    <p> <strong>文章来源:</strong><strong><a href="/misc/goto?guid=4958341841015390360" target="_blank">techcrunch</a></strong></p>    <div id="come_from">    来自:     <a id="link_source2" href="/misc/goto?guid=4958341841801831896" target="_blank">CSDN</a>    </div>