よく、ソフトウェア開発の世界では、「オープン系」とか、「組込み系」、「汎用系」などと言う分野がありますよね。
これってそれぞれどう違い、どのような特徴があるのでしょうか。
また、上記以外のもので他にも「~系」ってあるのでしょうか。あればそれについても概要が知りたいのです。
「アプリ系」などというのもありますか。市販の、例えばグラフィック関連のソフトとか、ゲーム・ソフトや、会計ソフトなどはこう呼ぶのでしょうか。
また、Webプログラミングはどの分野の系統に属するのでしょうか。
ただ、「組込み系」だけは、多少わかりました。例えば電化製品などに内蔵されているマイコンを制御するプログラムを開発するのですよね。国内でも、この分野の技術者が不足しているということも知りました。
自分のイメージですが、この組込み系というのは、いわゆる市販のパソコン・ソフトを開発する分野と比べると、出力する画面のデザインなどの見た目については、あまりこだわらず、制御にいそしむ、ある意味、地味な領域なのかなという気もしました。
それに、結構、マイコンに関するハードの知識も必要とされるのですよね。
私は、ソフト開発のみというよりも結構、電子基盤の操作などに魅力を感じるので、組込みの仕事もしてみたいなとも思うですが、実は、これからVisualBasic.NETを学習しようかと思っています。
これはまったく、的外れな努力でしょうかね。やっぱり、組込みはC言語で無ければならないのでしょうか。
反対に、VisualBasic.NETを生かす道としてはどのような分野が考えられますか。Webやデータベース、サーバサイドのプログラミングなどでしょうか。
ASP.NETなどもありますしね。
どなたか貴重な解説・御意見を頂けましたら、よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
「~系」は他の方にお任せするとして、
>ただ、「組込み系」だけは、多少わかりました。(以下略)
だけではありません。
PCの周辺機器だって、制御システムは「組み込み系」に属します。
>自分のイメージですが、(中略)出力する画面のデザインなどの見た目については、あまりこだわらず、制御にいそしむ、ある意味、地味な領域なのかなという気もしました。
そんなことはないとも言えるし、あるとも言えます。
携帯やデジタルカメラのプログラムも、一般ユーザが自由に作成できる部分を除けば「組み込み系」に属します。
ここで使用されているH/Wはそれこそ千差万別であり、要求仕様を満たすためにはそれなりの努力が必要ですし、液晶表示のように見た目に関わる部分については、それこそこだわりを持たなければ求心力を持った製品など作れませんよ。
>それに、結構、マイコンに関するハードの知識も必要とされるのですよね。
あるとないとではやれる内容は大違いです。
但し、一般のマイコンとは違い専用設計であったりするので、ある程度の知識と仕様を理解する能力の方が必要です。
「マイコンを制御する」ということは「制御するH/W」があったり、それらをつなぐI/Fがあったりします。当然こちらの知識も必要になります。
>やっぱり、組込みはC言語で無ければならないのでしょうか。
最近はコンパイラの性能もよくなったためC言語以外の開発環境もありますが、やはりメインはC/C++です。
ちなみに、今現在だってアセンブラを使用する環境だってありますよ。
この回答への補足
回答ありがとうございます。
なるほど、確かに携帯やデジカメであれば、機体の表面部に液晶部分の操作パネルなどがありますが、PCの周辺機器などは特にそのようなものは無くても、内部にマイコンとしてプログラムが内蔵されているのですね。
それにインターフェースの知識も必要であると。
また、コンパイラの性能がよくなると、開発効率に影響するのでしょうか。JAVAや、VBだと向かないということがいえるのですか。
SilverThawさん、専門家の方のようですが、たいへん参考になりました。
No.5
- 回答日時:
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などの分野での話なのかもしれません。
No.4
- 回答日時:
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だろうが、機械語になるのでいっしょだとも聞きますがそれだと、結局、どういうところが具体的に開発工程の向き不向き・効率に影響しているのか知りたいです。
結局、処理速度の違いがいちばん大きな違いなのかなとも考えてしまいます。
No.3
- 回答日時:
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では部品が無ければ自分でつくるということは、できないのでしょうか。
怪答者には用心したいと思います。
No.1
- 回答日時:
「オープン系」、「組込み系」は確かによく使います。
「オープン系」の反対語として「プロプラ系」という
言葉もあります。
プロプラは、プロプライエタリ(proprietary)の略で
メーカー独自仕様コンピュータ向けソフトウェアを
指します。
その他にも「~系」は、いろいろあると思います。
「アプリ系」は、あまり聞いたことがないですが、
まぁみんな適当に雰囲気で使っていると思います。
「癒し系ソフト」とか・・
Webプログラミングだったら、やっぱ「Web系」でしょう。
組み込み系は、確かに制御ものが多いですが、
例えば、携帯電話やカーナビ等、画面デザインも
重要とされる組み込み系もあります。
特定のハードウェアに組み込んで出荷するソフトなら
組み込み系です。
組み込みをやるなら、やはりC言語は必須だと思います。
VB.NETは、Windowsが基本ですから、Windowsの動かない
ところでは使えません。Windows Serverベースの
Webシステムでは、よく使われると思います。
この回答への補足
回答ありがとうございます。
「プロプラ系」などと言う言葉は初めて聞きました。
たいへん参考になりました。
なるほど確かにカーナビや携帯であれば、見た目も重要ですね。
VBと、Cでは言語としての機能、難易度はかなり異なるのでしょうか。巷に売られている解説書でもVBよりCの本のほうがずっと分厚い場合が多いように思います。それだけ言語としてできることが高度といいますか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 就職 就活に関して 2 2023/02/13 21:46
- 副業・複業 『Webライター』になりたいです。 まずブログSNS副業に興味関心がありました。 そして大きな目標と 14 2023/06/16 14:01
- インターネット広告・アフィリエイト アフェリエイトサイト 作成について 5 2022/05/13 21:31
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- その他(就職・転職・働き方) 大学で学んだ専門分野の勉強は仕事で使いますか? よく「仕事に必要なことは会社に入ってから学ぶ」「大学 2 2022/04/09 04:23
- その他(ゲーム) アタリショックを起こしたクソゲー「E.T.」 どんな内容なら失敗しなかったか? 3 2023/05/07 09:33
- 書類選考・エントリーシート 【急ぎです】指定校推薦の志望理由書の添削お願いしたいです! 商学部で1600字中1595字です 志望 1 2023/08/24 02:54
- システム スパコン「京」の本当の意義 4 2023/06/23 07:16
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ソフトの開発言語を調べる方法
-
unsigned long long 型のフォー...
-
char型の配列の初期化について
-
組み込みソフト。ROM領域にデータ
-
C言語でチェスを作ってみたいと...
-
C言語のプログラミングのソフト...
-
COBOLのALPHABET...
-
PICでのI2C通信でのマスタ、ス...
-
C++Builder → Visual C++ 移植...
-
基本的な事なんですが・・。
-
リリースモードとデバッグモー...
-
Σの計算について
-
Visual Studio フレームワーク ...
-
cc と gcc の違い
-
パーサとコンパイラの違いって?
-
printfなど、標準関数のソース...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
アプリケーションのDLLファイル...
-
Excelのエラーで困ってます。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
printfなど、標準関数のソース...
-
組み込みソフト。ROM領域にデータ
-
C++Builder → Visual C++ 移植...
-
cc と gcc の違い
-
パーサとコンパイラの違いって?
-
COBOLの論理演算子について質問...
-
C++でデスクトップGUIアプリ開...
-
リリースモードとデバッグモー...
-
COBOLのALPHABET...
-
bcpadのコンパイラのインストー...
-
C言語はC言語でできている?
-
VC++の/Zm オプションについて
-
エラー0でのビルド失敗について
-
long long型について
-
main() 関数は、int を返値とす...
-
変数の内容がコロコロ変わる、...
-
COBOL計算式の中間ワーク桁数に...
-
C言語の規格
おすすめ情報