Python,机器学习以及语言之间的战争(2)

那Perl怎么样呢

  

  Perl是我早期职业生涯接触的第一语言(除了在中学课程中学的Basic,Pascal和Delphi)。当我在德国还是一个本科生的时候,我参加了Perl编程课。当时我真的很喜欢它,在这一点上,我真的没有任何东西可以和它相比。但是,嘿,就我个人而言,我只知道少数人在日常的基础上常常使用Perl脚本。我认为它生物信息学领域仍然是相当普遍的,不管怎样,简单地说 “Perl死了。万岁的Perl”。


其他的选择

 

 还有许多其他的语言可以用于机器学习,例如, Ruby周到的机器学习:测试驱动的方法), Java (Java-ML), Scala (Breeze), Lua (Torch),等等。然而,除了一个我几年前接触过的java,或pyspark,Python 的Spark API,这是用Scala写的,对于其他语言我真的没有太多的经验,不知道说什么。


Python语言是一个正在衰落的语言吗?


  这是一个合理的问题,最近它出现在Quora上,如果你想了解更多意见, 请点击question thread。然而,如果你想听到我的意见,我会说,不,不是的。为什么?好吧,Python“相对”来说是一种比较老的语言,它的第一个版本是在90年代初的某个时候出现的(可以从1991开始计数),像每一个编程语言,必须作出一定的选择和妥协。每种编程语言都有自己的怪癖,更新的语言往往会从过去的错误中吸取教训,这是一件好事(顺便说一下,R 在Python发布不久之后发布: 1995年)。Python离完美还很遥远,“就像所有其他的语言,它有它的缺点。作为一个Python核心用户,我不得不说,GIL(Global Interpreter Lock全局解释器锁)是最让我烦恼的–但需要注意的是,在一个多处理器和多线程模块,这并不是真正的限制,在某些情况下只是有点“不方便”。


  没有度量可以量化编程语言是“如何好”的,它真的取决于你正在寻找什么。你想问的问题是:“我想要达到什么目的,完成这件事最好的工具是什么,如果你有一个锤子,一切看起来都像钉子。”再一次说到锤子和钉子,Python是非常灵活的,我的日常研究大部分都是使用Python 完成的,scikit-learn机器学习库,pandas用于数据修改,matplotlib /seaborn用于数据的可视化,IPython notebook用于记录所有这些东西。


结论


  嗯,对于这个看似很简单的问题,这是一个很长的答案,。相信我,我可以继续几个小时或几天。但为什么会让事情复杂化呢?让我们来结束讨论吧:

反馈和意见

  关于这篇文章,我得到了很多反馈想与你分享。记住,在某一条建议上有偏见是很自然的;你可能已经注意到,我的偏见是很青睐Python–非常抱歉,但那就是我的想法!我相信,这将有助于从其他人思考!特别是,如果你是 “数据科学”,机器学习和编程领域的新手。也就是说,请去看看那些信息下面的评论!

Python

  • rm999在 hackernews上的评论:


  我大约一年前从R转到使用Python,我用Python来将我的数据管道合在一起(从数据源的生产模式和前端/可视化等所有方式)。相比于前几年我用任何语言,它并没有真正影响我能做什么或我的生产力,除了标准的额外搜索。使用Python的主要的原因是纯粹的实用:这是一个其他团队的人推崇并正在使用的语言。它使我可以以许多不同的方式跟别人合作:与其他团队的共享工具,转让我的代码所有权,当我需要的时候得到帮助等等。一些公司的数据科学家会一起“破解一些东西,并把它扔在墙上,让别人处理”。以我的经验来看,R只是进一步加强了这一行为。


  • DrNuke在 hackernews上的评论:


  我喜欢在帖子中的黑客方法:一个工具只是一个工具,做一些有价值的,而不仅仅是目标本身。Python的生态系统目前是在正确的时间里,正确的工具,因为数据科学爆炸,需要很快和非专家互动。


  • zzleeper在 hackernews上的评论:


  相当有趣的帖子。我觉得很多数字pythonistas都一样:他们认可大多数的语言,但发现R的语法有点不自然,当试图超越纯矩阵的东西时MATLAB就排不上用场了,都等着看Julia能否担起重任(这似乎是我可以告诉)。


  • JanneJM在 reddit上的评论:


  关键是足够好的有质量的库。我认识的很多人包括我自己并不是真的对Python感兴趣。我们使用NumPy、SciPy,matplotlib,pandas等等。Python只是来凑凑热闹。如果Ruby或Perl或Lua也有这些库,那它们将是我们今天要使用的语言。


Perl


  • leni536在 hackernews上的评论:


 “我认为Perl在生物信息学领域虽然仍很常见!?“这是真的-生物信息学中的许多日常的任务都有或多或少的纯文本解析[ 1 ],而Perl擅长分析文本并迅速使用正则表达式。“我”这一代使用Python做生物信息学的数据清理和分析(20–30),有时因为绘图,它更容易入门,它在大学中更为普遍,或其他原因——年纪大一点的使用Perl.


R


  • geomark 在 hackernews上的评论:


 我刚刚完成了Coursera的数据科学的教程,我一个完整的新手,到现在至少有些精通。以前使用Python对很多的网站编程,开始时如果不是R强大的统计编程,我不会喜欢它。但我发现一些很好的R包,我通常以将里面有用的东西转向Python为乐。就像我最近发现的rvest包用来网页抓取。R的数据可视化是超强大的。并且使用shiny或RStudio建立一个好用的统计应用程序很容易。但R不能真的规模化到可以应用于一个大的生产应用程序,这不是吗?所以我觉得我需要同时使用Python和R,附加:这是一个很好的列表lofkin。谢谢.同时,他在文章中说,Python语法感觉更自然,我也感觉到了。但后来我开始使用R的magrittr和dplyr包,它们给你很多美好的东西,如管道,这种感觉就开始减弱了。


  • Adam_O 在hackernews上的评论:


 从一个学生的角度来看,大多数好的在线分析/数据分析/统计课程使用R,所以在学习这些资料时很难摆脱它。一旦你了解了那些基本概念,切换到Python应该不难。我想大多数人还是喜欢使用ggplot2进行可视化。每当我用R我就感觉我像一个统计员,我能感觉到从语言发出那冷僵的感觉。但最后,我认为这是掌握这两种语言的优势。


