分享

编程入门,致新手的信(转)

 字间游鱼 2011-04-01

我逛了这个论坛也有半年时间了,一般都是回答别人问题为首任,这是我的第一篇帖子,这段时间老看到新手询问一开始怎么入手学编程,从哪门语言可以学起,虽然网上答案众多,但是往往寥寥数语,让新手无从下手,甚至有的带有误导的倾向(我不搞攻击,只讲事实),说句实话,每个人学习的经历不同,很难将自己的经历复制给别人,所以在此,我只讲讲我的感想,当然也希望对作为初学者的有所帮助.本篇适合初学者,自认为高手的可以掠过.

1.初学者疑惑之一,怎么入门
这个答案可谓仁者见仁,智者见智,没有标准答案,有的是工作需要,有的则是家里被逼的,有的是看到这行待遇不错,有的则完全是兴趣爱好,入门的途径也不同,看一本书,跟一个人学,参加一个兴趣班,大学专业选这个,反正条条大路通罗马,不同的在于路途的曲折和困难,在我看来,兴趣是最基本的,完全没有兴趣的朋友,请绕道吧,这条路不适合你(我猜测能看我帖子的朋友,大部分还是因为兴趣来的),想想自己写一个局域网内的五子棋游戏,还可以跟人聊天,聊着聊着弹出一个你的头像,这是多么惬意的事情,有兴趣,你就像有了造房子的地基,接着,选砖头,好的房子是由好的砖头砌起来的,那么选什么样的砖头呢?这就是下一个问题了.

2.初学者疑惑之二,选哪门语言做入门语言
至于这个问题,网上争论不休,貌似大部分人都推荐学C,我个人的意见不是这个,我认为要分别论之,注意,我在此仅讨论初学入门用语言,而非哪门语言好:
1)如果你是一个计算机专业或者软件专业的人(我所谓的人是指包括在校以及已经毕业了的人),我没有什么可说的,在学校有人教你的情况下,你如果连C都没学好,还是别在这一行混了,我说的学好,并非是对C语言所有特性,所有使用方法,所有晦涩难懂的符号表示方法,申明方法等都必须精通,一看就懂,没那么厉害的人物,有也不会来看这篇文章了,我所谓的学好,是指能写一个实用的应用程序,不求大,类似于写一个串口通讯类的程序,还有就是能够基本看懂别人写的C语言的源码,看不懂的地方,稍微查下资料也能懂,这就是我所谓的学好,怎么样,要求不高吧,也许有人认为学C语言过时了,这个请自行网上查询下为什么要学C语言,我不想跟认为C语言过时的人多做讨论.
2)如果你是一个非计算机专业的人,怎么说呢,C语言并非是我首先推荐的,因为它对于你来说太过晦涩难懂,它太专业了,没有一定的专业基础知识还真的很难搞明白它,为什么这么说呢?你对操作系统的内存分配知识了解吗?系统底层是怎么样消息通讯的?C语言可以很好的诠释这些问题,但是正因为此,它也就变得高不可攀,没有深厚的计算机知识,还真啃不动它,那么对于非计算机专业的人,学什么好呢?我的推荐是:VB6.0,看清楚哦,不是VB.net,是VB6.0,也许此时又要有人跳出来叫了,VB6.0太老了,很不幸的告诉你,我也是从VB6.0开始深深爱上了编程,然后到现在,C,VC,Delphi,C#,VB.net,正所谓一通百通,难道没有听说过吗?学了VB6.0,再去学其他语言,会轻松很多,我不知道现在的大学教育怎么样?反正以前非计算机专业的编程语言VB6.0是首选.VB.net固然有很多优势,但是相对一个非计算机专业的初学者来说,它太过庞大,一开始无从下手,而且VB6.0也是一门很优秀的语言,也出过很多优秀的软件,建议初学者从VB6.0的入门,然后一步步去升华,从简单的一个计算器,到API的调用,然后写些数据库管理软件,OK,到了下一篇了,升级篇.

