web-dev-qa-db-ja.com

Objective-Cは解釈済みまたはコンパイル済みの言語ですか?

Objective-Cがインタープリター言語かコンパイル言語かを知りたい。

7
manuelBetancurt

どちらでもない。 Objective-Cはプログラミング言語です。プログラミング言語は抽象的な概念です。プログラミング言語は、数学的なルールと定義のセットです。プログラミング言語はコンパイルも解釈もされず、単にareです。

コンパイルと解釈はプログラミング言語のプロパティではなく、コンパイラまたはインタープリタ(duh)のプロパティです。 Every言語はコンパイラとインタプリタで実装でき、-most言語はコンパイルと解釈の両方の実装を備えています。実際、最新の言語実装の大部分は、パフォーマンスを最大化するために両方インタープリターおよび同じ実行エンジンのコンパイラーを利用しています。

特にObjective-Cの場合、私はgobjc、clang、oscompilerの3つの実装を知っていますが、クイックGoogle検索でさらに2つ見つかりました。これら5つの実装のうち、3つはコンパイラで、2つはインタプリタです。

34
Jörg W Mittag

Wikipedia から:

一部の言語仕様では、実装にはコンパイル機能を含める必要があると明記されています。たとえば、Common LISP。ただし、Common LISPの定義には、解釈を妨げる固有の要素はありません。他の言語には、インタープリターに実装するのが非常に簡単な機能がありますが、コンパイラーの作成をはるかに難しくします。たとえば、APL、SNOBOL4、および多くのスクリプト言語を使用すると、プログラムは実行時に通常の文字列操作で任意のソースコードを作成し、そのコードを特別な評価関数に渡して実行できます。これらの機能をコンパイル済み言語で実装するには、通常、プログラムにコンパイラー自体のバージョンを含むランタイムライブラリが付属している必要があります。

私は、clange(メインのobjecコンパイラ)がランタイムライブラリに同梱されており、目的の動的な性質を実現しています。

1
Muhammad Hewedy