分享学习语言的经验
在人类所制造的工具中,有的可以将人送上月球,有的可以驾驭原子的火焰,但是只有计算机软件才能透彻的返照出人类的心智。
--《Java与模式》
软件能够返照出人类的心智,那么计算机语言就是我们展现心智的基石。经常在一些论坛上和贴吧上看到一些能人志士谈论如何学习语言的文章。有些人说心态;有些人说类比;有些人说代码。
我个人认为他们都有道理。我从一进入这个行业开始,也学习了很多种计算机语言了。我通过这几种语言的学习来说说我是如何来学习一门新语言的,分享一些我学习语言的经验。
首先,新手无论干什么事情,都会遇到挫折,这是不可避免的。既然挫折不可避免,那么新手就不应该去恐惧,不应该去害怕,就直接勇敢的去面对就OK了。这是一种平和的心态,把心态放平和了,也许你的白纸上面会画出最新最美的图画。而且新手要意识到第一门语言是非常重要的,对以后影响也是非常巨大的,如果学好了,则自信心大增,对以后的学习和发展也起到推进作用。
其实解决了心态问题,就是一些关于选择和Coding的问题了。
迎面而来的就是语言众多,无从下手。第一,不知道学哪种语言为好,第二,不知道如何学习。
其实以前我也遇到过这类问题,我的恩师 带领我进入了vb的世界,因为大学学习了一学期的vb语言,再加上vb上手非常容易,所以就选择了vb语言作为我的第一门语言。当然我是通过视频,coding还有实战项目进行学习这门语言的,因为第一门语言非常重要,所以我花了很长时间在这个语言上面。现在回过头来看真的是非常值得的。
其实关于选择哪种语言作为自己的第一门语言,我个人认为,要从自己的角度考虑和前人的指导,因为第一门语言的重要性,所以我们绝对不能轻视,不要因为哪种语言流行就选择哪种,选择要有根据性,要有目的性的。
对于第一门语言我的学习方法就是循序渐进,一步一个脚印的走。这个阶段是非常痛苦的,心态放平和,不停的coding,想办法建立自己的自信心,合适的时候选择一个好的项目实战一下。
学习一门新的语言的时候,要利用以前所学的语言的功底
我们不得不承认,学习另一种新语言是有学问的,因为语言的类型是不同的,有些是过程语言,有些是面向对象语言,如何你的第一门语言和你将要学习的新语言是一个类型的,那么困难度是非常小的,然而如果你从过程语言过度面向对象语言,这个困难度是非常大的,因为这两种语言的思维方式是不一样的,用过去的思维定式却转变新的思维定式,这是非常痛苦的。
所以我就经历了这样一段痛苦的经历,VB是我的第一门语言,之后我要进行面向对象的学习,所以要学习一门面向对象的语言,就进入了VB.NET的语言,其实这个过度还是非常合理的,因为VB和VB.NET的语法几乎是一样的,只有一点是开发平台不一样了,一些小的细节方面发生了一点变化。其实这个阶段主要还是思维的转变,从过程到对象,从一个整体逐渐分成若干个关系不大或毫无相关的对象,这是非常非常痛苦的。所以说选择好第一门语言是非常重要的。
当然我随后学习了C#.NET还有JAVA语言。从VB.NET到C#.NET再到JAVA语言,就非常轻松了,因为这三个语言都是面向对象的语言,JAVA是我的就业语言,通过C#.NET的中间过渡让学习这几门语言变得非常容易轻松。因为VB.NET和C#.NET在一个平台中,有很多东西都是相同的,就是语法有差异;C#.NET和JAVA的语法非常相似,就是环境不一样。(当然语言之间的差异性我只是泛泛的说了一下,希望读者不要较真,明其理即可)
在这个阶段的学习中,不论是同种类型语言的过度,还是不同种类型语言的过度,有一点是肯定的,就是要是想学习好这一门新的语言就要借助于旧语言。将新旧语言进行类别,看看相同和异同之处,比较着学习。举个例子来说:
VB语言的For循环:
For 变量 = Start To End [Step]
[需要循环的语句]
[Exit For]
Next 变量
而C#语言的For循环:
For(initializer,condition,iterator){
Statement(s)
}
其中:
Initializer是指在执行第一次迭代前要计算的表达式(通常把一个局部变量初始化为循环计数器)
Condition是在每次迭代新循环前要测试的表达式(它必须等于true,才能执行下一次迭代)
Iterrator是每次迭代完要计算的表达式(通常是递增循环计数器)。当condition等于false时,迭代停止。
JAVA的For循环和C#的一样。
通过这一比较我们就能很快的掌握了三种语言的For循环的用法,而且每种语言的用法都能够“记”的清清楚楚。当然如何具有探索精神的化,那么就可以对for循环加深,java中的增强for循环,c#中的foreach语法,这些都能一起去类比的。
通过简单的一个例子就能说明,学习新语言就要借助旧语言的功底的去类比。
另外学习新语言的时候,也应该注意一些其他方面的因素,例如心态啊,语言的历史啊,编程环境啊,向高手取经啊····
其实还有一个最关键的东西没有说,就是Coding。
有人说过:Coding,Coding,软件人员的Wedding。如果不通过Coding就想学会一门语言那是痴人说梦。Coding是有技巧的,主要抓住循序渐进,不要总想一口吃个胖子,踏踏实实一步一个脚印的去做,去Coding。
其实语言并不难学,关键是在方法。