往年の Turbo C++ を触ってみよう

もうちょっと前に書こうと思っていたのですが、Turbo C++ のフリー版があるよ、ということで記事を残しておきます。

Turbo C++ or C for Windows 7, 8, 8.1 and 10 32/64-bit Full Screen Free Download – Home
https://turboc.codeplex.com/

Windows 10 でも動くので、そのままダウンロードしてインストール。起動すれば ok です…が、全画面になってしまうのが困りものなので、起動時に「full screen mode…」のチェックを外します。するとウィンドウモードで動きます。ただし、カーソルが取られてしまうので、Ctrl+Tab で他のウィンドウにフォーカスを移してください。なんか Tab キーが暴走してしまいますが。

かれこれ30年前の C++

私が大阪で大学生をやっていた頃なのでかれこれ30年前のことです。マンデルブローを描きたかった頃(確かCマガジンで特集をやっていたような気が)に N88 BASIC で組むと遅いから C 言語で組むんだということで、日本橋に行って買いました。店頭で「Turbo C++ を下さい」というと、冒頭のように「X1 Turbo」を出されたのは良い思い出ですが、きちんと Turbo C++ も出てきました。確か、2,3万円で買えたと思います。当時、MS-C が高値の華で8万円ぐらいした頃なので以上に「安かた」んですね。LSI-C 試食版があったような時期なんですが、実行サイズに制限があったので買うしかなかったという感じです。いや、正確に言えば、Unix が出てきて、Minix が動いたか動かなかったかで、Linux が出たか出なかったの頃なので gcc はあったような気がします。実際、2年後ぐらいには、研究室で DOS/V 機に Linux を入れてワークステーションにログインさせていました。

当時、貴重な1台しかもっていない PC98 RX に DR-DOS(MS-DOS の互換OSですね)を入れて、ぽちぽちとプログラミングしたり大戦略したりしていました。そうそう、大戦略していた頃の神戸大震災に遭ったのでした。たまたま、午前5頃までゲームともプログラミングともつかない生活をしていたので地震があった当時に起きていたのですが(机が50cmほどずれました)、寝ていたら本棚の下敷きになっていたと思います(まあ下敷きになる程度で死ななかったとは思いますが)。

そんな頃の C++ なのですが、この Turbo C++ はきちんと「統合開発環境」になっています。そうそう、当時「emacs は環境である」というセリフが流行ったのです。emacs の中でプログラミングもできるし、メールも打てるし、シェルも動かせるというやつですね。それと同じように、Turbo C++ には付属のエディタがついてて、この中でコードを書いたりコンパイル&実行をしたりすることができます。上の画面キャプチャを見るとわかるんですが、コードに色がついています。今の IDE のように候補がでることはありませんでしたが、キーワードには色がつきました。あと、テキストベースのウインドウを重ねることで、複数のソースコードを開くことができました。

当時の Macintosh にはマウスが必須でしたが、MS-DOS(DR-DOS)の時代には、まだマウスはついていませんでした。ついていませんでしたが買って、マウスドライバーを乗せることでテキストベースではありますがマウスカーソルを動かすことができました。

ノスタルジー以上のもの

昔はこうだった…の本が流行っているようですが、感傷(ノスタルジー)以上のものではないので、もう少し前向きな話をしましょう。

見て分かる通り、Turbo C++ の環境には上部にメニューがあります。メニューの位置がウィンドウに張り付いたり、Mac のように上に張り付いたりしますが「メニュー」があるという点では同じです。当時、Windows 3.1 が出た頃に MDI/SDI という概念があってダイナミックメニュー(メニュー自体が切り替わる)という方式が生まれましたね。その頃から DocView パターンがあったし、GoF の原著をみれば MVC パターン自体が相当古いところからある概念だということがわかります。それはともかくとして、

  • 上部にメニューがある。
  • メニューが階層化されている。
  • モーダルダイアログがでる。
  • ウィンドウがあって、前面と背面がある。

のような基本的なところは今の Windows でも変わっていません。当然、Visual Studio もその形を踏襲しています。この画面は Turbo C のものですが全体的にこの傾向は変わりません。Linux の X-Window ですら同じスタイルです。

じゃあ、このスタイルが完全であり将来的にもよいもの≒効率のよいものなのか、というとあまりそうとも言えません。ツールバーがついたり、MS-Office にリボンがついたり、スタートボタンがあったりなかったりする時代を考えれば、常に試行錯誤の段階であることは明白です。Windows が最初に出たころ(Macintosh が世間に浸透した頃かもしれません)に、科学的なユーザーインターフェースの指針としてマウスの動きとか、目の動きとかを使って「有利である根拠」を示したものもありました。当時、私もそういうものに気を使っていた時期もあるのですが、今考えれば「対案が出ていない」時点であまり科学的とも言えなかったのでは?と感じています。そう、比較対象がないんですよね。

Squeak のメニューの出し方は独特で、カーソルの周りにメニューアイコンが出ていた…ような気がするんですが、別の言語でしたかね?今だと、ふつうのコンテキストメニューが出てきます。まあ、そこは他のOSとの操作感の兼ね合いでもあり、淘汰でもあるのですが、現在のメニューシステムはキーボードとマウスを中心にして作られているので、スマートフォンやタブレットのように指先を使うとか別の入力デバイスを使うときには別の方法があるはずなんですよね。実際、スマートフォンのスクロールはマウスを使ったスクロール方法とは違うし、指を2本使ったピンチのような拡大縮小はマウスではできない方法です。そういう、新しい入力デバイス(タッチパネル≒指)が出てきたときに初めて、Turbo C++ の開発環境のようなメニューやウィンドウの表現との「決別」ができるのではないかな、と思っていますし期待しています。

じゃあ、VR のように仮想空間でこねこねしながらプログラミングするのがよいのかとか、仮想キーボードを使って仮想ターミナルを開くのがよいのかという模索もありますが(実際、あれは面白いし、なんかそっちの方向に行きそうな気もしています。空中に浮かんでいる複数画面の映像はあの VR 空間で実現できますよね)。

Scratch をはじめとするブロックプログラミング環境にしても、条件分岐の書き方とか非同期動作の書き方とか(実は Scratch はイベントを非同期で発生させられる可能性をもっています。今も非同期で動いている?)まだまだ書き方はたくさんあります。特に if 文が一次元(コードを書く方向≒文章を書く方向)であらわされていますが、多数に分岐させて2次元に遷移図として展開させることは可能ですよね。Unity のスクリプトがそんな感じです。

MDA(モデル ドリブン アーキテクチャ)を再開するならば(私は再開してもよいと思います)、ブロックの内部実装(低レベルの詳細実装≒戦術)と、ブロックを組みあわせる問題解決の層(高レベルの実装≒戦略)とは分けて考えてもいいのではないでしょうか。実際、Azure の機械学習はそれに近い感じになっています。そういうところを考え合わせると、マウス以外の入力デバイス(タッチパネル,VR 空間、その他のアナログな入力デバイス)も併せて、もう少し「過去とは断絶した」開発環境ができるのではないかな、と思ったりしますし、それを作りたいなと。

カテゴリー: 雑談 パーマリンク