您好,欢迎来到上海分类信息网
免费发信息

人生苦短,我用 Python

2024-4-20 20:42:39发布3次查看ip:发布人:
很久没有挖一个坑转身离去之后,坑边的群众久久驻足不愿离去,不停的冲着黑漆漆的坑底喊话「啥时回来啊~~」。行走江湖,讲究一个信字。python这一篇,来了。
我和 python
我接触 python并不算早,第一次使用 python写生产系统的程序是2004年,那时候我已经有了几年的编程经验。当然了,现在这年头说早晚都不合适,昨天我说2000年就开始使用 vim编程了,有小伙伴回复,那年我才12,这……多少有点尴尬。
早期用 python主要写一些服务器端的工具,后来也写后端服务,再后来还写过内容抓取、数据分析和 alfred的插件等一系列杂七杂八的东西,简单的工具用 shell写,复杂的和庞大的用 c或java实现,中间的三不管地带,用 python就好,每次都不会让你失望。2005到2006年那段时间我参加了一个类似 corba的分布式应用系统的开发,与国外的程序员合作,写了大量的 python代码。
python有什么好处?功能强大,使用简单,语言唯一性的特征明显(唯一性的意思就是你不能用十八种写法实现一个功能),而且具备海量的第三方库……python程序员最爱说的一句话是:人生苦短,我用 python(也是 python之父的名言)。这句话与「php是世界上最好的编程语言」一样并世无双,可谓「倚天不出,谁与争锋」。
python支持交互式编程、面向对象编程、函数式编程、面向切面编程、当然还有元编程。目前这门编程语言在兵器谱的排名是第四,前三位分别是java、c和c++。江湖上人称四哥的,就是 python。
python起源
python之父是guidovan rossum,荷兰人。每个编程语言的作者都是一个技术传奇,guido也不例外。他1982年从阿姆斯特丹大学毕业,获得了数学和计算机两个硕士学位,最爱做的事情就是编写代码。那个时代,流行的语言是汇编、c、fortran等,这些语言要求编程者对计算机的运行机制有精确的了解,以充分利用硬件资源达成自己的目标,因为硬件资源实在是太匮乏和宝贵了,程序员们需要榨干计算机硬件的每一滴血和汗才能完成任务。
这给 guido带来很多困惑,用 c实现个功能吧,完成度没有问题,但是需要耗费大量时间。用 shell吧,面对复杂问题又束手无策。shell是unix/linux下的脚本语言,也叫胶水语言,它可以把系统的各种功能通过管道(比如:find . -name “*.java” | xargs grep chjq)的方式连接起来实现系统运维、定时任务、文件处理、程序安装卸载等工作,但是处理复杂的数值运算或系统调用就很麻烦。这时候需求就来了,guido希望一门语言既能像 c语言一样能够全面掌控计算机的资源,也能像 shell一样使用简单,还具备交互性编程能力,轻轻松松编写一些小的工具包。
普通人 ——比如我 ——有了这种需求就会对自己说,再等等,也许隔壁冯老师会做出来呢。冯老师的想法就更简朴了,我又不写代码,关我什么事。幸好 guido没这么想,guido对自己说的是,放着我来!
1989年的冬天,guido为了度过一个有意义的圣诞节,或者为了打发一个无聊的假期,开始编写 python语言的编译器和解释器,灵感来自教学语言 abc(你不知道还有这种语言吧)。为什么叫 python?因为 guido很喜欢bbc电视剧——蒙提·派森的飞行马戏团(monty python’s flying circus)。abc则是由 guido参加设计的一种教学语言。guido一直认为 abc这种语言非常优美和强大,是专门为非「专业程序员」设计的。但是 abc语言并没有成功,究其原因,guido认为是非开放造成的。guido决心在 python中避免这一错误,这一次他成功了。
1991年,第一个 python版本诞生,编译器是 c语言实现的,python语言可以非常方便的调用 c语言实现的库(这一点太重要了)。从一问世,python就是一个动态语言,面向对象编程的语言,具备类、函数、异常处理、列表(list)、词典(dict)、元组等数据类型。
python的语法同时受到了 c和 abc语言的影响,比如采用 def来定义函数,比如等号赋值,比如强制缩进。如果你是个 c或 java程序员,习惯了用大括号来划分程序域 ——其实大部分语言都是这么做的 ——看到 python是用缩进来搞定这件事,你马上会觉得「holy shit」,其实这种做法来自 abc,guido的想法是,如果「常识」上确立的东西,没有必要过度纠结。当然,这种常识是 guido的常识,至于其他人,你们会习惯的。
事实也是如此, python吸引了大量的程序员,他们开始协同改进这门语言,python开始了改变世界的征程。
2000年10月16日 python 2.0发布,这次增加了实现完整的垃圾回收,并且支持 unicode编码。guido在开发的过程中一直遵循了开放的原则,社区协作的模式从最初的邮件列表改为开源的方式,python吸收了大量开发者和编程语言的特点,比如,python中的正则表达参考了 perl,而内置函数 lambda,map,reduce,filter等则参考了lisp,无数优秀的程序员为 python添砖加瓦,python搞不定的,没关系,我们用 c实现,于是 python有了大量的函数库,尤其在数据分析和科学计算领域。另外,函数在 python中是一等公民,所以 python同时也是一种函数式编程语言。
python稳步发展,成为了一代老牌编程语言。
python的应用
每个编程语言都有自己的hello world,python最为简单。如果你有台mac电脑,python的 sdk是默认安装的。打开终端,输入 python进入 python shell的交互界面,然后键入
>>> print “hello world”
程序写完了。python这么简单,是不是一门玩具语言呢?当然不是。nasa的火箭发射仪表盘系统使用了 python的 tkinter ——支持实时响应的 gui库。nasa的太阳物理学分词库 sunpy也是基于 python写的。youtube基于开发速度的考虑,大部分代码是 python实现的,youtube的流量有多大,老百姓不知道,程序员应该知道。google、dropbox更是大量采用 python语言(guido工作过的两个地方)。国内的豆瓣、知乎也是 python的重度使用者。
虽然 python已经被广泛使用了,但前几年它在兵器谱上总是排 8-12的位置。最近两年事情开始发生变化,去年 python开始迅速攀升至第五名,今年更进一步,排名第四。为什么会发生这种变化呢?并不是 python增加了什么了不得的特性,而是人工智能和机器学习的时代来临了。
ai时代的 python
我来做一个不负责任的判断,python将成为大数据、ai和机器学习时代的第一编程语言。可以想象这样一个场景,python和 java、go、c、c#、ruby、php……坐在圆桌前开会,python抱着头后仰在 herman miller工程椅上,慵懒的对其他编程语言说:
对不起,我不是针对你,我是说,所有在座的各位,都只能挣第二。
当然了,这个语言范畴是限定在大数据、ai和机器学习领域。但是,如果这个领域在未来的应用足够广泛,那 python直接灭掉java当大哥也不是不可能的。
python性能这么差,对多核并发编程支持的也不好,并且长期分裂成了 python 2和 python 3两个阵营,给开发者带来了诸多不便和麻烦,为什么能后来者居上呢?
因为 python遵循了现代的木桶原理。
python的木桶原理
我在自己的小密圈(目前已经涨价到128元,因为贵即是好)提了一个问题:为什么很多数据分析和机器学习的框架都会选用 python做主要的开发或首选支持的语言呢?
一位女程序员颖儿的回答最靠谱:免费,简洁,生态好,库丰富,操心少;之前刷机器学习的题,用 c#写了一坨儿。结果人家引个 scipy库,三行代码搞定。
scipy是一个数值计算库,numpy是 python另一个开源的数值计算扩展库,pandas是基于 numpy的数据分析工具,matplotlib是图形绘制库,最近火热的 scikit-learn则是开源的机器学习框架。这些库对于 python来说就三个字:「随便用」。长此以往,围绕 python语言构建出来的生态库让其他语言望尘莫及,尤其是在科学计算、数据分析和机器学习领域。
以前我们说「木桶原理」是讲一只水桶能装多少水取决于它最短的那块木板,所以我们应该去思考和补齐自己的短板,才能成事。到了现代,知识爆炸信息拥堵,没人有时间去补齐短板,能够让自己的长板足够长就不错了。短板怎么办,找别人来补齐啊。能协作的组织和人才是最有生命力的。
python也是一样。自诞生以来,一直保持了简单、开放、语言工业化,具备良好的封装、组合、嵌入能力,开发效率惊人。python把这些方面做到极致,其他的事情,留给别人去干嘛。
你们不是觉得 python慢么,自然有人给开发出 pypy、cython、jython、numba这样的编译器工具来提高 python的效率。要进行科学计算、大数据分析,好了,scipy、pandas诞生了,要机器学习,scikit-learn、theano、pylearn2等机器学习库开发出来了。python调用这些用 c或者fortran开发出来的库比原生语言调用还方便,你说大家能不用 python么?
每当新事物来临的时候,总有很多专家里手对新手们竖起一道高墙,比如机器学习总被放到学术研究和 cs科班出身这堵墙的后面,让人望而生畏。其实,机器学习这个领域,同样是个金字塔,这些专家和博士以及人工智能算法的创造者们,属于塔尖的极少数人,他们发现原理,实现算法,引领潮流,突破极限,然后呢?基于这些算法和原理开发应用和使用应用的,是广大的程序员和人民群众,他们可能没有那么高深的数学知识,不知道 regression和 decision tree算法,不了解散步矩阵……那我们可以用 python调包啊,只要那些包足够成熟就好了。
也许未来每个人与机器沟通的每一句话,就是唤起了一段 python代码呢?
python的分裂
python 2和 python 3已经长期共存了数年之久,原因很复杂,对于这个话题,足够写另一篇文章了。目前官方表示对 2的支持到2020年,但 2的生态库远远大于 3,这就让人很纠结。
前几天有私信小编要python的学习资料,小编整理了一些有深度的python教程和参考资料,从入门到高级的都有,文件已经打包好了,正在学习python的同学可以下载学习学习。文件下载方式:添加weixin括号内(cnsk26)即可下载。首先把代码撸起来!首先把代码撸起来!首先把代码撸起来!重要的事说三遍,哈哈。“编程是门手艺活”。什么意思?得练啊。
该用户其它信息

VIP推荐

上海分类信息网-上海免费发布信息-上海新闻网