3.初学者疑惑之三,学了语言后怎么做些实际功能的东西.
在这一点上,请千万要记住,语言是工具,所以我也特别反感跟人过多讨论语言的孰优孰劣,编程语言学好了,不用,就像你拿着4,6级证书,却从来不用英文跟人谈话一样,碰到英语会话就变成哑巴一个,那么你就算学了8级,你的能力也只是一张证书而已,毫无用处.那么,怎么做些实际的东西呢?这个说起来就有难度了,因为实际功能的软件可大可小,小到计算器,大到一个监控系统,ERP等,但是无论项目的大小,都有一个共同点,就是能够迅速提高和巩固你的知识范围,你会发现,你不仅仅要学这门语言,这个编程工具,这个IDE,你要学的还有很多,数库,RS232,USB,Socket等等,你要真正编写一个应用程序,你的知识面,或者说你要懂的还有很多,这就开始了你的应用之旅,如果你发现你还需要学点什么的话,那么恭喜你,你已经开始走上应用之路了.如果你不知道要写个什么东西,甚至不知道从何下手,请回顾一下你学的知识,应该学了编程语言的语法了吧,然后呢?有没有学到控件的使用方法?有哪些控件?这些控件干什么的?能不能结合这些控件写些什么东西出来?比如记得有个MSCOMM控件,哎,它是个串口控件,那么我能不能写个串口调试助手?虽然网上有了,但是我写一个"XX专用"岂不是很有意思?

4.初学者疑惑之四,一通百通.
这个其实已经不能算初学者疑惑了,因为我不能肯定,初学者是否都会在这方面有疑惑,我其实很疑惑一个Windows操作系统搞那么多编程语言出来干什么,整一个就够了,想来想去,只有2个方面的考虑,一个是商业原因,还有一个就是的确是给广大朋友带来好处的便利性,如C和VB6.0,的确一个复杂,一个简单,如果只存在C语言的话,那么,现在程序员的福利待遇可能还会更高吧?我先讨论一下VB6.0,大家一定都有用过Office套件吧,Excel里面有个宏,大家知道吧?这个就是著名的VBA,Visual Basic Advanced,它可以实现Excel的一些高级功能,图表自动生成,自动考勤,但是用过VB6.0的朋友可以发现,VB6.0和VBA非常相似,语法完全一样,如果你深入一点,你甚至可以发现,VB中可以调用操作Excel文件,神奇吧?你完全可以脱离Excel这个界面来操作Excel文件了,神奇吧?还有更神奇的地方,任何语言,只要支持COM(很不幸的是,C语言不支持,其他都支持,原因我后面来讨论),都可以这样做,都可以调用Excel的COM接口,这个显然是比较高级的功能了,我举这个例子是为了说明一通百通原理,很多软件应用,功能,很多语言,工具都可以实现,只要搞懂了原理,实现起来没有差别,唯一区别就是语种,就像你为了拿到桌子上的那瓶牛奶,对日本佣人要说日语,对美国佣人要说英语,而对韩国佣人要说韩语是一样的道理,都是为了实现拿到那瓶牛奶,那么实际情况是,你对哪个语种熟悉,你就会选用哪种佣人,实际上有一点我可以很高兴的告诉你,编程语言比起英语,法语,德语......简单的多了,所以你学起来也很简单,每次有人看我写的程序,都会惊呼,你英语真好,我很纳闷,这编程语言和英语有什么关系呢?C语言之所以不支持COM是跟它的平台支持性有关,详见下面的语种关系.

