1.技術的な違い

1.技術的な違い

私はbashスクリプトを書いて、最初にコンパイルせずに実行しました。それは非常にうまく動作します。権限があるかどうかは動作しますが、Cプログラムの場合はソースコードをコンパイルする必要があります。なぜ?

ベストアンサー1

これは、シェルスクリプトがコンパイルされずに解釈されることを意味します。シェルは一度に1つのコマンドを解釈し、毎回各コマンドを実行する方法を理解します。とにかく、シェルスクリプトはほとんどの時間を他のプログラムの実行に費やすので、これはシェルスクリプトに適しています。

一方、Cプログラムは通常コンパイルされます。実行する前に、コンパイラはそのプログラムを完全に機械語コードに完全に変換します。過去にもCインタプリタがありました(例:ハイソフトソフトウェアAtari STのCインタプリタ)ですが、とても珍しいです。今日、Cコンパイラは非常に高速です。TCC#!/usr/bin/tcc -run非常に高速なので、shebangを使用して「Cスクリプト」を生成するために使用できます。できる(ユーザーの観点から)シェルスクリプトと同じ方法で実行されるCプログラムを作成します。

一部の言語にはソルバーとコンパイラの両方があることがよくあります。 BASICが思い浮かぶ一例です。

いわゆるシェルスクリプトコンパイラも見つけることができますが、私が見たのは難読化されたラッパーです。彼らはまだスクリプトを実際に解釈するためにシェルを使用しています。 〜のように追跡装置適切なシェルスクリプトコンパイラは間違いなく可能ですが、それほど面白くないことを指摘しています。

別の考え方は、シェルのスクリプト解析機能がコマンドライン処理機能の拡張であるため、自然に解析アプローチにつながることです。一方、C はスタンドアロンのバイナリを生成するように設計されており、これによりコンパイル方式が使用されました。一般に、コンパイルされた言語はインタプリタまたは少なくともコマンドラインパーサ(REPLと呼ばれる)を生成する傾向があります。読み取り - 評価 - 印刷ループ;シェル自体はREPLです。

おすすめ記事