zoukankan      html  css  js  c++  java
  • 浅谈怎么快速学习一门新的编程语言

    我从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

  • 相关阅读:
    Local minimum and local maximum,second derivative
    Analysis by Its History_exercise 1.5
    陶哲轩实分析 例1.22
    域上多项式的带余除法
    Java反射机制
    Java多线程发展简史
    关于Java性能的9个谬论
    Lucene 工作原理
    Java 理论和实践: 了解泛型
    Java Collection
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2152837.html
Copyright © 2011-2022 走看看