マルチスレッドについてうだうだ言わせて

寄ってます.ちがう,酔ってます.
酔った勢いで語ってみます.
C でマルチスレッドやるの,おかしいよ.間違ってる.だってさー,あえて共有変数です,とか言わずに余裕で他のスレッドのデータをばしばし?さわれるし変更できるじゃん.危険すぎ.
しかもどの関数がどのスレッドで動いているかなんて関数名とか工夫しないとわかんないし,いやそれ以前に,同一関数を複数のスレッドで実行したらそれぞれにスタックなりレジスタなりのWSが割り当てられるんだろうけど,そんなんきちんと理解してる人じゃないと気づかないところだし,いくらでも泥沼にはまれるでしょ.
でもねでもね,世の中の流れってのは酷なモノで,MPU 作ってるとこはプログラマにマルチスレッドをとっても推奨してるんですよ.
うーん,僕は思う.シングルスレッドのプログラミングが簡単すぎるんです.逐次実行と条件分岐と反復さえ使えればなんでも作れるパラダイムが,きっと20年後くらいには化石のような存在になってると思う.たとえるならPS2のEEみたいな超並列なマシンが主流になるんだと思う.んで,今 C++ みたいな存在の言語でばりばりコード書くような人の頭は超並列(笑).わけわかんねー.ばりばりコード書くような人が使う言語は超並列.これだ.
マルチスレッドってのは一つのプロセス内に複数のプロセスが同時に動いているようなものだから,難しくて当たり前なんです.けど,それを余裕で理解しちゃえる人が求められてるんだと思います.どこにだよ.
嘘.ごめん,そんなことはないと思う.
エンドユーザつーか日曜プログラマが扱うような範囲では,そこまで高度なテクニックは不要だと思う.
やらしいことを言うなら,「いろいろだろうね」.用途次第でしょ.
PS2 も EE+GS をごりごり制御できる人が最初少なくて立ち上がりに苦労したと聞くけど,その後は並列さを意識しなくても簡単にソフトを作れるライブラリが出てきて楽になったというし,となればライブラリを作る人の頭ん中は超並列だろうけど使う人の頭はその必要なし.
てゆーかだよ,僕は DOS 世代の一番最後の方だから偉いこと言えないんだけど,今プログラマを目指す人はっつーか,興味を持ってる中学生とかって,一番最初に触れる人工言語が HTML とか Perl とか PHP とかなんでしょ?その人たちにアセンブラの知識なんて一切不要だし,切ないくらいマルチスレッド教えるの大変.
こんなこと言って僕は教育者になりたいわけじゃないんですよ.僕と同じような道を歩む数少ない後輩たちの将来を憂うことで自分自身が今現在おかれている立場を忘れたいだけなんです.
だめ,こういう小話は つららっぽさが出るから恥ずい(笑).

それではみなさん,よい週末を.