全世界的开发人员都有受虐倾向吗,否则微软怎么会不顾一切负面反响,坚持在推广HTML5以及JavaScript的道路上一往无前呢?本来微软当初只表示会将Web标准集成于下一个版本的Winodws系统当中,而如今的说法却变成了将在Office系列软件中引入相同的机制——这下子日常应用的两大领域同时沦陷,开发人员却除了抱怨之外完全无可奈何。为什么会这样?
我们先来说说Office领域的重大变革:用户能够通过Visual Basic for Applications(简称VBA)在Office组件中定义脚本,而VBA本身是微软专有脚本语言Visual Basic 6中的一个子集。众所周知,VB 6是一套语法相当丑陋蹩脚的垃圾语言;微软早在2008年就停止为其提供各项技术支持,而我迄今为止也没有见过哪位开发人员为其消亡而感到惋惜。然而,正如古语所说老而不死是为贼,VBA再次毫无节操地渗入我们的工作。
我们不必自欺欺人,说什么VBA“只是一款脚本语言”之类。无论此种论断正确与否,我们必须承认自己的整套业务应用程序都被写成Excel宏的形式,而不放弃这些应用的同时也就意味着不得不引入VBA。
不要以为众多企业都在面临这一问题,就代表事态终会有所好转。微软曾经一度希望将VBA打造成Windows应用程序领域的通用脚本语言。为此,VBA执行环境被主动提供给第三方软件开发商,以期在相关应用程序中得到广泛普及。然而微软于2007年雪藏了该程序,也就是说我们当下乃至将来都不可能获取到任何支持VBA的新应用程序。
坏消息还不止这些。Office系列软件可能会跨平台发展,但微软却为Office 2008 Mac版额外添加了VBA支持内容。而且直到最新的Office 2011版本,相关内容仍然没有得到彻底清除。一段给定的VBA代码是否能够正常执行主要取决于大家所安装的操作系统平台及Office软件是哪个版本。
脚本语言改朝换代之期已近
不消说,VBA如今的状态相当尴尬,而且该语言显然没有前途可言。尽管做出了继续支持遗留的VBA代码的承诺,实际上微软为用户提供另一套可靠的替代方案只是时间问题。那么为什么不考虑JavaScript呢?从客观角度来说,我能够举出一大堆理由,证明其极具意义的光明前景:
1. JavaScript具有庞大的装机量基础。
它与八十年代的Basic语言一样,几乎无处不在。孩子们通过它来完成学校布置的课业项目。无论大家对这种语言有多少非议——需要强调的是我并非该语言的拥护者——在仅以文字处理及表格制作为目的的日常应用中其功能局限可谓影响甚微。至少它的语法结构远远胜过VBA。而且鉴于利用 JavaScript代码编写的程序浩如烟海,加之绝大部分都已经成功运行于Web之上,我们可以很轻松地为常见问题找到合适的解决方案。
2. 微软并非第一家或惟一一家推广JavaScript的企业。
Adobe已经允许用户利用JavaScript为其专业图形应用程序编写脚本——其中包括Photoshop、Illustrator以及 InDesign等——且这一支持可以追溯到十年前的首个Adobe Creative Suite版本中。既然它在Adobe那些大型多功能应用程序中可以运行良好,微软将其部署于Office软件中也不会有太大问题。
3. JavaScript运行环境部署成本低廉。
微软已经开始致力于开发用于IE浏览器的高性能JavaScript执行引擎。对Windows及相关应用程序代码的重复利用意味着微软并不打算为 类似VBA这样的时代弃儿提供额外支持资源。此外,通过一套共享JavaScript函数库,微软堆栈中的每个层都将同时获得由最新JavaScript 带来的性能提升。
4. JavaScript在跨平台方面表现优异。
IE浏览器中的JavaScript引擎只能在Windows系统上生效,但对于其它平台来说还有很多替代方案,例如运行Mac OS X上的、作为WebKit组件之一的JavaScriptCore引擎。这就使得Mac版本Office的应用程序脚本能够与Windows版本具备相同 或相近的优良表现。副作用也是有的,以OpenOffice.org为代表的后备生产力套件没准会提供更为简单便捷的Office文档、宏以及其它内容的 阅读功能。时至今日,这些候选级套件只为VBA类宏提供一部分支持。
5. JavaScript能够运行于网页。
根据工作职能公告,微软为Office 15制订的目标是允许开发人员“创建跨客户端及服务器的丰富应用程序”。预计Office 365中就将整合进基于网页的生产性产品。如果Office的标准脚本语言采用JavaScript的话,开发人员将可以使用同一种语言自动处理桌面 Office应用程序以及网页副本中的内容。JavaScript在帮助开发人员利用Office 365处理在线文档的服务方面也大大强过VBA。
6. JavaScript能够运行于移动设备之上。
在当初由Office 2010所引发的争论中,要点是其为“涵盖PC、手机以及浏览器的广大设备范畴提供最佳的生产力体验。”到目前为止这一想法还只是一厢情愿,但通过将更多 Office功能项目定向于开放式Web标准,微软已经在为移动设备提供有价值的生产力体验方面迈出了决定性的一步。
JavaScript真的是将在Windows系统上沿用到底的最后一款脚本语言吗?我个人最想看到的是微软将 Office领域的JavaScript脚本功能整合到Windows 8中饱受争议的JavaScript引擎当中。Mac OS一直以来都将AppleScript当作固定选择,这使得脚本得以在Finder以及各类应用程序之中发挥作用。AppleScript并不是一种堪 称完美的解决方案,但要在Windows平台上达成类似的效果总需要用到第三方出品的自动化工具。如果微软将JavaScript视为整个Windows 系列平台的基础性脚本语言,这款工具的价值对于用户及开发人员来说(而且这样一来客户不必再为了运行相关应用程序脚本而使用VBA,开发人员也就无需自责 了)将无可限量。
微软能将上述优势尽数加以有效利用吗?他们是否真会在基于JavaScript的脚本解决方案上掀起技术革命的巨浪,以下一代Windows与 Office系列软件为前哨站,进而为操作系统、桌面应用程序、Web以及移动领域带来大一统的局面呢?实话实说:可能性不大。。。但无论如何,微软已经发布了相关声明,这一标志性的声明也许将引领我们走向更加美好的未来。
当然,除了JavaScript之外我们还有VBA,这正是微软眼下提供给我们的工具。说说吧,尤其是那些还在抱怨个不停的朋友们——到底哪套方案更贴心些?