网站搜索

深入探讨 Python 与 Perl 的争论 - 我应该学习 Python 还是 Perl?


通常,当引入一种新的编程语言时,业界的一些天才头脑中就会引发一场争论,将这种语言与已经广泛传播的语言进行比较。 IT 行业中经常流传着一种议论,新产品经常在各个方面与现有同类产品进行比较,无论是功能、语法还是核心 CPU 和内存方面(包括 GC 时间等)。

此类案例的例子有很多,包括JavaC#C++等之间的争论。其中一个引起广泛关注的案例是两种语言之间的争论,这两种语言在很短的时间内相继出现,即PythonPerl

Python 最初是作为 ABC 语言的继承者而发明的,只是作为作者的“爱好”编程项目(这会吸引 Unix/C 黑客),并以他最大的明星Monty Python系列。

建议阅读: Linux 中的 Python 编程和脚本编写入门

Perl 大约在 2 年前就出现了,它是一种 Unix 脚本语言,旨在使报表处理更加容易。它是多种语言的组合,包括 C、awk、sed 和 shell 脚本。

值得注意的是,这些不同意图演变而来的语言正在不断地进行比较,这让我研究并找出其中的原因,其中一些重要的原因如下:

  1. 两者都针对 Unix 操作系统,其中一种供黑客和其他人处理报告。
  2. 两者都是面向对象的(Python 更重要)和解释性的,其中一种是强类型的并且在编码时清晰,即 Python,而另一种允许使用大括号来表示块的丑陋类型,即 Perl
  3. 当我们说 Perl 有多种方法来完成一项任务而 Python 只专注于一种方法时,两者在原则上是相反的。

Python 与 Perl – 功能比较

让我们深入探讨这场争论,并尝试找出这两种语言之间的总体差异。另外,让我们尝试找出许多陈词滥调的真相来源,这些陈词滥调在业界经常听到,“Python 是带辅助轮的 Perl”或“Python 与 Perl 相似但不同” ”这样我们就可以尝试为这场永无休止的争论提供准确的解决方案。

1. Python 的简洁语法与 Perl 的复杂语法

在代码可读性方面,Python 比 Perl 具有巨大优势。即使多年后阅读代码,Python 的代码也比 Perl 的代码更容易理解。

通过缩进表示代码块和正确的结构,Python 的代码更加简洁。另一方面,Perl 在正则表达式方面借鉴了各种编程语言的语法,例如 C、shell 脚本,甚至 awk 和 sed 过滤器。

建议阅读: 用于日常 Linux 系统管理任务的 15 个有用的“sed”命令

除此之外,用 '{' 和 '}' 表示一段代码并在每行末尾添加不必要的 ';',Perl 中的代码可能会变成如果你在几个月或几年后阅读它,就会遇到一个难以理解的问题,因为它允许丑陋的脚本。

2. Perl 的内置与 Python 的第 3 方正则表达式和操作系统操作支持

Perl 语言借用了 C 和其他 UNIX 命令的语法,如 sedawk 等。因此,它具有强大的内置正则表达式支持,无需导入任何第三方模块。

此外,Perl 可以使用内置函数处理操作系统操作。另一方面,Python 有用于这两种操作的第三方库,即用于 regexre 和用于 os 操作的 os、sys ,这些操作需要在进行此类操作之前要确保。

Perl 的正则表达式操作具有类似于 'sed' 的语法,这不仅使搜索操作变得容易,而且还可以比需要了解的 Python 轻松、快速地完成字符串上的替换、替换和其他操作并记住满足需要的功能。

示例:考虑一个在 Perl 和 Python 中搜索字符串中数字的程序。

Import re
str = ‘hello0909there’
result = re.findall(‘\d+’,str)
print result
$string =  ‘hello0909there’;
$string =~ m/(\d+)/;
print “$& \n”

您会看到 Perl 的语法非常简单,并且受到 sed 命令的启发,该命令利用了 Python 语法(导入第三方模块're')。

3. Python 的高级面向对象编程 vs Perl 的单行程序

PythonPerl 黯然失色的一项功能是其先进的 OO 编程。 Python 具有广泛的面向对象编程支持,具有干净且一致的语法,而 Perl 中的对象 OOP 已经过时,使用包作为替代品用于课程。

