数独自動生成ソフト開発で学ぶ超初心者のためのC++マルチスレッドプログラミング入門
第1講 序章(周辺の説明とプログラミング体験)
第1話 はじめに
本日(2023年12月18日)よりまったくプログラミングを学んだことがない人
あるいは入門書籍や入門サイトで勉強してきたが、
カタカナ専門用語のために理解できずに困っていた人たちを対象にプログラミング入門講義を開始します。
開発するソフトは数独自動生成ソフトです。
講義題材は初心者用の講義としては普通は扱わないVisual Studio 2022(略称VC++)による
マルチスレッド数独自動生成ソフトの開発です。
マルチスレッド数独自動生成ソフトの出力は、エクセルシートにするために
VBA(Visual Basic for Applicationsの略称)の勉強も学ぶことになります。
C言語は1970年代、C++は1980年代に開発された言語で、
C言語やC++は古い言語と言えます。
ですが、ゲームプログラミングや科学技術プログラミングとしては最も人気のある言語です。
理由は、完全なコンパイラ(C言語のプログラムを機械語に翻訳するソフト)であるために、
演算速度は200超える言語の中でも間違いなくトップであり、
そして、C言語の時代からマルチスレッド(並列)プログラミングが実装されていました。
基本カタカナを使う場合には()内に意味が取れるように漢字を入れます。
といってもなんとことやらが正直なところでしょうが、
簡単にいうとC言語やC++には分身の術が組み込まれていました。
忍者の分身の術は見掛け倒しですが、
8スレッド程度ならほぼ8人に分身していずれも同程度の能力を有します。
数独の場合には1から9までの数字しか扱いませんので、
30スレッドにしてもほぼ30人分の力を有します。
何スレッドの時に一番速いのかは実験していませんが、
皆さんが体験したソフトは36スレッドにしてあります。
VBAは基本マルチスレッドプログラミングができずにシングルプログラミングです。
シングルとマルチで何が違うかと申しますと、
シングルスレッド版
マルチスレッド版
CPU使用率です。
シングルスレッドの場合CPUは約16%しか使われていないのに対して、
マルチスレッドにした場合100%です。
シングルだとコンピュータの能力の1/6程度しか使っていないことになります。
シングル同士でもC++はVBAの5倍程度の速さがあります。
30スレッドにすればその効果が3倍程度で
5×3=15倍程度になるだろうと予想していましたが、
ヒント数20だとシングルであれば18時間も要していたの対して、
数秒でエクセルシートに出力してきたのには驚かされました。
平均すると10秒程度ですから、
どのぐらい速くなったか計算してみると、
18×60×60÷10=6,480倍の速さを実現しました。
どうしてそんなに速くなったのか開発者の私にもわかりませんが、
数理統計学を使えばその謎を解くことができるのではと思っています。
とにかく不思議な能力を持っているのが、
マルチスレッドプログラミングなのです。
第2話へ
トップへ