为什么人工智能(AI)首选开发语言是Python

人工智能的核心算法是完全依赖于C/C++的,
但是上层逻辑用C++开发效率太低。
Python语法简单而丰富,对C的支持也很好。
~
Python虽然慢但是它只是调用AI接口,
真正的计算全是C/C++写好的数据底层,
用Python只是写相应的逻辑,几行代码就出来了。
~
Java大多数的语言结构对于大数据的处理和 AI 系统的开发显得使不上劲。
更主要的原因是:
Python的开发生态成熟,有很多有用的库可以用。
~
总之,Python作为AI首选语言的地位已经无法撼动。

如果讲运行速度的部分,用C++,
如果讲开发效率,用Python,
谁会用Java这种高不成低不就的语言搞人工智能呢?

Python虽然是脚本语言,但是因为容易学,迅速成为科学家的工具(MATLAB也能搞科学计算,但是软件要钱,且很贵),从而积累了大量的工具库、架构,人工智能涉及大量的数据计算,用Python是很自然的,简单高效。

Python虽然慢但是它只是调用AI接口,真正的计算全是C/C+ +写好的底层,用Python只是写逻辑,即第一步怎么算,第二步怎么算,几行代码就出来了。

换成C++,得先学1个月才能编译通过。不是说用C++写不了上层逻辑,而是代码量太大,开发效率太低,换来总体速度提升1%,不合适。

计算机语言各有适用性,即C/C+ +速度快适合底层写算法,Python慢但适合 上层写逻辑。两者各自牛逼的特点恰好是对方傻逼的特点。

一句话:脚本语言写起来容易!

Python作为脚本语言,运行速度没有C++、Java快,Python到底有没有优势?
这属于一种误解,人工智能的核心算法是完全依赖于C/C++的,因为是计算密集型,需要非常精细的优化,还需要GPU、专用硬件之类的接口,这些都只有C/C+ +能做到。所以某种意义上其实C/C+ +才是人工智能领域最重要的语言。

Python是这些库的API binding,使用Python是因为CPython的胶水语言特性,要开发- -个其他语言到C/C+ +的跨语言接口,Python是 最容易的,比其他语言的f门槛要低不少,尤其是使用Cython的时候。其他语言的f许多都只能导入C的函数入口点,复杂的数据结构大多只能手工用byte数组拼起来,如果还需要回调函数输入那就无计可施了。而CPython的C API是双向融合的,可以直接对外暴露封装过的Python对象,还可以允许用户通过继承这些自定义对象来引入新特性,甚至可以从C代码当中再调用Python的函数(当然,也有一定的条件限制)。不过这也是PyPy这样的JIT解释器的一个障碍。

而且Python历史上也一直都是科学计算和数据分析的重要L具,有numpy这样的底子,因为行业近似所以选择API binding语言的时候会首选Python,同时复用numpy这样的基础库既减少了开发工作量,也方便从业人员上手。

对于希望加入到 AI 和大数据行业的开发人员来说,把鸡蛋放在 Python 这个篮子里不但是安全的,而且是必须的。或者换个方式说,如果你将来想在这个行业混,什么都不用想,先闭着眼睛把 Python 学会了。当然,Python不是没有它的问题和短处,你可以也应该有另外一种甚至几种语言与 Python 形成搭配,但是Python 将坐稳数据分析和 AI 第一语言的位置,这一点毫无疑问。

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


现阶段python的地位

