Java与Python:哪种编程语言最好?吃瓜群众:星球大战vs星际迷航?

超人与蝙蝠侠。星球大战 vs. 星际迷航。可口可乐与百事可乐。Java与Python之间的选择并不是真正的那种竞争 - 这两种语言通常具有不同的用例和粉丝群。事实上,他们如此不同,以至于他们已经成为浪漫不相容的Instagram的隐喻:

但作为两种最流行的编程语言,值得研究它们的一些相似之处,差异,优点,缺点和理想用例。

首先,尽管这个Instagram玩笑,但重要的是要记住,Java和Python共享重要的相似之处以及主要差异。例如,这两种语言都是功能强大的编程语言,拥有庞大的专用社区和众多开发人员支持的大量库。如果你不能用母语本身做什么,你很可能会找到一个图书馆来提供所需的支持。事实上,没有人可以真正知道图书馆对两种语言的支持范围,因为没有人可以全部尝试。显然,一些图书馆比其他图书馆更受欢迎,有些图书馆在某些时候几乎出现在任何后果方面。

小编还会不定期分享干货,欢迎各路大神小白进来学习。学习路线、编程思路、教学视频!

但是Java和Python也有很多不同之处。其中一些差异是客观的,不会公开讨论,而另一些则是意见,使用偏好或编程环境。

例如,Java是一种编译语言,Python是一种解释型语言。这种差异给每种语言带来特别的好处和弊端。例如,即使参数比编译代码执行速度快于解释代码,但事实上通常更加细微。一种语言是否比另一种语言更快取决于其中使用的环境。例如,Python更擅长在GPU上以大规模并行模式运行。

这两种语言的写法也不同。在Java中创建结构时,可以用大括号括起来。Python使用缩进来执行相同的任务。FreeCodeCamp调用Python代码“整洁,可读,结构合理,适当的缩进不仅仅是为了美观 - 它决定了代码的执行。”

这些结构性差异会影响程序员如何查看语言以及程序员可以键入它们的速度。从理论上讲,他们对学习语言所需的技能水平也有影响。然而,在大多数情况下,这个问题真的归结为个人偏好问题。更重要的是,许多开发人员可能依赖于IDE,编码环境和模板,这使问题变得不那么重要。

程序员也会以其他方式无休止地辩论这两种语言的优点。例如,一些人声称开发人员可以在Python中提高五到十倍的生产力,因为Python支持动态类型等。其他人对生产率问题持反对观点。这些论点中的大多数使用不同的方法来证明他们的观点,使得不太有用的苹果对桔子的比较成为可能。哪种语言最终更具生产力通常取决于开发人员对语言,编码风格和应用程序开发要求的经验。

实际上,请记住,语言工具最终会将程序员创建的任何东西变成机器码。因此,选择一种语言并不是一个机器更喜欢的问题,而是满足开发人员的要求,以便开发人员理解的方式将任务清楚地传达给机器。

Java和Python的趋势

虽然不像以前那样流行,但Java几乎可以通过任何方式仍然是最流行的编程语言。另一方面,Python的增长是天文数字,特别是在发达的高收入国家。据一些消息来源称,Python最终会超过Java的受欢迎程度。这种惊人增长的原因包括开发人员的生产力,语言灵活性,图书馆支持,社区支持以及易于学习。Python在数据科学和人工智能以及Web应用程序,桌面应用程序,网络服务器和媒体工具等热门领域也得到了很大的利用。

与此同时,Java的受欢迎程度可能因其不太出色的安全声誉而受到伤害。诸如The Register这样的技术新闻网站喜欢抨击Java,同时声称88%的Java应用程序存在安全问题。当然,Java的坏说法很大程度上是由于Java浏览器插件的问题,否则,该语言的安全问题并没有比其他语言差很多。无论如何,Python本身的安全记录远非理想,但它已经在这方面获得了更好的支持,并且Python的易用性可以让经验较少的开发人员更容易保护他们的代码。

但是,将Java视为“已经”的语言是不明智的。Java开发人员不断增加新功能,使Java在规模化开发方面更小,更快,更灵活。功能强大的Java虚拟机(Java Virtual Machine,简称JVM)使创建跨平台兼容的Java应用程序变得容易,Java继续擅长构建大型传统应用程序,这些应用程序代表了大多数企业现在使用的编码类型 - 它被90%的财富500强!无论您如何削减它,Java应用程序代码的庞大安装基础(Java编程作业)都不会很快消失。

Java和Python也使用非常不同的线程模型。Python GIL或全局解释器锁意味着,与Java不同,Python实际上是单线程的 - 它一次只能在单个CPU内核上运行。另一方面,与使用Java做同样的事情相比,对Python使用GPU相对简单。因此,虽然它可能还不是科学应用程序之外的标准实现,但是在5,120内核GPU上以大规模并行模式运行的Python应用程序可能会吸引在8核CPU上运行的完全优化的Java应用程序。

也许由于各种各样的Java开发职位,最近一篇文章指出,在美国,Python程序员通常比Java开发人员赚更多钱:116,000美元与102,000美元每个事实,99,000美元与每个StackOverflow 96,000美元。

“文学编程”问题

编程语言的学习曲线很大程度上取决于您当前的知识,预期的语言使用和学习环境。例如,如果您已经知道如何用C,C ++或JavaScript编程,那么学习Java可能相对容易,尤其是如果您只想编写应用程序代码。但是,如果您从未编程过,并且您打算使用该语言为科学界创建输出,那么Python可能是更好的选择。Python是学校当前选择的语言,因为它可以帮助人们非常快速地构建好编码技术,并且它具有强大的用途。

