快速学习一门编程语言的方法

  现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查Google边学习;其二是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作。然而这两种方法都有弊病。

  第二种方法的问题当然很明显,不仅浪费了时间,偏离了目标,而且学习效率不高。因为没有实际问题驱动的语言学习通常是不牢固不深入的。有的人学着学着成了语言专家,反而忘了自己原本是要解决问题来的。

  第一种路子也有问题,在对于这种语言的脾气秉性还没有了解的情况下大刀阔斧地拼凑代码,写出来的东西肯定不入流。说穿新鞋走老路,新瓶装旧酒,那都是小问题,真正严重的是这样的程序员可以在短时间内堆积大量充满缺陷的垃圾代码。由于通常开发阶段的测试完备程度有限,这些垃圾代码往往能通过这个阶段,从而潜伏下来,在后期成为整个项目的毒瘤,反反复复让后来的维护者陷入西西弗斯困境。

  实际上语言学习有一定规律可循,对于已经掌握一门语言的开发者来说,对于一般的语言,完全可以以最快的速度,在几天至一周之内掌握其最常用的50%,而且保证路子基本正宗,没有出偏的弊病。

  其实真正写程序不怕完全不会,最怕一知半解的去攒解决方案。因为你完全不会,就自然会去认真查书学习,如果学习能力好的话,写出来的代码质量不会差。而一知半解,自己动手土法炼钢,那搞出来的基本上都是废铜烂铁。

  比如错误处理和序列化,很多人不去了解“正路子”,而是凭借自己的一知半解去攒野路子,这是最危险的。因此,即使时间再紧张,这些内容也是必须首先完整了解一遍的。掌握这些内容之后进入实际开发,即使有问题,也基本不会伤及项目大体。而开发者本人则可以安步当车,慢慢在实践中提高自己。

  以下列出一个学习提纲,主要针对的是有经验的人,初学者不合适。这个提纲只能用于一般的庸俗编程语言学习,目前在流行编程语言排行榜上排前20的基本上都是庸俗语言。如果你要学的是LISP之类非庸俗语言,或是某个软件中的二次开发语言,这里的建议未必合适。还是那句话,仅供参考。

  1. 首先了解该语言的基本数据类型,基本语法和主要语言构造,主要数学运算符和print函数的使用,达到能够写谭浩强程序设计书课后数学习题的程度;

  2. 其次掌握数组和其他集合类的使用,有基础的话可以理解一下泛型,如果理解不了也问题不大,后面可以补;

  3. 简单字符串处理。所谓简单,就是Regex和Parser以下的内容,什么查找替换,截断去字串之类的。不过这个阶段有一个难点,就是字符编码问题。如果理解不了,可以先跳过,否则的话最好在这时候把这个问题搞定,免留后患;

  4. 基本面向对象或者函数式编程的特征,无非是什么继承、多态、Lambda函数之类的,如果有经验的话很快就明白了;

  5. 异常、错误处理、断言、日志和调试支持,对单元测试的支持。你不一定要用TDD,但是在这个时候应该掌握在这个语言里做TDD的基本技能;

  6. 程序代码和可执行代码的组织机制,运行时模块加载、符号查找机制,这是初学时的一个难点,因为大部分书都不太注意介绍这个极为重要的内容;

  7. 基本输入输出和文件处理,输入输出流类的组织,这通常是比较繁琐的一部分,可以提纲挈领学一下,搞清楚概念,用到的时候查就是了。到这个阶段可以写大部分控制台应用了;

  8. 该语言如何进行callback方法调用,如何支持事件驱动编程模型。在现代编程环境下,这个问题是涉及开发思想的一个核心问题,几乎每种语言在这里都会用足功夫,.NET的delegate,Java的anonymous inner class,Java 7的closure,C++OX的 tr1::function/bind,五花八门。如果能彻底理解这个问题,不但程序就不至于写得太走  样,而且对该语言的设计思路也能有比较好的认识;

  9. 如果有必要,可在这时研究regex和XML处理问题,如无必要可跳过;

  10. 序列化和反序列化,掌握一下缺省的机制就可以了;

  11. 如果必要,可了解一下线程、并发和异步调用机制,主要是为了读懂别人的代码,如果自己要写这类代码,必须专门花时间严肃认真系统地学习,严禁半桶水上阵;

  12. 动态编程,反射和元数据编程,数据和程序之间的相互转化机制,运行时编译和执行的机制,有抱负的开发者在这块可以多下些功夫,能够使你对语言的认识高出一个层面;

  13. 如果有必要,可研究一下该语言对于泛型的支持,不必花太多时间,只要能使用现成的泛型集合和泛型函数就可以了,可在以后闲暇时抽时间系统学习。需要注意的是,泛型技术跟多线程技术一样,用不好就成为万恶之源,必须系统学习,谨慎使用,否则不如不学不用;

  14. 如果还有时间,最好咨询一下有经验的人,看看这个语言较常用的特色features是什么,如果之前没学过,应当补一下。比如Ruby的block interator, Java的dynamic proxy,C# 3的LINQ和extension method。没时间的话,我认为也可以边做边学,没有大问题。

  15. 有必要的话,在工作的闲暇时间,可以着重考察两个问题,第一,这个语言有哪些惯用法和模式,第二,这个语言的编译/解释执行机制。

  至此语言的基本部分就可以说掌握了,之后是做数据库、网络还是做图形,可以根据具体需求去搞,找相应的成熟框架或库,边做边学,加深理解。

  对于一个庸俗语言,我自己把上面的内容走一遍大概要花2-3周时间,不能算很快,但也耽误不了太多事情,毕竟不是每个月都学新语言。

  掌握了以上的内容,就给练武术打好了基本功,虽然不见得有多优秀,但是肯定是根正苗红,将来不必绕大弯子。就算是临时使用的语言,把上面这个提纲精简一下,只看蓝色重体字的部分,大致能在几天到一周内搞定,不算是太耗时,而且写出来的代码不会太不靠谱。

  以上提纲未设及内存模型。对于C/C++,这个问题很重要,要放在显著位置来考虑,但对于其他语言,这个问题被透明化了,除非你要做hardcore项目,否则不必太关注。

