`
dwangel
  • 浏览: 267378 次
社区版块
存档分类
最新评论

网文阅读 杂谈

阅读更多
最近才看到王银的《编程的宗派》

文章后面有不少评论表示膜拜的,而在我看来,这只是没有真正做过完整的项目,仅仅在编程语言的学习上做了些功夫的人的错误认识。

自始至终,写作者都没有理解一个概念:高级语言是为了人类可以更方便地编写面向机器的代码而设计的,而作为一个系列的软件产品时,常常会为了保护已有价值,会做出妥协,采用一些不太优美的策略。(比如:C++当初为了兼容C 所以很多面向对象的特性并没有被采用进来。)

因此,从语法解析实现角度去 看待一种语言必然是盲人摸象。

随着计算机技术的发展 高级语言的目标是:
    便于编程者理解和阅读, 从而更容易编写代码
    通过语法和一些约束,实现在编译阶段 辅助发现错误,或者运行时更好地recover错误。
    要考虑到多人协作编程,与外部系统的二进制交互
    需要考虑提供较高的软件生产率,以及降低维护成本

而不再仅仅是 初期的用于生成某种可以由计算机运行的二进制代码的目的了。

函数式语言 比较符合初期计算机编程用户:使用 计算机进行科学计算的学者。
他们熟悉的是 数学函数,各种公式等。这时期的 高级语言设计 偏向函数式。

随着技术发展,计算机的用途扩展到现实生活的各个方面,仅仅是函数,不能有效地来
描述现实世界了,这时候,才开始引入面向对象设计的语言

由于计算机实现和现实的差距,必然存在着面向对象设计的带来的性能损失,
与同时带来 对现实建模后,需求分析的直观性和软件开发的便利性。

而且,面向对象语言编程的概念也是在不断演进中的,很多初期的概念,现在已经变化了。
比如继承,很多时候都用 delegate方式替代了(比如java编程中)。

面向对象也可以换个说法, 使用概念聚合体 进行建模,从而简化整体设计的难度。

总而言之,用于数值计算时及面向熟悉数学语言的开发者,函数式编程 有其优势;
而面向现实的软件开发,面向对象有优势;依然还是面向机器的开发,比如操作系统,
还是 简单的 C更有优势吧。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics