现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查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项目,否则不必太关注。
分享到:
相关推荐
### 编程学习技巧:快速掌握一门语言的关键方法 在当今快速发展的信息技术领域,掌握一门新的编程语言变得越来越重要。无论是对于初学者还是资深开发者来说,高效地学习一门新语言都是提升自身技能的重要途径。本文...
这样的文档对于初学者来说极其宝贵,因为它可能涵盖汇编语法、指令集、常用技巧等内容,帮助读者快速掌握汇编语言的基础知识。通过阅读和学习asmedu.htm,用户不仅能理解汇编语言的基本概念,还能了解到如何使用MASM...
"一百多个vb api详细实例 让你快速掌握常用api" 这个资源提供了丰富的VB API应用示例,帮助初学者和有经验的开发者更深入地理解如何利用API来增强VB程序的功能。 API在VB中的应用是多样的,涵盖了各种系统操作和...
总之,《MATLAB语言常用算法程序集》是一个全面的学习资源,涵盖了MATLAB语言的基本语法、高级特性、数值计算、算法实现等多个方面。通过对其中源程序的分析和实践,无论是初学者还是高级用户,都能提升自己的MATLAB...
《MATLAB语言常用算法程序集》是一份宝贵的资源,它为学习和掌握MATLAB编程提供了丰富的实例和指导。MATLAB,全称为“矩阵实验室”(Matrix Laboratory),是一种强大的数学计算和数据分析软件,广泛应用于工程计算...
在编程领域,C++是一种强大的、面向对象的编程语言,被广泛用于开发高效且复杂的软件系统,包括数学算法。"用C++语言编写数学常用算法(修订版)"的资源很可能是为了帮助开发者深入理解如何利用C++实现各种数学算法...
通过阅读这份文档,可以快速掌握汇编语言的基本概念,理解编译器和链接器的工作原理,并学会如何编写、编译和链接汇编程序。 总的来说,汇编语言虽然复杂,但借助于MASM这样的编译器和Linker这样的工具,可以大大...
本主题“用C++语言编写数学常用算法”旨在探讨如何利用C++来实现数学中的基础和高级算法,这对于学习计算机科学的学生和专业开发者来说都是至关重要的技能。 首先,我们要了解C++的基础语法和数据类型,这是编写...
英语常用学术词汇表是英语教学和研究中不可或缺的资源,它提供了一系列常用的英语学术词汇,帮助学生和研究人员快速掌握英语学术语言。该资源共收录了570个词目,每个词目下面还列出了该词目的相关变化形式,如分析...
本资料包“汇编语言常用命令查询”旨在帮助学习者熟悉并掌握汇编语言中的关键指令,通过实例解析,增强理解和应用能力。 1. **基本概念** - **指令集**:汇编语言的基础是特定CPU的指令集,如x86或ARM。这些指令集...
- **快速排序**:使用分治策略,选取一个基准值,将数组分为两部分,一部分所有元素小于基准,另一部分所有元素大于基准,然后对两部分递归进行快速排序。 - **归并排序**:同样采用分治法,将数组拆分为两个子...
`LIKE` 运算符可以结合通配符 `%` 和 `_` 使用,`%` 代表零个、一个或多个字符,`_` 代表一个字符。 接下来,我们讨论如何使用SQL创建数据库表格。创建新表格使用 `CREATE TABLE` 语句,格式如下: ```sql CREATE ...
通过对这份3500个常用汉字表的学习,不仅可以快速掌握汉语的基础词汇,还能深入了解中国文化的各个方面。这些汉字不仅仅是语言符号,更是承载着丰富文化信息的重要载体。对于学习汉语的人来说,熟练掌握这些常用汉字...
建模应用篇主要介绍了目前在数据挖掘中的常用的建模方法在R语言中实现的函数,并对输出结果进行了解释,有助于读者快速掌握应用R语言进行分析挖掘建模的方法。图书提供了书中所用的配套代码及数据,读者可通过上机...
"3500个常用汉字笔顺表带拼音.doc" 本资源是一份关于3500个常用汉字的笔顺表,带有拼音信息。...该资源是一个非常有价值的资源,能够帮助用户快速掌握汉字的笔顺和读音,提高中文写作和阅读能力。
《Go语言程序设计》自始至终完全从实践的角度出发,每一章提供多个生动的代码示例和专门设计的动手实验,帮助读者快速掌握开发技能。《Go语言程序设计》适合对Go语言感兴趣的各个层次的Go语言程序员阅读和参考。
《Go语言程序设计》自始至终完全从实践的角度出发,每一章提供多个生动的代码示例和专门设计的动手实验,帮助读者快速掌握开发技能。《Go语言程序设计》适合对Go语言感兴趣的各个层次的Go语言程序员阅读和参考。
总结来说,"dsp常用例程汇编语言"是一个涵盖硬件理解、指令集使用、数据处理、内存管理、中断处理、并行计算、调试、性能优化和软件开发流程等多个层面的综合主题。对于想要在DSP领域深化学习的初学者或专业人士,...
"JAVA语言快速入门"这个主题,旨在帮助初学者迅速掌握Java的基本概念和语法,以便快速上手编程。 首先,Java的安装与环境配置是入门的第一步。你需要下载JDK(Java Development Kit),并在计算机上设置好JAVA_HOME...