SSブログ

特集プログラム言語は面白い(その2)(月刊ASCII 1988年5月号12) [月刊アスキー廃棄(スクラップ)]

この号から始まった「特集プログラム言語は面白い」のスクラップの続き。

ティーorコーヒー(CorPascal)?
 CとPascalは、パーソナルコンピュータ上の実用的な言語処理系として人気を二分している.そのため,一般的なプログラミングの解説書にも、どちらかの言語を使っているものが多く,これからプログラムを始めようという場合には,とくに決った言語を使いたいというのでなければ,CかPascalのどちらかを選ぶのがよいだろう.
 ところが,CとPascalは,非常に似通った面も持ちながら,プログラム言語としての性格はかなり異なっているようだ。CとPascalどちらを選ぶかについて,考えてみることにしよう.

CとPascalではどこが違う
 CとPascalの比較論は,すでにいろいろなところで言い尽くされ,書き尽くされた感があるが,ひとことでいって,Cが開発者の奥さんの名前に由来し,Pascalが哲学者の名前からとったというところに,すべてあらわれているともいえる.注a)
注a) Cは,Bの次の言語という意味で付けられたBは,AT&Tのケン・トンプソンがUNIXを記述するために開発した言語であるが,これはBCPLという言語の影響を受けており,これと彼の奥さんBonnieの双方の頭文字をとってBと名付けたものという.
 Cは,ミニコンピュータ用のオペレーティングシステムであるUNIXのシステムを記述するために作られ,発展してきたものであり,システムツールやアプリケーションの記述にたけている.一方のPascalは,プログラムの構造化を主眼に,きっちりとした言語定義にもとづいて開発された言語であり,教育用にも適している.大学の情報系の学科では,まず教えていないところはないといえる.つまり,Cはえらく実用的な言語であるのに対して,Pascalは規律正しい学術用の言語という句がする.
C → 実用的なプログラムの道具
Pascal → プログラムの勉強の道具
と書いてみることもできるだろう.CとPascalが似ている面としては,ともに構造化プログラミングを言語仕様の中に取り込んでおり,それ以前のFORTRANやBASICとは一線を画していること.また,ともに一人,あるいは非常に少数の人の手によって作られた言語であり,仕様が統一的でスッキリしている点もあげられる.
 さて,実際のパーソナルコンピュータ用の処理系としては,最近とくにCの方が優勢となってきているようだ.Microsoft CやLattice Cはもちろんのこと,TURBO C,Let's C,Datalight Cといった低価格のコンパイラが次々に登場して、ほんの2~3年前とは比較にならないほど入手が容易になってきているし,Cを前提としたプログラミングのテキストや入門書も多数発売されてきている。一方のPascalは,TURBO PASCALという非常にユニークな処理系があり,これが,低価格で使い勝手がよく,8bit,16bitともに用意されており,品質の高い専用のソースコードライブラリなども発売されている.TURBO PASCALは,パーソナルなプログラム環境に多大の貢献をしてきたといえるが,一連のCに押され気味であるのも間違いない.
 それじゃ,Cにしましょということになるかというと異論もある.先にも述べたように,Pascalは,最初から教育に向くことが開発意図の1つとしてあげられており,きっちりしたプログラムが自然に書けることで,入門者にはPascalをという人も少なくない.
 ここでいう「きっちりした」とは,Pascalの考案者であるニクラウス・ヴィルトによれば,よくできた論文にたとえられるものであり,モジュールがパラグラフ,モジュール内のユニットがセンテンス,そして構文要素が単語に相当し,これらが構造化しているとともに完結した思考プロセスを表していることであるという.さらには,構文や型のチェックの厳しさがこれを補強し、理路整然とした,いかにも素性の正しいプログラムを生むというわけである.また,Pascalの開発目標の1つには,単純で使いやすく、効率的であることもあげられており,実際に,Cのセールスポイントであるシンプルさや,軽さに十分対抗できるものとなっている.
 これに対して,Cは,確かに構造化プログラミングのための制御構造を文法的に持っており,関数によってプログラムをモジュール化できるが,Pascalのようにプログラムそのものを階層的に構造化できるわけではない.見たところ平坦な関数の集まりが,Cのプログラムである.また,Cでは現実の問題にあわせて論理性に目をつぶった部分も多いため,アセンブリ言語なみの細かい操作ができる反面,書き流していくと,簡単にだらしなく汚いプログラムが書けてしまうという面を持っている.つまり,
