zoukankan      html  css  js  c++  java
  • 计算机世界的道(C/ASM)生一(OS),一生二(API),二生万象(MFC/COM)——学包装技术的程序员将来会损失比较大,因为不了解本质,一旦包装过时就会被淘汰

    道生一,一生二,二生万象.OO的思想就是抽象,万象归宗,化繁为简.99%的程序员使用OO,或者所谓的类库的目的就是好用,不必了解内部实现就可以直接达到所期望的结果.这时一种生产力的进步,一种流水线式半零件式的生产流程.程序员只是最后再流水线上拼接起来上个螺丝的工人而已(严格说来是码农).C++就是抽象万象的利器.用Windows举例子,从无到有这个关键的一步(所谓的底层),通产是C或者汇编.Windows源码大多是C/ASM编写,实现了硬件的抽象统一了抽象接口(中介有众厂商的驱动提供),然后从一生二(内核函数引出到Win API),再用C最简单的包装,隔离底层,再次统一接口,这样底层的变动不会带来上层接口的影响.二生万象,典型的是Com,ActiveX,MFC,ATL...这一层则大多是C++了,因为需要C++的OO能力来包装,从语言级别来屏蔽Win API,极大多数程序员这这一层级别疲于奔命,因为这一层M$实现了各种各样的包装,丢掉那一个对他们来说问题不大,但投入n年学习某个包装技术的程序员来说损失就比较大,比如MFC,比如ActiveX等.后来M$有来了一次对Win API的大包装,为此他们特意实现了一套动态语言.Net,他设法把Win API全部隐藏起来对他们来了一次彻底的OO包装,使得使用者完全感觉不到他们的存在,因为这个包装如此大,如此深,于是他们就成了第四层使用者.不断包装的好处就是不断隔离,伟大的先驱对于解决计算机中所有的问题提出都可以加层来解决.于是Windows从1.0到WIndows8可谓发挥的凌厉精致.WinRT算是第2.5层.这样你把C++的OO特性去创造世间本来就是一种对C++不了解的表现,OO的本质是抽象,所以他是抽象世界的东西.开天辟地的创造世界需要的是原语.感觉偏题了,不多扯蛋了.一气呵成,没注意排版,感谢能看完此贴的人.

    ------------------------------------------------------------------------------------------

    所以看你的应有具体为何,如果你的项目是构建从无到有,首选C或汇编.构建于一层以上二层以内.比如Windows中的杀毒软件(鉴于NT内核和Ring3之间),可以使用C/C++,二层以上三层以内,比如游戏,原生程序,各种各样的引擎和库等.特点是需要有较高效率的运行,首选C++,三层以上,这个范围就广了,选择面也众多,比如MFC,QT,VCL等等,众多语言可供选择.工作在第四层,比如B/S应用,.Net应用,Java应用,JS,HTML,lua,python等等都属于这一层,这时选择面就是根据具体业务逻辑甚至领导和客户了.第五层以上,脚本驱动的东西,没的选择,

    ------------------------------------------------------------------------------------------

    http://www.oschina.net/question/188977_58777?sort=default&p=3#answers

  • 相关阅读:
    mysql5大引擎之间的区别和优劣之分
    关于集合
    泛型
    集合2
    easyui 入门讲解
    <input>和<textarea>
    php中echo(),print(),print_r(),var_dump()间的区别
    PHP图形操作之生成图像验证码
    JZ046圆圈中最后剩下的数
    Python3连接MySQL
  • 原文地址:https://www.cnblogs.com/findumars/p/5014035.html
Copyright © 2011-2022 走看看