原文地址:https://www.cnblogs.com/justinxhan/p/8260991.html

时间: 2024-11-06 21:57:29

快速学习一门编程语言的方法的相关文章

12种方式让程序员快速掌握一门编程语言

[IT168 评论]你决定学习一门新的编程语言了吗?怎么开始呢?本文列举了12项关于快速掌握一门编程语言的方法,如果你有其他更好的建议,欢迎分享! 1.比较与之类似的编程语言 这点对于程序员而言,应该很容易吧!你可以通过观看该语言的教程或读取示例代码,来尝试猜测该语言的特点,并将其记录下来,比如: ·该语言与哪些编程语言相似,相似点是什么? ·该语言的不同之处在哪,哪些特点超乎了你的想象. ·该语言主要用来干什么呢? 如果条件允许,你可以寻找身边同在学习该门编程语言的朋友,互相交流,或许会有更清

快速学习一门新的编程语言

为什么 Objective-C 很难 - linux,dev - 博客园http://www.cnblogs.com/huapox/archive/2012/12/01/3251600.html 9 个指导开发者快速编码/学习的网站推荐 - 楚广明 - 博客园http://www.cnblogs.com/chu888chu888/archive/2012/02/16/2354813.html 教是最好的学 - MNight - 博客园http://www.cnblogs.com/mnight/p

如何学习一门编程语言?给编程初学者的几个建议

如何学习一门编程语言?给PHP初学者的几个建议: 编程和任何新的技术一样,很难知道从何处开始.这里有些步骤适合初学编程语言的人:从“拖拽”编程开始.Python作为入门的语言.JavaScript是非常有用的语言之一.试试Ruby和Ruby on Rails.熟悉HTML. 在美国,计算机科学是一个蓬勃发展的行业,并且它的薪资待遇是极好的.对于顶尖的.有才华的工程师需求从没间断过,这就是为什么学习代码看起来是一个有吸引力的选择. 但是和任何新的技术一样,很难知道从何处开始.这里有一些你应该在早期

怎样学习一门编程语言

选择一门语言 1.确定你感兴趣的领域 你可以开始学习任何编程语言(尽管其中一些被描述地比其他的更加"易学"),你得去问自己自己想用通过学习这门语言完成什么样的工作.这将会帮助你确定你应该追求的编程方式并且提供一个良好的开始. 如果你想进入Web开发行业,那你将会有一堆语言需要去学习,这和开发计算机程序相反.移动App的开发需要比PC等的开发更多的技巧.所有的这些决定将会影响着你的发展方向. 2.考虑从一个"易学"的语言开始 无论你做了什么样的决定,你可能只会希望从一

React Native学习(1):怎么快速学习一门新技术

React Native学习方法论 这是我技术公众号的第一篇文章,也是ReactNative系列文章的第一篇,对我的文章感兴趣的可以加我微信16230091进行关注. 本文表面上讲React Native(以下简称RN),实际上对于学习任何语言和系统都适用. 对于新技术的学习,分为两种,一种是语言,类似Swift.Objective-C.Java.ES6,另一种是系统,比如Android.iOS.前端. 1. 语言层面,如果你精通某一门语言,那么是可以很快切换到另一门语言的.这就是语言的相通性.

零基础快速学习新语言的方法总结

"Do you want to spend the rest of your life selling sugared water or do you want a chance to change the world?"                                                                                                               -  Steve P.(aul) Jobs 学

如何学习一门编程语言

作为程序员,总会有想学一门新的编程语言的冲动.新语言的某些特性打动了你:或是新工作的需要:或是时下比较火:又或是年初定下的学习计划--不论出于什么原因,你决定要学习X语言了.接下来就聊聊学习一门新语言时要关注些什么. 搭建开发环境 首先,我们得准备好开发环境.通常官网会有详细的新手指导,我们只需要照着做就可以. 模块 别急着写HelloWorld.先搞明白,如果我们要为其他人提供某些功能,发布的最小单元是什么,比如C#的dll文件.Java的Jar包等等.试着写一个模块,只返回一个字符串. He

程序员如何快速学习一门新技术?

最近闲暇时间在bilibili看了大胖的程序员如何学习一门新技术视频教程,总结了一下几点 第一步:看官方API(2天左右的时间) 第二步:找实战教程(自己可以去各大资源网站上购买) 5天时间 第三步:推动新技术在工作中的使用 不建议使用新技术到公司的主营业务中,不然到时候没弄好就得走人 第四步:看Github上的开源项目或者自己可以去寻找技术生态 原文地址:https://www.cnblogs.com/yirufeng/p/12244284.html

怎样才能快速掌握一门编程语言?

几周前一个朋友也打算通过跑步来甩一甩脂肪,控制一下自己那已经严重扭曲了的身材 —— 他便求教我从衣服到鞋,从腕表到心率带,都买了什么装备,性能如何,他好照着原样来一套.我告诉他我什么装备都没买,跑了半年多了,我还是随便套上件纯棉的T恤,穿条舒服的运动短裤,蹬着跑鞋,抓着手机,就这么跑将起来.他连连说不信,一个连排汗速干的衣服,臂包,运动腕表都没配的人,怎么也能(配得上)跑步?纽约娱乐城 这让我想起了经常会遇到的一些读者留言: 「我想学rails,有没有推荐的ruby的入门书籍?」 「我想学and