谁会成为AI 和大数据时代的第一开发语言?这本已是一个不需要争论的问题。如果说三年前,Matlab、Scala、R、Java 和 Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明确了,特别是前两天 Facebook 开源了 PyTorch 之后,Python 作为 AI 时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅。

不过声音市场上还有一些杂音。最近一个有意学习数据科学的姑娘跟我说,她的一个朋友建议她从 Java 入手,因为 Hadoop 等大数据基础设施是用 Java 写的。无独有偶, 上个月 IBM developerWorks 发表的一篇个人博客 ,用职位招聘网站indeed 上的数据做了一个统计。这篇文章本身算得上是客观公正,实事求是,但传到国内来,就被一些评论者曲解了本意,说 Python 的优势地位尚未确立,鹿死谁手尚未可知,各位学习者不可盲目跟风啊,千万要多方押宝,继续撒胡椒面不要停。

在这里我要明确表个态,对于希望加入到 AI 和大数据行业的开发人员来说,把鸡蛋放在 Python 这个篮子里不但是安全的,而且是必须的。或者换个方式说,如果你将来想在这个行业混,什么都不用想,先闭着眼睛把 Python 学会了。当然,Python不是没有它的问题和短处,你可以也应该有另外一种甚至几种语言与 Python 形成搭配,但是Python 将坐稳数据分析和 AI 第一语言的位置,这一点毫无疑问。我甚至认为,由于 Python 坐稳了这个位置,由于这个行业未来需要大批的从业者,更由于Python正在迅速成为全球大中小学编程入门课程的首选教学语言,这种开源动态脚本语言非常有机会在不久的将来成为第一种真正意义上的编程世界语。

讨论编程语言的优劣兴衰一直被认为是一个口水战话题,被资深人士所不屑。但是我认为这次 Python 的上位是一件大事。请设想一下,如果十五年之后,所有40岁以下的知识工作者,无分中外,从医生到建筑工程师,从办公室秘书到电影导演,从作曲家到销售,都能使用同一种编程语言进行基本的数据处理,调用云上的人工智能 API,操纵智能机器人,进而相互沟通想法,那么这一普遍编程的协作网络,其意义将远远超越任何编程语言之争。目前看来,Python 最有希望担任这个角色。

Python 的胜出令人意外,因为它缺点很明显。它语法上自成一派,让很多老手感到不习惯;“裸” Python 的速度很慢,在不同的任务上比C 语言大约慢数十倍到数千倍不等;由于全局解释器锁(GIL)的限制,单个Python 程序无法在多核上并发执行;Python 2 和 Python 3 两个版本长期并行,很多模块需要同时维护两个不同的版本,给开发者选择带来了很多不必要的混乱和麻烦;由于不受任何一家公司的控制,一直以来也没有一个技术巨头肯死挺 Python ,所以相对于 Python 的应用之广泛,其核心基础设施所得到的投入和支持其实是非常薄弱的。直到今天,26岁的Python 都还没有一个官方标配的 JIT 编译器,相比之下, Java 语言在其发布之后头三年内就获得了标配 JIT 。

另一个事情更能够说明问题。Python 的 GIL 核心代码 1992 年由该语言创造者 Guido van Rossum 编写,此后十八年时间没有一个人对这段至关重要的代码改动过一个字节。十八年!直到2010年,Antoine Pitrou才对 GIL 进行了近二十年来的第一次改进,而且还仅在 Python 3.x 版本中使用。这也就是说,今天使用 Python 2.7 的大多数开发者,他们所写的每一段程序仍然被26年前的一段代码牢牢制约着。

说到 Python 的不足,我就想起发生在自己身上的一段小小的轶事。我多年前曾经在一篇文章里声明自己看好 Python,而不看好 Ruby。大概两年多以前,有一个网友在微博里找到我,对我大加责备,说因为当年读了我这篇文章,误听谗言,鬼迷心窍,一直专攻 Python,而始终对 Ruby 敬而远之。结果他Python 固然精通,但最近一学 Ruby,如此美好,如此甜蜜,喜不自胜,反过来愤然意识到,当年完全被我误导了,在最美的年华错过了最美的编程语言。我当时没有更多的与他争辩,也不知道他今天是否已经从Python后端、大数据分析、机器学习和 AI 工程师成功转型为Rails快速开发高手。我只是觉得,想要真正认识一件事物的价值,确实也不是一件容易的事情。