Python语言的学习已经上升到了国家战略的层面上。国家相关教育部门对于“人工智能普及,非常重视,不仅将Python列入到小学、中学和高中等传统教育体系中,并借此为未来国家和社会发展奠定了人工智能的人才培养基础,从而进一步实现人工智能技术的推动和社会人才结构的更迭,正在逐步推行“全民学习python”。甚至流传 – 不懂Python语言,人工智能时代,你将成为新“文盲”。

    现有互联网企业招聘的时候你会发现有个条件:熟悉使用Java,PHP,C/C++ 或者 python,都会带上python这一附带要求,“甚至有的企业HR为了招聘python程序员进而打着Java,PHP ,C。。。。。。等语言的旗号招聘,进来的时候你会发现你愿意转python吗”,咦?什么套路,没听错就是这样的套路,因为市场没有背景好的python开发人员(各大公司像BAT等一线互联网公司对于python语言还不是主要开发语言开,也还没用python来做相应的核心业务开发),背景好的难找,所以变向招聘。一首“凉凉”送给自己。

   厂长(百度CEO李彦宏)在第三届互联网大会中曾表述:靠移动互联网的风口已经没有可能再出现独角兽了,因为市场已经进入了一个相对平稳的发展阶段,互联网人口渗透率已经超过了50%。而未来的机会在“人工智能”。大家都会发现厂长又在带头搞事情,推从“人工智能”,放弃了之前狼厂的O2O战略。然而在百度的吹鼓下“人工智能”不声不响的就这么火起来了,做什么产品都要带上“人工智能”的标签。

AI结合python的背景:

    1:人工智能的核心算法是完全依赖于C/C++的,而且Python历史上也一直都是科学计算和数据分析的重要工具。Python虽然是脚本语言,但是因为容易学,迅速成为科学家的工具(MATLAB等也能搞科学计算,但是软件要钱,且很贵),从而积累了大量的工具库、架构,人工智能涉及大量的数据计算,用Python是很自然的,简单高效。

    2:对于编程只是副业的AI科学家们来说,没那么多时间去学习和使用C++,还是把大量时间用来研究研究算法比较实在。

    3: Python虽然慢但是它只是调用AI接口,真正的计算全是C/C++写好的数据底层,用Python只是写相应的逻辑,几行代码就出来了。换成C++的话,不仅代码量太大,而且开发效率太低,不是说用C++写不了上层逻辑,,而是换来总体速度提升1%,得不偿失。

    4:Python在拥有简洁的语法和丰富的生态环境从而提高开发速度的同时,对C的支持也很好,python结合了语言的优点,又通过对C的高度兼容弥补了速度慢的缺点,自然受到数据科学研究者与机器学习程序员的青睐。

Python的优势:

对于 AI 项目的每个需求,Python 都有很多相应的库。比如用于科学计算的 Numpy,用于高级计算的 Scipy 以及用于机器学习的 Pybrain。而 AIMA(来自 Russell 和 Norvig 的 Artificial Intelligence: A Modern Approach)则是迄今为止人工智能领域最好的库之一。这样的专用程序库大大节省了开发人员在基本级别项目上编码所花费的时间

一、Python是解释语言,程序写起来非常方便,即使转语言的同学也能很快上手
二、Python的开发生态成熟,有很多有用的库可以用
三、Python效率超高,支持很多高效C接口
四:江湖流传:学习周期而言:容易学代码可读性高。
Python入门时间按天计算,C++入门时间按年计算;

  鄙视! 鄙视! 鄙视! 鄙视! 鄙视! 鄙视!
  python善长用十八般兵器,但十八般兵器多数都是C系列

用于通用AI:

AIMA —— Python 实现 Russell 和 Norvig 的‘Artificial Intelligence: A Modern Approach’库。

pyDatalog —— Python 中的逻辑编程引擎

SimpleAI —— Python 实现了“AIMA”一书中描述的许多人工智能算法。它侧重于提供易于使用,有据可查的测试库。

EasyAI —— 简单的 Python 引擎,用于 AI 的双人游戏,如 Negamax, transposition tables, game solving。

用于机器学习:

PyBrain —— 灵活、简单,但对于机器算法任务非常高效,它是 Python 的一个机器学习模块化库。它还提供了各种预定义的环境来测试和比较你的算法。

PyML —— 一款以 Python 编写的侧重于 SVM 和其他内核方法的双边框架。它支持在 Linux 和 Mac OS X 上运行。

scikit-learn —— 旨在提供在各种环境下可重复使用的简单而强大的解决方案:机器学习作为科学和工程的多功能工具。它是一个 Python 模块,它将经典的经典机器学习算法集成在如紧密结合的科学世界的 Python 软件包中(如 numpy,scipy,matplotlib)。

Python是一种通用的脚本开发语言,比其他编程语言更加简单、易学,其面向对象特性甚至比Java、C#、.NET更加彻底,非常适合快速开发,Python在软件质量控制、开发效率、可移植性、组件集成、库支持等方面均处于先进地位!

