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

  • 相关阅读:
    动态规划股票购入卖出
    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
    java模拟死锁
    从上往下打印出二叉树的每个节点,同层节点从左至右打印。
    java 多线程
    把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
    目录操作
    获取文字高度以及根据label内容来调整label的高度
    视图抖动动画
    带有背景显示加载中的activity
  • 原文地址:https://www.cnblogs.com/findumars/p/5014035.html
Copyright © 2011-2022 走看看