Python 就是这样一个带着各种毛病冲到第一方阵的赛车手,但即便到了几年前,也没有多少人相信它有机会摘取桂冠,很多人认为 Java 的位置不可动摇,还有人说一切程序都将用 JavaScript重写。但今天我们再看,Python 已经是数据分析和 AI的第一语言,网络攻防的第一黑客语言,正在成为编程入门教学的第一语言,云计算系统管理第一语言。Python 也早就成为Web 开发、游戏脚本、计算机视觉、物联网管理和机器人开发的主流语言之一,随着 Python 用户可以预期的增长,它还有机会在多个领域里登顶。

而且不要忘了,未来绝大多数的 Python 用户并不是专业的程序员,而是今天还在使用 Excel、PowePoint、SAS、Matlab和视频编辑器的那些人。就拿 AI 来说,我们首先要问一下,AI 的主力人群在哪里?如果我们今天静态的来谈这个话题,你可能会认为 AI 的主力是研究机构里的 AI 科学家、拥有博士学位的机器学习专家和算法专家。但上次我提到李开复的“AI红利三段论”明确告诉我们,只要稍微把眼光放长远一点,往后看三至五年,你会看到整个 AI 产业的从业人口将逐渐形成一个巨大的金字塔结构,上述的 AI 科学家仅仅是顶端的那么一点点,95% 甚至更多的 AI 技术人员,都将是AI 工程师、应用工程师和AI 工具用户。我相信这些人几乎都将被Python 一网打尽,成为 Python 阵营的庞大后备军。这些潜在的 Python 用户至今仍然在技术圈子之外,但随着 AI 应用的发展,数百万之众的教师、公司职员、工程师、翻译、编辑、医生、销售、管理者和公务员将裹挟着各自领域中的行业知识和数据资源,涌入 Python 和 AI 大潮之中,深刻的改变整个 IT,或者说 DT (数据科技)产业的整体格局和面貌。

为什么 Python 能够后来居上呢?

如果泛泛而论,我很可以列举 Python 的一些优点,比如语言设计简洁优雅,对程序员友好,开发效率高。但我认为这不是根本原因,因为其他一些语言在这方面表现得并不差。

还有人 认为 Python 的优势在于资源丰富,拥有坚实的数值算法、图标和数据处理基础设施,建立了非常良好的生态环境,吸引了大批科学家以及各领域的专家使用,从而把雪球越滚越大 。但我觉得这是倒因为果。为什么偏偏是 Python 能够吸引人们使用,建立起这么好的基础设施呢?为什么世界上最好的语言 PHP 里头就没有 numpy 、NLTK、sk-learn、pandas 和 PyTorch 这样级别的库呢?为什么 JavaScript 极度繁荣之后就搞得各种程序库层次不齐,一地鸡毛,而 Python 的各种程序库既繁荣又有序,能够保持较高水准呢?

我认为最根本的原因只有一点: Python 是众多主流语言中唯一一个战略定位明确,而且始终坚持原有战略定位不动摇的语言 。相比之下,太多的语言不断的用战术上无原则的勤奋去侵蚀和模糊自己的战略定位,最终只能等而下之。

Python 的战略定位是什么?其实很简单, 就是要做一种简单、易用但专业、严谨的通用组合语言 ,或者叫胶水语言,让普通人也能够很容易的入门,把各种基本程序元件拼装在一起,协调运作。

正是因为坚持这个定位,Python 始终把语言本身的优美一致放在奇技妙招前面,始终把开发者效率放在CPU效率前面,始终把横向扩张能力放在纵向深潜能力之前。长期坚持这些战略选择,为 Python 带来了其他语言望尘莫及的丰富生态。

比如说,任何一个人,只要愿意学习,可以在几天的时间里学会Python基础部分,然后干很多很多事情,这种投入产出比可能是其他任何语言都无法相比的。再比如说,正是由于 Python 语言本身慢,所以大家在开发被频繁使用的核心程序库时,大量使用 C 语言跟它配合,结果用 Python 开发的真实程序跑起来非常快,因为很有可能超过 80% 的时间系统执行的代码是 C 写的。相反,如果 Python 不服气,非要在速度上较劲,那么结果很可能是裸速提高个几倍,但这样就没人有动力为它开发 C 模块了,最后的速度远不如混合模式,而且很可能语言因此会变得更复杂,结果是一个又慢又丑陋的语言。

