0

基本的に、オブジェクト指向言語の唯一の利点は、プログラムの目的の理解が向上することですか?

オブジェクト指向言語のコンパイラは、オブジェクトを構造体と関数ライブラリに分解しますか?

4

3 に答える 3

0

速度を比較するためのリンクがいくつかあります。最初はC/C ++の比較です。記事全体をお読みください:http: //unthought.net/c ++ /c_vs_c++。html

Python、Java、C ++、PHP、およびその他の言語を比較するには:

http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/

しかし、あなたの質問に答えるために、OOの主な利点は、モデルがオブジェクトに自然に適合するため、多くの問題に対してソリューションをモデル化するための最良の方法であるということです。ただし、適切でない場所で強制的に動作させようとすると、コードを理解するのが難しくなります。

問題にはさまざまな種類があるため、さまざまな言語パラダイムがあり、ソリューションを最もよくモデル化する言語の種類を選択する必要があります。たとえば、OOの方法論にうまく適合しないように見えるためC ++でOSを記述したくありませんが、オブジェクトを持つ方が理にかなっているため、Cでカーレースゲームを記述したくありません。 。

言語とコンパイラーによっては、コンパイルされたアプリケーションがCにコンパイルされる場合がありますが、一部は解釈されるため、そうでないものもあります。

たとえば、C ++はCにコンパイルされますが、Javaはコンパイルせず、.NET言語もコンパイルしません。PHPは一般的に解釈されますが、コンパイルすることは可能です(私は試したことがありませんが)。1つのコンパイラは次のとおりです。

http://www.phpcompiler.org/

于 2009-12-30T07:01:59.600 に答える
0

はい、メソッドコードはクラス定義の中心であり、各インスタンスメソッドはthis最初の引数としてデータへの暗黙のポインタを受け入れます。インスタンスメソッド呼び出しを逆アセンブルすると、これが表示されます。

于 2009-12-30T06:24:45.073 に答える
0

基本的に、はい。唯一の利点は、コードの理解が向上することです。

一部の言語では、コンパイル後に OO バージョンが非 OO バージョンと同じになります。たとえばパール。ほとんどの場合、OO バージョンは非 OO バージョンよりもはるかに遅くなります。非常にまれな例外を除いて、非 OO 言語は常に OO 言語よりも高速です。

しかし、一般的に、ほとんどの経験豊富なプログラマーは、OO 言語と非 OO 言語のパフォーマンスの違いについて心配する必要はないと言うでしょう (または Lispers は、手続き型言語と関数型言語のパフォーマンスの違いについて心配する必要はないと言うでしょう)。これは、コードを理解することの重要性を過小評価してはならないからです。

オブジェクト指向、関数型言語、マルチパラダイム、メタプログラミングなど、非常に高水準の言語を使用することに慣れているため、最近では、それについて話すことはめったにありません。しかし、80 年代と 90 年代には、当時ソフトウェア危機として知られていたことがありました。ソフトウェア危機とは?それは基本的に、ほとんどのソフトウェア プロジェクトが完成しなかったという事実です。

ソフトウェアの危機は、軍用レーダー システムからゲーム、商用オペレーティング システムまで、業界のあらゆる分野に影響を与えました。消費者はそれらをベーパーウェアと呼んでいました。それらは野心的すぎるプロジェクトでした。

しかし最近では、非常に野心的で印象的なプロジェクトがたくさんあり、少なくともベータ版に到達することができます (web2.0 の場合、ベータ版は一般消費に十分です)。その理由の 1 つは、要求エンジニアリングの理解が深まり、ソフトウェア開発のプロセスの理解も深まったことです。しかし、その一部は、私たちが何をしているかを実際に理解するためのより優れたツールを持っているためでもあります. OO はそのツールセットの一部です。

于 2009-12-30T06:43:38.093 に答える