[转]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.你牛吗?
我不牛,不然我也不会再这里了。。。

posted on 2008-11-27 11:08  jxgxy  阅读(836)  评论(1编辑  收藏  举报

导航