代码呈现也是两种语言之间越来越重要的区别。在过去,开发人员主要使用代码来创建应用程序。代码一般由其他开发人员和机器读取,并且很长一段时间,Java的简洁语法具有优势。但是,现在具有不同观点和技能的人在使用编程语言来实现各种各样的目标时(不一定是应用程序开发),您还需要考虑他们的需求和技能。Python在这里可能有优势,因为它完全支持斯坦福大学计算机科学家Donald Knuth最初设想的识字编程方法。

在使用文字编程技术时,单个文档包含代码,解释性散文,图形,图片以及各种其他材料,但代码在环境中仍然完全可执行。这允许演示者或非程序员以少数开发人员认为是“编写代码”的方式使用环境。

文学编程擅长几个领域:

示范

合作

研究

教学

介绍

Python通过诸如Leo和Jupyter Notebook等IDE直接支持这样的环境。您还可以使用特殊说明将此支持添加到其他编辑器,例如Atom。相比之下,当使用Java在类似的环境中工作时,环境会感到狂躁,学习曲线往往更高。

性能比较

一些开发者认为“解释”总是意味着“缓慢”。Java用户常常说:“当然,用Python编写它,或者任何你想要的东西,但是当你需要你的应用程序扩展时,你必须用Java重写它。”

将一种语言的速度与另一种语言的速度进行比较的问题在于,它往往归结为环境 - 您可以创建一种在实验室环境中倾向于使用另一种语言的测试,但重要的结果是您在现场看到的结果。另外,你必须考虑使用的库以及创建应用程序时使用的编码风格等问题(至少在Python中)。这是因为Python支持多种编码范例(稍后更多)。比较使用功能范式编写的Python应用程序与面向对象范例风格的Python应用程序的性能,结果可能在难以预测的方式上有所不同。

考虑不同版本的语言如何影响性能也很重要。在现实世界中,并不总是比较最新的版本。在Java方面,大多数应用程序在当前版本之后有2-3个版本。在Python方面,Python 3.x的运行速度通常比2.x快,但只能在针对Python 3.x特别优化的库中运行。因此,虽然它可能会适得其反,但一些数据科学程序员(和其他人)仍然选择使用Python 2.x而不是3.x来利用特定的库。请注意,Python社区一直在努力实现从2x到3x的转换,并且目前正在维护这两种分支。不过,随着Python 2.x的接近尾声,你需要一个强有力的理由为新项目选择Python 2.x。

最终,性能是一个非常复杂的指标。运行速度最快的语言通常归结为环境 - 代码是如何编写,使用和运行的,更不用说库和其他外部贡献者的影响了。

市场份额和社区

比较各种编程语言的相对普及也是非常困难的。但是在大多数尝试按照流行度对语言进行排名的时候 - 无论是在New Relic博客还是在诸如Tiobe之类的网站上,Java通常都是首先进入整体,而Python并不落后,通常排在前五位。

重要的是,这两种语言都受到庞大且充满活力的用户社区的支持。世界各地都有Java用户组(JUG)。(这个地图应用程序可以让您深入了解您附近的JUG。)Java程序员还可以参加巨型高调活动,例如JavaOne。Python社区也很强大,在191个城市和37个国家拥有1,637个Python用户组,吸引了超过860,000名成员。Python事件的范围从PyLadies聚会,在这些聚会中,女性可以与PyCon以及其他许多人见面并编写代码。

如果您的主要目标是开发适销对路的技能,选择学习Java 或 Python(或C,C ++或任何其他广泛使用的语言)是一个坚实的举措。知道任何一种语言会帮助你的工作。更好的是,学习几种最受欢迎的选项是个好主意。

但是,如前所述,编程语言的真正意义在于满足开发人员以最简单明了的方式向机器传送特定任务的需求。对于某些开发人员来说,直接转化为最少的代码行或最快的应用程序速度。但这个问题远远超出了这些考虑因素之一。

例如,如果您是从事机器学习项目的数据科学家,那么Python可能是最佳选择。(这个组的Java排名第三 - 仍然很高。)

灵活性也很重要。在使用Python时,您可以访问多种编程范例,您可以在单个应用程序中根据需要混合搭配。Java仅支持一种编程范例:面向对象。有趣的是,Python在单个应用程序中支持多种编程范例,这意味着您可以使用最适合应用程序中子任务的特定范例,而不是依赖于单一范例,无论它是否最符合需要。

多语言FTW

关键在于没有单一的最佳编程语言 - 只有那些在任何给定时间最能满足您需求的程序语言,对于任何给定的项目。理想情况下,开发人员应该知道几种语言,因此他们不必为使用不适合特定目标的语言而决定使用。知道更多的语言可以更容易地适应大量情况,例如加入特定应用程序的升级团队,即使项目使用的语言可能不是您从头开始时选择的语言。

最后,虽然,它是可以做出关于编程语言的推广。Python将是我个人的数据科学,人工智能和机器学习任务的选择。另一方面,当我需要为最终用户编写应用程序时,特别是嵌入式和跨平台的应用程序时,Java很可能会成为我的榜单的顶端。Java也是创建服务器端代码的杰出选择。无论这些偏好是否适合您,希望这种比较有助于您自己选择编程语言。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180505A1CFIZ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券