点击上方 "编程技术圈"关注, 星标或置顶一起成长


后台回复“大礼包”有惊喜礼包!

每日英文

Every story has an ending.but in life, every end is a new beginning.

每段故事都有一个结局。但是在人的一生中,每一个终点同时也是一个新的起点。

每日掏心话

你不会发现到自己有多强大,直到有一天你发现你身边的支点都倒下了,你也没有倒下。

责编:乐乐 | 来自:云头条

编程技术圈(ID:study_tech)第 1148 次推文 图源:百度

往日回顾:请马上卸载Notepad++...!

     

   正文   

作者:Murray Vanwyk是Programmai公司的首席技术官

Python对于数据科学而言已死:谷歌杀死了它!_Python开发

谷歌的Swift for Tensorflow对于数据科学和机器学习而言意味着什么?

Python对于数据科学而言已死,这种说法似乎有点怪怪的。毕竟,如今Python是数据科学界当仁不二的语言,人气从未如此旺过。2020年11月,它击败了长期备受青睐的Java,夺得编程语言排行榜第二名。我一直认为Python是每位数据科学家都应该知道的编程语言。数据科学领域的大部分工作是实现和执行,而Python在方面表现出众。它拥有出色的软件包支持,让您可以将不同的代码段粘合在一起,快速启动并运行代码段。外面有许多文章和论文介绍数据科学,所附的Python代码可帮助您在进行开发时迅速解决棘手的问题。这一切意味着您可以极其高效地工作,其他语言难以望其项背。别误会,我是喜欢Python,但是它也有缺点,而这些缺点促使谷歌迈出了下一步。

Python的最大问题是它不是一种高性能的语言。数据科学需要处理大量数据;由于很久以前的设计决策,Python根本无法扩展。为了解决这些问题,开发人员将其他语言(比如C和Fortran)混入到了Python代码中。这种做法非常务实,但也存在缺点。如果您曾经试图了解来自NumPy、Tensorflow或其他大多数数据科学软件包中的函数中到底发生了什么,您最终会碰上“C墙”(“C Wall”)。这是Python代码结束、C代码开始的临界点,通常也正是在这个点,您只好放弃,干脆接受不知道发生了什么情况的事实。当然,您可以在github上找到源代码,并可能设置另一个调试器以遍历该函数及其调用的任何其他函数,但这已经牺牲了Python给您带来的最大优点:生产力。

试图并行化处理任何实质性内容也会大大降低生产力,因为您有悖于GIL。GIL(或全局解释器锁)保证同一时刻只有一个线程在运行,这意味着您必须执行烦人的操作,比如对进程进行分叉(forking)。Python确实为您提供了不错的包装器来实现此目的,但是到头来分叉并不高效。

随着数据科学问题逐渐进入到移动平台和物联网平台,性能也带来了挑战。如果您想在物联网传感器上运行预测模型,可能会使用Python来开发和训练该模型,但由于传感器资源有限,因此使用另一种语言来部署模型。训练和部署使用不同语言加大了研发与生产之间的缺口,并加大了出现问题的可能性。

Python对于数据科学而言已死:谷歌杀死了它!_Python开发_02

诸如此类的问题使得人们很难在机器学习领域求得突破,这就是为什么谷歌开发了Swift for Tensorflow。我头一次听说它时,以为它只是在iOS应用程序中运行Tensorflow模型。谷歌在Swift方面所抱的野心似乎要大得多。谷歌甚至称之为“用于深度学习和可微计算的下一代系统”。这里的关键字是“下一代”。谷歌甚至详细说明了为什么Python对Tensorflow而言不是一门优秀的语言。

与Python相比,Swift速度更快。快得足以让Tensorflow团队认为不久“Swift将成为在许多使用场合取代C++的可靠语言”。Python是Tensorflow的主要语言,不过据github声称,它仅占代码库的26%,而C++占代码库的61%。Swift还通过对pthread的低级访问来支持更好的并行化机制,或者您可以使用Swifts GCD(大中央调度)。还一直在努力添加新的并发模型以进一步改善扩展机制。最后,Swift旨在可以在iOS之类的移动设备上运行,在Raspberry PI等物联网平台上运行起来比Python更快,占用的内存更少。

谷歌已采取了几个措施来简化数据科学家向“下一代平台”转型的工作。NumPy是数据科学界的重要组成部分,也是许多软件包的基础。谷歌一直将其重新实现为TensorFlow NumPy:与传统的NumPy相比,它具有许多优点,比如GPU加速。至于其他软件包,您可以使用PythonKit来运行,就像它们是为Swift开发的一样。现在,外头所有那些附有代码的文章和论文都可以在您的Swift程序中重复使用。您猜怎么着?PythonKit的根源其实可以追溯到谷歌和Tensorflow团队。谷歌甚至确保您可以在Jupyter笔记本中使用Swift,那样您就不必改变原有的工作流程。

现在,我倒不是说谷歌一心要杀死Python,但是很明显,谷歌已发现了这门语言对于数据科学而言存在的局限性。鉴于谷歌在机器学习方面已投入了巨资,它会在其他人之前碰到这些局限性自在情理之中。问题是,您在多久之后也会碰到这些局限性?谷歌和Tensorflow正在离Python渐行渐远,最终您也会亦步亦趋。唯一的问题是何时您何时也离Python渐行渐远。

想要更深入地探究技术细节,请参阅谷歌Tensorflow团队撰写的这篇文章(https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md#python-challenges)。

PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

欢迎加入后端架构师交流群,在后台回复“学习”即可。

Python对于数据科学而言已死:谷歌杀死了它!_Python开发_03

猜你还想看

阿里、腾讯、百度、华为、京东最新面试题汇集

一行代码搞定Spring Boot反爬虫,防止接口盗刷!

GitHub代码一键转VS Code:只需+1s

我终于决定要放弃okhttp、httpClient,选择了这个牛逼的神仙工具!贼爽

BAT等大厂Java面试经验总结

Python对于数据科学而言已死:谷歌杀死了它!_Python_04

别找了,想获取 Java大厂面试题学习资料

扫下方二维码回复「手册」就好了


嘿,你在看吗Python对于数据科学而言已死:谷歌杀死了它!_Python_05