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

it2023-03-23  78

目录

编程的6大境界,编程就是修心1.熟悉一门语言和开发工具,也就是,学习拳脚功夫2.掌握一门语言,了解一些简单的算法和数据结构,熟练使用一种开发工具...3.对操作系统和开发平台的深入了解...(内功修炼别忘记)4.开发平台,以及语言的深入了解。(这个阶段最难,有的人一辈子都无法突破这个阶段5.操作系统,语言的本质?(大师级的学习。。。)6.天人合一的境界,突破平台局限

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

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

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

最新回复(0)