C → ちゃんとしたプログラムを書くには,それなりの配慮が必要
Pascal → 初心者でも比較的容易にちゃんとしたプログラムが書ける
といったところであろうか.しかし,逆にPascalでは論理性を追及するあまり,融通が効かないところがあると指摘されることも少なくない.もっとも,これは標準Pascalについての話であり,TURBO PASCALなどでは、実用的に十分な拡張がされている.  実際にMicrosoft C Ver.4.0とTURBO PASCAL Ver.4.0でプログラムを書いてみた.これは,スペースで区切られた数(整数表記)の列を1行読み込んで,その合計を出力するプログラムである(リスト参照).
 ソースそのものは,Cの方がすっきりしているといえるだろう.また,#defineをはじめ,プログラムを手際よく行うための工夫がなされているともいえる.Cでは,mainから順にトップダウンに書いていくのが普通だが,Pascalではボトムアップになっているのも,おおいに趣を異にするところである.しかし,可読性についていえばPascalの方がまさるようだ。
 Cのプログラム例は,ポインタを使ったコーディングとなっている.Cでは,ポインタを使った実行効率の高い記述と,Pascalの例と同じように配列だけを使って書くという2つの記述が可能だ。
 さて,CとPascalのどちらを選ぶかは,やはり好みによるというところだろうか?ただし、勢いとしては、始めの方で述べたようにCが一種の流行となっているのは間違いなく,それがメリットにもなるだろう.
 言語仕様としては,CがANSIの標準化を受け入れるものが多くなってきており、注b)定数や列挙型などで,Pascalの良い部分を取り込んできているようにも見える一方,TURBO PASCALは,このほど大幅な機能アップがはかられている.注c)また,Pascalの子孫ともいえるModula-2も注目を集めている.Modula-2は,Pascalの欠点といわれていた部分を,ほぼ全面的にカバーしており,Cより良いという人も少なくないようだ。注d)また,Cにもおもに制御構造を大幅に強化したC++という子孫がある.Modula-2ほどは普及していないが,まだ解説書や処理系そのものが少ないからだろう。注e)
(阿部 正浩)


注b) ANSI(American National Standards Institute)によるC言語の標準化案.プロトタイプや新しい形式の関数宣言,データ型などについて検討されている.最近のCコンパイラは,この規格案を積極的に取り込んでおり,ソースコードの信頼性が向上するとともに,コンパイラ間の移植も容易になってきている.
注c) TURBO PASCAL Ver.4.0については,この特集の中で詳しく紹介している。
注d) Modula-2は,1978年,ニクラウス・ヴィルトがLilithのシステム記述言語として作った.システムの全てがModula-2で書かれていることからもこの言語の現実的な仕様がわかる.また一方ではモジュールやコルーチンの概念の導入,gotoの廃止など,論理的整合性の方もPascalからさらに進んでいる.
注e) C++は,パーソナルコンピュータ用にADVANTAGE C++,Guidelines C++などが入手可能である.いずれも既存のCコンパイラのプリプロセッサとして実現されている.

ASCII1988(05)f09プログラム言語_リストa_W410.jpg
ASCII1988(05)f09プログラム言語_リストb_W443.jpg
ASCII1988(05)f06プログラム言語_写真3_W520.jpg
ASCII1988(05)f07プログラム言語_図4_W520.jpg
ASCII1988(05)f07プログラム言語_写真4_W520.jpg
PC-9801VX2を買った後もしばらくはX1でCP/Mを使っていた。PC-9801VX2は一太郎とかいわゆるビジネスソフトを使いたくて買ったものでこの機械でプログラミングを楽しもうとは思っていなかった。そうはいってもBASIC+ハンドアセンブルの8086機械語で少しは遊んだ。PC-9801VX2をメインに使うようになったのはTURBO PASCALを買ってからだった。インラインアセンブラが使いやすくてと本末転倒だがPASCALでのプログラミングを楽しんでいた。TURBO Cが出てからはPASCALを使わなくなった。PASCALは行儀が良すぎて楽しくなかった。行儀の悪いなんでもできるCの方が楽しくコーディングできた。パソコンのメモリイメージを浮かべてコーディングでき、I/Oポートを気軽に叩けるのも楽しかった。なにより自分のプログラムが暴走して画面がめちゃくちゃになるのが良かった。


