アカウント名:
パスワード:
もっぱら言語は生産性で決めてます。用意できる開発環境はポイント高い。必要な処理のスピードとメモリサイズも制約になる。
アセンブラあればハンドアセンブラはやらない。Cあればアセンブラはまず使わない。C++あればCは使わない。PHPあればPerlはまず使わない。RPGあればCOBOLは使わない。贅沢できなきゃ質素にやるだけです。
作った後の保守性も大事です。いじれる環境のこってないと最悪。
組み込みだと、Cの代替選択肢って何でしょう?
Forth。
Forthって書いた人は、多分解ってて書いてるよ。MZ-80BにFIG-Forthを入れてみたことあるし、Rgy-ForthやTitってのも興味もって見てたことある。でも、Forthだと、小さな組込み的なプログラムを、実機を動かしながら手早く作るにはむいてるとは思うけど、ドキュメント性はあんまりよくないと思った。あとで見て、なにしてるのか、自分でもわけわからなくなる。あと、ワードを注意して作成し用いないと、ワードがワードを呼んで(間接・直接にかかわらず、結局Callだからね)、実行時間はC言語で素直に書いたもののほうが、ひょっとして早いんじゃないかとも思うようになった。ROM化サイズがC言語より短くなるってのは、場合によっては本当だとおもったけど。優秀なクロスコンパイラや開発ホスト、デバッガ環境が使える状況だと素直にC言語で書いたほうが、後々の為かもしれません。
ということを総合的にみて暗黒面っていってるんじゃ?
> 多分Lispの人はLispで組み込み
Symbolicsェ...
> てな具合にその人の得物を武器に闘うのではないでしょうか?# 老兵は死なず、ただ消え去るのみなのでAC
社内で GPL 派と BSD license 派の派閥争いが熾烈なのに違いない。次期社長はどっち?
# ハードウェアの会社なら、案外そんな運営も不可能ではないのかもしれない。
混在?基本的には2010秋のグローバルモデルからきれいにBSDに移行しているようだけど。もちろん、SoCの違い/廉価機種/特殊なモデルなど諸事情で古いアーキベースの派生機種もあるんだろうし、それぞれのモデルの各国への投入時期の違いなんかもあるだろうけどね。
例えば、http://panasonic.jp/support/global/cs/tv/download/2010/na.html [panasonic.jp]からモデルグループごとのライセンス眺めてみ。
マシンパワーは上がることがあっても下がることは考えにくいので、Javaが軽くなったらCなんて使わない、ということになりえる
なんかC++でもメモリ沢山積めるようになってマシンパワー上がれば問題ないとか言われてたけど結局マシンパワー上がるとCも更に軽くなるのであった
>結局マシンパワー上がるとCも更に軽くなるのであった
今のPCのCPUはCに最適化して設計されておりますので…歴史を見るかぎり、CはQWERTY配列と同じくらい長いこと支配的地位にとどまりつづけるでしょう。#つまり現在の文明がまるごと崩壊して紀元前レベルにリセットされるまで。
>死ねというか、良く言えば枯れてる、悪く言えば既に死んでるってことでしょ
なんだ、CもBASICと同じか。ようこそ、死んでる言語の世界へ!
マシンパワーは上がることがあっても下がることは考えにくい
人事異動とか?w
H8 CPUの組み込みAPに、オブジェクト指向言語で作ったアプリ乗せられる人っているのかなぁ。(ふと、想像してしまった)
>> H8 CPUの組み込みAPに、オブジェクト指向言語で作ったアプリ乗せられる人っているのかなぁ。(ふと、想像してしまった)
実際にどういうものに使われてるかは判りませんが、こういうもの [aplix.co.jp]があるくらいなので、オブジェクト指向言語を使う場合もあるのではないかと。
♯そもそも、H8つっても、今や32ビットの石もあるんですし。
今流行のエコな製品用の、メインメモリが512バイトしかない最新組み込みマイコン扱っております。Cで組めるだけでも感謝しております。あと、Cならメモリを直接扱えるので、なんとか組み込めています。死ねとか言ってる人は、きっと感謝の気持ちを忘れたのでしょう。なむなむ。
C++は全然重くないですよ?
重いんだとしたら、重くなるようなコードを書いたせい。C++のせいではありません。
*
CとC++はかなり性質が異なる言語なのに、よく「C/C++」とまとめられてしまう一方、パフォーマンス傾向としてはほとんど同じなのに、どうして「C++はCよりも重い」という根拠のない言いがかりをよくつけられるんでしょうねえ。
ホビー向けの組み込みプラットホームであるArduino [wikipedia.org]は、gccにラッパを被せたC/C++にベースの開発環境になっており、C++なクラスライブラリがある程度用意されています [musashinodenpa.com]
あまり本気でC++してるわけではないですが、クラスメソッドという形での名前空間の分離はそれだけでもC++の価値はあるんじゃないかと思います。
組み込みにCが使われる理由は軽いからじゃなくてポインタとの親和性が非常に良いからと思うんだよね。ほとんどのマイコンはメモリマップドI/OでIOアクセスする必要があるんで高速なポインタ操作が言語仕様として必須。やってることはほとんどアセンブラと同等。
でも組み込み開発でも割り込みハンドラより上位のタスクはCとは違う言語でもいける場合があるのではと思う。単純に違う言語にするとコンパイル、リンクさせる手間が大きかったり、組み込みでよく使われるiTRON上で動く他言語が用意されていなかったりでCで書いてるケースが多いんじゃないかな。。。
C言語の代替でD言語ってのは駄目なのでしょうか。
D1.0の頃しか知らないけど、悪くないんだけどな。。。
少なくとも文字列はchar []じゃなくてstringだしC++でSTLに相当するのはphobos(だったかな)が標準でついてるし。
まぁ、まったく知られてないから選定対象に含まれませんけどね。。。
そのくらいのパワーのデバイスだと、PostSc... Forth?
あれれ、既出だった。
組み込みな人は、寧ろ例外に近いものですし。
って世界になってきてると言っても大げさではないんじゃないですかねぇ。
ちょ!wwWwwアセンブラwwって世界に組み込みはなりつつありますが、
最近の組み込みはGrass [sky.or.jp]なのかと一瞬思っちゃったじゃないか
この人のように自分の周りしか見えない人が的外れなことを言い出す。だが仕事にCかアセンブラしか選択肢がない私も言おう。C死ね。
RISCチップだと命令数も少なくて行数はかどるわぁ!!PICアセンブラで遊んでた人
アセンブラは CASL [wikipedia.org] しか遊んだことないなぁ…
# いつのまにか CASL II などというものがあろうとは
発言主のところを見に行くと、Cの代わりはverilogなんだってさ。きっとコイン電池で10年動かすシステムとかは知らないんだろうね。
出荷数とコストと消費電力考えて、マイコンで十分なのか、FPGAが必要なのか、ASICまで起こせるのか、DRAMはのせられるのか、OSまで必要な複雑さなのか、って感じで適材適所で選んでるのに、古いからC消えろとか、なんて残念な考えなんだだいたいVerilogで書いた回路も制御するのにCやアセンブラ使ってるのに、Cの代わりがVerilogとかアホかと。
組み込みな人はCなんか使わなくて済むようになって幸せになるべきってことでしょ。それを具体的にどうやって実現まで持っていくかは別問題。今現在代替手段がないからといって現状に甘んじるのが最適であるという理由にはならないって元記事の冒頭にも書いてるじゃん。例によって奴隷の鎖自慢が後を絶たないようだけど。
いやもうコメントが多すぎてきっと既出だろうけど、組み込みでJavaとか、重い以前に性能のブレが大きすぎる言語はあり得ないんでは?
それこそ、ガラケーや比較的低級の情報化家電で、(OSIの区分とは違いますが)アプリケーション層で使うとかそういう話していどなのでは…広義のOS部分をここだ!と決めたらメジャーヴァージョンのひと桁かふた桁くらい下までを動かさず勿論中身も最末端のアプリケーション以外は中身を増減しないというある意味手堅いけど進歩もないというよくありがちな奴ですよ。「バグも仕様」だから、システム側と言うかアプリケーション動かす処理言語系がバグってたら、アプリケーション側で相当なバッドノウハウ使いまくってでも力技でバグ出さなくするとかそういう世界(´・ω・`)
# ある意味、auがJava切ってBREWと.NETに切り替えたのは、開発側の効率的に正しかったんだろうね(´・ω・`)# Java処理系のようなバグの巣によくなりがちな物をどうするか?という話で…
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり
組み込みな人は死ねってこと? (スコア:3, 興味深い)
特に小規模な方ですと、アセンブラに回帰ですか? それじゃプログラマはもっと地獄でしょ。
#ツッコミ入ると思うから念押しておくけど、携帯のアプリプロセッサやブルーレイレコーダーとかぐらいの規模(とリソース)のものは、寧ろ例外に近いものですし。
Re:組み込みな人は死ねってこと? (スコア:5, すばらしい洞察)
古い組込プロセッサや初期のDSPなんぞは、そもそもコンパイラを用いた開発を想定したアーキテクチャでCさえ使うのに不自由するからアセンブラ以外の選択肢は無い
Cは古いとか言ってる連中は、上位のアプリケーション・レベルの開発しかやったことがなくて、それ以外の世界を知らないお馬鹿さん
例えば、web関連のアプリケーションなんかは既存の資産(ライブラリ等)を要領よく使って大量のコードを効率よく開発しなければいけないのだから、設計の新しいそれなりのプログラミング言語を使用するのが当然
そういう用途にはRubyみたいな言語を使えばよい
そうやって作ったアプリケーションもいわば使い捨てだから(数年でシステム更新して使用年限が短い)、たとえ将来Rubyの開発が頓挫したとしても、その時には他の言語を使ってサッサと作り直してしまえばそれでよい
そういう世界しか知らない人にはC/C++だとかAdaを用いる開発を理解することなど出来ないのでしょう
Fortranはどう見ても古い言語だが過去の資産が多いし、基本的には静的なメモリ割当をする言語だからスパコン等の高速な数値演算プログラムの開発には都合が良いので(効率よいコードを吐くコンパイラを作りやすいので)まだまだ死にはしない(最新のFortranも静的なメモリ・アロケーションしか出来ないと言っているのでは無い)
Re:組み込みな人は死ねってこと? (スコア:1)
# や、FORTRANはともかくCOBOLは使ったこともないけど
Re:組み込みな人は死ねってこと? (スコア:1)
もっぱら言語は生産性で決めてます。
用意できる開発環境はポイント高い。
必要な処理のスピードとメモリサイズも制約になる。
アセンブラあればハンドアセンブラはやらない。
Cあればアセンブラはまず使わない。
C++あればCは使わない。
PHPあればPerlはまず使わない。
RPGあればCOBOLは使わない。
贅沢できなきゃ質素にやるだけです。
作った後の保守性も大事です。
いじれる環境のこってないと最悪。
間違えた、訂正します (スコア:0)
Re: (スコア:0)
C言語で、文字列操作。明らかにバグが入込む要素モリモリ感が漂う。
よさげなライブラリとかあるのかな?
Re:組み込みな人は死ねってこと? (スコア:1, すばらしい洞察)
ググッれば卜部さんのバックグランドはわかるのだけど、やっぱり話を一般化しすぎじゃないかな。
どうも全体に「釣り」っぽい。
Re:組み込みな人は死ねってこと? (スコア:2, 参考になる)
最速の memset64 を求めて [tumblr.com]
Re:組み込みな人は死ねってこと? (スコア:2, すばらしい洞察)
組み込みだと、Cの代替選択肢って何でしょう?
Forth。
Re:組み込みな人は死ねってこと? (スコア:1)
Re:組み込みな人は死ねってこと? (-10000, よけいなもの) (スコア:2, 興味深い)
Forthって書いた人は、多分解ってて書いてるよ。
MZ-80BにFIG-Forthを入れてみたことあるし、Rgy-ForthやTitってのも興味もって見てたことある。でも、Forthだと、小さな組込み的なプログラムを、実機を動かしながら手早く作るにはむいてるとは思うけど、ドキュメント性はあんまりよくないと思った。あとで見て、なにしてるのか、自分でもわけわからなくなる。
あと、ワードを注意して作成し用いないと、ワードがワードを呼んで(間接・直接にかかわらず、結局Callだからね)、実行時間はC言語で素直に書いたもののほうが、ひょっとして早いんじゃないかとも思うようになった。ROM化サイズがC言語より短くなるってのは、場合によっては本当だとおもったけど。
優秀なクロスコンパイラや開発ホスト、デバッガ環境が使える状況だと素直にC言語で書いたほうが、後々の為かもしれません。
ということを総合的にみて暗黒面っていってるんじゃ?
Re:組み込みな人は死ねってこと? (スコア:2, すばらしい洞察)
あの言語は、使い手次第でCにより近くなったり、Javaにより近くなったり、どちらでもない独自の道を歩んだりする。
良く言えば、使い手次第であらゆるニーズに応える成果を挙げられる言語。悪く言えば、使い手次第でどんなニーズにも適合できなくなる言語。
C++がJavaなどと比べ劣勢なのは、その自由奔放さゆえにかえって使い手の技量が必要とされてしまいがちな点と、より上の立場で、管理するのが困難である点が大きいと思う。
どの水準で使うのかを決めるばかりでなく、使う人が実際にその水準で使っているか(その水準で使える技能を持っているか)を考慮しなければならないのは、非常に難しいだろう。
組み込みな人は各人各様だから… (スコア:1)
// COBOLで組み込みな人にボコられてみたいと一瞬思った。
Re:組み込みな人は各人各様だから… (スコア:2)
ちょっと昔は実際にこんなのが売られていた。
http://www.ipsj.or.jp/museum/computer/other/0004.html [ipsj.or.jp]
#その昔COBOLで組み込みもやったことあるけど、コンパイラがダメダメでPL/Mに逆戻りってこともあった
Re: (スコア:0)
> 多分Lispの人はLispで組み込み
Symbolicsェ...
> てな具合にその人の得物を武器に闘うのではないでしょうか?
# 老兵は死なず、ただ消え去るのみなのでAC
Re:組み込みな人は各人各様だから… (スコア:1)
社内で GPL 派と BSD license 派の派閥争いが熾烈なのに違いない。次期社長はどっち?
# ハードウェアの会社なら、案外そんな運営も不可能ではないのかもしれない。
Re:組み込みな人は各人各様だから… (スコア:1, 興味深い)
混在?
基本的には2010秋のグローバルモデルからきれいにBSDに移行しているようだけど。
もちろん、SoCの違い/廉価機種/特殊なモデルなど諸事情で古いアーキベースの派生機種もあるんだろうし、
それぞれのモデルの各国への投入時期の違いなんかもあるだろうけどね。
例えば、
http://panasonic.jp/support/global/cs/tv/download/2010/na.html [panasonic.jp]
からモデルグループごとのライセンス眺めてみ。
Re:組み込みな人は死ねってこと? (スコア:1)
アセンブラより簡単で、Javaより軽いからCを使う、という構図なら、
マシンパワーは上がることがあっても下がることは考えにくいので、
Javaが軽くなったらCなんて使わない、ということになりえる
今のところマシンパワーに対して最適なのがCだというだけで、
Javaでサクサク動くならJavaを使うでしょ
#大昔はアセンブラで作るのが常識だったわけで、今の常識が将来ずっと常識ということは考えにくい
アキレスがダイエットしても亀の体重には追いつけない (スコア:2, おもしろおかしい)
なんかC++でもメモリ沢山積めるようになってマシンパワー上がれば問題ないとか言われてたけど
結局マシンパワー上がるとCも更に軽くなるのであった
Re:アキレスがダイエットしても亀の体重には追いつけない (スコア:1, 興味深い)
>結局マシンパワー上がるとCも更に軽くなるのであった
今のPCのCPUはCに最適化して設計されておりますので…
歴史を見るかぎり、CはQWERTY配列と同じくらい長いこと支配的地位にとどまりつづけるでしょう。
#つまり現在の文明がまるごと崩壊して紀元前レベルにリセットされるまで。
Re: (スコア:0)
>死ねというか、良く言えば枯れてる、悪く言えば既に死んでるってことでしょ
なんだ、CもBASICと同じか。ようこそ、死んでる言語の世界へ!
Re: (スコア:0)
Re: (スコア:0)
Re: (スコア:0)
マシンパワーは上がることがあっても下がることは考えにくい
人事異動とか?w
Re:組み込みな人は死ねってこと? (スコア:1)
H8 CPUの組み込みAPに、オブジェクト指向言語で作ったアプリ乗せられる人っているのかなぁ。(ふと、想像してしまった)
Re:組み込みな人は死ねってこと? (スコア:1)
>> H8 CPUの組み込みAPに、オブジェクト指向言語で作ったアプリ乗せられる人っているのかなぁ。(ふと、想像してしまった)
実際にどういうものに使われてるかは判りませんが、
こういうもの [aplix.co.jp]があるくらいなので、オブジェクト指向言語を使う場合もあるのではないかと。
♯そもそも、H8つっても、今や32ビットの石もあるんですし。
Re:組み込みな人は死ねってこと? (スコア:1, 興味深い)
今流行のエコな製品用の、メインメモリが512バイトしかない最新組み込みマイコン扱っております。
Cで組めるだけでも感謝しております。あと、Cならメモリを直接扱えるので、なんとか組み込めています。
死ねとか言ってる人は、きっと感謝の気持ちを忘れたのでしょう。なむなむ。
Re:組み込みな人は死ねってこと? (スコア:1)
C++は全然重くないですよ?
重いんだとしたら、重くなるようなコードを書いたせい。
C++のせいではありません。
*
CとC++はかなり性質が異なる言語なのに、よく「C/C++」とまとめられてしまう一方、パフォーマンス傾向としてはほとんど同じなのに、どうして「C++はCよりも重い」という根拠のない言いがかりをよくつけられるんでしょうねえ。
Re:組み込みな人は死ねってこと? (スコア:1, すばらしい洞察)
Cで引数などで構造体をコピーしているのと同等なので、「コードのせい」という理解はあっているでしょう。
しかし、「オブジェクト指向的な要素を使わなければ」という条件付きですね。
きちんとオブジェクト指向プログラミングすれば、
カプセル化した中で、勝手にメモり管理したり、virtual使ったりして、
Cに比較してパフォーマンスがた落ちですね。
Re:組み込みな人は死ねってこと? (スコア:2, 興味深い)
ホビー向けの組み込みプラットホームであるArduino [wikipedia.org]は、gccにラッパを被せたC/C++にベースの開発環境になっており、C++なクラスライブラリがある程度用意されています [musashinodenpa.com]
あまり本気でC++してるわけではないですが、
クラスメソッドという形での名前空間の分離は
それだけでもC++の価値はあるんじゃないかと思います。
Re:組み込みな人は死ねってこと? (スコア:1)
組み込みにCが使われる理由は軽いからじゃなくてポインタとの親和性が非常に良いからと思うんだよね。
ほとんどのマイコンはメモリマップドI/OでIOアクセスする必要があるんで高速なポインタ操作が言語仕様として必須。
やってることはほとんどアセンブラと同等。
でも組み込み開発でも割り込みハンドラより上位のタスクはCとは違う言語でもいける場合があるのではと思う。
単純に違う言語にするとコンパイル、リンクさせる手間が大きかったり、
組み込みでよく使われるiTRON上で動く他言語が用意されていなかったりでCで書いてるケースが多いんじゃないかな。。。
Re:組み込みな人は死ねってこと? (スコア:1)
C言語の代替で
D言語ってのは駄目なのでしょうか。
D1.0の頃しか知らないけど、悪くないんだけどな。。。
少なくとも文字列はchar []じゃなくてstringだし
C++でSTLに相当するのはphobos(だったかな)が標準でついてるし。
まぁ、まったく知られてないから選定対象に含まれませんけどね。。。
Re:組み込みな人は死ねってこと? (スコア:1)
そのくらいのパワーのデバイスだと、PostSc... Forth?
Re:組み込みな人は死ねってこと? (スコア:1)
あれれ、既出だった。
Re: (スコア:0)
組み込みな人は、寧ろ例外に近いものですし。
って世界になってきてると言っても大げさではないんじゃないですかねぇ。
Re:組み込みな人は死ねってこと? (スコア:2, すばらしい洞察)
Re:組み込みな人は死ねってこと? (スコア:1, おもしろおかしい)
ちょ!wwWwwアセンブラwwって世界に組み込みはなりつつありますが、
最近の組み込みはGrass [sky.or.jp]なのかと一瞬思っちゃったじゃないか
Re: (スコア:0)
あなたの周囲にCでプログラミングされた組込みMCUがいくつあるか数えてみたら。
一般家庭でも3桁個はあるよ。
日本中、世界中だとそれこそ無数だ。
Re: (スコア:0)
この人のように自分の周りしか見えない人が的外れなことを言い出す。
だが仕事にCかアセンブラしか選択肢がない私も言おう。C死ね。
Re: (スコア:0)
アセンブラサイコー!! (スコア:0)
RISCチップだと命令数も少なくて行数はかどるわぁ!!
PICアセンブラで遊んでた人
Re:アセンブラサイコー!! (スコア:1)
Re:アセンブラサイコー!! (スコア:1)
アセンブラは CASL [wikipedia.org] しか遊んだことないなぁ…
# いつのまにか CASL II などというものがあろうとは
Re: (スコア:0)
発言主のところを見に行くと、Cの代わりはverilogなんだってさ。
きっとコイン電池で10年動かすシステムとかは知らないんだろうね。
Re: (スコア:0)
出荷数とコストと消費電力考えて、マイコンで十分なのか、FPGAが必要なのか、
ASICまで起こせるのか、DRAMはのせられるのか、OSまで必要な複雑さなのか、
って感じで適材適所で選んでるのに、古いからC消えろとか、なんて残念な考えなんだ
だいたいVerilogで書いた回路も制御するのにCやアセンブラ使ってるのに、
Cの代わりがVerilogとかアホかと。
Re: (スコア:0)
最近の Verilog は、arm や amd64 なコードへ合成してくれるのかしら?
Re: (スコア:0)
#C++は好きだけど、C++0xの方向性は好きではない。そっちに行くなら他の言語を使ったほうがいい。
Re: (スコア:0)
組み込みな人はCなんか使わなくて済むようになって幸せになるべきってことでしょ。
それを具体的にどうやって実現まで持っていくかは別問題。今現在代替手段がないからといって現状に甘んじるのが最適であるという理由にはならないって元記事の冒頭にも書いてるじゃん。例によって奴隷の鎖自慢が後を絶たないようだけど。
Re: (スコア:0)
それは確かにそうなのだけど、こういった話は程度問題で度がすぎてると、単に浮世離れしてるように見えてしまう罠が…
Re:組み込みな人は死ねってこと? (スコア:1)
それこそ、ガラケーや比較的低級の情報化家電で、(OSIの区分とは違いますが)アプリケーション層で使うとかそういう話していどなのでは
…広義のOS部分をここだ!と決めたらメジャーヴァージョンのひと桁かふた桁くらい下までを動かさず勿論中身も最末端のアプリケーション以外は中身を増減しないというある意味手堅いけど進歩もないというよくありがちな奴ですよ。
「バグも仕様」だから、システム側と言うかアプリケーション動かす処理言語系がバグってたら、アプリケーション側で相当なバッドノウハウ使いまくってでも力技でバグ出さなくするとかそういう世界(´・ω・`)
# ある意味、auがJava切ってBREWと.NETに切り替えたのは、開発側の効率的に正しかったんだろうね(´・ω・`)
# Java処理系のようなバグの巣によくなりがちな物をどうするか?という話で…