1. ホーム
  2. python

[解決済み] Python vs Bash - どのような種類のタスクで、どちらが性能的に優れているか?[クローズド]

2022-09-30 06:39:41

質問

明らかにPythonの方がユーザーフレンドリーです。googleで検索すると、Pythonはバイトコンパイルされているため、通常より速いという結果がたくさん出てきます。私はさらに この を見つけ、辞書ベースの操作で2000%以上の改善が見られると主張しています。

この件に関して、あなたの経験はどのようなものですか?どのような種類のタスクで、それぞれが明らかに勝者となるのでしょうか?

どのように解決するのですか?

典型的なメインフレームのフロー...

Input Disk/Tape/User (runtime) --> Job Control Language (JCL) --> Output Disk/Tape/Screen/Printer
                                   |                          ^
                                   v                          |
                                   `--> COBOL Program --------' 

典型的なLinuxの流れ...

Input Disk/SSD/User (runtime) --> sh/bash/ksh/zsh/... ----------> Output Disk/SSD/Screen/Printer
                                   |                          ^
                                   v                          |
                                   `--> Python script --------'
                                   |                          ^
                                   v                          |
                                   `--> awk script -----------'
                                   |                          ^
                                   v                          |
                                   `--> sed script -----------'
                                   |                          ^
                                   v                          |
                                   `--> C/C++ program --------'
                                   |                          ^
                                   v                          |
                                   `--- Java program ---------'
                                   |                          ^
                                   v                          |
                                   :                          :

シェルはLinuxの接着剤

sh/ksh/などのLinuxのシェルは バッシュ /... 入力/出力/フロー制御指定機能を提供し、古いメインフレームのジョブ制御言語とよく似ています... しかし、ステロイドです! しかし、ステロイドのようなものです! チューリング完全言語 であり、O/S がサポートするあらゆる言語で書かれた他の実行プロセスとの間でデータや制御を効率的に受け渡しするために最適化されています。

ほとんどの Linux アプリケーションは、プログラムの大部分がどの言語で書かれているかに関係なく、シェルスクリプトと Bash が最も一般的になっています。デスクトップ上のアイコンをクリックすると、通常は短い Bash スクリプトを実行します。そのスクリプトは、直接または間接的に、必要なすべてのファイルがどこにあるかを知っており、変数とコマンドラインパラメータを設定し、最終的にプログラムを呼び出します。これがシェルの最もシンプルな使い方です。

しかし、システムを起動し、イベントに応答し、実行の優先順位を制御し、プログラムをコンパイルし、構成し、実行する何千ものシェル スクリプトがなければ、我々が知る Linux はほとんど Linux でないだろう。これらの多くは非常に大きく、複雑です。

シェルは、コンパイル時ではなく実行時に一緒にリンクされる、あらかじめ構築されたコンポーネントを使用できるようにするためのインフラストラクチャを提供します。これらのコンポーネントは、それ自体が独立したプログラムであり、再コンパイルすることなく単独で、あるいは他の組み合わせで使用することができます。コンポーネントを呼び出すための構文は Bash と区別がつきません。実際、システム上にスタンドアロン実行ファイルが存在する多数の組み込みコマンドがあり、しばしば追加のオプションがあります。

という言語的な違いはありません。 Python バッシュ といった具合です。それは完全に、それぞれがどのようにコード化され、どの外部ツールを呼び出すかに依存します。

任意の のようなよく知られたツールの awk, sed, grep, bc, dc, tr, などのよく知られたツールは、どちらの言語でもこれらの操作をほったらかしにします。 バッシュ のようなツールからデータを呼び出したり戻したりするのがより簡単で効率的なので、グラフィカルユーザーインターフェースを持たないものにはBashが好まれます。 バッシュ よりも Python .

パフォーマンス

がどのようなプログラムであるかに依存します。 バッシュ シェルスクリプトがどのプログラムを呼び出すか、そしてそれらが与えられたサブタスクに適しているかによって、全体のスループットや応答性が、同等の Python . 問題を複雑にするために Python は、ほとんどの言語と同様に、他の実行ファイルを呼び出すこともできますが、より面倒なので、あまり使われません。

ユーザーインターフェース

あるエリアでは Python が明らかに勝者である分野のひとつは、ユーザーインターフェイスです。Python は GTK グラフィックスをネイティブにサポートしており、よりもはるかに直感的なので、ローカルアプリケーションやクライアントサーバアプリケーションを構築するための優れた言語となります。 Bash .

バッシュ はテキストしか理解できない。他のツールはGUIを呼び出して、そこからデータを渡す必要があります。A Python スクリプトは1つの選択肢である。より高速ですが、柔軟性に欠けるオプションとして、以下のようなバイナリがあります。 YAD, Zenity, GTKDialogのようなバイナリです。 .

のようなシェルがある一方で バッシュ のようなGUIでうまく動作します。 ヤド , GtkDialog (GTK+の機能に対する埋め込み型XMLライクなインターフェイス) , ダイアログ そして xmessage , Python の方がはるかに高性能で、複雑なGUIウィンドウのために優れています。

概要

シェルスクリプトで構築することは、デスクトップPCのように既成の部品でコンピュータを組み立てるようなものです。

での構築は Python , C++ や他のほとんどの言語は、スマートフォンのようにチップ(ライブラリ)や他の電子部品をハンダ付けしてコンピュータを構築するようなものです。

最良の結果を得るには、通常 言語の組み合わせ で、それぞれが得意とすることを行うことができます。ある開発者はこれを「"」と呼んでいます。 ポリグロット・プログラミング と呼んでいます。