Python比JavaScript更好吗?(请提供事实)

26

我最近学习了JavaScript,突然听到了Python的消息...

我应该去学习Python还是坚持我的基本JavaScript知识?

如果您有一些“事实”,我很乐意听听!例如效率、难度级别等等...

谢谢 :)


5
当我看到这个标题时,我立刻想到了http://skulpt.org。 - Eli Bendersky
8
提示:说出你想要实现什么。如果需要在浏览器窗口中运行,我肯定会使用Javascript。 - extraneon
3
@Eli Bendersky: 天啊,那真是有点厉害。 - thepandaatemyface
4
苹果绝对比橙子更好。它们有更广泛的友好种植者范围,而且易于食用。 - HoLyVieR
@meh,现在我们有了ES2015,我更喜欢它了。 - Andy
显示剩余2条评论
12个回答

15

这两种语言通常使用方式大不相同。JavaScript 主要用作客户端脚本语言,而 Python 则是一种基于服务器的语言。因此,在网站中您可以同时使用两者。但我不确定这是否是你想知道的。


16
在2014年,这个说法已经不再正确。请参见NodeJs - Domi
1
JavaScript和Python都是通用脚本语言,至少在2015年是这样的。 - Derek 朕會功夫

12
如果你正在学习一门编程语言,那么没有比Python更好的选择了。它是一种易于上手的语言,文档齐全。与一个庞大、活跃且友好的社区相关联。由于它是一种脚本语言,你可以轻松地尝试一些东西并立即看到结果。你还可以从编程基础开始构建,首先学习函数,然后进入类。
Javascript 是许多程序员的噩梦。它足够容易学习,并且适用于小型脚本,这就是它的设计目的。但是一旦你开始制作任何大型项目,就会变得难以跟踪。这就是为什么出现了像 CoffeeScriptTypescriptDart 这样的语言修改。
正如 spinon 所指出的,这些编程语言被用于非常不同的方式。Python 是一种通用的脚本语言,有时可用于执行服务器端工作。Javascript 曾经仅用于在网页上构建交互性。然而,现在它也变得流行起来,用于服务器端和桌面应用程序,如 Node.js

13
如果你发现难以跟踪一个大型项目,我会说JavaScript非常先进,那么你可能没有正确地管理资源。一个框架可以帮助你解决这个问题,参见http://www.sproutcore.com,这是一个非常好的例子,展示了如何轻松处理大型项目。即使你没有使用高级库,一本JavaScript权威指南http://www.amazon.com/exec/obidos/ASIN/0596517742/wrrrldwideweb也可以帮助你保持在正确的轨道上。 - David W. Keith
你是在说一个已经构建好的SproutCore项目还是源代码?我每天使用的文件非常容易修改,因为它们被按照MVC、逻辑功能和最后对象分成很多小文件。 - David W. Keith
23
注意:这是非常过时的回答;JavaScript 最近已经有了很大的进步,像 Node 和 AngularJS 这样的项目使它在大型项目中(无论是在服务器内还是外部)使用起来更加容易和优秀。另请注意,v8 JavaScript 解释器要比标准的 Python 解释器快得多。我喜欢 Python,并且因为它拥有出色的库而仍然比其他任何语言更频繁地使用它,但是关于 JavaScript 的评论并不正确。 - jdg
另一个重要的事情是,ES2015模块使用起来更加容易(只需相对文件路径,无需__init__.py),而且npm也更加方便(依赖项在本地安装,支持同一软件包的多个版本,无需使用类似于pyenv的工具等)。 - Andy
4
在许多方面,JavaScript的核心比Python要简单得多。没有元组和列表之间的区别,也没有对象和字典之间的区别。a.ba ['b']是相同的。没有为命名参数学习特殊语法的需要;您只需传递一个带有所需属性名称的对象参数即可。CommonJS和ES2015模块更容易使用(没有__init__.pypyenv,您可以通过相对路径进行require等)。我认为初学者在JavaScript中需要学习的东西比Python少。 - Andy
显示剩余3条评论

4
关键事实是Javascript很难改变(因为浏览器中存在数十亿个旧实现),因此早期设计错误(和疯狂的匆忙阶段)仍然存在于语言中。 (请参见Crockford的《Javascript: the good parts》,由JS专家和爱好者就其中的优点和缺点进行了合理讨论)。如果像use strict;指令这样的东西最终进入ECMAscript,这可能会改变(尽管以支持旧的且经常有bug的浏览器编程仍然像拔牙一样困难-就像编写Python代码从Python 1.0到3.1都不需要修改那样!-)。
Python在更传统的方式下部署,因此逐渐的语言改变加强了它多年来的性能(在许多方面,它的设计也较少匆忙,[[可以争议,不是“事实”;-)]]开头的设计更好)。
因此,Javascript(迄今为止)在“服务器端”并没有取得太大的成功,程序员们可以选择其他语言(尽管他们仍然必须使用JS作为“浏览器端”代码)。但是这并非本质问题。JS是目前世界上部署最广泛的语言(那些数十亿的浏览器...),许多公司和开源组织在竞争实现和支持框架方面都做出了巨大投资(Python在这方面也不落后,但仍然存在差异),实际改进(速度、警告)作为其结果不断增加(尽管语言本身无法改进)。
通过严格自我强制的编程纪律(例如通过Crockfor的JS“lint”程序强制执行)和良好的支持框架(jQuery、Dojo、Closure等)和工具(Firefox可能有最好的JS跟踪和调试插件,但其他浏览器也在朝着这个方向迅速发展),JS近年来已经变得可用。也许在某一天,快速的服务器端实现(一旦官方批准了“use strict;”或类似的东西)将开始获得实质性的立足点,只是因为如此多的Web程序员已经拥有了一些JS知识(他们必须要知道,才能制作出优秀的Web应用程序)。
请注意,JS的坏名声(除了公认的“无法删除的坏部分”之外;-))很大程度上来自于不真正“属于”JS作为一种语言的东西:有bug的实现,HTML DOM可能经常出现的混乱(特别是与有bug的浏览器实现一起使用时),等等。未来的服务器端部署没有理由复制这些令人发狂的缺陷!-)

