为什么我能一天就能掌握一门编程语言?

2,649 阅读4分钟
原文链接: www.jianshu.com

一天掌握一门语言,我觉得对于一个比较资深的程序员,应该都是比较容易的,而如果对于一个刚学习某一门开发语言不久的人来说,会觉得我是在瞎扯。当然,我此处说的掌握并不是精通,而是指可以开始工作或利用某一门程序语言着手于某件事情。

要掌握一门编程语言,是有规律可循的,而这些规律也只有通过学习几门编程语言才能积累起来。通常,我觉得的编程语言学习规律分为:语法学习 + 程序设计思想 + 数据结构和算法

语法

任何开发语言,都是由语法开始的,语法是一门开发语言的基础,学习任何开发语言,首先肯定是要学习其语法,知道其表达方式,才能在接下来如何运用其语法表达思想或逻辑。

从整体来说,语法分为几个部分,函数编写部分、类与对象部分、数据类型部分、逻辑结构部分(递归,判断)、输入输出、文件操作等。而学习一门新的编程语言,大致是花上一个小时先总体的浏览一遍,然后在头脑中与当前学习的开发语言形成对比,并对比区别与之前所学的开发语言的表达方式的异同之处,需要记的地方也就是不同之处,在开发的时候注意区别就好。此部分的基础语法也就学习完成。

程序设计思想

程序本身采用的编写方式:是面向对象的设计思想还是函数式的设计方式,或者是两种方式都可以使用,然后整体学习后,需要取舍,到底在具体开发中应该采用哪种方式更好,需要综合考虑。对于面向对象,要熟悉当前所学的开发语言的面向对象的设计是否完备,是通过什么样的方式来实现对象的特性的,也需要与之前的开发语言对比,记下当前学习的编程语言不同点。而对于函数式,需要理解其表达方式与当前掌握开发语言的不同点,比如ECMAScript6与ECMAScript5的函数表达方式不一样。

应用场景:应用场景的区分,思考并决定是否需要适配开发环境等,应用场景一般从几个方面思考,主要分为服务器端、客户端、底层与硬件交互应用;而客户端又分为PC端、WEB端、手机App等。分析这些主要是源于,开发程序很多时候仅仅依靠开发程序本身是做不了很多事情的,而是依赖于调用底层的一些处理接口来做数据处理或得到数据,这一块的知识也是需要去了解和掌握的。

数据结构和算法

我觉得,而且我也承认,在做开发的一开始,根本就不知道书本上表达的程序=数据结构+算法到底是一个什么样的意思,或者说根本就找不到应用场景,后来学会了编程语言并在实际工作中检验之后发现,其实,程序一开始设计就包含由基础的数据结构,如C语言的结构体,联合体,然后通过相对简单的数据结构实现更复杂的树等。而我在学习的时候,把数据类型也归于数据结构,说得准确一些是我把数据类型归于数据结构的基础原子。而对于数组类型的数据,我更愿意把这种结构叫做数据结构,这是因为我在工作中发现,不同的数组结构设计,会在做遍历或者是其他的一些处理的时候,虽然数据一致,但是处理起来的时间成本可能相差几十倍甚至几百倍。

而在学习编程语言的时候,一方面的数据结构是能灵活的运用当前的开发语言表达我们常遇到的一些数据结构,如图或树这种比较复杂的数据结构;另外一方面就是掌握好基础的数据结构原子,还有开发语言本身的设计是否由数组等。

而对于算法,我觉得处理一件具体事务或者,处理一段具体的数据的程序就是算法,在学习的时候,能使用程序来处理常见或比较复杂的数据结构,我觉得基本上整体学习就基本完成了,然后就可以正式进入开发状态。

综合来看,在学习的时候,完全的投入精力去学习,基本上一天的时间足够掌握一门编程语言。