我从2002年到现在,学习了好几种编程语言。有一些,早已不用并且忘光了,有一些尽管不用但还会惦记着,还有一些,朝九晚五地用着。
我回顾过去9年的学习经历,差不多每年会学习一门新的语言,现在把它记录如下:
语言 |
学习时间 |
状况 |
C |
2002 |
学习时候在TC上编了一些玩具程序,还曾记得,迁移到VC的时候,找不到graphics.h时的不知所措。读C程序的时间远远多于写C程序。 |
C++ |
2003 |
整天抱着TCppPL,混迹于CSDN C++版。2005-2008年,一直用C++写代码 |
Java |
2004 |
想了解一些Web方面的知识,于是开始学习Java。05年后一直没碰到,直到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. 对应Array和Hash 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 d.ruby的迭代/枚举功能很强大 |
文件操作 |
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