- ベストアンサー
オープン系と組込み系についての特徴と差異
- ソフトウェア開発の分野で「オープン系」と「組込み系」という分類があります。
- オープン系は汎用的なソフトウェア開発を指し、組込み系はマイコンなどを制御するプログラム開発を指します。
- 組込み系は外見のデザインよりも制御に重点を置き、マイコンの知識も必要です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
「~系」は他の方にお任せするとして、 >ただ、「組込み系」だけは、多少わかりました。(以下略) だけではありません。 PCの周辺機器だって、制御システムは「組み込み系」に属します。 >自分のイメージですが、(中略)出力する画面のデザインなどの見た目については、あまりこだわらず、制御にいそしむ、ある意味、地味な領域なのかなという気もしました。 そんなことはないとも言えるし、あるとも言えます。 携帯やデジタルカメラのプログラムも、一般ユーザが自由に作成できる部分を除けば「組み込み系」に属します。 ここで使用されているH/Wはそれこそ千差万別であり、要求仕様を満たすためにはそれなりの努力が必要ですし、液晶表示のように見た目に関わる部分については、それこそこだわりを持たなければ求心力を持った製品など作れませんよ。 >それに、結構、マイコンに関するハードの知識も必要とされるのですよね。 あるとないとではやれる内容は大違いです。 但し、一般のマイコンとは違い専用設計であったりするので、ある程度の知識と仕様を理解する能力の方が必要です。 「マイコンを制御する」ということは「制御するH/W」があったり、それらをつなぐI/Fがあったりします。当然こちらの知識も必要になります。 >やっぱり、組込みはC言語で無ければならないのでしょうか。 最近はコンパイラの性能もよくなったためC言語以外の開発環境もありますが、やはりメインはC/C++です。 ちなみに、今現在だってアセンブラを使用する環境だってありますよ。
その他の回答 (4)
- SilverThaw
- ベストアンサー率32% (260/806)
No.2です No.3 >素朴な疑問なのですが、汎用性があるという「C言語」というのと、マイクロソフトの「VisualC/C++」って何か違うのでしょうか。 C言語そのものは「ある命令(関数)に対してこう実行する」という基礎部分と、変数の型や引数の渡し方といった基本ルールを定義している部分になります。 この「基礎部分」に、Windowsアプリを作りやすいようにMSが機能(関数)を追加したものがVisualStudio等それぞれの開発環境になります。 >Cでは「基本的に使用できる部品の大きさがVBとは桁違いに小さいサイズのもの」(以下略) >VBってやっぱり、多言語に比べわかりやすくするために細かい機能を大幅に割愛してしまっているんでしょうか。 「機能を割愛」というと語弊があります。 プログラムを作りやすいように、決まった機能が最初から提供されているのがVBやVC等です。 最初から提供されていて細かいことを何も考えなくてよい分、作るのは楽ですが小回りが利きにくくなります。 C言語は、根本的な部分はどれだけメモリを使用するかといった「メモリ管理」から自分で考える必要があります。 また、専用H/W用の開発環境なら、CPUに供給されるクロックを元に、各種の設定まで自分で行います。 つまり、細かいことができる分、勝手にやっていてくれた部分まで自分で設計し制御する必要が出てくることになります。これが柔軟さでもあり難しさでもあります。 >もしそうだとすると、やや幻滅というか、これだから最初からCを勉強した方がいいやとも思ってしまいます。 Windowsアプリに特化している環境という意味では、十分に活用できますから、幻滅する必要はありませんよ。 本当に組み込み系を目指すのであれば、遠回りにはなるかも知れませんが。 >それに、VBは文法的にシンプルだとしても、コンパイルすれば、VBだろうが、Cだろうが、機械語になるのでいっしょだとも聞きますが コンパイラの処理の仕方にもよるため、必ずしも一緒になるとは限りません。 >それだと、結局、どういうところが具体的に開発工程の向き不向き・効率に影響しているのか知りたいです。 おそらく最初の質問に関連すると思いますが、いくら特殊なH/WのプログラムをVBと作りたいと思っても、開発環境がなければ作れない、開発環境がC言語用しかなければC言語で作るしかないというのが実状です。 >結局、処理速度の違いがいちばん大きな違いなのかなとも考えてしまいます。 Windows上(というか最近のPCのスペック)では、それほど速度に遜色はありませんよ。 本当にmsec以下のオーダーでの処理速度やタイミングの要求が必要な場合は、言語など関係なく根本的に設計や、それから作成しているプログラムに問題が無いかの方が重要ですから。
お礼
何度も御親切に回答ありがとうございます。 確かに、VC++というのも、そういう言語があるというよりも、マイクロソフトの考えた統合開発環境の名前ですよね。 なるほど、Cでは自分でいろいろと考えて細かいところまで作らなくてはいけないと。それが、マニュアル的でおもしろいという人もいるのかもしれませんね。まあ、エラーも出やすい原因なのかもしれませんが。 それに、組込み系では、開発環境が伝統的にというか、C言語のものである場合が多いと。VB.ENTはプラット・フォームとして幅が広く、これからの発展や、また多用されるとも聞いています。 処理速度についてはそうですか。さほどの違いは言語間でないということですね。あるとすれば、膨大な処理の必要になるAIなどの分野での話なのかもしれません。
- SilverThaw
- ベストアンサー率32% (260/806)
No.2です。 No.3 >Cは関数で出来ているという話も聞きました。と、すると、VBでは部品が無ければ自分でつくるということは、できないのでしょうか。 いえ、VBでも「関数」(サブルーチン)という意味では作ることはできます。 但し、Windowsアプリ向けに傾倒しているVBと、汎用的にプログラムが作成できるC言語では、どうしても差が出てきます。 VBはWindowsアプリの作成を容易にするために、Windowsの機能を簡単に使えるように予め部品が用意されています。これはVisualStudio(C/C++)や.NET等も同様と言えます。 VBと(組み込み向け)C言語の大きな違いは、No.2でも例えましたが基本的に使用できる部品の大きさがVBとは桁違いに小さいサイズのものがあり、専用H/W用に豊富な種類の部品やコンパイラが提供されているところにあります。
お礼
再び回答ありがとうございます。 わざわざ感謝致します。 VBのサブルーチンのこと了解しました。 素朴な疑問なのですが、汎用性があるという「C言語」というのと、マイクロソフトの「VisualC/C++」って何か違うのでしょうか。 因みに後者が統合開発環境であるというのはわかっております。 後者はマイクロソフトが何か言語の仕様に拡張したり付加したりした機能でもあるということなのか。 また、頂いた回答で、注目した部分なのですが、Cでは「基本的に使用できる部品の大きさがVBとは桁違いに小さいサイズのもの」があるといいますのはどのようなことなのか非常に興味をそそられました。 VBですと、そうしたものがCに比べ極端に少なく、大雑把であるといいますか。 VBってやっぱり、多言語に比べわかりやすくするために細かい機能を大幅に割愛してしまっているんでしょうか。もしそうだとすると、やや幻滅というか、これだから最初からCを勉強した方がいいやとも思ってしまいます。 それに、VBは文法的にシンプルだとしても、コンパイルすれば、VBだろうが、Cだろうが、機械語になるのでいっしょだとも聞きますがそれだと、結局、どういうところが具体的に開発工程の向き不向き・効率に影響しているのか知りたいです。 結局、処理速度の違いがいちばん大きな違いなのかなとも考えてしまいます。
- SilverThaw
- ベストアンサー率32% (260/806)
No.2です >それにインターフェースの知識も必要であると。 いらない場合もありますよ。 あくまでも「別のH/Wと通信する部分を作る場合」という前提に基づいた話です。 例えば、USB接続のHDDの制御部分を作るとした場合、必要な知識を簡単にあげても ・PCと接続した際にHDDとして認識させる(USBの知識) ・PCとHDDでデータをやり取りする(USB、SCSIコマンドの知識) ・HDDとデータのやり取りをする(IDE/SATA等HDDとのI/F知識) が必要になります。作業する内容によっては不要となる知識もあります。 但しUSBと通信を行う為のマイコンは必ずしも同じとは限りません。 製品Aと製品Bでは使用しているマイコンが違うこともあります。マイコンが違うということはプログラムも違うものが必要になる可能性があります。 >また、コンパイラの性能がよくなると、開発効率に影響するのでしょうか。 正確には「コンパイラも含めた統合開発環境」と言った方がいいでしょう。 「コンパイラ」の役割は、「人の書いたプログラム」を「機械(CPU)が理解できる命令に変換する」ことです。 つまり、プログラム言語に対応したコンパイラさえあれば、どんな言語であっても開発することは可能になります。 しかしながら、VBは基本的には「出来上がっている部品を組み合わせて」プログラムを作成していきます。 対してC言語は、出来上がっている部品を使用することもできれば「部品がなければ自分で作って」組み立てることもできます。 これがC言語が組み込み系に向いている理由になります。 「統合環境」というのはVB等のように、一つのアプリ上でプログラム開発からコンパイルまでできるもののことです。 今でも……というか今現在の私がそうですが、テキストエディタでプログラム作成→DOSプロンプトからコンパイラ実行→できたファイルを組み込み機器のフラッシュROMに書き込んでデバッグ、というものもあります。 >JAVAや、VBだと向かないということがいえるのですか。 一部分野では「組み込み専用JAVA」(正確には組み込み専用の仮想VM上で動作するJAVAプログラム)というのもあります。 最後にちょっとだけ補足 >SilverThawさん、専門家の方のようですが、たいへん参考になりました。 どんな人の「専門家」「経験者」「一般人」、「回答に対する自信」は『自己申告』です。 本当にそうだとは限りませんのであまり信用しない方がいいかもしれませんよ。 (何にでも「専門家」で怪答する方もよく見ますので注意をこめて) 私だって似非専門家かもしれませんよ?
お礼
たびたび回答ありがとうございます。 I/Fだけでも、多くの知識が必要になりそうですね。 なければ部品をつくって組めるというC言語のお話、おもしろかったです。Cは関数で出来ているという話も聞きました。と、すると、VBでは部品が無ければ自分でつくるということは、できないのでしょうか。 怪答者には用心したいと思います。
- Lchan0211
- ベストアンサー率64% (239/371)
「オープン系」、「組込み系」は確かによく使います。 「オープン系」の反対語として「プロプラ系」という 言葉もあります。 プロプラは、プロプライエタリ(proprietary)の略で メーカー独自仕様コンピュータ向けソフトウェアを 指します。 その他にも「~系」は、いろいろあると思います。 「アプリ系」は、あまり聞いたことがないですが、 まぁみんな適当に雰囲気で使っていると思います。 「癒し系ソフト」とか・・ Webプログラミングだったら、やっぱ「Web系」でしょう。 組み込み系は、確かに制御ものが多いですが、 例えば、携帯電話やカーナビ等、画面デザインも 重要とされる組み込み系もあります。 特定のハードウェアに組み込んで出荷するソフトなら 組み込み系です。 組み込みをやるなら、やはりC言語は必須だと思います。 VB.NETは、Windowsが基本ですから、Windowsの動かない ところでは使えません。Windows Serverベースの Webシステムでは、よく使われると思います。
補足
回答ありがとうございます。 「プロプラ系」などと言う言葉は初めて聞きました。 たいへん参考になりました。 なるほど確かにカーナビや携帯であれば、見た目も重要ですね。 VBと、Cでは言語としての機能、難易度はかなり異なるのでしょうか。巷に売られている解説書でもVBよりCの本のほうがずっと分厚い場合が多いように思います。それだけ言語としてできることが高度といいますか。
補足
回答ありがとうございます。 なるほど、確かに携帯やデジカメであれば、機体の表面部に液晶部分の操作パネルなどがありますが、PCの周辺機器などは特にそのようなものは無くても、内部にマイコンとしてプログラムが内蔵されているのですね。 それにインターフェースの知識も必要であると。 また、コンパイラの性能がよくなると、開発効率に影響するのでしょうか。JAVAや、VBだと向かないということがいえるのですか。 SilverThawさん、専門家の方のようですが、たいへん参考になりました。