コラム記事をスクラップする。
「パーソナルコンピュータ上の言語処理系のちかごろ
 ソフトウェアという言葉は,コンピュータの世界を離れて一般的なビジネスの現場でも使われるようになった.床屋さんは,いい椅子や道具を使うのも大切だが,サービスの内容の方が大切であるというような場合にも,ソフトウェアが重要というような言い方があてはまる.
 コンピュータにおけるソフトウェアの価値が急速に高まることになったのは,初期のコンパイラ言語が花開いてからのことであるという.そして,プログラム言語を中心とするソフトウェアの開発環境は、絶えず新しいものを求めて動いているのである。
 パーソナルコンピュータでも,現在では,実に多くの言語処理系が提供されており,かならずしもミニコンやワークステーションを使わずに,さまざまなスタイルのプログラム言語に触れることが可能となってきている.具体的には,Cが流行で,Microsoft社とBORLAND INTERNATIONAL社のコンパイラ戦争をはじめとして、はなはだ賑やかな状態である.Microsoft CをはじめとしてMS-DOS,およびOS/2の標準コンパイラの位置を不動のものとしたいMicrosoft社に対して,TURBO PASCALで実績のあるBORLAND社が,昨年5月にTURBO Cを発売,同社がTURBOシリーズでBASICを発売したのも,単にQuickBASICに対抗するためだったともいわれる.
 一方,プログラム言語の新しい方向としては,オブジェクト指向を中心に,具体的な処理系がいくつも発売されてきている.
 たとえば,C++は,AT&Tベル研究所で開発された,Cの上位に位置する言語で,Cにデータ抽象の概念を取り入れた仕様となっており,オブジェクト指向プログラミングへの配慮がなされている.一説によると,ベル研究所内では,すでに実用レベルでこのCのスーパーセットが使い込まれており,“C”といえば“C++"のことを指すのだという.ANSIの規格案のいくつかの概念は,C++に採用されているものである.パーソナルコンピュータ用のものも比較的低価格で入手可能だ。
 オブジェクト指向言語としては,あまりにも有名なのがSmalltalkである.Smalltalk-80は、その言語仕様とともに,マウス/ウィンドウオペレーション自身も同言語で記述されており,そのトータルな環境自身が話題となることが多い.Macintosh用に,Smalltalk-80が発売されているほか,8086系用には,Smalltalk/Vがdigitalk社から出されている.
 Pascalをベースにした言語として有望視される向きもあるのがAdaである.言語仕様の中に,プロセスを制御する構文を含んでいたり,かなり大規模なシステムの開発を想定しているように見える.しかし,最近になって,80286向けのフルセットのAdaをalysys社が開発したと聞いている.パーソナルコンピュータにおいてもAdaが現実的な局面をむかえたのかと認識を新たにするしだいである.
 データ抽象やオブジェクト指向については,また機会を見て説明しなければならないと思う.こうした概念は,いずれも「いかに安全なプログラムを生み出すか」という工夫であって,学問的な興味で高度なアーキテクチャを展開しようというようなものではない、あるいは,逆にこの種の議論は,話を聞いてみると“なんだそんなことか”といった受け止め方をする向きもあるかもしれない.しかし,ソフトウェアはそのような配慮を現在必要としているということでもある.いま,プログラムを書くのにどの言語を使うかといったら,実用に見合った処理系を使うのがよいということになるが,この種の新しい概念にも着目し,できれば触れておいて損はないはずである.
(松尾 有祐)


ASCII1988(05)f09プログラム言語_写真5__W443.jpg
C++を使い始めたのはいつ頃だったか。多分エプソンのPC-486GR3を買ってからだったと思うのでまだまだ先の話だ。重い処理系を使うには80286では力不足だった。
インストールにはフロッピーディスクを何枚も使わなければならなかった。


FROM THE EDITORIAL OFFICE にプログラミングについて記事があったのでそれをスクラップしてここに繋げる。
ASCII1988(05)h03編集室からプログラミング_W520.jpg
プログラミングする?
 コンピュータに触れるためには勉強が必要であり,コンピュータの勉強といえばプログラム言語を学ぶことである,というのが,つい3,4年前までの常識であった.
 ところが,最近ではゲームソフトは言うに及ばず,日本語ワープロソフトも普及し,コンピュータはプログラムが組めなくても利用できる楽しいメディア,便利なツールということになってきた。少し昔ならコンピュータのディスプレイに表れる日本語のメッセージに「気持ち悪い」と言っていたプログラマーも,最近ではマンマシンインターフェイスを云々する.何が分かりやすいか,何が親しみやすいかということが,職業プログラマーの重要なテーマになりつつあるのだ。
 こんな時代に素人がわざわざプログラムを組むなんて、あまり意味がないと思う読者も多いことだろう.いくら頑張っても,そう簡単にプロのプログラマーが作ったプログラムを越えられないというのが,常識である.
しかし,コンピュータがコンピュータそのものとして提供してくれる楽しさの究極に存在するのがプログラミングであるということに,変りはない。誰に気兼ねすることもなく,自分自身が作りたいようにプログラミングするという行為は、アマチュアだからこそ許される楽しみなのである.
 プログラミング用の言語も,豊富にある.BASICも悪くはないが,CもPascalもある.英語が苦手ならば,Mindも悪くない。もしもプログラム言語に興味を持てない人であれば,MS-DOSのバッチやMultiplanのマクロでもいい。
 自分で書いたプログラムが思いどおりに動いたときの感動は捨て難い.最近プログラミングしていない人,まだ経験のない人,今月号の特集をきっかけにプログラミングしてみてはどうだろうか?
(土田米一)
私が言いたいことがここにあった。そのとおりだ。特に「素人がわざわざプログラムを組むなんて、あまり意味がない」に同意する。これこれこういうことがしたいと思うとき、それをやってくれるソフトがあればわざわざ自作することはない。欲しいものがないからプログラミングするのだ。欲しいものが個人的で他の人たちは関心がないので誰も作っていないかもしくは発表されていない。だから自作する。私が作ったものでもそうだ。数人に見せておしまい。感想はいいねもあれば、君はそういうものに興味があるんだというものもある。ゲームをして楽しむ代わりにソフトを作り楽しむ。パソコン(当時はマイコンと呼んでいた)を買ったときもちろんゲームはあったが作った方が楽しかった。

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

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