アカウント名:
パスワード:
taro-nishinoの日記: Linus氏のC++に対する最近の否定的見解 http://srad.jp/~taro-nishino/journal/509450/ [srad.jp]
Linus氏のC++否定論は、C++というよりも、オブジェクト思考言語全般に当てはまります。読まずに批判・評価する人は、まず読みましょう。例えば、Linus氏はこういうことを言っています。
「良いコード設計は、いかにデータが移動するか、いかにデータを秩序立てるか、いかにデータを見つけ、他のデータと関連付けるか、について考えが次々と思い浮かぶ。だが、OO言語は、オブジェクトが重要であり、オブジェクトに関連付けられた
どこに付けるか迷いましたけどLinus氏のいう所のオブジェクトは(C++は詳しくないので)Javaでいう所のインスタンスの事です、多分。Cより粒度の荒い中途半端なクラスしか作れないくせに、メモリ上で直接操作できないようになっている、そして言語仕様でクラスやその他の構文によって意味的には記述できても機能的にはよく分からない事をしている。だからシステム記述言語としては相応しくないと。それ以外の事に使うのならVM系言語である機能が無いのでCもどきであるC++である必要は無いので有り得ない。という話だと思われます。
>Cより粒度の荒い中途半端なクラスしか作れないくせに、メモリ上で直接操作できないようになっている、
どういうこと?
クラスやテンプレート、継承の構成をバイナリレベル(ポインタ)で弄る事が出来なくて言語仕様化してるとこクラス内の関数や変数のアドレスを置き換えるって多分出来ないですよね
日本語訳を見るとオブジェクト指向が悪いというよりは全てを実装出来ていない中途半端なオブジェクト指向で結局は規定のクラス群の組み合わせだから、何でも出来るC言語でいいだろという主張に見て取れるその方が分かり易く問題も少ないという話だと
いくらでもちゃぶ台返しが出来る終身独裁官ならC言語でしょうけれど、
せいぜい、ほぼなにも覆せない十人隊長にくっついていた人間にしてみるとオブジェクト指向の方が好ましく見える。
「上に政策あれば、下に対策あり」なだけで、いいんじゃないですかね?
だからC++である必要は無いよねって話だと
あらゆる分野でC++が無用って言ってるぽいよ
ああ、すみません。>(C++は詳しくないので)元コメのここ読み落としてました。納得しました。
どう納得したのか聞きたいですね
C++を知らないのに想像で書いてるからトンチンカンな事になってるんだなと。関数置き換えもテンプレートや継承使ったクラスのメモリを直接操作も出来るよ
学べば解ることなのに想像で語っちゃうぐらいC++に興味無いだろうからここで詳細な解説は無意味だからしないけど
class a{int a;void b(){};}とあった場合にa c;c.b=関数のポインタという感じで置き換えられるの??
classはデフォルトprivateだからそういう風にアクセスできないというのをおいておいたらstd::function使えば
確かに便利だけど、逆に言えばそれ以外の場合は制限されているという事多分全てを実装できないと嫌だとLinus氏は主張してるんではないかとマシン語使うなら処理系依存は出来るだけ少ない方がいい増やすならVM系やスクリプトなどマシン語と非互換なものを使えと
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond
Linus氏の見解の日本語訳 (スコア:0)
taro-nishinoの日記: Linus氏のC++に対する最近の否定的見解
http://srad.jp/~taro-nishino/journal/509450/ [srad.jp]
Linus氏のC++否定論は、C++というよりも、オブジェクト思考言語全般に当てはまります。読まずに批判・評価する人は、まず読みましょう。
例えば、Linus氏はこういうことを言っています。
「良いコード設計は、いかにデータが移動するか、いかにデータを秩序立てるか、いかにデータを見つけ、他のデータと関連付けるか、について考えが次々と思い浮かぶ。
だが、OO言語は、オブジェクトが重要であり、オブジェクトに関連付けられた
Re:Linus氏の見解の日本語訳 (スコア:0)
どこに付けるか迷いましたけど
Linus氏のいう所のオブジェクトは(C++は詳しくないので)Javaでいう所のインスタンスの事です、多分。
Cより粒度の荒い中途半端なクラスしか作れないくせに、メモリ上で直接操作できないようになっている、
そして言語仕様でクラスやその他の構文によって意味的には記述できても機能的にはよく分からない事をしている。
だからシステム記述言語としては相応しくないと。
それ以外の事に使うのならVM系言語である機能が無いのでCもどきであるC++である必要は無いので有り得ない。
という話だと思われます。
Re: (スコア:0)
>Cより粒度の荒い中途半端なクラスしか作れないくせに、メモリ上で直接操作できないようになっている、
どういうこと?
Re: (スコア:0)
クラスやテンプレート、継承の構成をバイナリレベル(ポインタ)で弄る事が出来なくて言語仕様化してるとこ
クラス内の関数や変数のアドレスを置き換えるって多分出来ないですよね
日本語訳を見るとオブジェクト指向が悪いというよりは全てを実装出来ていない中途半端なオブジェクト指向で
結局は規定のクラス群の組み合わせだから、何でも出来るC言語でいいだろという主張に見て取れる
その方が分かり易く問題も少ないという話だと
Re: (スコア:0)
いくらでもちゃぶ台返しが出来る終身独裁官ならC言語でしょうけれど、
せいぜい、ほぼなにも覆せない十人隊長にくっついていた人間にしてみると
オブジェクト指向の方が好ましく見える。
「上に政策あれば、下に対策あり」なだけで、いいんじゃないですかね?
Re: (スコア:0)
だからC++である必要は無いよねって話だと
Re: (スコア:0)
あらゆる分野でC++が無用って言ってるぽいよ
Re: (スコア:0)
ああ、すみません。
>(C++は詳しくないので)
元コメのここ読み落としてました。
納得しました。
Re: (スコア:0)
どう納得したのか聞きたいですね
Re: (スコア:0)
C++を知らないのに想像で書いてるからトンチンカンな事になってるんだなと。
関数置き換えもテンプレートや継承使ったクラスのメモリを直接操作も出来るよ
学べば解ることなのに想像で語っちゃうぐらいC++に興味無いだろうからここで詳細な解説は無意味だからしないけど
Re: (スコア:0)
class a{
int a;
void b(){};
}
とあった場合に
a c;
c.b=関数のポインタという感じで置き換えられるの??
Re: (スコア:0)
classはデフォルトprivateだからそういう風にアクセスできないというのをおいておいたらstd::function使えば
Re: (スコア:0)
確かに便利だけど、逆に言えばそれ以外の場合は制限されているという事
多分全てを実装できないと嫌だとLinus氏は主張してるんではないかと
マシン語使うなら処理系依存は出来るだけ少ない方がいい
増やすならVM系やスクリプトなどマシン語と非互換なものを使えと