C与现代语言和刀与自动切片器


  自从石器时代开始

  刀的大致设计就出现并且已经定型

  虽然今天可能用钛合金而非石头来制作刀体

  但是其基本思想仍旧是一致的

  这个由简单的要素组成的工具

  成为了其问题领域(切割)的最好通用性解决方案

  但是其在某些特定领域的效果

  可能没有针对性的改良工具来的好

  比如你要切丝,切片

  用刀需要横切竖切

  而用刨刀只需要几秒

  结果也比未受训练的要切出来的更整齐

  甚至减少了其所带来的可能性的损伤(切到自己的手)

  但是

  工具的设计目的应该是更快的帮你完成聪明事

  而不是阻止你去做傻事

  对刀的要求是更锋利而提高切割性能

  而不是更钝去阻止你割伤自己

  很多人责难C更容易导致程序的崩溃

  这本身并非由于C的语法问题或者编译器问题

  而是使用人的问题

  阻止人们做傻事成为了现代语言的设计目标

  结果更大更复杂的语言出现了

  刀被改进成了自动切片机

  有了罩子,自动电源保护,自动停止保护

  一切看起来都更方便,更安全了

  其体积与开销却成倍翻翻

  并且其针对的问题域也越来越小

  你如何用自动切片机来刻花呢?

  成为通用性工具又要保持自由性

  那么其不可避免的将变得有更大的体积与开销

  而结果将是

  其使用复杂性也变得更大

  想象一下

  一部能自动切丁,切片,甚至刻花的自动切割机

  其体积将会和一个台子那么大

  可能嵌入芯片来控制刀片

  可能需要可以自行编程来达到雕刻任意花色的目的

  最后其说明书

  可能比 更厚

  而最后能熟练掌握这台机器的学习难度

  和你熟练用好刀所需要的练习一样多

  这看起来很蠢是不是?

  但是现在的编程语言正在重复这种蠢事

  更安全,更通用,看起来是很棒的目标不是么

  但是他们没有考虑到后面所带来的开销

  看看现在JAVA已经成什么样了.

  经过3年之后,它可能臃肿的需要一张DVD来安装

  目前的JAVA学习曲线,已然比C或者汇编更高了.

  和切丝器与切片器是刀的额外补充或者增强一样

  高级语言应该是作为高级抽象思维的胶合层

  其或者是改善在某个特定问题域的解决速度

  或者是对逻辑进行高度抽象

  python和lua在这方面做得不错

  它们并非是为了取代底层语言或者包含底层语言而出现的

  相反,它的目的是为了胶合底层或者扩展特定目的而产生

  这方面,JAVA甚至C++都在犯傻.

  C++如同其名字一样

  在C上增加又增加

  它就像一个刀片外露的自动切割机

  没有对犯傻做保护

  (即便有也是用更傻的方法去阻止更傻的事,比如强制转型)

  却阻止人们做更聪明的事

  其加入的面向对象和模板

  似乎提供了更多的编程方式

  但是其增加的学习难度

  却远远超过其带来的便利性

  面向对象,被鼓吹成为解决很多问题的终极方法

  但是最后的实践看来.其也只是针对某个特定问题域有效率.

  首先程序内需要有超过2层的抽象结构

  接着不同层的对象之间至少有一个不同实现的方法,也必须至少存在有一个相同的实现.

  这种约束条件却是很多人没有看到的

  其目前善于的问题域

  应该是游戏对象以及窗体系统方面

  同样.模板只有针对在针对不同的数据结构或者对象

  都使用相同的算法的情况下

  才是有效的解决方案

  模板类或者类模板,

  非常精巧

  和福尔摩斯的缜密逻辑一样

  甚至只有和摩尔摩斯一样的人

  才能理解这种使用方式

  它就像一个能自动雕刻花式的切割器一样

  一切看起来很完美

  但是人们只看到其综合了所有方法的优点

  却忽视了其同样综合的所有缺点

  当人切到自己手的时候

  不该责怪这个延续了1万多年的设计

  而是应该去熟悉这种设计

  而其改进方向

  也不该是如何的切不到自己的手

  最后这篇文章,可能会引起很多JAVA,C++狂热份子的不满

  确实这些语言在其特定问题域

  有着比低级语言更好的开发效率和安全性

  但是其注定了只是针对特定域的解决方案

  即便其设计目的是想针对所有问题域

  但结果往往不得不将人们推回低级语言(例如只使用了C++中的C子集)

  -Posted on [星期五, 4月 11th, 2008 at 9:55 上午] C/C++. [RSS 2.0] feed.

  2 Responses to “C与现代语言和刀与自动切片器”

  老所Says:

  10月 20th, 2008 at 12:26 下午

  我比较喜欢用模板来实现多态,而不用继承来实现。我不喜欢动态OO臃肿的身材。


 » 相关连接:
UNIX下的缓冲区溢出防御体系 C runtime library的运行原理 C语言异常处理机制 C 编程最佳实践
参加ACM比赛所需的基础知识 常见语言比较及特点 为中国软件产业哀悼 “浅薄”绝不该是中国程序员的性格
吐血总结关于找工作的20条经验 一个程序员如何月进万金的 如何读写硬件端口 木马是如何编写的
 » 本栏目最新帖:
 » 精华帖:

Powered by PHPWind v6.0 Code © 2003-08