学习任何一门编程语言,都可以分成三个步骤。
第一步,通过书和视频课掌握基本语法。
掌握编程语言基本语法的途径比较多,如书、视频课、线下课等,可以结合自己的实际情况进行选择。笔者总结了学习编程语言必须掌握的10 个要点。
1)学习编程语言的基础知识。
编程语言的基础知识包括基本数据类型、基本语法和流程控制(判断、分支、循环等)、主要数学运算符、打印输出函数的使用。
2)掌握数组和其他集合类的使用。
数组和其他集合类的使用包括了解数据的类型和特性,能否为空,集合是否线程安全,主健是否重复。
3)简单字符串处理。
所谓简单,就是Regex 和Parser 的内容,查找替换、截取字符串等,另外要注意字符编码问题。
4)掌握基本面向对象或函数式编程的特征。
对继承、多态、Lambda 函数等,概念要吃透,掌握用法。
5)掌握代码调试的技能。
代码调试的技能包括异常、错误处理,断言、日志和调试等。
6)了解程序代码和可执行代码。
了解程序代码和可执行代码,包括组织机制、运行时模块加载、符号查找机制。例如,Java 的JVM 原理和调优,结合编译原理理解Java 和PHP 等编译、运行的异同。
7)掌握基本输入输出和文件处理、输入输出流类等。
例如,Java 编程中文件读写的常用类和方法,如何防止读取量太多“撑爆”内存,以及读写的效率问题等。
8)掌握编程语言如何进行callback 方法调用,如何支持事件驱动编程模型。
在现代编程环境下,这个问题是涉及开发思想的核心问题,几乎每种语言在这里都会下足功夫,如.NET 的delegate、Java 的anonymous inner class、Java 7的closure 和C++ OX 的 tr1::function/bind 等,要深入掌握其设计模式的运用。
9)序列化和反序列化。
掌握序列化和反序列化的机制,以及在框架中的运用。
10)掌握一些编程语言特性。
掌握动态编程、反射和元数据编程、数据和程序之间的相互转化机制、运行时编译和执行的机制。
以上就是学习编程语言需要掌握的基础知识,在啃书本、掌握原理的基础上,要动手做一些Demo,掌握基本语法。
第二步,通过调试简单项目掌握开发框架的用法。
这个方法是根据笔者的个人经验总结出来的,笔者在刚参加工作的时候,虽然已经看了不少编程书籍,也跟着书中的案例写了一些代码,但在实际工作中总感觉力不从心,现在回想起来就是因为缺乏项目经验。恰好当时的主管要求搭建一个内网门户,内网门户里要有BBS、Wiki、聊天室、会员中心、下载中心等十多个子系统,笔者当时的思路就是去网上下载多套系统进行整合。
经过两个多月,十多个系统的整合、搭建、数据打通,不懂的地方问Google、问同事,笔者的项目经验得到了快速的积累,常见的系统架构方式都能说出个所以然,笔者至今仍非常庆幸,那段工作经历大大拓宽了我的技术视野。
对于刚开始学习编程的同学来说,从0 开始搭建一个系统是比较困难的,一个快速提高编程能力的方法就是从GitHub 上下载一些简单的项目,在本地计算机上“跑”起来,这些项目一般都会有“step by step”的说明,教你如何搭建开发运行环境,让Demo 能够运行在自己的计算机上,然后试着在这个项目中改变布局、增加字段、调试,把代码通读一遍,不明白的地方可以问Google或有经验的同学。
通过调试几个项目可以掌握开发框架的基本用法,对语法、开始框架、中间件、数据库的使用方法有基本的认识。
第三步,从0 开始做一个项目,提高编程综合能力。
工程师的本质是什么呢?用工程的方法解决实际问题,所以我们非常强调动手能力。曾经读过一个故事,一位华人理工科教授Li 去他的朋友Dived 家做客,Dived 是硅谷的技术高管,为了照顾Li 的口味,Dived 准备了中餐,当饭菜准备好,大家围着桌子坐下后,发现少了一副筷子,由于不常吃中餐,Dived家里没备那么多筷子。这时,Dived 站了起来说:“稍等一会。”大约过了10分钟,Dived 带回一副崭新的筷子,原来他用家里的木头材料动手制作了一副筷子。Li 非常惊讶和感慨,虽然Dived 身为技术高管,较少做一线的技术工作,但是血液里流淌着的是工程师精神。
这个故事告诉我们,作为工程师,动手解决问题的精神是我们的“底层操作系统”,好的工程师必须具备工匠精神。
编程的技巧全在细节,不从0 开始做一个项目,就无法体会每一个技术点的运用。从0 开始做一个项目,便于形成自己的工具箱。从开发效率来说,优秀程序员和普通程序员的差别就在于工具箱使用得熟练与否,当然还有算法、设计模式、代码结构等。
以Java 开发为例,需要整合Spring Boot、Dubbo、MyBatis、ZooKeeper、Redis 等,还需要熟悉数据库、缓存的用法、Linux 系统的安装和使用、数据库的安装和使用、数据库表的设计、数据模型的设计等。
经过以上三个步骤,就可以成为一名工业级编程水平的初级开发工程师了。如果想要进一步提高,就需要下苦功夫,深入掌握编译原理、架构背后的设计理念、算法、优秀项目的源码等。