MATLAB/Octave


  • sampo在hackernews上的评论:


 吴恩达在Coursera的机器学习课程上说,学生在Octave / MATLAB完成课程作业比使用Python更快。但是,是的,那当然是实施和玩弄小数值算法,而链接的博客主要是关于某人从Python调用现有的机器学习库。


  • misiti3780在hackernews上的评论:


 Octave / MATLAB是“伟大的”,但是如果你试图将它们整合到一个生产网络应用中,那我只能祝你好运了。因为你不能真的这样做,你应该避免使用它们,除非你能很好的实现相同的算法两次。MATLAB的许可证的成本钱,和工具箱的成本的钱。R是有用的,因为它有很多的资源,它已经出现这么久了,并且被大部分的统计社区使用。它也有很多有用的库还没有被移植到其他语言(ggmap!!!)。但是你仍然遇到了一个问题,那就是你不能把R整合到一个生产网络应用程序中。我敢肯定,Hadoop不支持R,Matlab/ Octave。


  • thanatropism 在hackernews上的评论:


 这里忘记了一件事:MATLAB语法实际上是非常接近现代的语言。至少两次我写FORTRAN代码(为了Monte Carlo模拟;不同的语境)是通过重写matlab代码添加类型/一般冗长/固定的语法做循环等。


Julia


  • Lofkin在hackernews上的评论:


 我个人很想转Julia,但缓慢的高阶函数,核心数据基础设施中的高流失率,和没有Pymc 3让我只能继续使用pydata,我有numba供我使用。


  • Buttons 840在hackernews上的评论:


 我专业地使用Python 8年,这是我最喜欢的语言。我用过NumPy和scikit-learn一点点。即便如此,最近我真的很喜欢学习Julia。它很容易学习,并且它的性能真的很好(读:它很快)。事实上,我认为学习Julia需要像学习numba将需要大量的工作,并得到类相似的(有人说略好吗?)性能.


  • Idunning在hackernews上的评论:


 作为一个几乎完全使用Julia来完成他们的日常工作(和侧项目)的人,我认为大多数作者的想法是Julia是正确的。我认为语言是伟大的,使用它使我的生活变得更美好。有一些软件包实际上比其他语言中的等价物的任何一个都要更好,在我看来。另一方面,我对不完美的东西也有更高的容忍度,我可以自己把事情弄清楚(幸运的是我有时间这样做),我愿意编写代码,如果它并不存在(到一个点)。当然,对大多数人来说并不是这样的,这很好。作者不愿意冒风险,并认为Julia不会“生存”太久的,这是公平的。它肯定是不完整的,但它已经到达那里。我相信它会生存(发展),并继续成长为不是单薄的社区。我有一种感觉,作者最终会以他们的方式找到属于Julia的天地,在几年左右的时间。

 

  • Niksko在 reddit上的评论:


 我同意Julia的主题。它有很大的潜力,它基本上是为这些类型的应用定制的,但社区和支持,还不够好。我花了一个学期的时间做了一个小的计算进化动力学领域的研究项目,最繁琐和困难的一部分是使用Julia画出我想要的东西。那时候也没有对文档字符串的支持。它很快,它很棒,但它不够成熟。


  • KG7ULQ在 reddit上的评论:


 当我完成了Coursera 上的吴恩达的机器学习课程以后,我环顾四周,似乎要做的事情都是使用Python。但有几个大的库,包括你提到的那些必须学会的。然后我看了一下Julia,并认为我可能会把它学好,因为它已经有了所有的线性代数和SIMD,并且它的性能更好一些。对与机器学习来说,它真的似乎是“甜点”的语言。

其他语言(我忘了提到的)


  • leni536在hackernews上的评论: 


 C++没有什么错。我使用armadillo 库处理线性代数,它真的是LAPACK和BLAS很漂亮的包装(并且很快!)因为某种原因科学家们有些害怕实用C++。因为某些原因,你“不得不”使用一个“更容易”的语言来创建原型。当然,你不能使用C++作为一个计算器,而不使用解释的语言,但我看到人们在使用原型语言来计算是遇到困难,并最终没有把它带到一个更快的平台。要点:C++用于科学计算并不难。


  • WallyMetropolis在 reddit上的评论:


 对我来说如果可以使用什么来取代Python的话,看起来Scala是最有希望的候选者。我认为函数式语言是非常适合做数学方面的工作的,它在Java虚拟机上的,所以原型可以在没有太多的开销的情况下成为生产代码,并且可以在任何地方跑起来。Spark是Scala的一个杀手级应用。现在我在原型到运行在一个任意大的数据集之间没有太多的障碍。


  • rpcope1在 reddit上的评论:


 [Scala]在编译时可能是缓慢的,但它更安全,并且比CPython更快(除非使用代码的字节码和调用C / Fortran库),并有很多在Python中没有的概念,如:,隐含的调节器,没有过多废话map/reduce/filter、lambda,等。

原文链接:http://sebastianraschka.com/blog/2015/why-python.html#is-python-a-dying-language

 

2月15日11:00到13:00网站停机维护,13:00前恢复