プログラミング

プログラムとスクリプトの違い

こんにちは!ProgRiroです。

本日のテーマは「プログラムとスクリプトの違い」です。似ているようで少し違うプログラムとスクリプト。そんな2つの違いをあなたは説明できますか?

この記事を読んだ後は、はっきりと違いを説明できるようになっているでしょう。

プログラムとは

プログラムとは、人間が読める平文から機械語に翻訳されたバイナリベースのファイルのことを言います。

もう少し詳しくいうと、様々なプログラム言語の形式でテキストベースで書かれた命令文のファイル(ソースコード)を、コンパイラと呼ばれるもので、パソコンが理解しやすい機械語に翻訳されることによって作られるファイルプログラムと呼びます。

流れは以下のような感じです。

  1. コードを書く
  2. コンパイルする(機械語に変換する)
  3. 実行する

    プログラムは事前に機械語に翻訳(コンパイル)してあるので、実行速度が速いというメリットがあります。言い換えると、コンパイルしないと使えないため、開発でデバッグをするときなどは、毎回コンパイルするので面倒というデメリットもあります。

    もう一つのメリットとしてプログラムは、コンパイルすることでバイナリ化される点であると言えます。バイナリ化とは、人間には読めない数字列に変換することです。

    そのため、他者からはどのように作られているかはパっと見ではわかりません。従って、盗まれにくくパクられにくいといえます。

    企業がPythonなどのスクリプト言語で開発を行った後、盗用されないようにC言語で書き直すのは、このバイナリ化が目的です。

    スクリプトとは

    スクリプトとは、テキストファイルベースで書かれた命令文(ソースコード)のファイルのことです。スクリプトは、インタープリタと呼ばれるものがスクリプト言語をその場で翻訳し、その場で実行します。

    流れは以下のような感じです。

    1. コードを書く
    2. コンパイルする(機械語に変換する)
    3. 実行する

      プログラムとは違ってコンパイルが不要なため、書いたコードをすぐに実行できます。よってデバックをするときはいちいちコンパイルしなくてもいいので、素早く実行が可能です。

      ただ、コンパイルしていないため実行速度はプログラムと比べると劣ります。

      つまりスクリプトは「コンパイルしないで実行可能だけど、プログラムと比べて実行速度は遅いですよって解釈で問題ありません。

      よく知られているスクリプト言語は、以下のような言語です。

      PHP、Perl、Javascript、Python、Ruby

      どれもコンパイルが必要なく、すぐに実行できます。

      実行の例

      プログラム言語とスクリプト言語の実行までの例を示します。

      どちらもターミナル上に「Hello, World.」と表示する簡単なプログラムです。

      プログラム言語(C言語実行例)

      以下の流れを意識して見ていってください。

      1. コードを書く
      2. コンパイルする(機械語に変換する)
      3. 実行する

      1. コードを書くまずは簡単なプログラムを作成します

      2. コンパイルする(機械語に変換する)gcc fileName.c または cc fileName.c としてコンパイルします

      3. 実行するコンパイルすると a.out という実行ファイルが作成されるので、それを実行します

      スクリプト言語(Python実行例)

      以下の流れを意識して見ていってください。

      1. コードを書く
      2. コンパイルする(機械語に変換する)
      3. 実行する

        1. コードを書くまずは簡単なプログラムを作成します

        2. コンパイルする(機械語に変換する):スクリプト言語なので不要です

        3. 実行するpython fileName.py で実行します

        以上のように、スクリプト言語ではコンパイルが不要です。そのため、デバックが早くできるということがわかったと思います。

        まとめ

        プログラムとは、人間が読める平文から機械語に翻訳されたバイナリベースのファイルのことを言います。バイナリ化することで、人間には読めない数字列へと変換することができます。

        一方でスクリプトとは、テキストファイルベースで書かれた命令文(ソースコード)のファイルのことです。コンパイラが不要である点もスクリプトの特徴でしたね。

         

        以上で本日は終わりです。

        最後までお読みいただき、ありがとうございました。

        ABOUT ME
        ProgRiro
        理系大学生です。ITベンチャーでエンジニアとして働きながら、プログラミングスクールの講師も務めています。 趣味はプログラミング。 設計からコーディング、テストまでを行い、個人開発していきたい。 研究分野はデータ分析。世の中になくてはならないようなプロダクトを作りたいと思っています。