主题:【讨论】解释执行类代码的性能有无可能达到甚至超过本机编译代码 -- 老兵帅客
其实也不是代码在变,也就是代码中多分支,或者说顶多是spawn进程的问题,一些类似动态连结的概念也可以借鉴到这里啊。
不过这里似乎就有一个是使得每一个机器码的程序都带有这种智能,还是干脆让他成不带任何智能的中间码,而让VM带有一个统一的在执行中优化代码的性能,二者哪个更合适些。
老兵提到的可能制造出庞大的二进制代码可能是一个比较好的Argument, 不过,我其实怀疑这种动态优化的可能性是不是真的有那么大?
为什么就不能有一种方式,对于可能优化的部分给出几种可能性,而不能优化的部分直接翻译成为机器码,执行的时候动态地选择最优的运行方式,当然这里操作系统里面可能会要变。
而是某些功能应该放在那个整个系统的那个部分比较好的问题,
是放在编译器里面,新增加的一层虚拟机里面,还是操作系统里面。
显然, 文件是文本格式传播效率就很差啦.
其实browser也是个run time compiler.
hehe
这个样子下去,西西河会变成信息技术论坛了。
而且不学无术,让二位笑话拉,
回头俺还是灌些不是纯净水的东西吧。
我记得你不是CS出身,能够做到这些已经很不错了。
我见过太多的CS专业出身女士,编译原理方面是一脑门子的糨子,就知道写Code混日子,一离开集成开发环境就什么都不知道了,整个一群编程工人。
我这里有个奇闻,一位中国女士从我读CS硕士学位的学校拿到CS硕士学位并且毕业以后,因为写不了程序而找不到工作,一赌气又回来接着读博士了。
我估计斗牛士就是给像她这样的奇才设计的。
编译原理确实是我唯一没有好好学习过的一门课程,
当然我要是学过这门课的话,一定是不会一团浆糊的。
不过也不是没有完全接触过,至少在操作系统里面是接触过,
而汇编语言怎么翻译成机器码的,俺也还是知道的,最初的时候还手工编制翻译过比较完整的监控程序的代码, Lex & Yacc这类东东也是用过的。
后来也就是需要的时候,去翻翻相关的章节,奇怪的是好像
很少需要,也就没有系统地学习过,这可能就是同科班出身的差距。
所以在这里谈这个问题,嗯,是有些不太合适。
没法子,这两天有些上火,不过,如果我不参与这场争论的话,就不会
学到这些东西,也看不到自己的短处了。
以前在SUN, LINUX上也从来不用集成开发环境的,俺对WINDOWS的东西了解很少,在国内的时候主要在unix类型的机器上工作,到这里么,更加如此,因为很多东西只有在Linux上的能轻易拿到Free的源代码。
老兵好像很看不起PhD阿,其实只是大家专长不同而已,作得好Reseach的人不一定能编得好程序,反之亦然。
首先,编译理论是个桥梁,它涉及了从源代码分析到目标代码优化的全过程,这门功课学好了,有助于软件人员从大模样上掌握软件的一些思想,否则只做细节,就离不开工人的范畴了。
其次,汇编语言只是机器码的助记符形式,汇编器可以说是最简单的编译器了,因为两种语言(汇编语言和机器码)的距离基本是零。
最后,我不是看不起博士,而是看不起不能够编程的软件博士。软件科学本身基本是个动手的行当,编程能力是这个行当的基本功,一个人连基本功都不具备,何谈研究?的确,编得好程序的不一定能够做研究,但是编不好程序的一定做不好研究。
有时间俺一定补好这门课.
不过呢,最后一点有些不同意, 你要是说没有能力编号程序的人,
一定做不好 CS 的科研,我同意.但是要说不会编
程的就一定做不好 CS 科研,不见得阿,有些作理论研究的,也许
只是根本没有受到某种具体的编程训练,因此不会编程而已.
比如我到欧洲爱立信访问的时候遇到一些科学家, 他们只会使用
某种特殊的语言, 实现他们的思想的一些Prototype而已,他们甚至
不懂C++, 但是他们概念都很清楚, 稍微一提示就明白.
我们这里的CS的学生一般会把自己的研究范围分为, Theory, System, 和AI,
如果你的论断只是指System的东西话, 俺基本同意,但是对Theory的话,我不
太同意.
俺不是做理论的, 但是到这里上过某图林奖获奖者的课, 对这样的人,
我还是很敬仰的, 我好像听他的学生说过一句,说他不变程序的.
呵呵,不是很确定,但我觉得如果是那个范畴的科研, 一个直接这么读
上去的博士生, 很可能是没有参与过实际大型软件项目开发的,
自然也就是不会编程的, 但这并不意味着他做不好科研.
只不过是使用某种特定语言罢了,和根本不能够编程完全是两回事情。除非是以前计算数学出身,后来一直只搞纯算法理论的,否则至少可以用某种编程语言清晰地表达自己的思想的。
另外,工业界的编程语言可以被学术界看成是某些设施的组合,学术界的编程语言所包含的设施经常要比工业界的丰富或者精炼,因此只要术语一致,讨论起来就不会有问题。
我说的是那种一门简单的编程语言(例如Java)学了两个多月,很简单的小程序(简单的数据结构,例如二叉平衡树的处理)一天还写不了两百行,这可就太难了,说明他们脑子里还没有很好的逻辑思维能力呢。
原本我也以为不大可能,但看了老兵的贴子,原话如此:
帖子在这:链接出处
这么说,越是OO的语言,就越有可能解释执行类代码的性能超过本机编译代码。
不过再好的编译器,解释器,放在二流的程序员手里,也给糟蹋了。
Eclipse (www.eclipse.org)是一个Open Source而且Free的开发集成环境,可以在包括Windows,Unix,Linux和Apple MacOS在内的各种操作系统下工作,通过增加Plug-In,它可以支持SmallTalk,C/C++,Perl,PHP等各种开发语言,更可以提供对Java/J2EE的支持。
Unix在历史上曾经是技术进步的来源,但是现在已经逐步被Linux/Windows所蚕食。而在Linux环境下,例如KDeveloper、Eclipse之类的开发环境已经有一些了,它们都是Free的。
在现在这个时代,除非还在使用字符终端,否则继续使用Vi/EMacs,除了抱残守缺以外,意义不大。