5.语种之间的关系
接着我想稍微讨论一下语种的关系,首先声明,我很反感讨论语言孰优孰劣,能实现功能的语言就是好语言,为什么这么说呢?因为还的确有些功能是有些语言无法实现的,呵呵,其实说白了,是编译器的不支持,不知道编译器为何物?google一下,我写单片机程序,我没办法用VB来写,因为没有编译器支持把VB的程序编译成51单片机环境下的,而我写WDM驱动程序,我也不会拿VB来写,因为同样道理,没有编译器支持,哈哈,很幸运的是,我可以拿C语言来写上述2种程序,因为有编译器支持把C语言编译成上述2种程序.那么C语言好像很厉害吗?不好意思,我想用C语言写一个Web应用程序,很遗憾的告诉你,不行,难道也是没有编译器?不是,因为用C语言写,你会累死,就像用汇编写一个游戏一样,等你写出来的时候,你头发都白了,C语言由于设计原因,一开始就支持非常底层的东西,你甚至可以控制屏幕上某一个点的亮和灭,VB一开始就被设计成为很容易入门的语言,所以它把很多的东西封装起来,让你看不到,你所做的只是简单的一个赋值,就能让它做很多事情,你看不到的事情,而它返回给你的,就是你要的结果,所以也许里面它走了很多的弯路,但是你不知道.
我接着想说明下各个主流语言在各方面的优势:
1.C,支持所有平台,但是它的优势是支持较底层的开发,如单片机程序和驱动程序,但是写Win32窗口类应用程序,就是它的弱项了(太弱了),你会愿意用它一个点一个点的去画一个窗口出来吗?
2.VC,支持Win32平台,很多人疑惑C语言和VC什么关系,我只能说VC支持所有C的语法,它在编写Win32窗口类程序的时候是很占优势的,而且也继承了C的运行速度快等优点,也有了类的概念,是很多C语言开发人员开发Win32应用程序时的首选.
3.VB,支持Win32平台,入门非常简单,适合非计算机专业人员的入门,开发简单程序非常方便,其最大特点是简单,运行速度较慢,编译器不行.
4,delphi,支持Win32平台,还有个叫Kylix,支持linux平台,和delphi同门师兄弟,都是运行速度快,开发简单的主,和VC有的一拼,是VB用户最佳的升级语言(就是改变你的主要开发语言).
5.java,支持所有平台,所谓支持所有平台是指在相应平台下有它所支持的虚拟机,它会先把java程序翻译成该平台下所支持的程序,然后再执行,所以走到哪里都要先翻译一下,优点就是跨平台很容易,只要对应该平台有对应jdk和虚拟机就ok了,从理论上讲如果单片机下也有这个虚拟机该多好啊?呵呵,不过那是不可能的.单片机程序和驱动都极其注重其效率,怎么能够容忍翻译这个过程呢?哪怕是0.000几秒都不行.
6..net,这个我不想过多置评,其优势我想各位在网络上也看到了很多,嵌入式,Web应用,桌面应用都是它的踪影,当你安装一个应用程序它要求你必须先安装一个.net Framework的时候,那么这个程序就是由.net来完成的.

好了,写的那么多,后面更是越扯越远,再写下去要无止境了,做了5年的software engineer,感想颇多,其实对于初学者,入门的基础中的基础,就是兴趣爱好,没有兴趣爱好,还是放弃吧,没有持之以横的心态,也放弃吧,至于你的编程利器,看我上面的初学者疑惑之二,选哪门语言做入门语言,如果你已经有了这个基础,那么可以去实现第三,第四点,完成了上面4点,后面也就无需在看我的这篇文章了.
本人语言表达能力不强,只求大家能够看懂,好在写文章不像讲话,说出去的话没办法收回,而写出去的文章倒还可以修改.
最后感谢大家抽时间看我的唠叨,并祝大家都能实现自己的愿望.
以上内容仅是我个人观点,仅供入门,如果不正确之处,请勿见笑,还有,计算机专业的人也并非必须从C语言开始,如果在学校基础没学好,那么从其他语言切入的话,一样可以取得很好的效果,真的,学语言就是学工具,记住这句话.
能对你有所帮助,是我最大的心愿. 1.学习编程要有持之以恒的精神。

其实做任何一件事都要有这样的精神,如果你只是一直冲动,觉得会编程很牛,想学来牛牛,那可不行,只要你想要学编程一定要坚持下去,你坚持到最后你就成了高手。

2.编程语言的选择。

很多朋友刚开始学编程的时候, 总会问,学什么样的编程语言好,VB,VC,还是.net。其实编程学的不是语言,而是程序的法算,想法,结构等。就好比你学写字,当你把字写漂亮之后用什么样的笔都可以写出漂亮的字,而编程也是一样的,当你学会了编程之后,任何一种编程语言你都可以使用了。

3.学习方法。

买本书,或下载一套教程,请把网络断开后开始闭关,为什么要这样,很多朋友喜欢上网到处找教程,找资料花大量的时间,当找到N多教程和资料之后,看到这么多的东西不知道从那里学起,然后就放弃了。断网是一定的,搞不好就想上网灌水,断网还有一个好处就是碰到问题尽自己最大的努力去解决。