更重要的是,Python 的包装能力、可组合性、可嵌入性都很好,可以把各种复杂性包装在 Python 模块里,暴露出漂亮的接口。很多时候,一个程序库本身是用 C/C++ 写的,但你会发现,直接使用 C 或者 C++ 去调用那个程序库,从环境配置到接口调用,都非常麻烦,反而隔着一层,用其python 包装库更加清爽整洁,又快又漂亮。这些特点到了 AI 领域中,就成了 Python 的强大优势。Python 也借助 AI 和数据科学,攀爬到了编程语言生态链的顶级位置。Python 与 AI绑在一起,对它们来说,无论是电子商务、搜索引擎、社交网络还是智能硬件,未来都只是生态链下游的数据奶牛、电子神经和执行工具,都将听命于自己。

对编程语言发展历史缺乏了解的人可能会觉得,Python 的战略定位是犬儒主义和缺乏进取心的。但事实证明,能同时做到简单而严谨、易用而专业,是很难的,而能够坚守胶水语言的定位,更是难上加难。

有的语言,从一开始就是出于学术而非实用的目的,学习曲线过于陡峭,一般人很难接近。有的语言,过于依赖背后金主的商业支持,好的时候风光无限,一旦被打入冷宫,连生存下去都成问题。有的语言,设计的时候有明确的假想场景,要么是为了解决大规模并发,要么是为了解决矩阵运算,要么是为了做网页渲染模板,一旦离开这个场景,就各种不爽。更多的语言,刚刚取得一点成功,就迫不及待的想成为全能冠军,在各个方向上拼命的伸展触角,特别是在增强表达能力和提升性能方面经常过分积极,不惜将核心语言改得面目全非,最后变成谁都无法掌控的庞然大物。相比之下,Python 是现代编程语言设计和演化当中的一个成功典范。

Python 之所以在战略定位上如此清晰,战略坚持上如此坚定,归根结底是因为其社区构建了一个堪称典范的决策和治理机制。这个机制以 Guido van Rossum (BDFL,Pythoners 都知道这是什么意思), DavidBeazley, Raymond Hettinger 等人为核心,以 PEP 为组织平台,民主而有序,集中而开明。只要这个机制本身得以维系,Python 在可见的未来里仍将一路平稳上行。

最有可能向 Python 发起挑战的,当然是Java。Java 的用户存量大,它本身也是一种战略定位清晰而且非常坚定的语言。但我并不认为 Java 有很大的机会,因为它本质上是为构造大型复杂系统而设计的。什么是大型复杂系统?就是由人清清楚楚描述和构造出来的系统,其规模和复杂性是外生的,或者说外界赋予的。而 AI 的本质是一个自学习、自组织的系统,其规模和复杂性是一个数学模型在数据的喂养下自己长出来的,是内生的。因此,Java大多数的语言结构对于大数据的处理和 AI 系统的开发显得使不上劲,你强的东西这里用不上,这里需要的东西你做起来又别扭。而 Python 在数据处理方面的简洁强悍早就尽人皆知。对比两个功能相同的 Java 和 Python 机器学习程序,正常人只要看两眼就能做出判断,一定是 Python 程序更加清爽痛快。

大概在 2003 或者 2004 年的时候,我买过一本 Python 的书,作者是一位巴西人。他说自己之所以坚定的选择 Python,是因为他小时候经常梦到未来世界将由一条大蟒蛇(蟒蛇的英文为python)统治。我当时觉得这哥们好可怜,做个梦都能梦到这么恐怖的场景。但今天来看,也许他只是像黑客帝国里的程序员安德森一样,不小心穿越到未来,并且窥探到了世界的真相。

