致编程新手的一封信

《转》致编程新手的一封信(入门篇)

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

1.初学者疑惑之一,怎么入门

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

2.初学者疑惑之二,选哪门语言做入门语言

至于这个问题,网上争论不休,貌似大部分人都推荐学C,我个人的意见不是这个,我认为要分别论之,注意,我在此仅讨论初学入门用语言,而非哪门语言好:

1)如果你是一个计算机专业或者软件专业的人(我所谓的人是指包括在校以及已经毕业了的人),我没有什么可说的,在学校有人教你的情况下,你如果连C都没学好,还是别在这一行混了,我说的学好,并非是对C语言所有特性,所有使用方法,所有晦涩难懂的符号表示方法,申明方法等都必须精通,一看就懂,没那么厉害的人物,有也不会来看这篇文章了,我所谓的学好,是指能写一个实用的应用程序,不求大,类似于写一个串口通讯类的程序,还有就是能够基本看懂别人写的C语言的源码,看不懂的地方,稍微查下资料也能懂,这就是我所谓的学好,怎么样,要求不高吧,也许有人认为学C语言过时了,这个请自行网上查询下为什么要学C语言,我不想跟认为C语言过时的人多做讨论.

2)如果你是一个非计算机专业的人,怎么说呢,C语言并非是我首先推荐的,因为它对于你来说太过晦涩难懂,它太专业了,没有一定的专业基础知识还真的很难搞明白它,为什么这么说呢?你对操作系统的内存分配知识了解吗?系统底层是怎么样消息通讯的?C语言可以很好的诠释这些问题,但是正因为此,它也就变得高不可攀,没有深厚的计算机知识,还真啃不动它,那么对于非计算机专业的人,学什么好呢?我的推荐是:VB6.0,看清楚哦,不是https://www.360docs.net/doc/929205131.html,,是VB6.0,也许此时又要有人跳出来叫了,VB6.0太老了,很不幸的告诉你,我也是从VB6.0开始深深爱上了编程,然后到现在,C,VC,Delphi,C#,https://www.360docs.net/doc/929205131.html,,正所谓一通百通,难道没有听说过吗?学了VB6.0,再去学其他语言,会轻松很多,我不知道现在的大学教育怎么样?反正以前非计算机专业的编程语言VB6.0是首选https://www.360docs.net/doc/929205131.html,固然有很多优势,但是相对一个非计算机专业的初学者来说,它太过庞大,一开始无从下手,而且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几秒都不行.

https://www.360docs.net/doc/929205131.html,,这个我不想过多置评,其优势我想各位在网络上也看到了很多,嵌入式,Web应用,桌面应用都是它的踪影,当你安装一个应用程序它要求你必须先安装一个.net Framework的时候,那么这个程序就是由.net来完成的.

好了,写的那么多,后面更是越扯越远,再写下去要无止境了,做了5年的software engineer,感想颇多,其实对于初学者,入门的基础中的基础,就是兴趣爱好,没有兴趣爱好,还是放弃吧,没有持之以横的心态,也放弃吧,至于你的编程利器,看我上面的初学者疑惑之二,选哪门语言做入门语言,如果你已经有了这个基础,那么可以去实现第三,第四点,完成了上面4点,后面也就无需在看我的这篇文章了.

本人语言表达能力不强,只求大家能够看懂,好在写文章不像讲话,说出去的话没办法收回,而写出去的文章倒还可以修改.

最后感谢大家抽时间看我的唠叨,并祝大家都能实现自己的愿望.

以上内容仅是我个人观点,仅供入门,如果不正确之处,请勿见笑,还有,计算机专业的人也并非必须从C语言开始,如果在学校基础没学好,那么从其他语言切入的话,一样可以取得很好的效果,真的,学语言就是学工具,记住这句话.

能对你有所帮助,是我最大的心愿.

相关主题
相关文档
最新文档