アカウント名:
パスワード:
C#に置き換わり、C++は廃れてしまったりするのでしょうか
そんなことないと信じています。 というか、C#ってC++
30年どころか、100年たっても間違いなく生き残るであろう言語が少なくとも2つはあるでしょう。アセンブラとCです。
これらの言語の特異な点は、言語のsemanticsに面倒な実行時の支援処理や初期化が一切含まれていないことです。すなわち、自分で作ったエントリポイントにいきなり処理を飛ばしてもきちんと動作するわけです。これは計算機をbootさせるためには
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
ISOってなんか意味あるの? (スコア:2, 興味深い)
よく分からないのですが、今のところ.NETフレームワーク以外に使用されるようなことはなさそうですし、標準でなくていいからMSのほうで勝手にやっていてくれという感じです。
ちなみに、
そんなことないと信じています。
というか、C#ってC++
// Give me chocolates!
Re:ISOってなんか意味あるの? (スコア:1)
ISOになると、各国政府がある程度の後押しをすることになってます。
例えば、おそらくJISにもなるでしょうし、情報処理技術者試験の
選択科目にもなるかもしれません。さらにひょっとしたら、中学や
高校の授業でとりあげられるかもしれません。
今すぐの影響は
100年たっても生き残る言語 (スコア:3, 興味深い)
30年どころか、100年たっても間違いなく生き残るであろう言語が少なくとも2つはあるでしょう。アセンブラとCです。
これらの言語の特異な点は、言語のsemanticsに面倒な実行時の支援処理や初期化が一切含まれていないことです。すなわち、自分で作ったエントリポイントにいきなり処理を飛ばしてもきちんと動作するわけです。これは計算機をbootさせるためには
Re:100年たっても生き残る言語 (スコア:1)
# 読んでいる方に誤解があるといけないので
メモリアロケータが構文に組み込まれている点について。newとdeleteは演算子であり構文のひとつですが、演算子オーバロードによりユーザ定義関数呼び出しに置き換えることができます。大域的newもクラスごとのnewも再定義できます。deleteも同様です。したがってnewとdeleteが演算子として存在することは、実行時性能の観点ではCの標準ライブラリでmallocやfreeが定義されていることとたいした違いがありません。また、C++そのものがnewを多用することを要求しているわけではないため、newが存在することが言語のデメリットとはなりません。
オブジェクト指向について。話が発散気味なので私の指摘の意図が的を射るかどうかわかりませんが... もし「組み込み用途にはオブジェクト指向は邪魔だし不要だ」という意見であれば、それは使用者次第だと思いますよ。仮想関数などの動的な機能を多用すれば確かに性能面で邪魔ですが、それは動作環境に適したコーディングをしていないだけです。カプセル化、情報隠蔽、継承などは(ムチャな使い方をしなければ)実行時性能に影響を及ぼすものではなく、用途を考えつつ正しく使えば開発効率上の利点を得ることができます。インライン関数という性能面での補助もありますしね。
これらのご指摘は、おおむね「C++がCよりも多くの機能を持っている」という点を否定的に見ているものかと思います(違ったらごめんなさい)。が、機能が存在することと機能を使うことは別問題です。用途に応じて種類や使用方法を使い分けるのが言語の正しい使い方であり、特にCやC++を実装言語に選んだ場合には、用途に適した使用方法が暗黙のうちに要求されるように思います。例えばnewについて、「C++にはnewがある。newを使うのがC++の標準的なやり方だ。newを多用したプログラムは組み込みに向かない。だからC++は組み込みに向かない」という論法は、誤りです。組み込み用途向けのコードでnewを多発するのは、使用者の使い方が誤っているだけでC++が誤っているわけではありません。
ただし、「C++がCよりも多くの機能を持っていて、使わなければ悪影響はない。だからC++はCと同じだけ生存し続ける」という論法もまた、成り立たないですね。付加機能が多くの人にとって要らないものと見なされれば、飽きられて廃れていくと思います。現状でも「どうにも必須の言語」ではないでしょうし。
# 私自身はC++の機能群はほしいと思っていますが
Re:100年たっても生き残る言語 (スコア:1)