Objective-Cは動的言語ですか?

2203 ワード

一、動的言語と静的言語の概念
まず、動的言語と静的言語の概念を理解します.
静的:コンパイル時の動的:実行時
動的言語:プログラムの実行時に、プログラム構造を変えることができ、新しい関数(方法)、既存の関数を削除することができるなどの構造上の変化を導入することができる.プログラムの実行中にデータ型検査を行う言語です.つまり、ダイナミックタイプの言語プログラミング時に、変数にデータ型を指定しないでください.この言語は、変数に初めて値を付与したときに、内部でデータ型を記録します.
例:JavaScript、Ruby、Python...は動的言語に属する.
静的言語:コンパイル時に変数のデータ型が決定され、多くの静的タイプ言語では変数を使用する前にデータ型を宣言する必要があります.例:C、C++、Java、C#...などの言語静的言語;
二、Objective-Cは動的言語ですか?
これはObjective-Cの発展の歴史から言う必要があります:Tom LoveとBrad Coxの2人の開発者はITT会社でSmalltalkに接触して、CoxはC言語の中で顔のオブジェクトの機能を加えたいと思って、C言語だけで顔のオブジェクトのプログラミングを行うことができて、ファイルの拡張名を:COOPCと命名して、C言語でオブジェクト向けを実現することを表します.その後、二人は会社になり、新しい言語はObjective-Cと命名された.数年後、Steve Jobsが率いるNeXTという小型創業会社は、Objective-C言語の使用と標準化を許可され、NeXT-stepオペレーティングシステムの主な言語として、NeXTは最終的にアップルに買収され、NeXTstepオペレーティングシステムは最終的にMac OSシステムに発展した.このように、Objective-CはC言語を拡張し、静的言語の特性を備えている.Smalltalkは動的言語のルーツであるため、Objective-Cは動的言語の特性を備えており、Objective-Cは動的言語と言える.
    Objective - C                    ,               ,       C   C++            ,                     ;

したがって、Objective-Cは動的言語と言えるが、比較的特殊な動的言語である.
JavaとObjective-Cにはなぜ多くの共通点があるのか.
Objective-Cは、Java言語やObjective-Cのような多くの他のプログラミング技術に実際に影響を及ぼしています.なぜなら、Objective-Cの初期にNeXTとSun Microsystemsが協力してOpenStepプラットフォームを開発し、この技術を開発するための言語がObjective-Cだったからです.NeXTコンピュータのパフォーマンスがSun社の予想された要求に達しなかった場合、NeXTは失敗に向かった.Sun社は、Objective-CがJavaを使用する前の最初の言語であるため、言語とプラットフォームにまたがる開発パッケージを開発することを決定しました.Java、JavaエンジニアはObjective-Cに精通しています.その後、Javaにいくつかの優れた機能が導入されたため、JavaとObjective-Cには多くの共通点がある.
例えば、Objective-Cは動的特性と静的特性を兼ね備えた言語であることをよりよく説明する.
C言語(静的言語特性)、関数の呼び出しはコンパイル時に、その関数を呼び出すことを決定する.
Objective-C(静的言語特性):コンパイル時に、実際にどの関数を呼び出すかを決定することはできませんが、Objective-Cは呼び出し関数をチェックします.
そこで1種の特殊な情況が現れました:コンパイルの段階で、C言語は実現の関数として呼び出して、間違いを報告します;コンパイルフェーズでは、OC時に任意の関数を呼び出すことができます.この関数が実装されていなくても、宣言さえすればエラーは報告されません.
OC言語では、動的呼び出しのプロセスがあり、実際に実行されている場合にのみ、関数名に基づいて対応する関数を見つけて呼び出すことができます.このとき、関数がまだ実装されていない場合は、エラーが報告されます.
C言語プログラムの実行過程:
ソース・プログラム-プリプロセッシング-コンパイラ-アセンブリ-リンク-実行可能ターゲット・プログラム(バイナリ)
実行効率について:静的言語の実行効率は動的言語より高い.
一部のCPU計算損失はRunTime過程にあるため、静的言語で生成された機械指令はより簡潔である.そのため、言語を開発する人はRuntimeをコンパクトに保つために多くの努力を払っています.
Objective-C言語はC言語のスーパーセット+コンパクトなRuntime環境です