プログラミングは簡単だ。
順次、分岐、繰り返しのみ!
...
入門では登場しないHANDLEという概念。
C/C++ではFOO_HANDLEという定義をhfooやhbarという名前で使われています。
実態はvoid*です。
映画でHANLEが使われる場面
Handle us? You'll handle us? You know, your predecessors had much more respect.
倒すだと?私たちを倒すだと?前任者はもっと敬意を払ったぞ!
映画マトリックスのハンドルされる敵役が言ったセリフです。
つまり、HANDLEとは
俺はお前のアドレスを知っているから、
お前の状態を観察できるし、
お前の値を如何様にも変えることができるし、
お前の動作を実行できる!!
ということになります。
プログラム上ではどういうときに必要になるでしょうか。
プログラム上でHANDLEが使われる場面
1.イベント処理
イベント処理を実現させるためには複数スレッドが必要です。
別のスレッドのオブジェクト状態の変化に応じてメインスレッドの処理を変えたい場合に、そのオブジェクトをハンドルします。
イベント処理の実装は非常にややこしいので、API(Win32,Qt,GDK等)によって実装方法は様々です。
また、HANDLEという言葉は出てこないかもしれません。
2.実体へのポインタ
ファイル、オブジェクト、レジスタなど、 アクセスしたい実体へのポインタを表す。
また、HANDLEは自分とは別のスレッド、別のライブラリ、別のシステム空間のポインタを表すときに使われます。
コラム
とある日本の自動車メーカー(大企業)の下請けはECU(エンジンコントロールユニット)のバグをフローチャートで出力(笑)して、それを印刷し(爆笑)、順次目で追って(絶望)バグ探しをしている。
もし、車が複数スレッドを搭載したOSで走るようになったらこのような開発体制はおしまいである。
また、人の命に関わる分野にAIを適用することは、やらないだろう。
当然、AIのバグをフローチャートで取り除くことは不可能だ。
EV社会になると日本の車業界の雇用は崩壊することが確定している。
EVの製造はロボットにほとんど担当するからだ。
また、ソフトウェア開発については日本の大企業は終わっている。
上記のようにテスターを外注するという頭の悪いことをしている。
ちなみに、私が愛知県に行ったとき雰囲気・住民の層がソフトウェアの文化とは相反するものだと感じた(THE・工業の街!!)。
つまり旧態依然とした組織体制・文化なのでHANDLEの概念を採用できない!!だから滅びる!!
それくらいHANDLEはヤバい...!!!
IoT社会になればそのモノ(Thing)の数だけHANDLEは存在することになるだろう。
包括的なドキュメントよりも動くプログラムが重要
日本の企業は前者が大事。ソフトウェアは下請けが開発しているので、お上に説明するときに必要なので(笑)
変わって 時価総額がトヨタ超えしたテスラのSoftwareDeveloperの要項をみてみた。
https://www.tesla.com/careers/job/software-developer-testsystems-54331
当たり前だが内製である。
車開発にPythonやらDBの知識が必要としている。
WindowsとLinuxのデバイスドライバの知識も必要としている。
つまりハードウェア(車)の制御にWindowsやLinuxを使用しているだと!!??(製造用ロボットかもしれないが)
頭おかしい。ぶっ飛んでる。