中国人工智能行业正处于一个创新发展时期,对人才的需求也在同步急剧增长,如今Python语言的学习已经上升到了国家战略的层面上。国家相关教育部门对于“人工智能普及”格外重视,不仅将Python列入到小学、中学和高中等传统教育体系中,并借此为未来国家和社会发展奠定了人工智能的人才培养基础,逐步由底层向高层推动“全民学Python”,从而进一步实现人工智能技术的推动和社会人才结构的更迭。可见Python在人工智能领域的重要性,那么,做人工智能为什么要学Python呢?

人工智能为什么要用Python语言?

1. Python除了极少的事情不能做之外,其他基本上可以说全能,系统运维、图形处理、数学处理、文本处理、数据库编程、网络编程、web编程、多媒体应用、pymo引擎、黑客编程、爬虫编写、机器学习、人工智能等等都可以做。

2. Python是解释语言,程序写起来非常方便,写程序方便对做机器学习的人很重要。

3. Python的开发生态成熟,有很多有用的库可以用。相比而言,Lua虽然也是解释语言,甚至有LuaJIT这种神器加持,但其本身很难做到Python这样。

4. Python效率超高,解释语言的发展已经大大超过许多人的想象。毫无疑问使用Python语言的企业将会越来越多,Python程序猿的人才缺口也将越来越大,认准时机,把握机遇。

对比Python、C++、Java

Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子,还有python的是可移植性、可扩展性、可嵌入性、少量代码可以做很多事,这就是为何人工智能(AI)首选Python”。

设计初衷
java语言,本质上是为构造大型复杂系统而设计的。这些大型复杂系统,是由人清清楚楚描述和构造出来的系统,其规模和复杂性是外生的,或者说外界赋予的。因此,Java大多数的语言结构对于大数据的处理和 AI 系统的开发显得使不上劲。就是说,你强的东西这里用不上,这里需要的东西你做起来又别扭。
而 AI 的本质却是一个自学习、自组织的系统。这个系统的规模和复杂性是一个数学模型在数据的喂养下自己长出来的,是内生的。故 Python 在数据处理方面 显得简洁强悍。对比两个功能相同的 Java 和 Python 机器学习程序,正常人只要看两眼就能做出判断,一定是 Python 程序更加清爽痛快。

虽然Python 慢

虽然与 java/C/C++ 的运行速度的比较,Python 慢的多,但在开发被频繁使用的核心程序库时,大量使用 C 语言跟它配合,结果用 Python 开发的真实程序跑起来非常快,因为很有可能超过 80% 的时间系统执行的代码是 C 写的。

Python 的战略是要做一种简单、易用但专业、严谨的通用组合语言,或者叫胶水语言,让普通人也能够很容易的入门,把各种基本程序元件拼装在一起,协调运作。Python 始终把开发者效率放在CPU效率前面,始终把横向扩张能力放在纵向深潜能力之前。长期坚持这些战略选择,为 Python 带来了其他语言望尘莫及的丰富生态。任何一个人,只要愿意学习,可以在几天的时间里学会Python基础部分,然后干很多很多事情,这种投入产出比可能是其他任何语言都无法相比的。
过去你可能会认为 AI 的主力是研究机构里的 AI 科学家、拥有博士学位的机器学习专家和算法专家。但随着大数据的出现,你会看到整个 AI 产业的从业人口将逐渐形成一个巨大的金字塔结构,上述的 AI 科学家仅仅是顶端的那么一点点,95% 甚至更多的 AI 技术人员,都将是AI 工程师、应用工程师和AI 工具用户。虽然,”这些潜在的 Python 用户至今仍然在技术圈子之外,但随着 AI 应用的发展,数百万之众的教师、公司职员、工程师、翻译、编辑、医生、销售、管理者和公务员将裹挟着各自领域中的行业知识和数据资源,涌入 Python 和 AI 大潮之中,深刻的改变整个 IT,或者说 DT (数据科技)产业的整体格局和面貌”。

作者:

喜欢围棋和编程。

 
发布于 分类 编程标签

发表评论

电子邮件地址不会被公开。