Windowsには多様な実行環境がある。 どれを学習すべきか考えてみた。
学習する価値はあるのか
これまで.NET4のFormとWPFをやってみた。 それぞれまったく別々のコーディングを強いられて苦労した。
しかも、もはやFormは古いからWPFをやるべきらしいのだが、WPFはXAMLのせいでとてもわかりづらい。 さらに、WindowsのバージョンごとにStoreやUWPという実行環境が増えている。
はたしてWPFは学習する価値があるのか、わからなくなってきた。 学習しても古くなって学習した内容が無駄にならないか。 書いたコードが実行できなくならないか。
Windowsの実行環境について調べてから判断することにした。
Windowsの実行環境
- Windows Driver Kit
- DirectX
- Windows API
- Application
- Console Application
- Windows Native Application
- Library
- LIB(静的)
- DLL(動的)
- Application
- COM/COM+
- MFC
- MFC Application
- .NET Framework
- Windows Runtime(WinRT)
- Windows Store Application
- UWP Application
Version | 実行環境 | 特徴 |
---|---|---|
初期~ | API | 生のWindowAPIを直接使うため最高速。 |
? | MFC | 有償 |
~7 | .NET Framework | 生産性の向上。 |
8~ | Windows Runtime | COMベース。.NETより高速。 |
.NETはWindowsAPIを使わないとできないことが多々あるらしい。 WinRTは知らない。
どれを学習すべきか
以下のサイトを参考にさせて頂いた。
http://www.buildinsider.net/enterprise/uwpapp/01
http://www.atmarkit.co.jp/ait/articles/1506/23/news012.html
新しくなるごとに選択肢が増える。 選択肢が増えると、それらすべてを把握した上で適切なものを選ばねばならなくなる。 WPFだけでも難しそうなのに…。
COM/COM+はWinRTの前身らしい。WinRTの基礎として知っておけばいい程度なのだろうか。 MFCは知らない。有償らしいが。 とりあえずこれらは除外しておく。
新しくなるにつれてOSレベルで制限が増えていく印象がある。 また、技術をコロコロ変えられると辛い。 このままではキリがない。 とりあえずWindowsAPIを学習しておいたほうがよさそう。
以下を学習してみたい。
多分WindowsAPIから学習すれば、.NET(Form, WPF)のありがたみが理解できるようになると思う。 使い分けのポイントをおさえたい。
Linuxという選択肢
Windowsの制限や技術の遷移は経営戦略によるものだと思う。 OSも非公開コードで学習が無駄になってしまうことが怖い。
Linuxという選択肢もある。 とりあえずWindowsでC/C++の学習をしておけば移行しやすいか。 いずれLinuxも学習してみたい。 しばらくはWindowsでいく。