SSブログ

たのしいプログラミング他(月刊ASCII 1988年7月号8) [月刊アスキー廃棄(スクラップ)]

たのしいプログラミングをスクラップする。
ASCII1988(07)f01プログラミング_W520.jpg
あなたならどう書く?
ラン こんにちは,プログラミング少女のランです.
ゲージ コンパイル少年のゲージです.ふたり合わせてランゲージでーす.ところで,本誌には毎月読者の方々からたくさんのお手紙をいただきますが,その中には,記事の内容についてのご意見というのもあるわけです.
ラン このページにも,抗議のお手紙とかくるかもしれませんね.
ゲージ ASCIIらしくないとかね.くるでしょうね。
ラン 「らしくない」.何がプログラミング少女だっ!
ゲージ ええ,その「らしくない」ということについて5月号の特集“プログラム言語は面白い”の中の「ティーorコーヒー(CorPascal)?」という記事について,東京都の高川さんからお手紙をいただきました。
ラン CとPascalどっちを選ぶ?という内容でしたよね.
ゲージ そうそう,CとPascalについて具体的に同じ動作をするサンプルプログラムを掲げながら,それぞれの利点,欠点を見ていったわけです.そのPascalでのサンプルプログラムのコーディングについてなんだけどね.
ラン お手紙には,どう書かれていたわけ?
ゲージ 「あなたは,いつもはCを使っていますね」というのです.
ラン あのプログラムをコーディングした人に向かって言っているわけですねー.
ゲージ それで,「私だったら,こんなわかりにくいコーディングはしない!(私はPascal派です)」というのですね.
ラン なるほど
ゲージ あの,Pascalでのサンプルプログラムは,Pascal「らしくない」というわけなんです.それで「だいたい,自分がCひいきなのかPascalびいきなのか明らかにせずに両者を論じるのはおかしい」というのですね.
ラン なんだかビビリますね.
ゲージ あれを書いた阿部くんは,普段はCを使ってますからねー.図星ですねー.それでは,その阿部くんを呼んでみましょう。
アベ こんにちは,阿部です.
ラン こんにちは.
ゲージ 「わかりにくい」というよりも,Pascalの方のコーディングがPascalらしくないということだと思うのですが、アベぼくの場合,一応,Pascalもやっているのですが,Cを使うことが多いので,どうしてもCっぽくなってしまうのでしょうかね.その結果,Pascal派の人には,「わかりにくい」ということになってしまう.
ゲージ それでは,問題のコーディング。をもう一度、見てみることにしましょう(リスト1,2).
アベ あの文章の中でも書きましたよね.パーソナルコンピュータ上のPascalというと,Microsoft PascalなんかもVer.4.0になって,まだまだ健在という感じだけど、やはり主流は,TURBO PASCALなんです.TURBO PASCAL独自の便利な機能(ストリングとストリング関係の関数など)を使って慣れている人にとって,「らしくない」と見える部分もあるのではないでしょうか.
ゲージ Cでのサンプルコーディング(リスト1)は,いかにもCらしいコーディングだったのですが,リスト2の方は,入力バッファを文字配列にして,1文字ずつこまめに回している.実は、お手紙をいただいた高川さんにも問い合わせて,これと同じ問題をプログラムしてもらってみました.それが,リスト3です.
ラン どうもありがとう.
ゲージ これは,TURBO PASCALのVer.3.0,Ver.4.0で動作確認してあるそうです.これは,TURBO PASCAL独自の機能をフルに生かしたコーディングになっているようですね.
アベ ちょっとC臭いかもしれないけど,標準Pascalで書いた例がリスト2とすると,TURBO PASCALで書くとこうなるというのがリスト3ということでしょう。
ラン うーん.
ゲージ リスト3は,確かにTURBO PASCAL独自の関数などを使っているのだけれど、メインから順番に見ていってだいたい何をやっているかはわかるようだね.やっぱり,CとPascal(ここではTURBO PASCAL)では,だいぶ趣が違うというようなところがあるのかな.阿部くんもどうもごくろうさま.
アベ はい,では帰ります.
リストを見ると懐かしさがこみ上げてくる。今からみると、「おい!ここからかよ」とあきれてしまう。しかし、34年前はここからコーディングしておかねばならなかった。自分のライブラリを作った。今は、ほとんど既成の関数があるのでもうこんなコーディングはしなくてすむ。
プログラムのひとり歩きは、あぶない
ゲージ TURBO PASCALと標準Pascalの問題というのもあるかもしれません.標準のままのPascalでは,アルゴリズムの勉強などに使うには,十分かもしれないけど,実際のツールなどを書くには,ちょっと機能が不足しているという人もいる。
ラン その辺のところを,TURBO PASCALはカバーしているというわけですね.
ゲージ たしかに,リスト3の方がわかりやすいということはあるわけです.ただ,Cでも,都合のよい関数をほんの1,2個用意してやれば,リスト3と同じようなコーディングにできるという面もある.逆にいうと,そうしなくても,ある程度込み入った手続きが書けるというところにCの良さがあるともいえるわけです。
ラン でも,そういうことがちょこちょこっと書けてしまうところが,Cの欠点でもあるでしょう.
ゲージ あぶないコーディングになってしまう。
ラン ポインタやなんかの部分などは,要領よく書けているようで,慣れないうちは,鉛筆で図を書いてみないとなかなか理解しにくいです.ちょっとした間違いで,プログラムが思いもよらないような動きをしやすいと思います.
ゲージ だけど、だからといって,せっかくCを使うんなら,その辺の小回りの効くところを生かさないと面白くない.
ラン なかなか難しいところですね.
ゲージ Cらしいというのはね.
ラン 書かなければならない文字の数からすると,圧倒的にCの方が,少ないようですが……
ゲージ Cは,書きやすさも重視した言語ですから,制御構造や式などの表記も,実にシンプルです.
ラン Pascal派の人には申し訳ないけど,Pascalは,Begin,Endでしょうそれと,IF,ELSEなんかが絡みあってきたときに,どこに";"を付けたらよいのか?
ゲージ あの,IF,ELSEの書き方はね.PL/Iを使っている人には,ほとんど同じだから違和感はないだろうけどね.Cのミミズの這ったような{}では気分が冴えないとか,C独自の“+="や"--"といった省略型の式の表記も込み入ってくるとわかりにくいという人もいるでしよう。
ラン ところで,リスト1とリスト3は,同じ問題のために書かれたプログラムなんですけど、やっていることはちょっと違うんですよね.
ゲージ あらためていうと,この問題は,スペースで区切られた数(整数表記)の列を1行読みこんで,その合計を出力するというものです.それが,リスト1では,バッファに取り込まれた1行のデータを,ポインタ(アドレス)を移動しながら数字列をフェッチしているのだけれど,リスト3では,Copyという関数を使って,有効な数字列をつねにバッファの先頭にくるようにして,次にValという関数を使って整数値に変換しているわけです(図1).
ラン 発想そのものがちょっと違っているようです.
ゲージ CひいきなのかPascalびいきなのかということを,指摘されたんだけれど,その辺で,考え方も変わってくるということのようですね.Cの方がスマートでしょという人もいるだろうし,TURBO PASCALで書かれたリスト4の方が,わかりやすいし,プログラムの美しさはもっと別のところにあるはずだという人もいると思います.プログラミングのスタイルについて,次の回では,もう少し踏み込んでみることにしましょう.
ラン ではでは,また.
確かにCはポインタがらみでバグを良く作った。暴走してくれた。それがまた楽しかったのだが。緊張感のあふれるコンパイルとランが楽しかった。バグに苦しみ解決したときが楽しかった。経験値を稼ぎレベルアップした気分になった。
Cの独特の表記が嫌いな人がいたけど全く同意できないというかどうしてそう思うかすら分からかった。マシン語、アセンブラから入った私はPascalの行儀の良いコーディングがまどろかしかった。INC HL と書いていたものが ++hl と書けるのが気持ちよかった。同じキーを続ける方がタイプ速度が速くなるから合理的だと思った。ADD A,B が a += b と書けるのも良かった。
BASIC なら a = a + b だ。この表記に馴染めなかった初心者が結構いた。その点 Pascal は a := a + b だから最初から高級言語を使う人には適していたと思う。アセンブラから入った私は a += b とキーボードから打てるのが気分が良かった。
ASCII1988(07)f02プログラミング_リスト1_W467.jpg
ASCII1988(07)f02プログラミング_リスト2_W501.jpg
ASCII1988(07)f03プログラミング_リスト3_W520.jpg
ASCII1988(07)f03プログラミング_図1_W366.jpg

特集のネットワークについては写真と機材の価格をスクラップして懐かしくおもうことにする。
ASCII1988(07)d01NETWORK_扉_W520.jpg

ASCII1988(07)d03NETWORK_写真1A_W513.jpg
ASCII1988(07)d03NETWORK_写真1B_W515.jpg
PC-9801でネットワークを使おうとすると大変だった。

ASCII1988(07)d05NETWORK_写真2_W330.jpg
Macならこんなに簡単。

34年前ネットワーク構築に必要な機材の価格を表1~3から抜粋する。
表1
Apple Talk システムコネクタ 10,000円
同 ケーブルキット(延長ケーブル10m) 10,000円

表2
ネットワークインターフェース(Ungermann-Bass社Net/One) 198,000円
トランシーバー(シングルポート) 49,500円
トランシーバーケーブル(5メートル) 9,800円
Ethernetケーブル(20メートル) 9,000円

表3
ネットワークインターフェース(Excelan社EXOS298) 200,000円
トランシーバー(シングルポート) 49,500円
トランシーバーケーブル(5メートル) 9,800円
Ethernetケーブル(20メートル) 9,000円

ネットワークインターフェースの高いこと。イーサネットケーブルの価格は現在の数倍といったところ。


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。