Python 为何能坐稳 AI 时代头牌语言相关推荐

  1. 微信企业号突飞猛进,移步到微为何坐稳移动审批头把交椅

    微信企业号于2014年9月18日正式上线,第一版本的微信企业号也正是面向企业.事业单位.政府机关以及社会化组织开放使用,企业号的定位是作为一个互联网的连接器,实现员工与员工.企业与上游供应商.企业与下 ...

  2. python人工智能的重要性_为什么说Python是AI时代必备技能?

    如今,人工智能作为一项划时代的技术,它将催生时代的变革,带来划时代的机遇. 而Python作为当下最为简洁.优雅的语言,近年来和人工智能一样,地位逐渐上升,甚至被专家称为"AI时代必备技能& ...

  3. 晶科能源坐稳全球光伏组件制造商“头把交椅”

    第三季度太阳能产品总出货量1606兆瓦,继续领跑全球 晶科能源公司近日公布第三季度财报.财报显示,太阳能产品总出货量为1606兆瓦,同比增长41.6%.总收入为57亿元人民币,同比增长39%.毛利率水 ...

  4. AI时代!我选Python因为Python是人工智能的未来

    人工智能时代的到来,很多文章说这么一句:"不会python,就不要说自己是程序员",这说的有点夸张了,但确实觉得目前python这个语言值得学习,而且会python是高薪程序员的必 ...

  5. 零基础学python裴帅帅_人工智能时代,爬虫如此简单。

    但我们伟大的苹果之父史蒂夫·乔布斯说,「每个人都应该学习编程,因为它教会你思考的方式」. 同时,英国牛津大学研究称,未来20年英国35%现有工作将自动化. 日本研究人员称,在未来的十到二十年之,日本将 ...

  6. DB-Engines 9月数据库排名:ClickHouse一路猛冲,Redis坐稳第7

    导读:DB-Engines最近发布了2020年9月份的数据库排名.该网站根据数据库管理系统的受欢迎程度对其进行排名,实时统计了358种数据库的排名指数. 来源:华章计算机(hzbook_jsj) DB ...

  7. 威马百亿融资的背后是百度决胜AI时代的决心

    文|魏启扬 来源|智能相对论(aixdlun) 继蔚来和理想先后上市,小鹏汽车不久前赴美递交招股书后,威马汽车也加快了上市的步伐. 9月22日,威马汽车官宣完成总额100亿人民币D轮融资,这也是造车新 ...

  8. 年薪200W+的 “ChatGPT提示工程师”,是AI时代下逆袭的好职业吗?

    作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 使用同样的画笔,有人画出百鸟朝凤图,有人画出小鸡吃米图:同样的道理,用户使用同样的ChatGPT,问看 ...

  9. 小冰拉开人生第二幕:AI时代的“Office”问世,你的虚拟男友“复活”了

    作者 | Just 出品 | AI科技大本营(ID:rgznai100) 2014年,小冰正式推出第一代产品,以对话式聊天机器人形式迅速积累训练数据.2020年8月20日,已从微软独立分拆的小冰团队宣 ...

最新文章

  1. 算法必知 --- LRU缓存淘汰算法
  2. 《大话设计模式》勘误
  3. Redis cluster日常管理【一】
  4. 微信在计算机基础中的辅助作用,基于微信课后辅导在计算机基础教学中应用.doc...
  5. 设计模式——抽象工厂
  6. safari浏览器横屏怎么设置_如何避免苹果safari自带浏览器“跟踪”你的信息!
  7. oracle数据字典(2.说明)
  8. golang 包含 数组_在 Golang 中如何快速判断字符串是否在一个数组中
  9. 在vSAN中存储ESXi核心转储和暂存分区(2074026)
  10. docker 相关基本命令(updating...)
  11. 复旦 | DialogVED:用于对话响应生成的预训练隐变量编码-解码模型
  12. 【C语言】17-预处理指令3-文件包含
  13. 深度学习之LSTM完全图解
  14. O2O C2C B2B B2C
  15. 计算机用户删除了怎么恢复出厂设置,四种电脑快速恢复出厂设置方法
  16. 集丰照明|LED点光源安装方法
  17. 小红书用户画像分析_用户行为研究:如何做用户画像分析
  18. 图像置乱之评价图像置乱度算法的选择
  19. Python 用OPEN读文件报错 ,路径以及r
  20. 找不到tinyos的官方下载资源看这篇---TinyOS 资源下载地址

热门文章

  1. NO pyvenv.cfg file解决办法
  2. hubot+slack(slack部分)
  3. 新款 MacBook Pro 评测:更好的性能、免费的刘海和更好的显示器
  4. 测试行业3年经验,从大厂裸辞后,面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生
  5. 5月17号,记住这一天
  6. Casio DT930扫描软件
  7. html格式转换word清除格式,Word2010怎么清除格式?word清除格式(图文)教程
  8. 常见的ICE工具和集成开发环境
  9. 阿里云云服务器 ECS SSHKEY登录
  10. Win7(x64) + Cygwin + ns2.35 安装配置教程