西西河

主题:【讨论】解释执行类代码的性能有无可能达到甚至超过本机编译代码 -- 老兵帅客

共:💬64
全看树展主题 · 分页首页 上页
/ 5
下页 末页
家园 没有这么玄乎吧

其实也不是代码在变,也就是代码中多分支,或者说顶多是spawn进程的问题,一些类似动态连结的概念也可以借鉴到这里啊。

不过这里似乎就有一个是使得每一个机器码的程序都带有这种智能,还是干脆让他成不带任何智能的中间码,而让VM带有一个统一的在执行中优化代码的性能,二者哪个更合适些。

老兵提到的可能制造出庞大的二进制代码可能是一个比较好的Argument, 不过,我其实怀疑这种动态优化的可能性是不是真的有那么大?

为什么就不能有一种方式,对于可能优化的部分给出几种可能性,而不能优化的部分直接翻译成为机器码,执行的时候动态地选择最优的运行方式,当然这里操作系统里面可能会要变。

家园 呵呵,其实这已经不是编译的问题了

而是某些功能应该放在那个整个系统的那个部分比较好的问题,

是放在编译器里面,新增加的一层虚拟机里面,还是操作系统里面。

家园 我开个头, 挣点经验值

显然, 文件是文本格式传播效率就很差啦.

其实browser也是个run time compiler.

hehe

家园 我不完全是这个意思,我说的是HTTP, 不是HTML.
家园 咋天靠这个话题,信息技术版面发贴量排名论坛第二

这个样子下去,西西河会变成信息技术论坛了。

家园 呵呵,俺灌的太多

而且不学无术,让二位笑话拉,

回头俺还是灌些不是纯净水的东西吧。

家园 其实你在女士里面已经算很不错的了

我记得你不是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

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,除了抱残守缺以外,意义不大。

家园 不脱懒厨本色
全看树展主题 · 分页首页 上页
/ 5
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河