还有一点要说的就是,有些朋友刚入门会写一个对话框之后,就认为自己学会了编程,想去学开发软件。入门简单精通难啊,学无止境!人外有人,山外有山这些话都是对这些人说的。
一,你适合当程序员吗,你知道编程序是怎么回事吗
1, 程序员意味着要编程序.
(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你)


2,你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和
严谨.(说坦白点就是,在你没有找到乐趣以前,它很枯燥)


3,你有对新技术追求的热情吗 你有刨根问底的探索精神吗
(热情绝对是最重要的!你仔细思考一下自己的性格适合当程序员吗 )


4,当程序员决不是什么好差事,时刻需要学习,需要思考.
(直到你成为那个可以引导别人去学习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)


5,程序员的未来很迷茫.
(但我认为关键看你自己!我希望你是一个有追求的人,不仅仅是混碗饭吃.因为真正的乐趣在于创造;如果你能改变软件业的历史,那才是英雄;不想成为Bill Gates,不想成为Dennis Ritchie和 BjarneStroustrup,我会说你没有追求.有个关于程序员未来的笑话,也许你还没听过,你该听一听,摘抄如下:
一,你适合当程序员吗,你知道编程序是怎么回事吗
一,你适合当程序员吗,你知道编程序是怎么回事吗
一个程序员对自己的未来很迷茫,于是去问上帝.
万能的上帝呀,请你告诉我,我的未来会怎样 上帝说我的孩子,
你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的 Lippman说程序员的未来就是驾驭程序员这个程序员对这个未来不满意,于是他又去问上帝.万能的上帝呀,请你告诉我,我的未来会怎样上帝说我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的于是他去问Gates. Gates说程序员的未来就是榨取程序员这个程序员对这个未来不满意,于是他又去问上帝. 万能的上帝呀,请你告诉我,我的未来会怎样上帝说我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的于是他去问侯捷. 侯捷说程序员的未来就是诱惑程序员这个程序员对这个未来不满意,于是他又去问上帝. 万能的上帝呀,请你告诉我,我的未来会怎样上帝摇摇头唉,我的孩子,你还是别当程序员了)


6,当程序员还是很有乐趣的.
(当你学到新知识时,当你有新的思想见解时,当你有新的产品问世时,和知己探讨你的成果时…我问你,觉得这些是乐趣吗 )一,你适合当程序员吗,你知道编程序是怎么回事吗


7,当程序员不易也不难.
(世间事有难易乎 为之…;不为….你有决心和信心吗 )


8,你真的要当程序员 是你自己的想法


9,你舍得花钱买书吗 (读好书绝对是学习编程的最佳捷径.你一定会说,现在电脑书籍真***贵,没法子,谁让知识和技术在人家的脑袋,在人家的书里呢;等你写书时可以把价格定低一点,记着还有好多没钱但想买书的兄弟很困难呀.要舍得买书,买好书,不好的的书不如不读,其害大于其益,关于买什么书,你可以问高手或看候捷的书评;准备一个小本子记录你想买的书的名字,逛书店时
看看,如果好就买下,记住要读,别光买不看.)一,你适合当程序员吗,你知道编程序是怎么回事吗


10,我告诉你,程序就是:
任何有目的的,预想好的动作序列,它是一种软件.一,你适合当程序员吗,你知道编程序是怎么回事吗


11,编程序就是编写程序.


12,你想好了吗
(如果你想好了还是决定要当程序员,可以继续往下读;否则,你可以继续寻找别的出路了.)


二, 一个程序员应该具备的基础知识和概念
1,机器语言和微指令集的概念.


2,程序的概念.


3,计算机是有什么组成的,CPU是什么东西,其工作原理是什么.
(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要!)


4,汇编语言是低级语言但不是机器语言.


