编程原来如此简单

来源:互联网 发布:多用户微商城源码下载 编辑:程序博客网 时间:2024/04/28 04:33
如果回到九十年代初,程序员可以说是一批比较神秘,并让人向往的群体.一群高智商,生活随意的人.但是到了计算机如此普及的现在,各种程序员已随处可见了.
  尽管如此,但真正有勇气能拿出决心学习编程的人还是少数.在他们眼里程序员还是那么遥不可及.
  在这里,我要告诉你,学着写程序是多么简单的事.只要你愿意做,计算机就会按照你的要求去执行.
  有人会遇到这样的困难"我要学什么语言".这是在网上很常见的初级问题.似乎这真是一个很难的选择.Asm,Basic,C,C++,C#,Java,Pascal甚至asp,php,jsp等等.我们再拿出Asm来看,又有Fasm,Masm,Nasm,Tasm,Yasm......
  但是我要告诉你,不要有任何困扰,无论你的最终目标是什么,请学C语言.
  学C语言并不是学习一种编程工具,而是建立编程思想.
  如何入门呢?怎么才算是入门了呢?这就像我们所说的做人!如何做人呢?怎样才是做好了我们这个人呢?
  学计算机你永远都在入门.
  做人,你永远都在学做人.
  当你明白了为什么i=i+1;时你就了解了什么是编程.而当你明白了程序的三种结构时,就可以说你入门了.
  赋值,判断,跳转,顺序,选择,循环,理解了这些,你就明白了编程.所有程序都是由它们组成的,编程真的是很简单.
  如果你再明白一条printf的作用,那么你就可以在屏幕上任意输出任何多的任何字符--只要你愿意.
  好了,如果你不想继续深入的学习编程那么到此为止也可以.这也可以说是编程的全部.当你对这些全部理解了之后,你可以试着学一下basic,pascal,asm.你会发现,呀,原来都是一样的.只是Pascal将"="变成了":=",而asm则换成了"mov"而已.黑人和白人只是差的肤色而已......
  也许你从接触计算机时就是Windows系统.那么你一定不习惯黑乎乎的命令行界面.你一定像我当初一样,一心想着编出一片"窗口".
  这时你可以安装一个Virtual Basic或Delphi或VC试一下.稍微熟悉一下开发环境.编译一个自动创建的默认工程,一个窗口程序就这样生成了.你不需要编写任何一个单词,一个程序就这样生成了.编程真的是很简单.
  你还可以从旁边的工具栏上拖几个按钮,标签什么的放到窗体上.一个大花脸的窗口程序就生成了.黑人和白人化妆的过程还是一样的......
  也许你会说这不是真正的编程--这说明你的要求要高一点.
  那么你应该再了解一下数组.指针,过程,函数,类,继承.以及面向对象中的,对象,属性,事件.这时VB,Delphi相对VC的简单就显现出来了.
  这时,你要做的就是不断的练习,熟练各个控件的使用方法.总结记录一些技巧,慢慢的,你就可以编写任何你所需要的Windows下的小程序了.这时,Windows编程你已经基本入门了.
  当然,我没有必要过于夸张的把这说成一个很简单的过程.尽管它的确很简单,同时它也的确需要你用心的去做.你要尽可能多的读其它人的代码,尽可能多的修改别人的代码,尽可能多的练习写程序,尽可能多的熟练各种控件的使用,尽可能多的总结各种技巧......
  这是一个耗时的过程,也是一个必须的过程.熟能生巧在这里体显的淋漓尽致.
  到这里你才是真正的入门了.至少,记事本,计算器,扫雷你都可以自己"制造"了.黑人和白人都需要经过努力才会有自己的成就......
  如果做为一个电脑爱好者的话,那么恭喜你,你走到这里已经正式进入计算机的大殿了.
  如果做为计算机专业工作者呢?尽管看起来你会了很多,但是不好意思,这一段路对于你来说,你只是刚走过大门前那层台阶,前面就是大门了.
  在前面的积累中你慢慢会明白,资源文件,dll,网络,数据库,图像处理,OpenGL......等多种方向的内容.当然,你尽量要每一部分都接触.但还是要抓住一个方向深入学习的.每一项又是一个新的起点--在原来台阶上的新起点......
  经过一段时间固定方向的学习,这时你应该可以找到一份专业方向的工作了.但学习仍需继续.
  写一个程序,通过查资料实现一些功能,这是非专业人士所做的.而你呢?需要了解程序的内部机制.随着深入的学习,你会接触到API,消息等系统层面上的东西.你会发现,原来程序的每一个动作都是由消息来触发的.程序的每一个功能都是通过API来实现的.这时,你会需要下面这份资料--MSDN.你几乎不再需要到处向别人请教,MSDN就是你的老师,你要实现什么功能,都应该直接或间接的查看MSDN的某个或某类相关知识.
  你真正的入门了,这次是真正的入门了,真的入门了,你的编程之路开始了.
  回头看一下,你走的路长吗?转折点多吗?不长,也不多.我敢打赌这绝对比你去学医或营销简单的多,因为那样的话,你面对的是千变万化的人,没有什么比人更具备不定性的了.而计算机呢?你只要给出同样的指令,无论在哪里,无论在何时,无论重复多少次,它都会给你同一结果.相比较来说,计算机是不是简单的多呢?
  在明白了消息与API之后,你就可以发现,原来不用面向对象开发环境也可以编译出面向对象程序.而且程序会更小,效率相对自然更高,尽管你所做的工作量会成倍提高.但这是一个锻炼的机会,是一个编程水平的标志.你会发现,竟然可以在记事本里写一个Windows程序,只需要最后用编译器生成Exe便可.这是一个阶段性标志,你用来向一些"菜鸟"炫耀时,他们就会认为你是一个高不可攀的顶峰了,尽管你知道这才刚入门.
  这时,你可以试着用不同的语言来写Windows基本程序了.c,pascal,asm.你会发现,原来asm写一个Windows程序是如此的简单,它比其它语言写的决不会复杂太多.而且体积,速度是不言而明的.那么,我劝你,用汇编写程序吧,尽管不可能用它来做一个真正的大项目,但我们可以用它来写一些小程序,任何一个真正的程序员,都需要学汇编,你会明白一个程序在硬盘,内存,cpu里究竟是如何"跑"起来的.喜欢开发的人啊,用一用汇编吧.任何时代,任何语言,你都需要它.
  也可能你到现在为止都只用着一种语言,担心没有时间学习其它语言.现在我要告诉你,这不是问题,你可以抽出你漱口的时间来看一下其它语言,你会发现它们是多么的相似啊,任何语言都一样,简直就是孪生兄弟.我敢说,你学高级语言到这一步之后,再去学Asp的话,一个月,仅需一个月,你就是绝对的网站后台,网络办公系统开发的高手.编程就是这样简单......
  这时,你的兴趣或许会转向系统,因为你要对你的程序所在的系统有深入的了解.如Shell扩展接口,程序的加载过程,内存的分配读取等.你还会分析不同文件的格式,如GIF,MDB,EXE等,其中PE文件格式也可以说是你必须要学习的内容之一.你会明白系统是如何加载一个可执行程序的.以及程序被编译时编译器都做了什么?编译后数据,代码,资源都哪去了?你对编程又向深处了解了一大步.
  同时你会了解反汇编,加壳,这样,一个初级的破解者又出现了.你又进了一扇门......
  你对Windows有一定了解了,这是一个程序员所必备的知识,但这还只是了解.想知道更详细的状况吗?如果是一个真正的程序员当然想.
  弄明白了汇编,又渴望了解操作系统.知道你该干什么了吗?也许,你会需要Linux,DOS及各种新兴起的操作系统代码,是的,是代码,这是最直接的.我们没有完整的Windows代码,但我们可以从DOS,Linux入手.系统原理都是一样的.试着自己动手写一个系统皱形,这也许是你应该做,并且会很有兴趣和困难要做的.
  那么,你要了解的会更多,BIOS,内存,CPU,硬盘.它们具体的工作流程,原理.分区格式,文件系统.这是系统的最底层了......
  当你明白了计算机启动时执行的第一程序后,你会发现,原来写一个最赤裸的引导程序也是这么简单的,它可是直接工作在硬件上的,不需要任何其它软件或操作系统.
  实模式,保护模式,分段,分页,一步步的实现,于是你了解的更深入了,硬件的工作原理,整个计算机的工作过程,系统的运行过程,一个新的,最基础的门你又踏出了你的第一步......
  天啊,又是第一步.但你并不是停在第一步徘徊,而是不断的迈出一个又一个新的第一步.越来越光明的第一步.
  你一定会感觉到,学计算机真的是很简单.尽管你面前有着无穷无尽需要学习的新内容,但它们不是一座座难于攀登的高山,而是稍微有点曲折的大道......
来自:
http://www.tresss.com