4
这个回答已经过时了,你可能应该将其删除。ES2015添加了大量的语言特性,并且人们开发了非常复杂的Babel转译器来实现早期采用,证明JavaScript能够像Python一样进行很多改变。现在JS在服务器端也被广泛使用。 - Andy
完全同意你的看法,@Andy。 - Luís Assunção

3
Python是一门很好的第二语言,适合在学习JavaScript之后学习,因为它们有相似之处,例如:
  • 它们都是内存管理的
  • 它们具有类似的数据结构——JavaScript的对象和数组非常像Python的字典和数组
  • 它们都被广泛用于与Web相关的工作中——JavaScript用于浏览器和node.js等服务器端上下文中,而Python用于像Django这样的Web框架中。
然而,Python的面向对象编程方式与JavaScript的基于原型的面向对象编程方式相当不同。
如果你只是在Web浏览器中操作网页,那么Python对你没有任何直接用处(目前只有JavaScript可以在浏览器中运行)。但是学习另一种编程语言通常会让你以新的方式思考你已经掌握的语言。学习Python可能会帮助你编写更好的JavaScript。

2
JavaScript主要用于客户端(浏览器),Python主要用于服务器端,因此它们满足不同的需求(忽略Python到JS转换器等)。虽然ECMAScript受到了Python的影响,语法非常相似,两者都是面向对象的,都是很棒的编程语言,但我仍然建议学习Python作为第一门编程语言,因为它更加优美、简洁。尽管JavaScript现在可以通过Node.js用于服务器端和客户端,使其更加全能。详情请参阅:http://hg.toolness.com/python-for-js-programmers/raw-file/tip/PythonForJsProgrammers.html

你的意思是像DLR上的Python吗? http://msdn.microsoft.com/zh-cn/magazine/cc163344.aspx - Tetsujin no Oni
@David,@Paul - 在大多数情况下,它被用作客户端。 - meder omuraliev
3
非常正确,尽管服务器端JavaScript的趋势似乎是上升而不是下降,所以值得一提。 - Paul D. Waite
是的,Python实际上可以在客户端使用gestalt和dlr,例如<script type="text/python">window.Alert('Hello World')</script>。http://ironpython.net/browser/ - jcao219
@jaco219,使用Javascript :P - BigSack
显示剩余6条评论

2

JavaScript通常用作客户端脚本语言 - 也就是说,它会被您的浏览器下载并执行。然而,Python通常不与Web耦合。 它可以用作服务器端脚本语言,并可用于任何类型的脚本和应用程序。但它不是客户端语言,因此不能直接与Javascript进行比较,后者具有完全不同的受众。

从语言层面来看,JavaScript很糟糕且功能不全(难以调试,对象导向笨拙),而Python则优美且表达力强。当然,这是主观的 :-)


1
我不确定为什么每个人都说Python不是客户端语言。它是一种通用语言,可以适应任何需求 - 像wxPython这样的东西,Python在客户端上确实可以做出惊人的效果。“不是”和“不是最好的”之间有区别。 - Jed Smith
“我不确定为什么每个人都说Python不是客户端语言。” — 我认为他们的意思是“客户端”指的是“在Web浏览器中运行”。我不知道有任何浏览器可以像运行JavaScript一样运行Python。 - Paul D. Waite
除此之外,还有几个将Python编译成JavaScript的“编译器”。其中一个是PYJS。 - Chozabu

1

在我看来,Python可能更容易学习(我曾经教过这两门语言的入门课程)。

此外,JavaScript的一个主要问题是它运行在浏览器中。这使得调试问题变得更加困难。

就生产级别的语言而言,Python更多地是一种通用编程语言,而JavaScript则专注于构建动态Web应用程序。

如果你想进入编程领域,你应该学习一种更通用的语言,比如Java或Python。


1
越来越多的人开始将JavaScript作为非浏览器、服务器端语言使用——可以从node.js入手了解。不确定原因,但是确实如此... - JulesLt
有趣的是,我发现在浏览器中调试JavaScript比几乎所有服务器端逻辑都要容易得多。 - Scott Evernden

1

为了什么目的?在某些领域(例如Web开发),JavaScript是王者。

JavaScript和Python并不是互斥的。为什么不学习两种语言呢?


0
JavaScript和Python都是很棒的编程语言,它们针对不同的问题具有不同的优势。
在处理网络、编写网页及操作HTML DOM时,JavaScript的知识是非常宝贵的。
Python是一种脚本语言,在任何机器上都可以用来完成许多事情。

0

这要看情况。

你想使用一种专门针对Web浏览器的编程语言吗?那就选择JavaScript。

你想写其他任何东西吗,而不仅仅是Web浏览器?学习Python吧。

Python是一种非常适合初学者的编程语言,但它并不仅仅是初学者的语言。Google、NASA以及许多其他组织都在使用Python。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接