ソフトウェア

組込みソフトウェアではオブジェクト指向は使えない?

自分はもともとソフトウェア専攻だったこともあり、

 

「C++やJavaなどのオブジェクト指向最高! 複雑な構造のプログラムでも抽象化してうまく設計できる! Cとかごちゃごちゃになりやすい言語なんてくそだ!!」

 

と思っていました。

だって、オブジェクト指向では綺麗につくれるプログラムも、非オブジェクト指向で作るとデータと関数がごちゃごちゃになってわかりにくいんです。

 

ところが、組み込みの方の世界に入ってみると皆C言語で書いていました。

 

「なんて遅れているんだ!」

 

とその時は思いましたが、それなりに理由があるのです。

 

1,開発者がC言語に慣れている

組み込みでは長い間Cが使われているので、皆慣れています。

逆にC++は使い慣れていない人が多いです。

 

2,過去の資産がC言語

C言語の資産があると、C言語で開発するのが楽です

メーカが提供しているのもC言語のライブラリだったりします。

 

3,メモリが限られている

これがある意味一番の制限です。

オブジェクト指向など、昨今のプログラミング言語はメモリを大量に使います。

開発しやすさなどを優先して、メモリを多少無駄に使っても気にしないというスタイルです。

PCやスマホ、あるいは数百MBのメモリが載っているLinuxボードならそれでもいいのですが、

プアな組み込み環境だとメモリが数kBしかありません。

こうなると、インスタンスを作る度にメモリを確保するようなオブジェクト指向言語を動かすことは非現実的です。

 

とまぁ、このように、今でもC言語で開発をするのが現実的なのです。

昔の自分のように「オブジェクト指向じゃないなんて!」と怒らないようにしてください(笑)

 

以上、小田切でした。

ハードウェア開発者にプログラミングの知識は必要?

たまにハードウェア開発もその上のソフトウェア開発も全部やるという人が居ますが、普通は別々の人が行います。

そんな立場のハードウェア開発者がプログラミングの知識が必要か?という話題です。

 

いきなり、結論。

ある程度は必要

ある一定以上があると便利。

 

◯必要な部分

ハードウェア開発者というのは特に組込系になると、ソフトウェア開発者と密なやり取りをします。

その時に「え、なにそれ?」状態では話が進みません。

プログラミングの基本的な知識は絶対に必要です。

変数や関数、割り込み、スタック、等の知識は必須です。

なので、教科書的な用語の意味を知った上で、チュートリアル程度でもいいのでC言語でプログラムを書いて動かすという経験があるべきです。

 

◯便利な部分

ハードウェア開発では部品表だとか、アートワークで提出されるデータだとか、結構大量のリストを扱います。

基本はテキストファイルです。

ハードウェア開発では、時に大量のリストを照合したりコピペしたりといった作業が発生します。

しかも、同じような作業が何度も発生します。

そういったときに、テキストファイルをちょちょっと処理できるプログラムが書けると効率が劇的によくなります。

ということで、rubyやperlなど、テキストを簡単に使えるスクリプト言語を扱えると非常に楽になります。

あとはEXCELのVBAも扱えると更に便利です。

 

ということで、ハードウェア開発者だからといってプログラミングを避けずに勉強しましょう!

 

以上、小田切でした。

ソフトウェアのライセンスって面倒・・・

ちょっと変わって組み込みソフトウェアの話題。

今の御時世、1からプログラムを組むこともあると言えばあるけど、かなりレアケース。

だいたい、メーカーから提供されているフレームワークやインターネットに転がっているライブラリなどを使用して、差分だけを開発するのが普通です

しかし、その時に問題になるのがライセンスです。

 

もし、使用しているフレームワークやライブラリがGPLライセンスだと、開発しているプログラムもGPLライセンスになってしまいます。

GPLライセンスだとソースコードを公開しないといけません。

つまり、「特別な機能を作った。これを目玉にして売るぞ!」なんていうときに、中身でGPLライセンスのライブラリなどをつかっていると、そのソースコードを開示しないといけなくなります。

組込みソフトウェアは大体特定メーカ用の開発が多いので、ソースコードを公開しないといけないのは大きな問題です。

ということで、大抵の場合GPLライセンスのソフトウェアは使用できません。

 

組込みソフトウェア開発ではBSDライセンスのほうが安全です。

BSDライセンスでは公開の義務が発生しないので、ソースコードを秘匿したまま使用することが出来ます。

 

ということで、もし「ソフトウェアのライセンスとかなにも考えずに開発していた」というときは、

一度使用しているライブラリ・フレームワークのライセンスを列挙してみましょう。

GPLがあったら要注意です。

 

以上、小田切でした。