アカウント名:
パスワード:
> この記事のタイトルは「C/C++に死を」だが、原文タイトルにはC++は含まれていない
とはいうが、Cの方はリソースの厳しい組み込み向けなど、他で置き換えられないニーズがまだある。C++の方こそ、それが使われていた用途向けには今ではもっと洗練された言語がある。まあ放っておいても滅びそうだからあまりそういう話題にもならないのだろうけど。
C言語の方は放っておいたら当分は滅びそうにないから「滅びるべき」という話が出てくるんだろうな。
しかし、訳文にC++を勝手に追加した御仁は何の考えあってのことなのだろうか。
リソース制限が理由でCは使えるのにC++が使えないことなんかあるの?
使えないじゃなくて必要が無い。オブジェクト指向ってのはそもそも、大規模で複雑なシステムを大勢で開発するようなケースで便利な方法として考えられたもの。リソース制限が厳しい環境はそもそも大きなプログラムを置けないので、C++を持ち出す必要もない。使ってもいいが。まあC++でC的な書き方もできるなんて屁理屈を捏ねだす奴もいるだろうけど。
まあC++でC的な書き方もできるなんて屁理屈を捏ねだす奴もいるだろうけど。
屁理屈じゃなくて普通に書けるけど。
リソースの制限だって、C/C++ってそんなに変わらないと思う。ライブラリも不要ならリンクの必要なものだけリンクすればいい。
C/C++のメリットって、言語以外の関連知識が充実すればするほど、その辺の開発環境に依存しない使い方が生きてくるところでしょ。
「プログラミング言語C++」なんかを読めばわかりますが、初期のC++に関するStroustrup氏の設計思想としては、「従来のCコードは、C++でもオーバーヘッドなく使える」というベターCとして設計してるんですよね。
今時の肥大化したC++は置いといて、仮想関数とかテンプレートは使わない、その当時のレベルのC++で「クラススコープによる隠蔽と名前空間の分離」ができるだけでも、Cに比べて記述コードは格段に分かりやすくなるし保守しやすくなる。それぐらいならCに比べてオーバーヘッドはありません。
で、たぶん、実際に組み込みでC++を使っている、一番メジャーなプラットフォームは「Arduino」でしょう。Arduinoの開発言語は自称Arduino言語となってますが、その中身はC++(gccベース)で独自のライブラリを載せたものになってます。専用のクラスライブラリを作っただけあって、それなりに省メモリというかオーバーヘッドのないものになってますので、標準的な環境(ATmega328pなど)ではROM(プログラム)32kB・RAM8kBぐらいですが、ROM8KB・RAM512Byteってレベルのマイコンチップでも動かすことができたりします。
#4バイトなintをガンガン使ってるのだけはツッコミを入れたいですが…
標準的な環境(ATmega328pなど)ではROM(プログラム)32kB・RAM8kBぐらいですが、
RAMは2kB [arduino.cc]だぞ。
avrgccのintは2バイト [gnu.org]だし、ライブラリ中ではuint8_tの変数が積極的に使われてるぞ。
# よくIDでこんなトンチンカンな投稿するなあ
あれ?2バイトじゃなかった?
テンプレートも実行時オーバーヘッドなしかつ型安全にマクロを置き換えるためにガンガン使えるのでは
テンプレートをガンガン使うとコードサイズの肥大化著しいので「オーバーヘッドなし」とは言い難い。
さらに不用意にSTL使うと例外を引き連れてくるので時間に厳しい局面ではステップ数見切る根性無く利用を断念。
例外切っても、じゃぁそんときどうなるのよ?を見る手間をかけられず利用を断念。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ
C++の方こそお役御免では? (スコア:0)
> この記事のタイトルは「C/C++に死を」だが、原文タイトルにはC++は含まれていない
とはいうが、Cの方はリソースの厳しい組み込み向けなど、他で置き換えられないニーズがまだある。
C++の方こそ、それが使われていた用途向けには今ではもっと洗練された言語がある。
まあ放っておいても滅びそうだからあまりそういう話題にもならないのだろうけど。
C言語の方は放っておいたら当分は滅びそうにないから「滅びるべき」という話が出てくるんだろうな。
しかし、訳文にC++を勝手に追加した御仁は何の考えあってのことなのだろうか。
Re: (スコア:0)
リソース制限が理由でCは使えるのにC++が使えないことなんかあるの?
Re: (スコア:1)
使えないじゃなくて必要が無い。
オブジェクト指向ってのはそもそも、大規模で複雑なシステムを大勢で開発するようなケースで
便利な方法として考えられたもの。
リソース制限が厳しい環境はそもそも大きなプログラムを置けないので、C++を持ち出す必要もない。使ってもいいが。
まあC++でC的な書き方もできるなんて屁理屈を捏ねだす奴もいるだろうけど。
Re: (スコア:0)
まあC++でC的な書き方もできるなんて屁理屈を捏ねだす奴もいるだろうけど。
屁理屈じゃなくて普通に書けるけど。
リソースの制限だって、C/C++ってそんなに変わらないと思う。
ライブラリも不要ならリンクの必要なものだけリンクすればいい。
C/C++のメリットって、言語以外の関連知識が充実すればするほど、
その辺の開発環境に依存しない使い方が生きてくるところでしょ。
Re:C++の方こそお役御免では? (スコア:1)
「プログラミング言語C++」なんかを読めばわかりますが、初期のC++に関するStroustrup氏の設計思想としては、「従来のCコードは、C++でもオーバーヘッドなく使える」というベターCとして設計してるんですよね。
今時の肥大化したC++は置いといて、仮想関数とかテンプレートは使わない、その当時のレベルのC++で「クラススコープによる隠蔽と名前空間の分離」ができるだけでも、Cに比べて記述コードは格段に分かりやすくなるし保守しやすくなる。それぐらいならCに比べてオーバーヘッドはありません。
で、たぶん、実際に組み込みでC++を使っている、一番メジャーなプラットフォームは「Arduino」でしょう。
Arduinoの開発言語は自称Arduino言語となってますが、その中身はC++(gccベース)で独自のライブラリを載せたものになってます。
専用のクラスライブラリを作っただけあって、それなりに省メモリというかオーバーヘッドのないものになってますので、
標準的な環境(ATmega328pなど)ではROM(プログラム)32kB・RAM8kBぐらいですが、
ROM8KB・RAM512Byteってレベルのマイコンチップでも動かすことができたりします。
#4バイトなintをガンガン使ってるのだけはツッコミを入れたいですが…
Re: (スコア:0)
標準的な環境(ATmega328pなど)ではROM(プログラム)32kB・RAM8kBぐらいですが、
RAMは2kB [arduino.cc]だぞ。
#4バイトなintをガンガン使ってるのだけはツッコミを入れたいですが…
avrgccのintは2バイト [gnu.org]だし、ライブラリ中ではuint8_tの変数が積極的に使われてるぞ。
# よくIDでこんなトンチンカンな投稿するなあ
Re: (スコア:0)
あれ?2バイトじゃなかった?
Re: (スコア:0)
テンプレートも実行時オーバーヘッドなしかつ型安全にマクロを置き換えるためにガンガン使えるのでは
Re: (スコア:0)
テンプレートをガンガン使うとコードサイズの肥大化著しいので「オーバーヘッドなし」とは言い難い。
Re: (スコア:0)
さらに不用意にSTL使うと例外を引き連れてくるので
時間に厳しい局面ではステップ数見切る根性無く利用を断念。
例外切っても、じゃぁそんときどうなるのよ?を見る手間をかけられず利用を断念。