zoukankan      html  css  js  c++  java
  • [转]Anskya说的

    那你认为1年就可以掌握?一门语言吗?
    每年几百万人在使用C++,1000多个天才组成的 C++标准化组织修订的标准
    是你1年时间学会的吗?

    编程的6大境界,编程就是修心

    1.熟悉一门语言和开发工具,也就是,学习拳脚功夫
    最好使用,C,C++,Object Pascal[Delphi]等.别从Java,ASP等起步...
    编程思想的训练...
    时间:1年左右

    2.掌握一门语言,了解一些简单的算法和数据结构,熟练使用一种开发工具...
    VC++,Delphi,啥?你用ASM?也可以呀。平时我也是用tasm32做练习的
    编程思想的训练...(任何语言都一样。我说的非虚拟机语言和脚本语言,还是动态语言)
    熟悉一下什么是C\C++标准.其实Pascal 也有自己的标准..不过现在的Pascal最好的开发工具就是
    Delphi了~基本上算是Borland(现在应该说是CodeGear 修订的)
    <数据结构>,<离散数学>,<编译原理>,<算法导论>这些是修炼内功的书籍
    你可以先尝试一下数据结构,和<离散数学>,<算法导论>的学习
    这段时间,以前再高中的时候就开始学习这些了,做一些ACM等。算法才是程序的灵魂
    基本上内功的修炼需要一直学习...内功越强越好呀

    时间:2年左右
    基本拳脚会了,试试兵器吧,拳脚是基本功,兵器可以让你看上去更强悍一点。
    内功才是真正的功夫。


    3.对操作系统和开发平台的深入了解...(内功修炼别忘记)

    所有程序开发都是基于一定的开发平台的,我们平时就是再Windows下开发的,
    你了解Windows吗?API的使用,Native API,等?
    数据库的开发等.数据库开发等,你是做数据库开发的,你知道SQL-Server吗?知道甲骨文吗?
    三层数据库和两层数据库的区别吗?应用层开发
    你学到的数据结构知识~如何应用在开发上??

    学习时间:2年左右
    知道兵器如何用了,但是有剑气吗?没错御剑。。。以气御剑!


    4.开发平台,以及语言的深入了解。(这个阶段最难,有的人一辈子都无法突破这个阶段
    许多高级软件工程师,也就死在这个阶段,很难突破。也是通“天”之路!)
    进入这个阶段你就不在乎Delphi,VC,BCB,ASM,C,C++还是Pascal了
    基本上没有语言的障碍了
    开始了解编译器的原理,高级语言是如何生成低级语言的
    比如说同样是
    c=a+b;
    C和C++下是
    __asm
    {
    mov eax, [a]
    add eax,
    mov [c],eax
    }

    Delphi下是
    asm
    mov eax,[a]
    add eax,
    mov [c],eax
    end;

    API调用
    C\C++:MessageBox(0, NULL, NULL, 0);
    Delphi:MessageBox(0, nil, nil, 0);
    编译後的结果都是
    push 0
    push 0
    push 0
    push 0
    call MessageBox

    这个时候你就会发现你用的编译器其实有些问题
    比如说同样是C++编译器
    VC会编译成
    xor eax, eax
    push eax
    push eax
    push eax
    push eax
    call MessageBox
    BCB和Delphi是
    push 0
    push 0
    push 0
    push 0
    call MessageBox

    如何产生最佳化优化编码,才是个问题,不知道这里有么有人用过Watcom C\C++
    几乎DOS 90%的游戏开发都是使用这款编译器
    几乎人类可以想到的最极限的优化方案这里都有

    然后你就会理解其实,asm并不快,至少你写出来的asm不是最好的。有一些家伙
    自认为自己用masm32写几句invoke 就了不起,认为自己会asm,高人一等了
    其实他们写出来的代码最没效率了。
    学过编译原理的人都知道,编译器流程...词法分析,语法分析,中间代码的编译,中间代码的优化
    ,语法结构优化,变量的优化,程序结构的优化,下面是:循环,嵌套等等优化。。最后机器码的转换,机器码的优化.
    编译器做的工作就是大量的优化...而编译器是机器可以同时跟踪几百,甚至几千个变量,全部采用最佳化编码的形式进行排列数据和循环优化。。。
    人类毕竟是人类无法同时对那么多变量进行优化和结构分析。。。
    编译器技术发展到今天已经将近半个世纪了,几百万人和大量的天才对她的发展做出了多少研究和贡献,难道是你们几个小菜鸟写几句asm就可以比的了的?
    asm为什么快?因为可以使用寄存器,你可以保证你的所有代码优化都再编译器里面实现吗?
    呵呵~~语言和编译器的本质就再这里,为什么asm编译器比高级语言编译器开发起来比较简单?
    是因为。。。他不需要多少优化。。。

    开发平台的深入了解。
    如何进行底层转换的。语言编译是理解了,底层是如何设计的?如何工作的?
    驱动是如何进行工作的?为什么本身要有HOOK功能?如何自己实现HOOK?
    底层驱动的开发,如何设计一个Rootkit?(内核级后门!他们是如何和系统结合再一起的?如何做到相对的天衣无缝??)

    学习时间:
    这个难说,有的人一辈子也不理解第四层概念。,就会用VB写点垃圾。。。学Web语言的人。就会创建对象,调用,连释放都没有(虽然高级脚本语言都会有。垃圾回收,但是也经不起你这么折腾)
    不释放也有不释放的好处(知道Pool吗?池!对象池,线程池,内存池,连接池。。。一种不错的技术。大量的对象的管理技术)。。什么语言对你来说都是个工具而已
    拿来就可以用的,因为你知道,底层是如何实现的,高级语言只是做了你思想的转化而已
    高级语言变成低级语言而已~但是不管怎么变化,中心不变。。。

    资质很高而且愿意付出努力的人可以自我突破的,没有太多资质的有个愿意为你付出的高手带带你,你在自己努力的话可以突破

    武学到了这里:其实就是易经洗髓阶段了,因为下面你要做的就已经不是拳脚功夫了

    5.操作系统,语言的本质?(大师级的学习。。。)
    上面说了一些基本的语言本质!是的那些的都是基本的。到达高层了,以前的那些东西都是低俗的。。。
    什么是数据库?什么是OS?什么是游戏?
    数据库,是如何存储的?如何优化搜索,如何排列和存储你需要的数据?
    游戏呢?如何创造游戏的绚丽画面?为什么可以创造那种画面?图形学是如何学习的?AI系统是什么??
    外挂是如何开发的?如何编写脱机外挂。?
    这些是高级框架设计师做的工作?如何去设计合理的框架。。。和最好的优化。
    如何设计一个功能引擎?
    操作系统呢?如何做OS\2转换?如何做硬件交流,如何支持这些那些底层硬件和驱动的兼容?
    没学过驱动编程你想理解?可能吗?

    为何开发自己OS的人都是使用低级编译器?(nasm,fasm)因为必须要这么开发。

    编译器设计呢?如何设计一个支持OOP的编译器?OOP思想是什么?编译器如何设计?

    到达这个阶段的人已经不是语言和开发工具的熟悉了,更重要的是一种思想。。。
    office,还是虚拟机等他都可以自己设计,只要有时间,有空间,有足够的资源,他都可以全部自己完成。。。如何优化框架和编码?这些都是第四阶段要学习的。。。
    金字塔状!

    学习时间:以个人努力和资质而定。。。
    武学到了这个阶段,什么是武功?什么招数?任何武功看一遍就会了。。。
    而且使用出来比你更具威力!返璞归真

    6.天人合一的境界,突破平台局限
    为什么不自己开发一个OS?linux和windows有什么区别?
    为什么linux老是俗话哦windows被动?是被动型OS?
    linux哪里主动了?linux就比windows高级?高级多少?
    不过是个OS而已有什么了不起的。。。
    linux开源了嘛?linus这个家伙其实没开源。那个核心代码写的乱七八糟的。
    你看得懂吗?只能说是相对运行的还凑活。不然为什么老是蓝屏(windows 2k开始就已经很少蓝屏了。。至少Ring3你很难把它弄蓝屏~BSOD)

    学习时间:未知。学习无限高。。。有人到达,但是没人突破

    X:
    说一些废话。
    1.有的人说,你牛,你用01写代码给我看看,那才叫牛
    其实01写代码没什么,就好像你不愿意正常走路,非要自己倒立或者再地上滚一样!
    牛人之所以牛是因为思想牛,而不是全部用01编码?不然牛人为什么去开发高级编译器和高级语言?不就是不想把时间浪费在01上面吗?
    再说了汇编语言的转换都是有针对的机器码。而机器码是十六进制的
    比如说nop..机器码就是0x90
    多看看Intel手册吧。。。

    2.你牛吗?
    我不牛,不然我也不会再这里了。。。

  • 相关阅读:
    设计模式(五)——单例模式
    设计模式(四)——工厂模式
    设计模式(三)—— 装饰者模式
    设计模式(二)—— 观察者模式
    JAVA环境配置
    在线求中位数
    不能对自己期望太大,但总是要拼一拼
    Leetcode | String to Integer (atoi)
    Leetcode | Simplify Path
    Leetcode | Longest Common Prefix
  • 原文地址:https://www.cnblogs.com/jxgxy/p/1342074.html
Copyright © 2011-2022 走看看