读芯术原创出品 | 作者:六个太阳
前方敌袭!眼看就要冲到阵前,你该怎么办?
你手下的大将纷纷出谋划策。
c:拿出一根棍子,一个一个把敌人砸死。c++:用机关枪。java:我打电话叫十万个基佬!perl:我会功夫!ruby:大喊着拿着武士刀冲上去了。lisp:我先把敌人分组一下吧!haskell:我们可以用歼星舰啊!php:让我们把敌人老死吧!python:用氢弹。
这是网络上的一个关于编程语言能力值的段子。
听起来,python能给敌人造成更大伤害,它的功能也似乎最是强大。
难怪小学生和高中生都要开始接触和学习python语言。
不过奇怪的是,python语言虽然进了中小学生的课堂,但奇怪的是,除了把它列入学生自愿报考的计算机二级考试的自选项目之外,很少有大学开设python这门课。
你说,这是为啥?
python的江湖地位
虽说年龄辈分不及lisp、pascal、c,但公开发行于1991年的python走到今天,也算是个老江湖了。
下面这组数据,将让你看到python作为老江湖的新地位。
2017年7月,ieee spectrum 杂志发布了一年一度的编程语言排行榜,通过综合10 个重要线上数据源,对 48 种语言进行排行,python夺冠。
2017年2月,python 正式迁移到源码托管平台 github,而在10月份的github 年度开发者报告中,python 就超过了 java,排在“最受欢迎的语言编程语言 top 15”的第二位。
11月由数据平台 kaggle发布的《2017 机器学习及数据科学调查报告》显示,python是数据科学家使用最多的语言。
为什么大学不开python课?
既然python这么有潜力,小学生都学,为什么大学的课堂里却很少见?反而是c语言成为大多数计算机学生的必修课?
关于这一现象的讨论,大致可以分为几个方面的观点:
c是基础:基础打得好,学啥都so easy
当今最受欢迎的10种语言,除去c语言,剩下的9种中,有7种都直接使用、间接引用或部分借鉴了c语言的语法,从这一点来看,c语言是一票编程语言的基础。
多数人认同的观点是,c语言学好了,学任何编程语言都是小菜一碟,学任何框架你都会从原理上去理解。学生更能了解到编程语言从面向过程到面向对象的发展,很好的锻炼思维模式的转换,了解软件底层的原理和设计逻辑,培养基本的编程思维能力,适合小白启蒙。有了c的基础,再接触别的语言,就像工匠从锤子换成螺丝刀一样。
大学重视的是基础和自学能力,高等教育也不是功利性的教育,这也是大学和蓝翔一类的技校和速成的培训机构不一样的地方。
python容易学,但并不适合入门
在介绍python时,“简单易学”是最常被列举的优点,看起来似乎很适合入门。但有一种观点对此并不认同,说是python其虽然简单,但并不适合新手入门。
python因为简洁让不少程序猿青睐有加,但这个简洁在于它隐藏了很多细节,但它的计算模型还是复杂的,而理解这些复杂度,是能够顺畅使用python的前提。
但对还不知道编程是怎么一回事的新人,就很难理解——呀,为什么这个地方能这么写,不能那么写?要解释的部分,恰恰是python语言的简单背后藏着的那些东西。
所以在一些人看来,对于新生来说,入门编程语言的简单,不是指代码量上的短,而是指思维、语法和计算模型上的简单,让新手可以集中注意力理解少数几个概念,不需要纠结于很多惯用法、隐藏的细节等等,语法上的简洁是给熟手加快进度用的,并不适合新人入门用。与其最后只学个皮毛,还不如教一种学生能吃透的语言,以后触类旁通。
技术迭代快,教材、课程、师资难跟上
现在的编程语言的迭代是很快的,假如你刚在2017年学完python2,不太好的消息是,python核心团队计划,从2019年1月1日开始,任何新的功能版本都只支持python3。在2020年将停止支持python 2。
费了时间精力学到了,发现马上要out了,也是欲哭无泪。
无论是老师还是教材出版社,都没法这么与时俱进。如果要跟着时代不停的出新教材、更换教学内容、课程讲义等等是很头疼的事情,不管是成本上还是时间上。如果老师坚持现有的够用了,新计划也很难推行。
python并不像你以为的那样完美
大约2010年之前,python在国内还只是一门小众语言,但最近几年猛地火了。主要是乘了云计算、大数据、以及人工智能的东风。网络爬虫、机器学习、人工智能、数据分析等领域,python都表现不俗。
但它也不是没有缺点。
比如,运行速度比c和c++慢很多,因为python是解释型语言,代码在执行时会一行一行地翻译成cpu能理解的机器码,这个翻译过程非常耗时。
它用缩进来区分语句关系的方式还是给很多初学者带来了困惑,就像我们前面提到的那样,而且即便是很有经验的python程序员,也可能陷入陷阱当中。
自学干货
其实还有一个原因也被认为是大学不开设python课程的原因,因为它相比其他语言,简单容易学
所以,好马跑得快,自学就好了,不用等学校等老师来教。
如果你已经有了编程的基础,那么技多不压身,再来学学python;如果你只想体会一下做程序猿的感觉,也完全可以一试,做一个自己的小项目,什么语法不理解也没关系,拿来就用。
《简明 python 教程》《笨方法学 python》廖雪峰的python教程视频:斯坦福大学公开课 编程范式
视频:哈尔滨工业大学 程序设计入门 python
读芯君开扒
我能你不能,该服你还得服
说起编程语言,似乎在程序猿之间存在着这样一条鄙视链:写汇编语言的鄙视写c语言的,写c语言的都鄙视写c++的,写c++的鄙视java和c#的,写java和c#的则相互鄙视,然而,所有的都鄙视写php的……不知道写python的在不在这条鄙视链当中?
其实吧,不同的语言各有优缺点,最佳的应用场景可能有所不同,但很多也是互通的,比如c++、java就可以适应各种应用场景,python的功能也同样强大。
编程语言是工具,拿手顺手就ok。
学会一门编程语言,用得顺手,然后精通它,把它变成你的拿手绝活,成为大牛大咖,就是一件了不起的事。哪怕身处歧视链的低端,但我能做的,你不能做,该服你还得服。
不过,管他什么语言,有女朋友的程序猿才是雄踞在鄙视链条顶端的人。
众声喧哗年代,我们更关注ai落地的“最后一公里”
欢迎关注读芯术,读芯君爱你!
图片来源:网络