No More BASIC!

  1. トップページ
  2. No More BASIC!

Disclaimer

授業でBASICを使い続けることへの批判ですが,あくまでも個人の意見です。 BASICを愛してやまない人は読まないでください。(読んでもいいですが気分を害されたとしても知りません。)
本文で例として挙がっている言語は完全に個人の趣味です。

古いからダメ?

BASICは古いからよくないと言った人がいるそうです。 確かに今年(2018年現在; 以下同じ)で54歳になるBASICはプログラミング言語の中で結構高齢な方ですが,古いから嫌だというのは本質的ではありません。 46歳と割と年上な方のC言語は時々使います(C++の方がよく使うとか言わないでください)。

「古いからダメ」というのが本質的でないというのは,「古さ」自体が悪いのではなく,新しい方がいいということです。 後発言語は新しい構文とかパラダイムとかをどんどん取り込めるので,後出しの方がよくなるに決まっています。 そして今は2018年です。様々な言語が選べます。 FORTRANかBASICかCかどれかから選べとかいう時代ではないのです(そんな時代があったかどうかは知りません)。

古いから悪いとは言いません。もっとほかのいい言語があるんだからBASICに固執するのやめましょうよ。

いいプログラミング言語

「いいプログラミング言語」と書きましたが,"このプログラミング言語が完璧だ"と言えるようなものが存在するとは思っていません。 プログラミング言語にはそれぞれ得意な分野と不得意な分野があります。 Perlやawkなどで軽く書けばいいようなちょっとした集計にC/C++を使う人はいないでしょう。 しかし,リソースを徹底的に節約して細かい制御をしたいならC言語などの出番になります。 プラットフォームに依存しないアプリケーションを作りたいならJavaは強いですし,Windows上で動くまともなものを作りたいならC#は有力な候補になります。

いろいろな言語であふれていますが,要は,目的にあった言語を選べばいいのです。「この言語でもできるから」というのは言語を選ぶ理由になっていません。 そんなことを宣っている輩は一生機械語を書いていてください。

プログラミングの能力

目的にあった適切なプログラミング言語を選択する能力というのは重要な能力の一つだと思っています。 もちろん,商売としてコードを書いている場合にはクライアントの都合などにより言語が決まっていることがあるのはわかります。 しかし,「化学や物理の問題をシミュレートする」のにBASICは"最適"でしょうか? そうは思いません。Pythonなら科学計算用のライブラリが充実していますし,数学の計算はMaximaが結構強いらしいです(まだ使いこなせていない……)。 とんでもない速度を誇るJuliaもいます。

授業では,方程式を解くコードを書かされました。ただのシロウトによる車輪の再発明です。あれはSciPyでいいのではないかと思います。 とてもBASICが"最適"な言語であるとは思えません。

BASICの嫌なところ

これまでは,「他の言語の方がいいからBASICは嫌だ」といった消極的な意見だったので,ここで個人的に嫌いなBASICの特徴を羅列してみます。

大文字が多い

一部の人にはわかってもらえると思うのですが,大文字は「うるさい」感じがして疲れます。 Jargon FileのChapter 5. Hacker Writing Styleにも"TEXT IN ALL CAPS IS INTERPRETED AS ‘LOUD’"とあります。 そしてBASICはキーワードが全て大文字です。お話になりません。

スコープがグローバル

これは全然知らなくて結構悩まされた問題ですが,全部グローバルなんです。 何が起きているのか全くわかりませんでした。

等価と代入

BASICでは等価演算子と代入演算子がともに「=」です。 この仕様って結構初心者に対する嫌がらせのように思えるのですが本当に「Beginner's」の言語なんでしょうか(笑)

色の指定

BASICで色を指定しようと思ったら「1は黒,2は青,3は緑……」といったことを知っている必要があります。 これは,コードを読む側にも要求されます。この仕様による可読性の低下のためにわざわざコメントを書かなければならないのだとすれば,仕様が悪いと言わざるを得ません。
(拡張で色を表す文字列が使えるそうですが,「国際規格に従ったBASIC」が聞いてあきれます)

グラフを描くのがめんどくさい

「ペンを上げて」とか言っているBASICの描画処理は頭が悪いと思います。matplotlibを使いましょう。

書式指定文字列

書式指定文字列の仕様が意味不明です。どうしてこんなキチガイのような仕様になってしまったのか理解に苦しみます。

ググっても情報が出てこない

Google検索するときに,キーワード+言語名で検索するのは普通だと思います。 しかし,BASICの場合は他の言語に関する「基本的な」情報が大量に出てきて,「BASICに関する」情報はほとんど出てきません。 この点は個人的にかなり恨んでいます。

結論

この記事の執筆中に気づきました。教える側が「Beginner」だからBASICしか教えられないのではないかと。 でなければBASICを使う理由が思いつかないのです。

しかし,世界にはたくさんの言語があります。 この記事を読んだかわいそうな同級生の1人でも多くがPythonistaになることを願っています。(最後までPythonを推す)

おまけ: Officeについて

筆者がOfficeを毛嫌いしているのは有名だと思いますが,他の物の方がいいと思っているから使わないだけです。 CSVエディタとしてのExcelは実は割と使っています。 Wordは勝手に書式を変えたがるので嫌いです。 みんなでLaTeX 遣いになりましょう。

ただし,Officeの基本的な操作は知っておいた方がいいです。 何でか知りませんが,それなりにいい値段がするあの謎仕様製品は大くの企業で使われています。 Officeを全く触れなければ,おそらく就職したときに困ります。

もっとも,Excelで微分方程式を解く技術よりも,LOOKUP系の関数やIFを組み合わせて集計したりする技術の方が役に立つと思うのであの授業は意味不明です。
(画面いっぱいの関数を書いてVBAを使わずに電車の時刻検索を作るくらい関数で遊んだうえで文句を言っているということをご理解ください。 できないから拗ねているただの阿呆とは違います。)

Tweet