快速入门一个编程语言较常用的方法

现在的开发工作常常要求我们能够快速掌握一门编程语言。

一般来说应对这种挑战有两种态度:

(1)粗粗看看语法,然后撸起袖子开干,边查资料边学习;

(2)是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作。

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

第一种路子也有问题,在对于这种语言的脾气秉性还没有了解的情况下大刀阔斧地拼凑代码,写出来的东西肯定不入流。说穿新鞋走老路,新瓶装旧酒,那都是小问题,真正严重的是这样的程序员可以在短时间内堆积大量充满缺陷的垃圾代码。

造成可能的后果:由于通常开发阶段的测试完备程度有限,这些垃圾代码往往能通过这个阶段,从而潜伏下来,在后期成为整个项目的毒瘤,反反复复让后来的维护者陷入更多的困境之中。

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

其实真正写程序不怕完全不会,最怕一知半解的去攒解决方案。因为你完全不会,就自然会去认真查书学习,如果学习能力好的话,写出来的代码质量不会差。而一知半解,自己动手土法炼钢,那搞出来的基本上都是废铜烂铁。比如错误处理和序列化,很多人不去了解“正路子”,而是凭借自己的一知半解去攒野路子,这是最危险的。因此,即使时间再紧张,这些内容也是必须首先完整了解一遍的。掌握这些内容之后进入实际开发,即使有问题,也基本不会伤及项目大体。而开发者本人则可以安步当车,慢慢在实践中提高自己。

以下列出一个学习提纲,对于有经验的会比较有用,初学者可能会作用不明显。

以下内容仅供参考:

​​
1. 首先了解该语言的基本数据类型,基本语法和主要语言构造,主要数学运算符和函数的使用

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

3. 简单字符串处理。所谓简单,就是Regex和Parser以下的内容,
什么查找替换,截断去字串之类的。不过这个阶段有一个难点,
就是字符编码问题。

4. 基本面向对象或者函数式编程(面向过程)的特征,了解继承、封装、多态、Lambda函数之类的;

5. 异常、错误处理、断言、日志和调试支持,对单元测试的支持。


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是什么,如果之前没学过,应当补一下。
比如 Java的dynamic proxy。

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

​另外还需要补充一些,有的语言需要去了解内存模型比如java和C++等,了解一些里面的原理也是有好处的

​

​

完成以上操作之后,语言的基本部分就可以说掌握了,之后是做数据库、网络还是做图形,可以根据具体需求去搞,找相应的成熟框架或库,边做边学,加深理解。掌握了以上的内容,就给练武术打好了基本功,虽然可能还谈不上多优秀,但是肯定是根正苗红,将来也不必绕大弯子。

猜你喜欢

转载自blog.csdn.net/weixin_41719737/article/details/84845143
今日推荐