你好,游客 登录
背景:
阅读新闻

Python语言,如何在人工智能和大数据时代中占有效的优势

[日期:2018-01-18] 来源:网络大数据  作者: [字体: ]

  本文探讨了Python语言在AI领域的优势与运用。

大数据

  谁会成为AI 和大数据时代的第 开发语言?

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

  不过声音市场上还有 些杂音。较近 个有意学习数据科学的姑娘跟我说,她的 个朋友建议她从 Java 入手,因为 hadoop大数据基础设施是用 Java 写的。

  无独有偶,上个月 IBM developerWorks 发表的 篇个人博客(https://www.ibm.com/developerworks/community/blogs/jfp/entry/What_Language_Is_Best_For_Machine_Learning_And_Data_Science?lang=en),用职位招聘网站indeed 上的数据做了 个统计。

  这篇文章本身算得上是客观公正,实事求是,但传到国内来,就被 些评论者曲解了本意,说 Python 的优势地位尚未确立,鹿死谁手尚未可知,各位学习者不可盲目跟风啊,千万要多方押宝,继续撒胡椒面不要停。

  在这里我要明确表个态,对于希望加入到 AI 和大数据行业的开发人员来说,把鸡蛋放在 Python 这个篮子里不但是安全的,而且是必须的。

  或者换个方式说,如果你将来想在这个行业混,什么都不用想,先闭着眼睛把 Python 学会了。

  当然,Python不是没有它的问题和短处,你可以也应该有另外 种甚几种语言与 Python 形成搭配,但是Python 将坐稳数据分析和 AI 第 语言的位置,这 点毫无疑问。

  我甚认为,由于 Python 坐稳了这个位置,由于这个行业未来需要大批的从业者,更由于Python正在迅速成为 大中小学编程入门课程的教学语言,这种开源动态脚本语言非常有机会在不久的将来成为第 种真正意义上的编程 语。

  讨论编程语言的优劣兴衰 直被认为是 个口水战话题,被资深人士所不屑。但是我认为这次 Python 的上位是 件大事。

  请设想 下,如果十五年之后,所有40岁以下的知识工作者,无分中外,从医生到建筑工程师,从办公室秘书到电影导演,从作曲家到销售,都能使用同 种编程语言进行基本的数据处理,调用云上的人工智能 API,操纵智能机器人,进而相互沟通想法,那么这 普遍编程的协作网络,其意义将远远超越任何编程语言之争。目前看来,Python 较有希望担任这个角色。

  Python 的胜出令人意外,因为它缺点很明显。

Python语言,如何在人工智能(AI)中,占的优势

  它语法上自成 派,让很多老手感到不习惯;“裸” 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语言,如何在人工智能(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)中,占的优势

  Python 现已逐步在网络爬虫、数据剖析、AI、机器学习、Web 开发、金融、运维、检验等多个领域扎根强大。随着它的被认可程度逐步提高,学习并把握这门言语的人群份额越来越大,许多公司也将为抢占该领域高精尖人才做着殊死搏斗!能够说,未来谁具有人工智能领域的技术权威,谁将会具有新年代互联网较高话语权。那么,在此之中,学好Python,必将让你在编程生计中大刀阔斧,勇闯天边!Python无疑将会成为AI年代下的新宠儿,





收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款