5,高级语言主要有那些
(C,C++,Basic,Pascal,Fortran,C#,Java等等;如果你是中国软件业的英雄,你也写一门语言,最好不用英语)
6,编译程序和解释程序的概念和其原理.
(编译器是高手和专家编写的)


7,HTML,XML等是标识性语言.


8,Prolog是人工智能语言.


9,操作系统OS的概念和原理.
(Windows98,Windows2000,Windows NT,UNIX,Linux,等等都是OS,还有一些实时OS,嵌入OS,编这些的绝对是高手)


10,Windows编程说白了就是Windows API的调用.(中国的程序员很多只是会编windows程序,用的是VB,我的建议是这些程序员顶多只是低级编码员,我称其是coder)


11,VC++,VB,BC,BCB,Delphi,VF等都只是编程的工具和环境,不是编程语言.


12,面向结构的设计概念.


13,面向对象的概念.(好好理解,兄弟,这个东西还是很重要的)


14,软件工程的概念和原理.(如果你想当老总就需要好好研究了,系统分析员比编码员要高一个
等级,薪水也高哟)


15,数据库的概念.
(要熟悉一些著名的数据库系统和语言的名字,如Orcle,SQL,DB2,DyBase等)


16,了解网络概念.


17,了解多媒体概念.


18,熟悉和掌握数据结构和基本算法.
是不是要求太高了,别着急慢慢来,进步在不知不觉之中.(一旦开始学习,一个月以后你就会有一个基本的概念;两个月以后你就会感觉自己有了全面的基础知识;当你知道编程序是怎么回事时,说明你已经入门了.也有很多人编了很多年程序还没有入门呢,你不会希望自己步其后尘吧.要有信心和耐心.沉不住气怎么能成大事 !)

三,程序高手是怎样练出来的
1.2 高手是怎样练成的
程序员怎样才能达到最高境界 最高境界绝对不是你去编两行代码,或者是用什么所谓的可视化工具产生最少的代码这些工作,这都不是真正的高手境界.即便是这样的高手,那也都是无知者的自封.我认为,一个程序员的成长可分为如下六个阶段


1.2.1 高手成长的六个阶段
第一阶段
      此阶段主要是能熟练地使用某种语言.这就相当于练武中的套路和架式这些表面的东西.


第二阶段
      此阶段能精通基于某种平台的接口(例如我们现在常用的Win32的API函数)以及所对应语言的自身的库函数.到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用.


第三阶段
      此阶段能深入地了解平台系统的底层,已经具有了初级的内功的能力,也就是手中有剑,心中无剑.


第四阶段
      此阶段能直接在平台上进行比较深层次的开发.基本上,能达到这个层次就可以说是进入了高层次.这时进入了高级内功的修炼.比如能进行VxD或操作系统的内核的修改.这时已经不再有语言
的束缚,语言只是一种工具,即便要用自己不会的语言进行开发,也只是简单地熟悉一下,就手到擒来了,完全不像是第一阶段的时候学习语言的那种情况.一般来说.从第三阶段过渡到第四阶段是比较困难的.为什么会难呢 这就是因为很多人的思想转变不过来.


第五阶段
      此阶段就已经不再局限于简单的技术上的问题了,而是能从全局上把握和设计一个比较大的系统体系结构,从内核到外层界面.可以说是手中无剑,心中无剑.到了这个阶段以后,能对市面上的
任何软件进行剖析,并能按自己的要求进行设计,就算是MS Word这样的大型软件,只要有充足的时间,也一定会设计出来.


第六阶级
      此阶段也是最高的境界,达到无招胜有招.这时候,任何问题就纯粹变成了一个思路的问题,不是用什么代码就能表示出来的.也就是手中无剑,心中也无剑.此时,对于练功的人来说,他已不用再去学什么少林拳,只是在旁看一下少林拳的对战,就能把此拳拿来就用.这就是真正的大师级的人物.这时,Win 32或Linx在你眼里是没有什么差别的.

      每一个阶段再向上发展时都要按一定的方法.第一,第二个阶段通过自学就可以完成,只要多用心去研究,耐心地去学习.要想从第二个阶段过渡到第三个阶段,就要有一个好的学习环境.例如有一个高手带领或公司里有一个好的练手环境.经过二,三年的积累就能达到每三个阶段.但是,有些人到达第三个阶段后,常常就很难有境界上的突破了.他们这时会产生一种观念,认为软件无非如此,认为自己已无所不能.其实,这时如果遇到大的或难些的软件,他们往往还是无从下手.现在我们国家大部分程序员都是在第二,三级之间.他们大多都是通过自学成才的,不过这样的程序员一般在软件公司也能独当一面,

      完成一些软件的模块.但是,也还有一大堆处在第一阶段的程序员,他们一般就能玩玩VB,做程序时,去找一推控件集成一个软件.现在一种流行的说法是,中国软件人才现在是一个橄榄型的人才结构,有大量的中等水平的程序员,而初级和高级的程序员比较少.而我认为,现在中国绝大多数都是初级的程序员,中级程序员很少,高级的就更少了.所以,现在的人才结构是方塔形,这是一种断层的不良结构.而真正成熟的软件人才结构应该是平滑的三角形结构.这样,初级,中级,高级程序员才能充分地各施所长.三,程序高手是怎样练出来的


1.2.2 初级程序员和高级程序员的区别
      一般对于一个问题,初级程序员和高级程序员考虑这个问题的方法绝对是不同的.比如,在初级程序员阶段时,他会觉得VB也能做出应用来,且看起来也不错.但到了中级程序员时,他可能就不会选择VB了,可能会用MFC,这时,也能做出效果不错的程序.到高级程序员时,他绝对不是首先选择以上工具,VB也好,VC也好,这些都不是考虑的问题.这时考虑的绝对是什么才是具有最快效率,最稳定性能的解决问题的方法.程序员到达最高境界的时候,想的就是我就是程序,程序就是我.这时候我要做一个软件,不会有自己主观的思路,而是以机器的思路来考虑问题,也就是详,就是以程序的思考方式来思考程序,而不是以我去设计程序的方式去思考程序.这一点如果不能比较高的层次是不能明白的.你设计程序不就是你思考问题,然后按自己的思路去做程序吗其实不是的.在我设计这个程序的时候,相当于我钻入这个程序里面去了,这时候没有我自己的任何思维,我的所有思维都是这个程序,它这步该怎么走,下步该怎么走,它可能会出现什么情况.我动这个部分的时候,别的部
分是否要干扰,也许会动一发而牵全身,它们之间是怎么相互影响的也只有到达这个境界,你的程序才能真正地写好,绝对不是做个什么可视化.可视化本身就是我去设计程序,而真正的程序高手
是我就是程序,这规程方法绝对是不同的.比如,我要用VB去设计一个程序,和我本身就是一个程序的思维方式,是不一样的.别人也许觉得操作系统很深奥,很复杂,其实,如果你到达高手状态,
你就是操作系统,你就能做任何程序.对待软件要有一个全面的分析方法,光说理论是没有用的.
如果你没有经过第一,第二,第三,第四这四个阶段,则永远到达不了高境界.因为空中楼阁的理论没有用,而这些必须是一步一步地去做出来.一个高级程序员应该具备开放性思维,从里到外的所有的知识都能了解.然后,看到世界最新技术就能马上掌握,马上了解.实际上,技术到达最高的境界后,是没有分别的.任何东西都是相通的,只要你到达这个境界以后,什么问题一看就能明白,一看就能抓住最核心的问题,最根本的根本,而不会被其他的枝叶或表象所迷惑,做到这一步后才算比较成功.
从程序员本身来说,如果它到达这一步以后,他就已经形成了开阔的思维.他有这种开放性思维的话,他就能做战略策,这时他将来做任何事情都有好处.事实上,会做程序后,就会有一种分析问题的方法,学会怎么样把问题的表象剖开,看到它的本质.这时你碰到任何具体的问题,只要给点时间,都能轻而易举地解决.实际上,对开发计算机软件来说,没有什么做不了的软件,所有的软件都能做,只是看你有没有时间,有没有耐心,有没有资金做支撑.这几年,尤其是这两三年,估计到2005看前,
中国软件这个行业里面大的软件公司就能形成.现在就已经在形成,例如用友,它上市后,地位就更加稳固了,其他大的软件企业会在这几年内迅速长大.这时候,包括流通渠道,经稍商的渠道也会迅速长大.也就是说,到2005年以后,中国软件这个行业的门槛比现在还要高很多,与美国不会有太大的差别.此时,中国软件才真正体现出它的威力来.如果你是这些威力中的一员,就已经委厉害了.所以程序员要能达到这样的目标,就要有非常强的耐心和非常好的机遇才有可能.事实上,现在的机会挺好的,2005年以前机会都非常大,以后机会会比较小.但是,如果有耐心的话,你还是会有机会的,机会都是出在耐心里.我刻有句话详雄心的一半是耐心,我认为雄心的三分之二都是耐心.如果你越有野心,你就越要有耐心,你的野心才有可能实现.如果你有野心而没有耐心,那都是胡思乱想,别人一眼就能看穿.最后在竞争中,对手一眼就看到你的意图,那你还有什么可竞争的


1.2.3 程序员是吃青春饭的吗
      很多人都认为程序员是三十岁以前的职业,到了三十岁以后,就不应再做程序员了.现在的很多程序员也有这种想法,我觉得这种想法很不对.在20世纪80年代初,那时软件还没有形成行业,程序员不能以此作为谋年的手段时,你必须转行,因为你年轻的时候不用考虑吃饭的问题,天天玩都可以,但是以后就不可能了.据我了解,微软里面的那些高手,几乎都是四五十岁的,而且都是做底层的,他们是上世纪70年代就开始玩程序的,所以对于整个计算机,他们是太清楚了.现在有些人主观臆断地希望微软第二天倒闭就好了,但那可能性太小了,因为那些程序员是从CPU是4004的时候开始,玩到现在奔腾IV,没有哪一代东西他们没有经历过.你知道他们现在正在玩什么吗 现在正在玩64位的CPU.你说你普通的程序员,有这个耐心吗 没有这个耐心,你绝对做不了,你也绝对当不了高手.他为什么能做 因为他不仅是玩壹的,而且他还非常有耐心,每一步技术他都足得上,所以对他来说,没有任何的难度和压力.因为计算机技术没有任何时候是突变不会很大,但是回过头来看三年以前的情况,和现在的距离就很大.所以说,如果你每年都跟着技术进步的话,你的压力就很小,因为你时刻都能掌握最新的技术.但是,如果你落下来,别说十年,就是三年,你就赶不上了.如果你一旦赶不上,就会觉得非常吃力;如果你赶不上,你就会迷失方向;如果你迷失了方向,你就觉得计算机没有味道,越做越没劲.当你还只是有个思路的时候,别人的产品都做出来了,因为你的水平跟别人相差太远,人家早就想到的问题,你现在才开始认识.水来越低,想的问题就越窄.所以,追求技术的最高境界的时候,实际上是没有年龄限制的.对我来详,现在都三十三了,我从来没有想过退出这行,我觉得我就能玩下去,一起玩到退休都没有问题.我要时刻保持技术的最前端,这样的话对我来说是不困难的,没有任何累的感觉.很多人说做程序员不是人干的事情,是非人的待遇.这样,他们一旦成立一个公司,做出一点成绩,在辉煌的时候马上就考虑退出.因为他们太苦了,每天晚上熬夜,每天晚上烧了两包烟还不够,屋子里面简直就缺氧了,好像还没有解决问题.白天睡觉,晚上干活,那当然累死了,这是自己折腾自己.所以,做程序员一定要有一种正常的心态,就是说,袋子我做程序的时候,不要把自己的生活搞得颠三倒四的.如果非得晚上烧好多烟才行,这样你肯定折腾不到三十岁,三十岁以后身体就差了.事实上,我基本上就没有因为做程序而熬夜的.我只经历过三次熬夜,一次是在学校的时候,1986年刚接触计算机时,一天晚上跟一个同桌在计算机室内玩游戏,研究了半天,搞着搞着就到了天亮,这是第一次.然后在毕业之前,在286上做一个程序.还有一次就是超级解霸上市前,那时公司已经吹得很大了,那天晚上没法睡觉.一般来说,我也是十二点钟睡觉,第十天七点就起了.所以说,只有具有正常的生活,正常的节奏,才有正常的心态来做程序员,这样,你的思路才是正常的,只有正常的东西才能长久.搞疲劳战或者是黑白颠倒,时间长久后就玩不转了,玩着玩着就不想玩了.只要你不想玩,不了解新技术,你就会落后,一旦落后,你再想追,就很难了.
本文来自永恒之家:http://bbs./read-htm-tid-22576.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多