0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コンピュータサイエンス学び直し -プログラムについて-

Posted at

1. はじめに

エンジニアとして3年が経過しようとしている中、技術を使ってより高度な問題解決をしていくためには、フレームワークや言語に依存しない基礎となる知識が必要だと感じたため、CSを勉強し直しています。
その学習内容を備忘録として発信します。
今回はプログラムについてです。

2. プログラムとは

プログラムとは、コンピュータに対する「命令」と「データ」の集合体です。コンピュータはこの「命令」と「データ」を解釈して定められた処理を実行します。

3. プログラムが実行されるまで

プログラムを実行するには大きく分けて、「コンパイラを使った実行」と「インタプリタを使った実行」の2つの分けられます。

コンパイラとインタプリタの違い

項目 コンパイラ インタプリタ
実行前の処理 ソースコード全体を事前に機械語(バイナリ)に変換する ソースコードを1行ずつ解析・実行する
実行可能ファイル 生成される(バイナリファイルとして保存される) 生成されない(逐次実行される)
実行速度 高速(事前にコンパイル済みのため) 低速(実行時に逐次解析するため)
エラー検出 コンパイル時にすべてのエラーを検出 実行中にエラーが発生した時点で停止
OSへの依存 高い(コンパイルしたバイナリは特定のOS・CPU向けに作られる) 低い(インタプリタが異なるOSでもソースコードを解釈して実行できる)
使用例 C, C++ など Python, JavaScript など

OSへの依存の違い(分かりやすい説明)

項目 コンパイラ インタプリタ
OSへの依存 高い(コンパイルしたバイナリは特定のOS・CPU向けに作られる) 低い(インタプリタが異なるOSでもソースコードを解釈して実行できる)

コンパイラの場合(OS依存が高い)

コンパイラは、特定のOSやCPU向けに機械語へ変換します。そのため、Windows用にコンパイルしたプログラムはLinuxでは動かないことが一般的です。
→ もし異なるOSで動かしたい場合は、そのOS向けに再コンパイルする必要があります。

インタプリタの場合(OS依存が低い)

インタプリタは、OSごとに用意された実行環境(インタプリタ)を使って、ソースコードを解釈・実行します。そのため、同じPythonやJavaScriptのスクリプトは、WindowsでもLinuxでもMacでも、対応するインタプリタがあれば動作します。
プログラムをそのまま別のOSで実行しやすいのがメリットです。

具体例

  • コンパイラ型のC言語プログラム

    • Windows用にコンパイルしたCプログラム(.exe)は、Linuxでは動かない。
    • Linuxで動かすには、Linux用にコンパイルし直す必要がある。
  • インタプリタ型のPythonスクリプト

    • WindowsのPythonでも、MacのPythonでも、同じスクリプト(.py)を実行できる。
    • ただし、インタプリタ(Python)がインストールされていないと実行できない。

つまり、コンパイラ型のプログラムはOSやCPUに依存しやすく、インタプリタ型のプログラムはOSをまたいで動作しやすいという違いがあります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?