Python と Perl の論争を深く掘り下げてみましょう - Python と Perl のどちらを学べばよいでしょうか?
多くの場合、新しいプログラミング言語が導入されると、業界の一部の天才的な頭脳の間で、その言語がすでにその根を広げている言語と比較されるという議論が始まります。 IT 業界では一種の話題が広まることがよくあり、機能、構文、コア CPU やメモリの側面 (GC 時間など) など、あらゆる面で新しいものが既存の同種のものと比較されることがよくあります。
過去からJavaとC#やC++との議論など、そのような事例を数多くピックアップして調査することができます。大きな注目を集めた事例の 1 つは、短期間に次々と登場した 2 つの言語、 つまりPython とPerl の間での議論でした。
一方、Python は当初、ABC 言語の後継として、単に「趣味」プログラミング プロジェクト (Unix/C ハッカーを惹きつける) として、ABC 言語にちなんで命名した作者の目的で発明されました。彼の最大のスターモンティ・ パイソンのシリーズ。
推奨読書: Linux での Python プログラミングとスクリプトの入門
Perl は、レポート処理を容易にすることを目的とした Unix スクリプト言語として、ちょうど約 2 年前に登場しました。これはC、awk、sed、シェル スクリプトなど、多くの言語を組み合わせたものでした。
注目に値するのは、異なる意図で進化したこれらの言語が常に比較されているということです。そのため、私はその理由を研究して理解することができました。そのうちのいくつかの重要なものを以下に挙げます。
- どちらも Unix オペレーティング システムをターゲットにしており、1 つはハッカーなどのレポート処理を目的としています。
- どちらもオブジェクト指向 (Python の方が多い) であり、解釈されます。1 つはコーディングに関して強力に型指定され明確に記述されている (つまり Python)、もう 1 つはブロックを表すために中括弧を使用した醜い型付けが可能である (つまり Perl)
- Perl には 1 つのタスクを実行するためのさまざまな方法があるのに対し、Python は物事を実行する 1 つの唯一の方法に焦点を当てるということは、両方とも原理的に反対です。
Python と Perl – 機能の比較
この議論を深く掘り下げて、これら 2 つの言語が互いに異なる全体的な側面を理解してみましょう。また、業界でよく聞かれる「Python は補助輪付きの Perl です」または「Python は Perl に似ていますが、異なります」という多くの常套句の真実の情報源を見つけてみましょう。これにより、この終わりのない議論に対する正確な解決策を導き出すことができます。
1. Python のクリーンな構文と Perl の複雑な構文
コードの可読性に関しては、Python は Perl に比べて大きな利点を持っています。 Python のコードは、何年も経ってからコードを読んでも、Perl のコードよりもはるかに理解しやすいです。
コードのブロックを表すインデントと適切な構造により、Python のコードは非常にきれいになります。一方、Perl は、正規表現に関しては、C、シェル スクリプト、さらには awk フィルタや sed フィルタなどのさまざまなプログラミング言語から構文を借用しています。
推奨読書: 日常の Linux システム管理タスクに役立つ 15 の「sed」コマンド
これとは別に、コードのブロックを表す '{' および '}'
と、各行の末尾に不要な ';'
が追加されると、Perl のコードは次のようになります。醜いスクリプトが許容されているため、数か月または数年後に読むと理解できない問題があります。
2. Perl の組み込みと Python のサードパーティ正規表現および OS 操作のサポート
Perl 言語は、C や、sed、awk などの他のUNIX コマンドから構文を借用しています。そのため、サードパーティのモジュールをインポートしなくても、非常に強力な組み込みの正規表現サポートが備わっています。
またPerlは組み込み関数を使用してOSの操作を処理できます。一方、Python には両方の操作用のサードパーティ ライブラリがあります。つまり、正規表現用の re と、必要な 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 の構文は非常に簡単で、サードパーティ モジュール 「re」 をインポートするPython の 構文を利用する sed コマンドからインスピレーションを得ていることがわかります。
3. Python の高度な OO プログラミングと Perl のワンライナー
Python が Perl に影を落とす特徴の 1 つは、その高度な OO
プログラミングです。 Python はクリーンで一貫した構文による広範なオブジェクト指向プログラミング サポートを備えていますが、Perl のオブジェクト OOP
は古くなり、パッケージが代わりに使用されます。授業用に。
推奨読書: Python Django Web フレームワークの入門
また、Perl で OO
コードを記述するとコードがさらに複雑になり、最終的にはコードの理解が難しくなり、Perl のサブルーチンでさえプログラムするのが非常に難しく、最終的には後で理解するのが困難になります。
一方、Perl は、さまざまなタスクを実行するためにコマンドラインで使用できるワンライナーに最適です。また、Perl コードは最終的に、Python よりも少ないコード行でさまざまなタスクを実行できるようになります。
より少ない LOC でより多くのことを実行できる Perl の機能を強調する両方の言語のショートコード例:
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の長所:
- この言語はクリーンでエレガントな構文を備えているため、プログラミング言語を実際に試してみたい初心者にとって、最初のプログラミング言語として最適です。
- 非常に高度で固有の
OO
プログラミングを備えており、Python でのスレッド プログラミングも Perl よりもはるかに優れています。 - Python が好まれるアプリケーション分野は数多くありますが、Python は Perl よりも優れています。 いいね: CGI スクリプトには Perl が好まれていますが、最近では Python の Django や web2py のような Web スクリプト言語の人気が高まっており、業界から大きな注目を集めています。
- CPython、IronPython、Jython などのさまざまなプログラミング言語用の複数の SWIG ラッパーがあり、これらの開発は開発に先立って行われています。 Perl 用の SWIG ラッパーの一部。
- Python コードは常に適切にインデントされており、他人のコードや何年も経ってから自分のコードを読んでも読みやすく、理解しやすいです。
- Python は、ビッグ データ、インフラ オートメーション、機械学習、NLP などのさまざまなアプリケーションに適しています。オープンソースであるため、アクティブなコミュニティからの大きなサポート。
Pythonの短所:
- 通常、正規表現や文字列ベースの操作など、Python での実行が Perl の実行よりも遅い領域はほとんどありません。
- 非常に大規模なコードの場合、Python で変数の型を取得するのが難しい場合があります。変数の型を取得するには最後まで作業する必要があり、多忙で複雑になります。
Perlの長所:
- Perl には強力なワンライナーがあり、コマンド ラインでさまざまなタスクを実行するために使用できる UNIX パイピングのような構文も保証されています。また、Perl は Unix とそのコマンド ライン プログラミングの影響を受けているため、UNIX の影響を受けた多くのコマンドがコーディングに統合されています。
- Perl は、強力な UNIX ツールのようなsed やawk の影響を受けており、強力な正規表現と文字列比較操作で知られています。 置換、一致、置換などの正規表現および文字列操作の場合、Perl は、数行のコードを必要とする Python よりも優れたパフォーマンスを発揮します。同じ。また、多くのファイル I/O 操作、例外処理は Perl 上でより高速に実行されます。
- レポート生成用の言語に関して言えば、Perl は、著者が Perl のような言語を開発した主な理由の 1 つがレポート生成用だったので、その登場以来常に名声を博しています。
- Perl が使用されるアプリケーション分野の多くはネットワーク プログラミング、システム管理、CGI スクリプトです (ここでは Python が Django と web2py で Perl を克服しています)。等
- Perl が変数の前に使用する記号を使用すると、変数の型を簡単に識別できます。たとえば、
‘@’
は配列を識別し、‘%’
はハッシュを識別します。
パールの短所:
- Perl のコードは非常に複雑なので、初心者にとっては理解しにくいです。サブルーチン、さらには
‘$`’
、‘$&’
などの他の記号も、経験の浅いプログラマにとっては理解しにくく、プログラミングするのが困難です。また、Perl コードを読んだ場合、質の高い経験がなければ、理解するのが難しく複雑になります。 - Perl での OO プログラミングは、これまであまり知られていなかったので少し時代遅れであり、スレッド化などの多くの操作も Perl ではそれほど顕著ではありません。
結論
上で見たように、対象とするアプリケーションに関してはどちらの言語も優れていますが、Python は初心者の最初の選択肢として Perl よりも少し有利です。コードはクリーンで理解しやすいですが、その一方で、文字列操作操作や、OS などの UNIX 用の高度なワンライナーや、Perl で知られるさまざまな操作に関しては、Perl が Python よりも優れています。
したがって、最終的には、ターゲットとする特定の領域にすべてがかかっています。この記事に関するすべてのコメントは大歓迎です。Python が勝つか Perl が勝つかどうかに応じて、このトピックに関するご意見をお聞かせください。