1.开始学习之前的准备
有了前3天的思维基础,后面几天,我想分享一下“如何快速学习不同的编程语言”。
为什么要“快速”“学习”“不同的编程语言”呢?
第一,语言是前文提到的“技术地图”的基础。
任何框架都是基于某种编程语言实现的。
编程语言就好像练习任何一种武功秘籍之前必须掌握的基本功。
第二,学习不同的语言有助于扩展“技术广度”。
前文提到的“技术地图”中,有的框架实现用的是python,有的组件实现用的是Java。
有了不同语言的基础,就可以更快的探索并掌握一种新的框架。
深想一层,为什么不同的框架采用不同的编程语言呢?
抛开商业因素,任何编程语言都有自己产生那一刻要解决的特定问题、适用的场景、语言的优缺点。设计语言的大师通常会把他的编程哲学融入在这种语言中。
了解越多的语言,构建“技术地图”的门槛越低。
第三,快速,只是一个生产效率问题。
假设学习一种新的语言需要半年,而技术地图中的框架、组件又在以周为单位的速度不断推陈出新,那么掌握“技术地图”应该是一个不可能完成的任务吧。
怎么快速学习一种编程语言呢?
在《写给程序猿新手的入门书》系列中,我们再次明确一下学习要达到的效果:
(1)达到实战够用的程度。
曾经在市面上很流行《21天精通XXX语言》的书,个人感觉误人子弟。
要“精通”一种语言是一件很难的事情,即便一个程序猿10年坚持只使用一种编程语言,也会时常发现原来还有某些知识盲区。
但,实战中,能够用到的知识点是很有限的。
一个有经验的程序猿需要学习一种新编程语言的时候,绝对不会抱着一本《Thinking in XXX》的典籍掉书袋。
实战,够用就行。
(2)掌握“达到实战够用的程度”的学习方法。
无论哪种编程语言,只是立足于“达到实战够用的程度”,是有固定套路的。
这也就是时常有新手程序猿惊叹某位老程序猿:“你学东西好快啊!”
不是老程序猿有多高的智商,只是他掌握了快速学习一种新语言的方法。
下面,我们就从Python这种编程语言开始演练。
2.从Python开始
2.1.从“面向过程”的角度看Python
(1)Python于“面向过程”的作用
面向过程的核心要务是将一个任务分解成有序的若干步骤。分解得到的步骤,清不清晰、顺不顺畅,这是设计问题。
而,Python,这种编程语言,起到的作用仅仅是描述这些步骤的一种工具箱。
(2)Python提供了哪些工具
函数,变量,逻辑(判断/循环),数据结构(字符串/列表/元组/集合/Map)
依然通过一个例子进行说明:
假设,我们接到的任务是“制作一盆油焖大虾”。
我们先来按照“面向过程”的思路设计一下:
函数:每个步骤就是函数
变量:以第4步为例,调料的分量就可以当做变量。
逻辑(判断/循环):每个步骤内部都有自己的逻辑
例如:“加啤酒”这一步,分3次倒入,每倒1次,等待1分钟。——这就是“循环”
例如:“焖”这一步,如果发现大蒜变软,则可以关火。——这就是“判断”
变量的类型有很多种,常用的是,字符串/列表/元组/集合/Map等
这些与《数据结构》中的数组、链表、字典等等都是一样的。
(3)Python示例
运行结果:
2.2.从“面向对象”的角度看Python
(1)Python于“面向对象”的作用
Python通过提供类、对象等工具,描述面向对象中划分的类别。
(2)Python提供了哪些工具
1个类、类的关系(组合、继承)
还是用上面的例子来讲解:整个做油焖大虾的过程,如果由1个人负责,职责不清楚,并且,为什么要做油焖大虾呢?
于是,我们按照“面向对象”来划分了3个类。
吃货类:负责要求“做油焖大虾”,负责“吃油焖大虾”;
洗虾工:负责洗虾;
大厨:负责做油焖大虾;
无论是吃货类、洗虾工类、大厨类,都有自己的属性、方法——请参见“第2天 关于面向对象”
吃货类包含了洗虾工类和大厨类——组合
洗虾工的爸类有一个帅不帅的方法,洗虾工作为儿子就继承了——继承
(3)Python代码示例
定义的洗虾工的爸、洗虾工、吃货、大厨类:
调用示例:
代码运行结果:
2.3.从“技术地图”的角度看Python
(1)在前端的应用
(2)在后端的应用
这里多说一句,在如今大数据、AI的热潮中,python在后端开发中,稳稳的占据了“数学计算”和“数据采集和解析”的地位。
2.4.Python其它的“常(奇)用( 巧)技(淫)巧(技)”
文件操作:读写文本文件、office文件等
文件解析:xpath等
Python的“三引号字符串”
Python的特殊函数、属性:__name__、__dict__、__init__、__del__、@classmethod等
上述“常用技巧”不在本文的主题范围,后续单独列举Python文集展开。
3.总结
如何快速学习一种新的编程语言(Python)?
从“面向过程”的角度,快速找到Python中与面向过程有关的知识点。
从“面向对象”的角度,快速找到Python中与面向对象有关的知识点。
从“技术地图”的角度,快速浏览Python在技术地图的各个领域中已有的开源框架。
从“常用技巧”的角度,快速找到Python与其它语言不同的、常用的小技巧点。
按照上述方法,算得上快速入门了,然后就是在实战中,逐步熟练各个技术点了。
今天就到这里了。。。over。。。