甘いものを食べると、お煎餅のようなしょっぱいものが欲しくなり、お煎餅を食べるとまた甘いものが欲しくなります。私にとってプログラミングも同じで、MicrosoftのCLIで動く(user_friendlyな)「高級言語」、C#で何か書くと、低級言語のC/C++で何か書きたくなり、それで何か書くとまたC#が愛おしくなる、というサイクルを自覚しています。
ということで、
【8Puzzle】の後釜は、何かC/C++で(出来れば、とてもプリミティブなコンソールベースの)プログラムを作りたいな、と感じる今日この頃。
ネタ?
幾つか思い浮かびます。例えば...
(1)STL
色々なコンテナやアルゴリズムがあり、魅力的ですが、一方個人の生活でそのような膨大なデータを取り扱うことは稀であり、矢張りゲームに落ち着いてしまうというきらいがあります。尚、参照先に「未対応コンパイラ」(注)の項がありますが、現在のEmbarcadero C++はC++11に準拠しており、特段問題はないと思います。
注:「STLはほとんど全ての要素がC++の比較的新しい機能であるテンプレートを用いて作られているので、テンプレート関連のC++標準への準拠度が低いコンパイラやテンプレート機能を持たないEmbedded C++では、一部に使用の制限があったりSTLの使用自体が不可能なことがある。」
(2)コンソールウィンドウ
所謂「DOS窓」のことですが、これも特殊なウィンドウで、これを使ってウィンドウベースのプログラムを書くこともできます。まぁ、「それで何をするか?」は余り新味はないかもしれませんが。
(3)MultiThread
WindowsというOSのマルチタスク機能を使う場合、昔はC++の_beginthread() や_endthread()、またはWin32APIのCreateThread()などを使いましたが、(Embarcadero C++も準拠している)C++11からは「std::threadクラス」を使ったマルチタスク処理が可能となり、簡単に描けるようになりました。これも題材としてありますよね。(ただ、同様に何をマルチタスク処理するか、がムズイです。)
(4)PowerShell
そんなこんなでネタ探しをしていたら、矢張りMicrosoftのCLI(共通言語基盤)で実行するシェルであるPowerShellがバッチ処理もできて面白そう、という印象を持ちました。しかし、これは深度が深いので生半可で触っても面白いものが出来るか否か分かません。少なくとも少しWindows PowerShell ISEなどを弄ってからになるかと思います。
何れにしても、
(一杯やりながら)もうちょっと練ってからの方がよさそうです。
