软件频道>程序开发>JavaVBVCDelphiC/C++Web开发微软专栏移动数据库程序人生软件工程|开发客
您现在的位置: 天极网 > 开发频道 > [专家茶室]从VB的角度看未来编程语言的发展
全文

[专家茶室]从VB的角度看未来编程语言的发展

2008-05-15 15:39作者:dizzarz出处:天极网责任编辑:dizzarz

  专家茶社是由天极网软件开发频道[dev.yesky.com]发起的一个技术访谈,本活动就是专家在线从技术角度来讨论语言发展、软件工程、技术前瞻等内容。为技术专家营造一个学术、平等、自由的讨论环境。


本期参与人员:
  dizzarz - 天极网技术编辑,活动发起方;
  Anders Liu - MVP,Visual C#,客串本次访谈的主持人;
  施凡(装配脑袋) - MVP,Visual Basic专家;
  陈锐 - MVP,Visual Basic专家;
  Flymemory - c++开发专家,长期奋斗在游戏开发第一线;
  Anders Liu 说:大家好!我是刘彦博。很高兴邀请大家聚在一起。本期的主题是从VB的角度看未来编程语言的发展,请大家从这点出发,大胆讨论一下.NET平台上的开发语言的未来发展趋势吧。

  陈锐  说:从VB来说主要就是:简约。并且能够隐藏细节。关于VB语言的发展,大家可以通过装配脑袋Blog文章上看到,有专门的介绍。

  在.net流行的当代,再看原始的VB 6和VBA依旧觉得很好玩。大家知道知道为什么我要再回去研究VBA嘛?因为公司现在的业务专家(非IT业的),现在都是在用Excel+VBA做一些报表之类的工作。

  Anders Liu 说:可是未来的主要趋势有两个方向——数据访问和并发。现在数据访问已经有LINQ做支持了,但编程语言还没有直接为并发提供支持。那么在这种大趋势下,陈兄觉得VB还能做到“简约”二字么?哦?可否举例说一下?

  陈锐 说:在数据访问我觉得还有简约的工作可以做。现在还没有具体的想法,不过Linq确实是个好东西。我个人认为,并发访问的东东是不可能依靠语言本身完全解决的。锁、信号量、事件 等等还是要OS提供支持。记得很久以前和装配脑袋讨论过为啥C++ STL不提供线程的方法支持。

  装配脑袋说到了一个很重要的问题,就是C++要用在很多场合,所以……

  Anders Liu 说:那如果是针对.NET,或者说CLS呢?是否可以通过CLS标准来实现语言对并发的支持?

  陈锐  说:我觉得将来的VB语言会更加简洁,明了。对于很多没有开发基础的业务人员来说,很好上手,增强的Linq数据访问功能。想起以前用VB 6真是爽,目前在工作中有C# 用已经知足了,哈哈!Anders Liu有啥看法?我觉得现在的VSTO开发太麻烦了…

  Anders Liu 说:VBA的安全不好做,况且微软肯定要往VSTO发展。  确实不如以前在Excel 里面写VBA方便。不过后来Office那个给用户的禁用宏的提示,也是造成了一点点小麻烦。如果用户打开文档时选择了Disable…… 反正VSTO不会有那个提示。其实,如果在VBA里面能够有签名技术就好了。

  至少可以提示文档中的宏内容是由谁编写的。这样用户也就不会保守的选择Disable了。那个宏提示告诉用户,你打开的文档里面可能有炸弹,但也可能不是。最终是不是只有你拉了弦才能听到响。我想99%的用户对于不信任的文档都会选择不拉弦。根本没有给用户一个看看炸弹的机会。

  陈锐 说:嗯,是滴。微软为什么不在VBA的安全方面好好下下功夫呢。但是按照Anders Liu所说的,这样会赶走很多人,我无法想象我们公司的业务专家们会在他们的机器上面安装Visual Studio。装配脑袋,介绍下VB10吧。

  装配脑袋 说:VB10的一个目标就是作为脚本语言存在.有两个阶段:

  1.   以脚本方式运行
  2.   语言本身进化为适合按照脚本方式运行

  Anders Liu  说:哇,那VB10又可以拉到无数的fans了脑袋提到的“脚本语言”是不是就是“函数式编程”或者“动态语言”?

  装配脑袋  说:不是,就是最直接的意思.存有脚本的文本文件直接运行,不编译。第一阶段语法是不变的。下一代.NET Framework其中一项改进就是会有DLR。

  陈锐  说:嘿嘿,又回到脚本语言了…

  我喜欢脚本方式:


      Dim a
  a=10
  a="10"
  不过就此说来,难道第二阶段会改变语法?

  装配脑袋 说:刚才说到的.NET Framework将有的改进Dynamic Language Runtime,它在CLR的基础上再加了一层抽象。不是通过IL来运行,而是直接用AST来运行。

  Anders Liu说:那就意味着其本质依然是强类型的?

  装配脑袋 说:它提供的AST模型不是强类型的[Annotated Syntax Tree,注释语法树]。比方说有一个节点就叫Add(exp1, exp2),运行的时候它就去计算Exp1和exp2,然后相加。它定义了所有级别的AST,包括类,方法等等。所以一切都可以在运行时构建出来,运行时修改。连C# 4.0都会获得一定程度的动态特性。

  Anders Liu 说:那如果exp1和exp2求值的结果并不支持相加操作呢?

  装配脑袋 说:那就运行时出错。

  Anders Liu说:那这样不就脱离了现代编程语言的宗旨了——尽早地指出错误?

  装配脑袋 说:是的,为了动态只有牺牲原先可以在编译时检查的东西。比如说对象的成员是否存在,都是无法检查的,但因此可以在运行时决定调用什么成员。动态语言最近很热嘛,所以微软就开发了适合大多数动态语言的运行库。

  不过有了将来的DLR,在自己的应用中集成脚本引擎应该是轻而易举的事情,而且VB10的语法继承了VB9无比强大的XML处理能力。对于Office这种将来面向Open XML的应用程序简直是最合适的一对。

  Anders Liu说:那原有的静态语言还受到支持嘛?比如我就很惧怕动态语言,因为我喜欢让编译器替我检查错误……

  陈锐 说:你们知道原来微软的VBA SDK。我的梦想是所有主流大型的工具都集成VBA。那将来不是就会变成VBA for AutoCAD,VBA for Office之类的了…

  装配脑袋 说:就不是VBA了,你可以支持各种各样的脚本。静态语言也还是会存在的,而且比方说C#如果想用动态,需要dynamic关键字特别声明一下。不会在不知情的情况下进行动态调用,进而引入错误。

  Anders Liu 说:明白了,那陈锐说的“简约”恐怕就够呛了。

  装配脑袋 说:VB目前语法确实也是比较复杂,应当简化。

  Anders Liu 说:还有个问题啊,如果进化到动态语言了,那么多语言协作还能顺利进行吗?像刚才说的,并行计算不可能完全从语言层面支持的。“并发访问的东东是不可能依靠语言本身完全解决的。锁、信号量、事件 等等还是要OS提供支持。”这一点能解决吗?我个人还是很喜欢.NET Library的多读单写锁的。

  装配脑袋 说:能啊,DLR是建立在CLR上的,最终将通过CLR来执行。我最近在作一些低层的实现,觉得很累。关键是我对语言中一些落后的东西不满,不能老等微软,必须自己动手丰衣足食。我都是比较关心语言细节的,除此之外还有我希望能在底层引入并行计算以及让循环语句等自动支持并行化。

  对于陈锐所说的还“锁、信号量、事件 等等还是要OS提供支持。”我认为问题并不大,只要做好封装就可以了。本来除了机器语言,计算机都不认识。编译器已经做了很多工作了,应该要更智能一些。问题是现在各种算法都没有并行起来,多线程!=并行。必须简化简化再简化,不要让用户去操纵那些同步机制。

  Knuth曰,不是所有程序都能从并行中获得好处……

  Anders Liu 说:Flymemory,考虑过在游戏里集成DLR吗?

  flymemory 说:在脚本方面我们是用LUA的。服务器有一些逻辑是可以用脚本的,但不能太多,主要还是效率的问题。

  装配脑袋 说:DLR/CLR对游戏来说好庞大臃肿。效率我认为到没有什么问题,毕竟DLR代码也JIT运行的,比一般解释器都快。交互可能很慢,这无法避免。

  flymemory 说:用managed code 互操作COM效率没法保证。还是用native code 调用Direct X 的接口比较好。不过现在已经在用managed C++来做编辑器了,据说开发效率很高。CLI很多特性扩展了C++的概念。但对于传统的C++的开发者已经很爽了。

  装配脑袋 说:C++/CLI似乎不准备更上Linq/动态这些潮流。你希望下一代C++标准真的引入一些C++/CLI的特性吗?据最近的C++09标准进展情况,我觉得C++还是很复杂,而且库的发展也还是没有达到满足现代开发的需求。在标准方面,如果不是09,那就是1x了。

  flymemory 说:对于语言特性来说,当然是希望能够引入一些CLI的特性。

  装配脑袋 说:最近传闻C#会有后台编译的功能,有谁知道吗?所以才需要亲自动手丰衣足食。感觉还是C#组比较靠谱。C#2.0的csc.exe只有78k,3.0的csc.exe就变成1.48MB了。感觉非常奇怪,因为有人做的实验,刚写一半的编译器都有253k了,78k简直不可思议。

  flymemory 说:这个倒是没有研究过。有时间可以反汇编来看看,哈哈。人家就不能多调几个程序集啦?iexplorer.exe不是也很小么?

  主持人 说:因为时间关系,今天的专家茶室就到这里。很高兴大家能聊的这么开心,我们将再接再厉,努力打造一个更全面更立体的学术沟通平台。希望参加活动的技术专家请发邮件至:sunpy@yesky.com,并请注明您的专业领域和您关心的技术问题。

相关搜索:
关注此文读者还看过
文章排行
本周
本月
最近更新
关于我们|About us|网站律师|天极服务|电子杂志|RSS订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868
版权声明 在线提交意见反馈 渝ICP证B2-20030003号
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众