Python与人工智能

人工智能的核心算法是完全依赖于C/C++的,因为是计算密集型,需要非常精细的优化,还需要GPU、专用硬件之类的接口,这些都只有C/C++能做到。所以某种意义上其实C/C++才是人工智能领域最重要的语言。Python是这些库的API binding,使用Python是因为CPython的胶水语言特性,要开发一个其他语言到C/C++的跨语言接口,Python是最容易的,比其他语言的ffi门槛要低不少,尤其是使用Cython的时候。
其他语言的ffi许多都只能导入C的函数入口点,复杂的数据结构大多只能手工用byte数组拼起来,如果还需要回调函数输入那就无计可施了。而CPython的C API是双向融合的,可以直接对外暴露封装过的Python对象,还可以允许用户通过继承这些自定义对象来引入新特性,甚至可以从C代码当中再调用Python的函数(当然,也有一定的条件限制)。
不过这也是PyPy这样的JIT解释器的一个障碍。而且Python历史上也一直都是科学计算和数据分析的重要工具,有numpy这样的底子,因为行业近似所以选择API binding语言的时候会首选Python,同时复用numpy这样的基础库既减少了开发工作量,也方便从业人员上手。
Peter Norvig 在他的博客里解释了为什么使用 Python 。一开始他打算把自己书中的 Lisp 代码翻译成 Java,因为他的学生们对 Java 比较熟悉,看到 Lisp 的括号就头大如斗。但他们最后放弃了,因为 Java 太啰嗦了,书里的一小段伪代码需要一大段的 Java 代码来表示,伪代码 和 Java 代码的差异太大了,即使它们表现的是同一个想法。最终 Peter Norvig 找了一种和 伪代码 很相似的程序语言,那就是 Python 。
显然,当我们的目的是想要传达想法,方便教学的话,一种便于理解的语言是最好的。首先我们会用 自然语言 ,但是它不够形式化,有太多歧义。其次我们会想到 伪代码(pseudocode),可惜它又不能执行,无法立即验证正确性。所以在这样的场景下,Python 是比较适用的。

你可能感兴趣的:(Python与人工智能)