注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一路

To find the final symmetry & beauty

 
 
 

日志

 
 
 
 

对谈汇编的一点看法  

2010-09-30 01:56:58|  分类: 汇编 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 语言无优劣,使用它,学习它并从中获益是目地。计算机科学最崇尚的就是自由(希望
不要当成敏感词)和开放,这门科学的巨大成功是大家都看到的,但是它也是一门年轻的科
学,它需要创新的种子和新鲜的血液,以使它不断演化不断进步。
    就是因为发展迅速,计算机科学里从来就是充斥着各种争论,对于什么是好的操作系
统、运行效率和开发效率、安全性和可用性、开源和闭源、用intel还是用amd,用n卡还是
A卡,其中编程语言哪个更优秀的争论更是经久不绝。对于各种语言的争论我说说一点个人
看法,见笑了。
    争论的起因就是语言的多样化,多样化意味着有多种的选择,于是争论就有了,而且
各种语言都有严重的层次关系,这使情况更加糟糕。但是计算机语言不是宗教,它并不排
外,每一种语言都是有其应用的场合,最底层的不是01代码。在CPU内部有比它01代码更精
细的微指令,这种微指令非程序员能操作,选择的余地非常小,因此争论就少一些,但是
RISC和CISC争论还是不断,不过这和程序员无关了。汇编和01代码有着很好的对应关系,
但是确定的汇编代码在cpu内部也没有确定的执行流程,cpu只是保证不同流程的结果一样
就是了,那种认为汇编能诠释程序的全部运算过程那就错了,而且那种经常发出来的汇编
代码也不是开了优化之后的最终版,而且更是有编译器依赖,只能说明实现中的一些问题
,不一定就是必然。汇编的主要功能就是为上层的语言提供一个可以应用基石(building 
block),而C和C++这种上层则尽量把各种不同种类的这种基石加以抽象,构造更符合人的
思维的语法和模式,使程序员的生活更加好过一些,把解法转化为更加易于阅读和管理的
形式,这样就可以把这种解法转化到其它的机器上,不经过修改或是经过很少的修改,而
这种转化对于性能的牺牲是十分小的,而对于C\C++的一些功能的理解可以去查看汇编代码
,以理解其可能的一种工作方式,但是如果非要说C\C++这种功能就是这么实现的那就太傻
了,C\C++只是保证在实现了C\C++的环境下可以使用这个功能,这个特性在本平台工作正
常,在别的平台也可以工作正常,如果C\C++非要规定这个特性这么实现,那么有更好的想
法时不是要被扼杀了吗,不把特性的实现方式写死一方面可以鼓励创新,一方面又可以扩
大C\C++的应用范围,对于没有这种汇编特性的平台可以用其它方法实现。再更加动态的语
如java,ObjC, C#之类的更是把building block加以抽象,提供更加强大的灵活性,而损失
是可以接受的性能。对于脚本这种更可以提供其它语言不能用的灵活性,语法更加自然和
易于理解,损失当然是性能,但是益处确实十分高效的开发速度。各种语言都有其不同的
应用场合,汇编现在的一般需求是可以读得懂,那种靠直接写汇编来优化速度是不现实的
。C\C++更是趋于对于性能要求很高且使用趋于稳定的程序、java则是对于性能要求不是特
别高,但是应用要求变更较频繁的场合(对于跨平台这种要求也有可能),对于脚本类语
言的,多是重于对功能的要求而非性能的要求,一般功能较为简单的程序用脚本几十分钟
就可以搞定,而这种程序可以运行几次后就扔掉了,那这种就不用费力写C\C++那么麻烦了
。
    总之,编程语言不是宗教,每种都是有不同的应用场合,每种都有自己擅长工作的层
次,俗语说的好,艺多不压身,精通另外一种语言可能是比鄙视另外一种语言更加聪明的
做法。
  评论这张
 
阅读(584)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018