建议阅读: Python Django Web 框架入门

而且,在 Perl 中编写 OO 代码会给代码增加很多复杂性,这最终会使代码难以理解,甚至 Perl 中的子例程也很难编程,最终也很难理解。

另一方面,Perl 最适合它的单行代码,可以在命令行上使用它来执行各种任务。此外,Perl 代码最终可以用比 Python 更少的代码行完成各种任务。

两种语言的简码示例,突出显示 Perl 用更少的 LOC 做更多事情的能力:

try:
with open(“data.csv”) as f:
for line in f:
print line,
except Exception as e:
print "Can't open file - %s"%e
open(FILE,”%lt;inp.txt”) or die “Can’t open file”;
while(<FILE>) {
print “$_”; } 

优点和缺点——Python 与 Perl

在本节中,我们将讨论 Python 和 Perl 的优缺点。

Python 优点:

  1. 它具有简洁而优雅的语法,这使得该语言成为想要实践任何编程语言的新手的首选编程语言。
  2. 具有非常先进和固有的OO编程,而且Python中的线程编程比Perl好得多。
  3. 在许多应用领域,Python 是首选,甚至优于 Perl。 喜欢:Perl 是 CGI 脚本语言的首选,但现在 Python 的 Django 和 web2py 之类的 Web 脚本语言变得越来越流行,并且对业界具有巨大的吸引力。
  4. 有多个针对不同编程语言的 SWIG 包装器,例如 CPythonIronPythonJython,并且这些包装器的开发先于开发Perl 的 SWIG 包装器。
  5. Python 代码总是缩进良好,易于阅读和理解,即使您多年后正在阅读别人的代码,甚至是您的代码。
  6. Python 适用于各种应用,如大数据、基础设施自动化、机器学习、自然语言处理等,它具有由于是开源的,因此得到了活跃社区的巨大支持。

Python 的缺点:

  1. Python 中的执行速度通常比 Perl 慢,包括正则表达式和基于字符串的操作。
  2. 有时,在 Python 中获取变量的类型很困难,因为在代码非常大的情况下,您必须走到最后才能获取变得忙碌且复杂的变量类型。

Perl 优点:

  1. Perl 具有强大的单行代码,甚至确保了类似 UNIX 管道的语法,可以在命令行上使用它来执行各种任务,并且它受到 Unix 及其命令行编程的影响,因此在其编码中集成了许多受 UNIX 影响的命令。
  2. Perl 因其强大的正则表达式 和字符串比较操作而闻名,因为它受到 sedawk 等强大的 UNIX 工具的影响。在正则表达式和字符串操作(如替换匹配替换)的情况下,Perl 优于 Python,后者需要几行代码才能实现相同的。此外,许多文件 I/O 操作、异常处理在 Perl 上完成得更快。
  3. 当谈到用于报告生成的语言时,Perl 自推出以来一直享有盛名,这也是作者开发像 Perl 这样用于报告生成的语言的主要原因之一。
  4. Perl 的许多应用领域包括网络编程系统管理CGI 脚本(这里 Python 正在通过 Django 和 web2py 战胜 Perl), ETC。
  5. 通过 Perl 在变量前面使用的符号可以很容易地识别变量的类型,例如:‘@’ 标识数组,‘%’ 标识哈希值。

Perl 的缺点:

  1. Perl 的代码非常复杂,对于新手来说很难理解。对于经验不足的程序员来说,子例程,甚至其他符号,例如:‘$`’‘$&’等都很难理解和编程。此外,除非您有良好的经验,否则 Perl 代码在阅读时会变得难以理解且复杂。
  2. Perl 中的OO 编程有点过时了,因为OO 编程从未为人所知,而且许多操作(如线程)在 Perl 上也不太明显。

结论

如上所示,两种语言在其目标应用程序方面都表现出色,PythonPerl 稍占优势,成为新手的首选,因为它干净且易于理解的代码,而另一方面,Perl 在字符串操作操作和 UNIX 等操作系统的一些高级单行语句以及众所周知的各种其他操作方面优于 Python。

因此,最终,这一切都取决于您的目标特定区域。欢迎您对本文发表评论,如果您认为 Python 胜出或 Perl 胜出,我们会请求您就该主题发表自己的看法。