- ベストアンサー
ベーシック言語について
昔、日本で8ビットのパソコンが普及しだした頃のことですが、それらには必ずと言っていいほど ベーシックが添付されていました。このベーシックですが、コンピューターに詳しい人たちには かなり評判が悪かったように記憶しています。ベーシックのコマンドの少なさといった浅薄なことではなく、コンピューターについての思想に基づいているように思われたのですが、私には理解できませんでした。する必要と時間がなかったからですが、最近、どうにも気になりだしました。どなたか、 当時のことをご存知のかたがいらっしゃいましたら、ベーシックの悪評の理由をわかりやすく 解説していただけたらと思います。よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
パソコン用のBASICは本来のベーシック(ダートマス大でケメニーとカーツにわって作られたBASIC)から見たら大幅に機能を削ったサブセット(ともいえないくらい)だったからと言うのもあります。極論すれば、文法だけ似ているが全く別の言語だったのです。 ですから、これは似非BASICであり、VASICの範疇には入らないということです。 しかし、パソコン普及とともにこの似非BASIC、中でもゲイツの作ったBASICが普及してしまい。元々、ゲイツに好意を持たない者の多い「コンピューターに詳しい人たち」には不愉快な状況になりました。本家側は1980年代にTrue BASIC/Full BASICのような本来の仕様を踏まえた上で構造化拡張を行った言語処理系を出しましたが、パソコンにただでくっついている似非BASICとは勝負になりませんでした。 まあ、すでにいくつか投稿がありますが、当時の「コンピューターに詳しい人たち」にとってツッコミどころが多すぎる欠陥言語処理系が広がってしまうことへの器具もあると思います。
その他の回答 (7)
- korocorogoro
- ベストアンサー率15% (4/26)
・方言が大きすぎた。 同じBASICでも機種やメーカが違うと仕様が違う。 同じ命令でも使い方が違ったりした。 ・構造化プログラミングが出来ない。 関数が無いため構造化プログラミングができない。 gotoやgosubでは行番号やラベルにジャンプするだけ ・スコープがない 変数すべてがグローバル変数。 まぁ関数が無いから当たり前だけど
お礼
回答ありがとうございます >方言が大きすぎた。 そうなんですよ。同業者との打ち合わせで、オタクのパソコンのメーカーは? なんて聞いたりしました。まぁ、最近のウィンドウ〇やオフィ〇のバージョンを確認するようなものでしょうかね。天と地ほど違うとはいいませんが、ちょっとした小技が、あちらではできるのに、こちらはできない、なんてこともありました。 >構造化プログラミングが出来ない。 >スコープがない コンピューターになにをさせたくて、これらを不便と感じているのかがわかりません。(なにをさせるにも、あれば便利な機能ですが)自分は、コンピューターを電気式自動汎用算盤(計算尺)としか捕らえてこなかったので、ベーシックの手軽さが一番と思ってきました。しかし、コンピューターはそれとは別次元の機械であるらしい、とまでは最近になってわかりかけてきたものの、では、コンピューターとはなにか、なにをさせるべきものかが分からず、それを抜きにして言語の優劣を説明されても、どうにも腑に落ちないのです。
思想に基づいて、というならプログラムの意味論の話だったのかもしれませんね。 昔、プログラムの意味の研究が盛んだった時期があります。一般にプログラミング言語は文法を定義しますが、それでプログラムの意味までは記述できません。コンパイルが通ったからといって、そのプログラムが正しい処理をするとは限らないように。 Pascalにはホーア論理に基づく公理、Lispにはラムダ算法、Prologには述語論理(ホーン節)のように、それぞれに適した、よく知られた数学的な基盤がありました。しかしBASICには(少なくとも私は)聞いたことがありません。行番号とGOTO文を多用するプログラムは研究対象に向かなかったのかもしれません。 参考 木村, 米澤. 算法表現論. 1982. コワルスキ. 論理による問題の解法. 1987. Hoare and Wirth. An Axiomatic Definition of the Programming Language Pascal. 1973.
お礼
回答ありがとうございます >思想に基づいて、というならプログラムの意味論の話だったのかもしれませんね そこまで、難しい話ではないと思います。なにしろ、ベーシックの手軽さに感激していたくらいですから ただ、素人ながらコンピューターの未来を想像したり、語ったりしたときに、コンピューターに詳しい人ほど、ベーシックを悪く言うのが不思議に思えたのでした。 算法表現論を書店に注文しました。いまさらなんの役にたつはずもありませんが、ゆっくり勉強してみます。
- TooManyBugs
- ベストアンサー率27% (1472/5321)
さほど悪評とは思いません。 第一それほどパソコンの能力を期待していないし実際その程度のものでしたから。 批判が有るとすればBasicによって専門家しか入れなかった領域に素人が入り込んでくるようになったこと、それまでCOBOL、Fortranで出来たことがBASICで通用しなかったことでしょう。 それまで高額な使用料を払ってマシンのスケジュールに合わせて汎用機でしかできなかったことがいつでも只で出来るようになったのですから有りがたいものですよ。 構造化できないとか再帰性がないとか書かれている方がいらっしゃいますがそれは遙に後になってからのことでしょう。 UNIX等でCが使えましたがUNIXマシンも高額で誰でも使えるものではなかったし他の言語のコンパイラーも存在しない。 せいぜい使えるのはメーカー製のアセンブラくらいだったのですから。
お礼
回答ありがとうございます >それまで高額な使用料を払ってマシンのスケジュールに合わせて汎用機でしかできなかったことがいつでも只で出来るようになったのですから有りがたいものですよ はい、そりゃもう、うれしかったですよ。だから、ベーシックの悪口など専門家の学術的な話ぐらいにしか思えませんでした。しかし、コンピューターの本来や将来を考えると、ベーシックは有害だという説を聞いたり、各自の勝手ではあっても、コンピューターについての考えに基づいてのベーシック批判を聞いたことがたびたびあって、当時は世間話として聞いていましたが、歳のせいか、最近になって、もし、あの話のなかに正しい説があったとしたら、どんな言語がふさわしかったのだろうか、その言語だったら もっと、仕事が簡単になったのだろうか、などと考えるようになりました。当時のパソコンの能力からみて他にどんな選択肢があったでしょうかね。
- kmee
- ベストアンサー率55% (1857/3366)
現在の主流の言語について、どの程度ご存知でしょうか? それとの比較になるので、Basicの欠点だけ書いても理解できないかもしれません。 その場合は、書いてあることをキーワードにして調べるか、補足にその旨書いてください 大きいのは ・グローバル変数しかない ・ユーザー関数定義が、単純な計算式のものしかできない だと思います。そこから ・ 既存のプログラムを部品として使いにくい ・ 再帰的なプログラムを作りにくい ということがあります。 他には ・IF文は1行に収めなければならない(のが多かった) →やたら長い行になったり、GOTOで行ったり来たりするようなややこしいプログラムになりやすい 等もあります。
お礼
回答ありがとうございます >現在の主流の言語について、どの程度ご存知でしょうか? まったく、わかりません。。。。。 フォートランの「フォ~」、とベーシックの「ベ~シ」程度です 確かに、グローバル変数しかないのは不便なことが多いです。再帰処理がしにくいです ですが、それらが、しやすい、しにくい、と、コンピューターにさせるべき仕事とに どのような関係があるのでしょうか。「できる」「しやすい」だけで説明される 言語では、「させるべき」ことが「しやすい」か疑問です。 コンピューターにできる、させたい、させるべき、を考えない言語にどのような存在価値があるのでしょうか(趣味の領域なら価値は各人で決めていいのですが)。昔のベーシックの悪評の多くは、深浅、当否はあっても各人のコンピューター感に基づいての悪口だったように思います。その頃、自分はコンピューターを電気式汎用算盤(計算尺)と思っていて、コンピューター感には無関心でしたが、昨今のハードの高性能ぶりをみて、さて、言語や、世の中のコンピューター感どうなったのだろうと思い始めているところです。
- hanabutako
- ベストアンサー率54% (492/895)
一言で言うと、プログラミング言語の歴史に逆行するような言語で、バグを混入しやすい言語だったということではないかと思います。また、マルチプロセスに向かない言語で、ハードウェアの機能を使うのもC言語に比べてかなり弱いと思います。当時自分もあまり理解していたわけではないですが、C言語やJavaなど他の言語を学んでから、改めてBASICを見た時を思い出して書きます。 1. 構造化プログラミングを支援する言語ではなかった IF THEN ELSEやGOTOでバンバンいろんな行にジャンプするのが当たり前で、FOR NEXTやWHILE WENDからの脱出もIF THEN ELSEでやるのが普通でした。もちろん、continueやbreakは無いですし、ラベル付きbreakもありませんでした。 よって、何も考えずに普通に書いたプログラムでは、プログラムの構造を追うのが非常に難しかったように思います。 2. スタックがなかった (多分) 2.1 サブルーチンの再帰呼び出しができない 一応basicでも、GOSUBでサブルーチンにジャンプできましたが、この再帰呼び出しが出来なかったので、GOSUB中で別の所のサブルーチンを使って元のサブルーチンを再び呼ぶようなコードが書けませんでした。このために、そういうコードを書く場合はサブルーチンなしで複雑なコードを書かなくてはならないように思います。 2.2 変数のスコープがなく、すべてグローバル変数 (多分) 自分の理解した範囲では、すべての変数がグローバル変数となり、名前がかぶったら間違った値で上書きするというのが簡単に起きていたように思います。ネーミング規則を工夫することで何とかできなくも無いですが、プログラムを書く側がそういうことを気にする時点でダメだと思います。 3. マルチユーザーを想定していないのか、タイマー関数がない (多分) BASICでプログラムを書いていた頃、スリープをする場合はsleep(n)のようなものはなく、空のfor文を回してスリープをしていたように思います。今時のプログラミング言語では、sleep関数を呼び、その間別のプロセスが処理できるようにするところだと思いますが、当時はシングルタスクOSだったので問題になかったのでしょう。 4. peek pokeくらいしかハードウェアにアクセスする方法がない (多分) C言語にはIOポートなど通常と違うメモリー空間にアクセスする方法があったように思いますが、BASICで同じような芸当ができたかは覚えていません。 FPUを使った計算やMMX命令なんかも無理だと思うのですが... 5. インタプリタ言語しかない (n88basicにはコンパイラもありましたが...) 5.1 実行が遅い C言語などコンパイルして動かす言語と比べて遅いです。今時のLLなプログラミング言語でも、結構コンパイルしてから動作していて、速いです。 5.2 文法ミスが見つけにくい ちょっとした文法ミスは実行してその文を通るまでわかりません。今時のLLな言語には、実行前にコンパイルして文法ミスを見つけるものもあります。 自分はLSI C試食版でCコンパイラも無料で使え、「BASICでプログラミングを学んだ」と言うと、いろんなプログラミングの概念が身についていないと思われる時代にプログラミングを覚え、BASICは1年しか書いていませんし、部活で趣味で書いていただけなので、仕事でBASICを使っていた方々の苦労は計り知れませんが....まあ、素人でもそれくらい気づくということで。
お礼
回答ありがとうございます 記述にありますベーシックの使いにくい点は、私も同意できるものがいくつもありますが、、私の疑問は その使い難さの理由が、もしかしたら、コンピューターとはベーシックで間に合う程度の仕事につかうものなのに、それ以上のことをやろうとするから、ベーシックは使いにくいという評価になる可能性はないのか、ということです。別にベーシックを擁護しようというのではなく、コンピューターは、もっといろいろなことができる、という主張ばかりで、なにをさせるのがコンピューターにもっとも適しているのかという議論はあまりきいたことがないし、その主張に沿って作られた言語というものもきいたことがないからです。「なんのために」を不問のままで手段の優劣を競うようなもので無意味といえば無意味でしょう。それも今はまだコンピューターの歴史のなかでは初期段階で、できることの拡張、拡大の時期だからかもしれません
- lv4u
- ベストアンサー率27% (1862/6715)
>>コンピューターに詳しい人たちには かなり評判が悪かったように記憶しています。 ベーシックではない言語を使っている方たちからすれば、その性能については、イロイロと批判があったと思います。 1)実行速度が遅い。 2)コンパイラじゃあないので、実行するまでエラーが分からないことがある。 3)変数名一覧などが出ないので変数名などのパンチミスなどが分かりずらい。 4)分割コンパイルを行って、ライブラリーとして関数をまとめることが難しい。 これら意外にもあるとは思います。ただ、いろんな工夫によって、上記の制限を解決しようと皆が努力していたのも事実です。 当時は、ベーシックインタプリター(ベーシックROM)の解析本がでていたりして、それらを参考にいろいろと皆さん頑張られていました。 なお、ベーシック言語以外を使おうとすると、結構なお金が必要になることも多く、C言語が使えることが憧れだった時期もあります。また、C言語ライブラリーも不十分というかバグがあったりしたので、自分たちで追加したり差し替えて使ったりしていましたね。 ただ、当時の状況からして、ベーシックは全体的には、それほど強い悪評は無かったように思います。
お礼
回答ありがとうございます。 自分は、コンピューターを電気式自動汎用算盤(あるいは計算尺)としか考えていなかったのですが、 ある本(処分してしまい、書名も忘れた)によれば、コンピュータはとんでもなくスゴイ機械で、ベーシックはその機械の可能性や未来像からみて見当違いの言語だというのです。 理解できませんでした(苦笑) そんなことは考えなくても仕事には差し支えなかったので、疑問に思ったことさえも忘れていましたが、まぁ、なぜか歳のせいか、気になりだしてきまして・・・・ ベーシックの使い難さは多くのかたが実感している(した)と思いますが、コンピューターとはいかにあるべきかを説明されてからでないと、なぜそれが使い難いのか、他の言語に比べて劣るのかがわかりません。(客の注文に応えるためには、ベーシックは使い難い、と答えが聞こえてきそうですが) >当時の状況からして、ベーシックは全体的には、それほど強い悪評は無かったように思います。 私は専ら、微分方程式の数値解を求めるのに使っていたので、ベーシックの手軽さはありがたかったです多くのユーザー(コンピューターの専門家ではない)も手軽さゆえに悪評はなかったのだと思います。
- zwi
- ベストアンサー率56% (730/1282)
コンピューターをよく理解しなくてもプログラムは簡単に動くって事が問題だったのでは?つまり詳しい知識のないプログラマーもどきが増えるのが嫌われたって事はあると思います。 それと勉強をさほどしていない人が組む場合が多かったのでプログラムな組み方が汚い・独りよがり・GOTOスパゲッティなど悪口のオンパレードになっていましたね。 まぁ、現状でも言語のHSPとかPHPとかで似た様に言われているところはあるので変わっていないかなぁとは思いますが、BASICは入門が簡単で小学生でも遊べたと言うメリットは大きかったと思うんですけどね。
お礼
回答ありがとうございます。 >BASICは入門が簡単で小学生でも遊べたと言うメリットは大きかったと思うんですけどね。 同感です。 ベーシックについての悪評の多くが、軽トラックに大型トレーラーの性能が欠けているといっているようなものと思っていたのですが、ある本に(書名は失念)コンピューターとはどうあるべきかを考えると、ベーシックは見当違いな言語であるとの謂があって、さて、コンピューターの本来の姿と、それに沿った言語とは・・・・が理解できないままン十年が過ぎてしまい、今更ながら気になっているところです。 >つまり詳しい知識のないプログラマーもどきが増えるのが嫌われたって事はあると思います。 いいじゃないか。玉石混交は世の常、なんて言うと、電脳関係者には嫌われるのかな(笑)
お礼
回答ありがとうございます >元々、ゲイツに好意を持たない者の多い「コンピューターに詳しい人たち」には不愉快な状況になりました なにか、おもしろそうな、業界ウラ話がありそうですね。 確か、(似非)ベーシックの欠点をあげつらうことが、コンピューターに詳しいフリをする連中に流行してたような・・・・・。それとは別に、コンピューターの未来を見据えた上で、似非ベーシックは論外、本家のベーシックについて批判があったように思えるのですが、当時は気にもならず、今は、気になるだけで、さっぱり理解できません。たんに、構造、再帰、等の有無ではなく、なにゆえに、それらを必要とするのか、という話だったと思うのです。たんにプログラムの巨大化、複雑化に対応するためではないと思っていますが、後が続きません(笑) ところで >元々、ゲイツに好意を持たない者の多い「コンピューターに詳しい人たち」 なんででしょうかね