根据 2024 年 Stack Overflow 调查,JavaScript 是最受欢迎的语言,63.61% 的程序员使用它,Python 紧随其后,49.28% 的程序员使用它。对于专业开发人员来说,JavaScript 仍然是最受欢迎的。
本文将介绍 Python 和 JavaScript,对它们进行比较,提供每种语言的语法示例,并建议您应该学习哪种语言。
Python 和 JavaScript 概述 {#overviewofpythonandjavascript}
JavaScript 是一种通常解释型的高级编程语言。它由 Brendan Eich 于 1995 年创建,自此成为计算机科学行业最流行的编程语言。它最常用于网页的客户端程序。
通常,JavaScript 是 Web 技术三要素(HTML、CSS 和 JavaScript)的一部分。这三种技术构成了互联网上绝大多数网页的基础,而 JavaScript 则使网页具有交互性。
Python 也是一种高级编程语言,既可以编译也可以解释,由 Guido van Rossum 于 1991 年创建。它实际上并不是以蛇的品种命名的,而是以古老的 BBC 喜剧小品节目《蒙提·派森的飞行马戏团》命名的。根据 Python常见问题解答,Guido van Rossum 在开发该语言的同时,还阅读了蒙提·派森出版的剧本,他认为"Python"这个名字听起来"简短、独特,而且有点神秘",因此他决定使用它。
自 1991 年推出以来,Python 已成为最常用的编程语言之一,并且通常是学生在学校/教育中首先学习的语言。
与通常与 HTML 和 CSS 一起使用的 JavaScript 不同,Python 是一种独立的语言。多年来,Python 在计算机科学的技术领域(例如机器学习、人工智能和数据科学)获得了很大的关注。
并排比较 {#asidebysidecomparison}
由于这两种语言都很受欢迎,因此很难选择先学习哪一种。因此,我们将比较每种语言的更细微元素,并分析哪种语言(JavaScript 或 Python)表现更好。
我们将要比较的主题是:
-
易于学习
-
应用
-
外部工具(库和框架)
-
范式
-
句法
易于学习 {#easeoflearning}
当然,在选择语言时,最重要的考虑因素是语言的易学性。我们可以通过语法的复杂程度、可用资源的数量以及在线社区的规模来判断语言的易学性。
Python 的语法与英语极其相似。Python 提供了很多与英语单词类似的逻辑运算(例如not
、and
、or
),使其成为一种非常直观的语言,因此更容易掌握。
例如,如果您使用标志搜索元素found
,则可以编写条件语句,例如if not found
。
此外,Python 通过缩进和冒号(在任何缩进之前)管理代码的布局。这使得 Python 代码非常清晰易读。
尽管 JavaScript 的语法与英语相似,但它需要更多地使用符号代替单词。例如,在 JavaScript 中,我们使用and
、和 来代替or
、、。JavaScript 还依赖括号和分号来分隔代码行。not``&&``||``!
拥有如此多的符号会使 JavaScript 更难阅读,因此也更难学习,特别是如果你之前没有编程经验的话。
由于 Python 和 JavaScript 非常流行,因此有大量的文章、教程和书籍可用于帮助学习这两种语言,例如SitePoint上提供的那些。 由于数量如此之多,很难决定是否有更多 Python 或 JavaScript 的资源。
除了在线资源和书籍之外,编程社区还因其在Stack Overflow和Twitter等多个平台上的庞大在线影响力而闻名。作为最流行的语言,JavaScript 自然应该拥有最大的在线影响力。
总而言之,从语法角度来看,Python 是最容易学习的,但 JavaScript 可以获得更广泛的帮助。
应用 {#application}
Python 和 JavaScript 都被认为是"促进语言",这意味着了解其中一种(当然是两种!)都可以使更高级别的编程变得更容易。
大多数软件开发人员/编码工作都要求您掌握 Python 或 JavaScript 或两者兼而有之。此外,软件开发中最受欢迎的子类别之一------Web 开发,也以 JavaScript 为中心。
根据2024 年 Stack Overflow 开发者调查,65.82% 的专业开发者使用 JavaScript,它是专业人士中最常用的语言。
此外,JavaScript 经常被雇主认为是最需要的语言。LinkedIn搜索显示英国有超过 60,000 个 JavaScript 职位,而美国 JavaScript 开发人员的平均工资为 108,981 美元(根据Indeed 的数据),我们可以看出 JavaScript 作为一种语言的需求量有多大。
然而,JavaScript 通常仅用于 Web 开发。尽管 JavaScript 可用于其他应用程序,但大多数 JavaScript 资源都围绕构建 Web 应用程序(复杂程度各不相同),因此可能很难找到开发其他任何应用程序的帮助(尤其是如果应用程序很复杂)。
另一方面,Python 并没有真正遭受这一缺点,因为它与计算机科学的任何方面都无关。Python 可以应用于计算机科学的许多领域,例如机器学习、人工智能、数学建模等。
因此,从技术职业的角度来看,学习 JavaScript 会为你打开许多大门。但是,如果你想通过编程来促进整个计算机科学的学习,Python 会更适合你。
外部工具(库和框架) {#externaltoolslibrariesandframeworks}
学习了 Python 和 JavaScript 的基础知识之后,编程之旅的下一个重要步骤将是利用大量外部工具来帮助您的程序更上一层楼。
Python 拥有大量非常强大的库。这些库是 Python 成为如此强大和流行的语言的根本原因。一些最受欢迎的库包括NumPy、scikit-learn和Flask。
NumPy 本身为 Python 带来了巨大的功能,其内置函数可以快速处理高度复杂的数学场景。此外,NumPy 还有助于大规模数学处理和建模,使 Python 成为研究和教育的理想选择。Scikit-learn 支持在 Python 中进行机器学习,这是一种非常强大的工具。最后,Flask 允许我们用 Python 创建网页的后端。
JavaScript 工具Node.js的开发改变了 JavaScript 的游戏规则,因为它同时允许在没有浏览器的情况下使用 JavaScript,并且允许用 JavaScript 编写服务器端代码。
这意味着可以编写不直接涉及 Web 开发的外部工具,从而导致npm上发布的软件包比任何其他语言都要多。2022 年 9 月, npm 注册表中列出了超过 210 万个软件包。当时,这使得 npm 成为最大的单一语言(JavaScript)代码存储库。一年半过去了,JavaScript 在可用的外部软件包数量方面仍然领先。
JavaScript 框架有很多,其中最流行的两个是React和Vue。这些框架的总体目的是使 Web 开发更容易、更好。
例如,React 和 Vue 通过状态管理来处理数据,这使得开发需要大量数据的大型、多层程序变得更加容易。
Python 有大量的外部工具,而 JavaScript 则有更多。因此,在 JavaScript 中,你几乎可以保证能够找到所需的库或框架,而在 Python 中,你可能在更小众的领域遇到困难。
范式 {#paradigms}
范式是一种编程风格。编程范式有很多种,有些比其他范式更细分。例如,命令式(过程式)、函数式、逻辑式、面向对象式、面向数据式、脚本式、汇编式、并发式、基于列表式、第四代、可视化等等。
能够使用不同的范例进行编码是一项非常受欢迎的技能,因为它可以为您的代码带来许多好处,例如提高代码的可维护性和某些代码元素的可重用性。因此它很可能成为您编程之旅的一部分。
Python 和 JavaScript 都是多范式语言,这意味着您不必总是以相同的风格编写程序。它们都支持命令式、面向对象、函数式和脚本范式。
如果您以前从未见过不同的编程范式,这里有一个简短的总结:
-
命令式:代码以一系列指令的形式编写,这些指令在代码中出现时就会执行。这是大多数程序员开始学习的范式,因为它被视为"最直观"的范式,最接近于告诉计算机您想要发生什么(以一系列指令的形式)。
-
面向对象:代码被写成"对象"的集合。每个"对象"使用属性和特性来描述我们试图在代码中复制的项目。例如,在动物游戏中,我们可能有类
Dog
。属性可以被视为描述类的属性,例如name = Rover
类Dog
。方法是更新或访问属性的一种手段。 -
函数式:代码以一系列数学函数的形式编写,这些函数链接在一起执行程序。例如,如果我们想将两个数字相加,我们必须定义一个
add
返回的函数x + y
,其中x
和y
是函数的输入。 -
脚本:代码旨在自动执行任务或自定义现有程序。此范例不如上述其他范例流行,但对 JavaScript 至关重要。
Python 和 JavaScript 中的命令式编程非常相似,但是在其他范式上差别很大。
Python 具有非常简洁的面向对象编程 (OOP) 语法,使用类来定义具有属性和方法的对象(作为函数/过程)。此语法非常接近编程中对象的正式定义。这是因为在 Python 中,几乎所有东西都是对象(即使我们没有注意到)。
另一方面,JavaScript 面向对象编程的语法远不如 Python 简洁,也远不如 Python 直观。不过,JavaScript 因使用文档对象模型而闻名,这使得基于事件的编程非常自然,而且比 Python 容易得多。
基于事件的编程在制作 Web 应用程序时必不可少,因为我们希望能够为网站提供一些交互性。因此,JavaScript 是一种更适合脚本范式的语言(顾名思义!)。
虽然两种语言都可以实现函数式编程,但是 JavaScriptconst
在 ES6 更新中引入了关键字和箭头函数,使得 JavaScript 中的函数式编程变得更加容易。
重要的是要记住,在学习面向对象和函数式编程时,最好使用专门用于这些范例的语言。例如,面向对象编程使用 Java 或 C#,函数式编程使用 Haskell 或 Elm。
因此,对于早期学习和尝试 OOP 或函数式编程,Python 和 JavaScript 是完美的选择。如果你热衷于学习脚本范式,JavaScript 会更适合你。
范式总结 {#psummary}
| 话题 | Python | JavaScript |
|-------------|----------------------------------------------|------------------------------------------|
| 句法 | Win:与英语相似,因此非常容易学习 | 损失:符号的使用使得学习变得相当困难 |
| 在线资源 | 领带 | 领带 |
| 在线社区 | 损失:Python 不再那么流行 | 胜利:JavaScript 最受欢迎 |
| 工作机会 | 损失:因为需要 Python 的工作并不多 | 胜利:由于 Web 开发是一个巨大的领域,因此几乎主要需要 JavaScript |
| 更广泛的计算机科学应用 | 优点:Python 可用于机器学习、人工智能、数据科学、数学建模等。 | 损失:JavaScript主要用于网站开发 |
| 外部工具数量 | 损失 | 赢 |
| 外部工具的有效性 | 领带 | 领带 |
| 命令式编程 | 领带 | 领带 |
| 面向对象 | Win:类定义的语法与形式定义和理论定义非常相似 | 损失:类定义的语法与形式定义相差太远 |
| 函数式编程 | 损失:在 Python 中是可能的,但使用 Python 的语法很难维护函数式编程的规则 | 胜利:使用const
和箭头函数有很大帮助 |
| 脚本 | 损失:有可能,但如果没有文档对象模型,就会变得非常棘手 | Win:使用文档对象模型使得事件处理更加简单 |
句法 {#syntax}
虽然我们已经讨论了这两种语言的语法,但我们将更深入地研究这两种语言的细微差别。我们将研究最标准的编程指令以及 Python 和 JavaScript 的区别。
印刷 {#printing}
任何编程语言中一个基本概念就是打印。在任何优秀的初学者编程教程中,您编写的第一个程序都应该打印短语Hello, World!
。
使用 Python 实现的方法如下:
print("Hello, World!")
<< Hello, World!
如您所见,它们非常相似。但我们已经可以看到 Python 与英语的接近性,而 JavaScript 则更具技术性。
变量 {#variables}
编程中另一个基本概念是能够使用变量。变量本质上是一种存储我们需要在程序中重复使用的数据的方法。
在这方面,Python 和 JavaScript 有很大不同。
例如在Python中我们只需要给出变量的名称和一个初始值:
best_number = 29
print(best_number)
<< 29
而在 JavaScript 中,任何变量都必须用三个关键字之一来声明------ var
、let
或const
(尽管const
只能在变量的值不会被重新分配、在整个程序中保持不变时使用):
var bestNumber = 29
let secondBestNumber = 20
const worstNumber = 27
console.log(bestNumber, secondBestNumber, worstNumber)
<< 29 20 27
但是,按照现代 JavaScript 标准来说,的使用var
已经相当过时了,所以最好避免使用它,而将其let
用于任何需要改变的变量。
if 语句 {#ifstatements}
语句if
是一种根据条件在程序中创建分支的方法。在英语中,我们可以将其理解为:"如果这是真的,则运行此代码。否则,运行此代码"。对于 JavaScript 和 Python,这非常相似。但这正是我们开始看到我们之前讨论过的 JavaScript 括号和花括号的影响的地方。
在 Python 中,我们可以写:
if best_number == 29:
print("That's correct! That is the best number")
else:
print("That's wrong...the best number is 29")
请注意,我们必须使用==
来测试两个值是否相等。此外,请注意语句每个部分末尾的冒号if
。
我们可以if
使用关键字elif
(代表 else if)向语句添加更多分支。
例如:
if best_number == 29:
print("That's correct! That is the best number")
elif best_number == 20:
print("Close...that's the second best number!")
else:
print("That's wrong...the best number is 29")
在 JavaScript 中,我们这样写:
if(bestNumber === 29){
console.log("That's correct! That is the best number")
}
else if(bestNumber === 20){
console.log("Close...that's the second best number!")
}
else{
console.log("That's wrong...the best number is 29")
}
如您所见,我们{}
在 Python 中使用括号代替冒号,并且我们必须将if
语句的代码包含在括号内。
另外,我们必须===
用 JavaScript 而不是 来编写==
。
最后,重要的是要理解,在 JavaScript 中,我们不需要缩进来运行代码,我们可以像这样编写代码:
if(bestNumber === 29){console.log("That's correct! That is the best number")}
else if(bestNumber === 20){
console.log("Close...that's the second best number!")
}
else{
console.log("That's wrong...the best number is 29")
}
但这看起来很乱,而且 JavaScript 本身就很难阅读!因此,大多数人都尝试将缩进作为其代码的一部分。
for 循环 {#forloops}
循环for
是编程中的一种迭代技术,当我们想要重复一定次数的代码块时就会使用它。
对于我们的例子,我们想使用for
循环执行代码 29 次(显然)。
因此,在 Python 中我们这样写:
for x in range(0, 29):
print(x)
这里,x
是一个临时变量,其值会随着 for 循环的每次迭代而改变:第一次迭代时, ,x = 0
第二次迭代时,x = 1
,第三次迭代时,x = 2
,依此类推。因此,我们的程序将输出0
,然后1
,然后 ,2
依此类推,直到28
。
如您所见,该range
函数受两个极限的限制:0
和29
。但是,上限 29 并不包含在内。
JavaScript 具有完全相同的原理,但语法却截然不同:
for( let x = 0; x < 29; x ++){
console.log(x)
}
分解一下,我们有三个用分号分隔的部分:
-
let x = 0
声明一个临时变量x
,其初始值为。这与我们的 Python 程序中的0
具有完全相同的用途。x
-
x < 29
意味着我们只想在严格小于 的长度for
时继续运行此循环。换句话说,在我们停止执行之前,将取、、...的值。x``myNumbers``x``0``1``28
-
x ++
是简写方式,即在每次迭代中,我们希望x
将的值增加1
。
如您所见,JavaScript 的设置更加手动,需要更多符号。尽管这种设置更难阅读,但它实际上与其他著名语言(如 Java 和 C)非常相似。
此外,JavaScript(如上所述)依赖于使用不同的括号和大括号来分隔代码,而 Python 仅依赖于缩进和冒号。
while 循环 {#whileloops}
while
循环是编程中的另一种迭代技术,其作用是将if
语句和for
循环混合在一起。
循环while
将执行一段代码直到满足某个条件。
例如,我们希望一直输出Wrong!
直到best_number
等于 29。
在 Python 中,我们可以写:
while best_number != 29:
print("Wrong!")
表示!=
"不等于",其中!
表示not
。因此,我们运行print
语句while
不best_number
等于29
,这意味着while
循环将一直运行,直到最佳数字为 29。
在 JavaScript 中:
while(bestNumber !== 29){
console.log("Wrong!")
}
它们非常相似,只有细微的差别,例如!==
与相比!=
,以及我们上面讨论的所有差别。
语法摘要 {#ssummary}
语法就是语言的书写方式和读者眼中的语言。显而易见,Python 的外观要简洁得多,甚至从未编程过的人也能阅读简单的 Python 程序并了解其功能。
另一方面,JavaScript 与大多数编程语言一样,更倾向于使用符号而不是文字。这使得外观和布局更具数学性。也许令人惊讶的是,JavaScript 的语法实际上与其他流行语言(例如 Java)非常相似。
因此,从整体上看,如果只从语法上考虑,Python 肯定比 JavaScript 更容易学习。但是,JavaScript 的语法更易于迁移,这意味着一旦你学会了 JavaScript,学习 Java 或 C 等其他语言就会容易得多。
结论 {#conclusion}
现在我们已经对 Python 和 JavaScript 有了大致的了解,重要的是要记住学习它们都不会对你有任何坏处!任何编码都比没有编码要好!
然而,从更技术的角度来看,如果您希望学习编码以找到软件开发工作,或者您有使用其他语言的经验,我们建议您从 JavaScript 开始。
如果您只是为了学习而学习编码,我们推荐 Python,因为它可以让您更轻松地进入编码世界。