アカウント名:
パスワード:
> この記事のタイトルは「C/C++に死を」だが、原文タイトルにはC++は含まれていない
とはいうが、Cの方はリソースの厳しい組み込み向けなど、他で置き換えられないニーズがまだある。C++の方こそ、それが使われていた用途向けには今ではもっと洗練された言語がある。まあ放っておいても滅びそうだからあまりそういう話題にもならないのだろうけど。
C言語の方は放っておいたら当分は滅びそうにないから「滅びるべき」という話が出てくるんだろうな。
しかし、訳文にC++を勝手に追加した御仁は何の考えあってのことなのだろうか。
リソース制限が理由でCは使えるのにC++が使えないことなんかあるの?
使えないじゃなくて必要が無い。オブジェクト指向ってのはそもそも、大規模で複雑なシステムを大勢で開発するようなケースで便利な方法として考えられたもの。リソース制限が厳しい環境はそもそも大きなプログラムを置けないので、C++を持ち出す必要もない。使ってもいいが。まあC++でC的な書き方もできるなんて屁理屈を捏ねだす奴もいるだろうけど。
ROM数kバイト、RAM500バイトみたいな組込みやっててもオブジェクト指向は使いたいよ。もう構造体に関数ポインタならべてディスパッチするのはやりたくない。
静的型付けでGCがなくて今風の構文を押さえた小さい言語があるといいんだけど。
オブジェクト指向って基本的に「他人の作ったものを『安全簡単』に使いまわし」するのに便利な手法じゃないの?小規模なものを自分で1から10まで再利用無しで作る場合は、オブジェクト指向にしたところで大して楽にはならないと思うけど。
> オブジェクト指向って基本的に「他人の作ったものを『安全簡単』に使いまわし」するのに便利な手法じゃないの?
違います。オブジェクト指向は「データと、それを処理する関数群を、一体のもの(オブジェクト)として捉える」ということ。継承もカプセル化も、それに付随するものでしかない。
calc_hoge(hoge);print_hoge(hoge);
とするより、
hoge->calc();hoge->print();
と捉え方を変換しましょうよ、ってだけのこと。だから、規模とかは関係ないのです。
「他人の作ったものを『安全簡単』に使いまわし」
これが本当に安全ならどんなに楽か・・
些細な改修の話が継承しまくった肥大なobjectという何かの大元にちょっとした間違いがあったせいで工数が莫大に増えた事なんて珍しくない
難易度までカプセル化しやがる
低品質なコードはオブジェクト指向では救えません。ちゃんとテストしてくださいとしか言いようがありません。
オブジェクト指向だと、オブジェクトを間違った使い方を「させない」ことができるから「安全」なのです。間違った引数を受け取らない。外部からの不正な操作をさせない。これがカプセル化です。
オブジェクト指向が楽と言っている人は、このようなカプセル化はしていないんでしょう。構造化プログラミングをオブジェクトで実現しているだけ。
カプセル化するほうが「楽に」コーディングできるんです。使用したいインスタンスがどんなパラメタを持っているか、パラメタは書き換えていいかどうかなどを使用する側が意識する必要がなくなるのですから。使用する側は、ただインスタンスにメッセージを投げればいいだけです。
publicスコープとprivateスコープの使い分け程度ならば、オブジェクト指向というより、構造化プログラミングの範疇であり、C言語でもよく使われる書き方です。
publicスコープとprivateスコープ
厳密にいえば、public、protected、private はスコープじゃなくて、アクセスコントロールなんだけど。つまり、親のプライベートは見られるけどアクセスできない。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson
C++の方こそお役御免では? (スコア:0)
> この記事のタイトルは「C/C++に死を」だが、原文タイトルにはC++は含まれていない
とはいうが、Cの方はリソースの厳しい組み込み向けなど、他で置き換えられないニーズがまだある。
C++の方こそ、それが使われていた用途向けには今ではもっと洗練された言語がある。
まあ放っておいても滅びそうだからあまりそういう話題にもならないのだろうけど。
C言語の方は放っておいたら当分は滅びそうにないから「滅びるべき」という話が出てくるんだろうな。
しかし、訳文にC++を勝手に追加した御仁は何の考えあってのことなのだろうか。
Re: (スコア:0)
リソース制限が理由でCは使えるのにC++が使えないことなんかあるの?
Re: (スコア:1)
使えないじゃなくて必要が無い。
オブジェクト指向ってのはそもそも、大規模で複雑なシステムを大勢で開発するようなケースで
便利な方法として考えられたもの。
リソース制限が厳しい環境はそもそも大きなプログラムを置けないので、C++を持ち出す必要もない。使ってもいいが。
まあC++でC的な書き方もできるなんて屁理屈を捏ねだす奴もいるだろうけど。
Re: (スコア:0)
ROM数kバイト、RAM500バイトみたいな組込みやっててもオブジェクト指向は使いたいよ。
もう構造体に関数ポインタならべてディスパッチするのはやりたくない。
静的型付けでGCがなくて今風の構文を押さえた小さい言語があるといいんだけど。
Re: (スコア:0)
オブジェクト指向って基本的に「他人の作ったものを『安全簡単』に使いまわし」するのに便利な手法じゃないの?
小規模なものを自分で1から10まで再利用無しで作る場合は、オブジェクト指向にしたところで
大して楽にはならないと思うけど。
Re: (スコア:0)
> オブジェクト指向って基本的に「他人の作ったものを『安全簡単』に使いまわし」するのに便利な手法じゃないの?
違います。
オブジェクト指向は「データと、それを処理する関数群を、一体のもの(オブジェクト)として捉える」ということ。
継承もカプセル化も、それに付随するものでしかない。
calc_hoge(hoge);
print_hoge(hoge);
とするより、
hoge->calc();
hoge->print();
と捉え方を変換しましょうよ、ってだけのこと。
だから、規模とかは関係ないのです。
Re: (スコア:0)
「他人の作ったものを『安全簡単』に使いまわし」
これが本当に安全ならどんなに楽か・・
些細な改修の話が
継承しまくった肥大なobjectという何かの大元に
ちょっとした間違いがあったせいで
工数が莫大に増えた事なんて珍しくない
難易度までカプセル化しやがる
Re:C++の方こそお役御免では? (スコア:1)
「他人の作ったものを『安全簡単』に使いまわし」
これが本当に安全ならどんなに楽か・・
低品質なコードはオブジェクト指向では救えません。
ちゃんとテストしてくださいとしか言いようがありません。
オブジェクト指向だと、オブジェクトを間違った使い方を「させない」ことができるから「安全」なのです。
間違った引数を受け取らない。外部からの不正な操作をさせない。これがカプセル化です。
オブジェクト指向が楽と言っている人は、このようなカプセル化はしていないんでしょう。
構造化プログラミングをオブジェクトで実現しているだけ。
Re: (スコア:0)
カプセル化するほうが「楽に」コーディングできるんです。
使用したいインスタンスがどんなパラメタを持っているか、パラメタは書き換えていいかどうかなどを使用する側が意識する必要がなくなるのですから。使用する側は、ただインスタンスにメッセージを投げればいいだけです。
Re:C++の方こそお役御免では? (スコア:1)
publicスコープとprivateスコープの使い分け程度ならば、
オブジェクト指向というより、構造化プログラミングの範疇であり、
C言語でもよく使われる書き方です。
Re:C++の方こそお役御免では? (スコア:1)
publicスコープとprivateスコープ
厳密にいえば、public、protected、private はスコープじゃなくて、アクセスコントロールなんだけど。つまり、親のプライベートは見られるけどアクセスできない。