有位C++的大神在讲课时提到了Python, 听课的同学问道: 我是不是需要学习一下Python?
大神说:“Python 这么简单还用学吗? ”
python培训机构
在大神的眼中, 像Python这样简单的语言, 看半天就应该能上手编程了, 根本不用战战兢兢地抱着一本大厚书去啃。
大神是有资格这么说,毕竟C++是一门非常复杂的语言, 这么复杂的都能搞定, 其他的自然不在话下。
从纯语言的角度来看,这么说完全是没有问题的,我相信很多人,如果你学会了一门编程语言,开始学第二门的时候,都会有类似的感觉。
比如你学会了Java, 然后开始看Python, 会发现有很多相似之处。
例如: 编程中最常用的一些数据结构非常相像:
PythonJava
String
String
List List
ArrayList, LinkedList 等
DictionaryMap
HashMap, TreeMap,LinkedHashMap等
SetSet
HashSet, TreeSet, LinkedHashSet 等
流程控制语句也很像,无非都是if...else , for , while 等等。
面向对象的编程都要有类和对象,成员变量,成员方法,都要有封装、继承、多态。
文件IO也是如此,无非就是打开一个文件,定位到某个地方进行读写操作,关闭文件。
每个高级语言都支持多线程编程, Python也不例外,可以轻松地创建线程,线程之间也有同步和互斥, 也使用ThreadLocal来保存每个线程独有的数据, 名称都和Java一样。
网络编程无非就是Socket, XML解析就是DOM和SAX, 邮件发送使用SMTP, POP3......
所以有了一门语言相对复杂的语言做基础(如Java), 再去学习Python, 确实非常容易。 半天时间就能把Python看个差不多,然后直接就可以写程序了, 在写的过程中如果哪个地方不清楚了, API接口名称忘记了(尤其是那些细微差别的地方),去翻参考书、去网上搜,很快搞定。
刚开始编程的时候比较慢, 等你熟练了以后,会越来越快。
一门高级语言的基础概念其实就那么多:数据类型、集合、流程控制、面向对象、文件、Socket、XML、JSON 等, 你从某一门语言中学会了,切换到另外一门,所要变换的无非就是基本的语法、API接口、惯用法和最佳实践。
可能有人要说了,这些都是基础的东西,只能让我写点小程序,做不了什么大事啊。
没错,这些东西都是基础,想做出有用的程序,还必须得学会使用类库和框架。但是不同类库和框架所依赖的基础知识和概念也是相通的。
就拿Web编程来说,必须要掌握几个基础知识是一样的:HTTP协议,HTML, Javascript, CSS,SQL。 然后不同语言,不同框架要解决的问题也是一样的:
URL 和 代码的映射
数据的验证、转换和绑定
Web安全
数据库的访问, O/R Mapping
用什么技术来生成Web页面?
如何把对象变成XML或者JSON字符串?
通过一门语言,把这些基本原理掌握了,换到另外一个语言和框架,真的不难 。
如果再向上走,进入设计层面,把业务需求抽象成各种概念,设计高内聚、低耦合的模块,那和具体的语言关联度就更小了。
回到文章最初的话题,我其实想表达的是:不用着急去追逐那些热门的编程语言,只要把一门语言学精了,把一些基础概念和基础知识掌握了,再去学别的,真的不难, 就是一个知不知道,熟不熟练的问题。