Fork me on GitHub
浅谈怎么快速学习一门新的编程语言

我从2002年到现在,学习了好几种编程语言。有一些,早已不用并且忘光了,有一些尽管不用但还会惦记着,还有一些,朝九晚五地用着。

 

我回顾过去9年的学习经历,差不多每年会学习一门新的语言,现在把它记录如下:

 

语言

学习时间

状况

C

2002

学习时候在TC上编了一些玩具程序,还曾记得,迁移到VC的时候,找不到graphics.h时的不知所措。读C程序的时间远远多于写C程序。

C++

2003

整天抱着TCppPL,混迹于CSDN C++版。2005-2008年,一直用C++写代码

Java

2004

想了解一些Web方面的知识,于是开始学习Java05年后一直没碰到,直到08年转做网页游戏,又重新拾起。

Python

2005

我第一份工作的第一个任务就是做游戏服务器的任务系统,用的脚本正是Python。后来几年也会用Python写一些小工具。

Lua

2006

魔兽世界让Lua火起来了,随波逐流地开始学习,后来喜欢上了。现在Lua是我游戏开发的御用脚本。

Perl/Erlang

2009

为了读懂一些mysql管理工具,决定学习Perl。黄金国度的大部分工具都是用Perl开发。Perl带给我最大的麻烦是,一段时间后,读自己的代码都很晦涩。07年的时候就听大家讨论Erlang了,但一直没碰,借着国内出了第一本Erlang技术书的东风,开始学习起来。真的很喜欢,但也很清楚,短时间不会在商用项目里面使用,所以暂且搁置,但总会惦记着。

Scala

2010

因为Erlang的原因,开始接触Scala,尝试了一段时间后,会觉得,既然我已经有Erlang,又何必要Scala呢。

ActionScript/Ruby

2011

一直很少关注客户端的技术,为了弥补这个缺陷,学习了AS。快乐编程是我追求的目标,于是开始尝试Ruby

 

每次开始学习一门新的语言,都会很兴奋,如同进入一个崭新的奇妙世界。兴奋之后,会发现,每次的学习过程大同小异: 安装编译环境,测试Hello World,按照Tutorial一步一步的尝试,订阅邮件列表,看相关书籍,研读源代码,不断写代码。不断写代码是最重要的,其它步骤都是为它服务。

 

我竟然学了那么多语言,而且还在不断学习新的。论语道“学而不思则罔,思而不学则殆”。所以,我要总结。我把学习一门新的语言分成3个阶段: 会用、熟练用和举一反三扬长避短用。因为精力有限,大部分时候,我们只是浅尝则止,也就是我说的“会用”——能借助google和帮助文档,完成功能开发,对代码质量无要求。

 

我发现,“淘金式”的学习方法能帮助我们快速“会用”。我把要淘的金子总结如下:

1.       数据类型:数值、字符串和布尔

2.       数据结构:数组和哈希字典

3.       变量声明与定义

4.       函数声明与调用

5.       程序结构:条件和循环

6.       文件操作:打开文件、读写文件、遍历目录

7.       XML文件

8.       正则表达式

9.       数据库

10.   杂项:格式化输出、调用外部命令、时间日期、随机数和程序输入参数

 

具体的例子,对于Ruby来说,知识点又是这样的:

知识点

内容

数据类型

a.       支持整数、浮点数

b.       字符串是mutable的,可以设置编码,对应String类,什么index/start_with/end_with/split应有尽有

c.       字符串判断相等== ?eql都可以

d.       True/False/Nil

数据结构

a. 对应ArrayHash

b. 初始化分别是[1, 2, 3]{“one”=>1, “two”=>2, “three”=>3}

c. 遍历方式: xx.each{|x| print x}

d.  

变量声明与定义

a. 支持全局变量、局部变量、类变量和实例变量。Ruby对于不同变量的命名有契约规则

b. 不需要提前声明,也不需要指定类型,也没有var等修饰符

函数声明与调用

a.       def  foo()

puts “hello world”  

end

b.        foo()

c. 语句可以不要终止符’;’,有时函数调用中的圆括号可以被省略

程序结构

a. 条件式 if/elsif/else/end

b. 循环 while/do/end

c. 循环 for var in collection do end

druby的迭代/枚举功能很强大

文件操作

File/Dir/FileTest

XML文件

rexml/document足够用了

正则表达式

=~ / /

数据库

Mysql/Ruby据说不错

杂项

a. puts/print/printf

b. `外部命令`

c. Time.now

d. srand/rand

e. ARGV

 

怎么样?是不是对于Ruby有一个大概的认识?是不是想尝试一下这种淘金式的学习方法?那就开始吧。

 

参考:

1. 学会提问

http://www.cnblogs.com/ro4tub/archive/2011/08/21/how_to_learn_a_new_computer_language.html

posted on 2011-08-25 09:41  HackerVirus  阅读(623)  评论(0编辑  收藏  举报