先自我介绍,好给非相关专业的人一点信心:本人英语系出身的。学程序设计时间也不短了,自视总算有了入门水平吧,目前做了一个月不到的C#程序员。
这是个争论不休的话题,网上经常会有《初学编程从什么语言开始》等文章被顶到无以复加的地步。不用我说,大家也都明白,因为已经入门的人的观点非常不统一。每个人走过的路不一样。
好了,上面对问题做了一个粗略的介绍,下面对问题进行分析,并试图给出结果:
首先我们看到,初学都被推荐的语言种类是比较有限的,似乎没有人推荐从matlab这样的语言开始学习吧?粗略统计一下,给初学者推荐的语言大约有这么几种:Pascal、C、Visual Basic、C++、Java、C#
其实也就可以分为两类:过程语言和面向对象语言
过程语言:Pascal、C,还有Basic?
面向对象:Visual Basic、C++、Java、C#,对VB面向什么大家有争论,可以暂且搁在一边,因为这不是本文要讨论的内容
当今时代是面向对象的时代,最终程序员多数是要使用面向对象语言的。但是究竟从什么语言学起呢?
其实这两种语言是两种思想的对象(也叫实例?),编程者要学的仅仅是编码吗?显然不是。要学的是什么?我想聪明的人已经猜到了:思想。对!就是思想。其实建议直接从面向对象语言学起的学者们,主要是怕人们从过程语言过来,会无法接受面向对象的观念。而推荐从面向过程语言开始学习的学者主要是考虑到过程方法在程序设计中的基础性地位,以及由此形成的思维对于程序设计思想严谨性的影响。
我这里要大放一下厥词:这些顾虑都是多余的!人是活的,他可以接受任何思想,only if他愿意。这就如同使用DOS和使用Windows一样,有人先学DOS,有人先学Windows,谁见过先学一者后无法学好后者的?如果见到的话,这样的人是不是对后者具有一种抑制心理呢?好了,答案我想聪明的读者都已心中有数。这里问一个问题:程序员学习语言会有抑制心理吗?如果有,他还适合干这行吗?
Fine!我想大家已经站在同一边了。于是:学习什么语言不重要,重要的是掌握思想,搞懂语言的思维方式。
下面具体分析究竟如何选择初学语言。
马克思说:具体问题,具体分析。是很有道理的。中国人是善于综合的民族,我们的观点怎么可以只是集中在小小的语言本身之上?我们应该根据多方面的因素综合考虑才对。
从简单的语言学起,逐渐学习更复杂(复杂并不一定难,只是内容多,有时反而简单)的语言,这样一步一步,逐渐增加自己的编程思想。因为简单的语言相应的包含的思想也少些,因而更易于去揣摩。先学习一门过程语言,再学习一门面向对象语言。
下面对不同群体给出不同的建议:
想成为专业编程人员的:
很明显,想成为专业人员,第一关就是要过意志关,C语言是不错的选择,对于初学者,它是够难地。同时,它的内容也较少,思想严谨,很适合初学者学习过程化的思想和思维方式。
在熟练了C语言之后,可以再扩展到C++语言,此时会发现:C++怎么如此象C语言?但随着学习的深入,就会发现两者的巨大差别,不久就会遇到新的思想:面向对象。在初步掌握了C++语言以后,就具备了自己选择下一步路怎么走的能力。(比如是深入学习C++还是转学其它?)
对于只是偶尔借用一下编程工具的人:
学习C或Pascal感觉非常困难,怎么办呢?此时笔者的建议是:先学习VB6.0,因为它非常简单,易有成就感,提高学习者的兴趣。对于没有意志的人,尤其有效,而且它的功能是非常强大的,基本可以满足简单的编程要求。此处还特别推荐有用到数据库的朋友使用VFP,它的编程风格和VB是一模一样,又很容易对数据库进行操作。这样以后可以由它直接跳到VB.NET,它是一个完全面向对象,功能强大的语言。
当然了,对于学习者来讲,还有一个时间问题,有人可能有四年时间,有人可能只有一个月或一周,该如何抉择呢?
对于有足够时间的人,依照我前面的建议应该是差不多了。当然,也可以自已选路来走,因为时间充足,可以把感兴趣的一一学习,不必考虑顺序。
对于时间紧的学习者来讲,首先要确定自己要用哪种语言(即要进行哪些应用)。不同语言有不同的特性,根据要用到的特性来选择学习什么语言。(各种语言的特点,可以自己百度)如果没有特定的方向或目的,笔者建议使用VB6.0,它简直是一学就会,一拿就能用。如果要用到数据库就用VFP。有时间的话学习一下C语言后学习VB.NET/C#/C++/Java等中的一门面向对象语言。
一句话:初学什么语言不重要,重要的是学和思。
[此贴子已经被作者于2007-9-15 22:57:06编辑过]