🎈

Smalltalk 更なる7つの神話

2023/01/01に公開

以前、別サイトに書いた駄文の続編です。

新神話1. SmalltalkはUIデザインが古臭い

意外とそうでもないです。たぶん。
SmalltalkのUIは古いと言ってくる人の多くは、最新OSのネイティブウィジェットの名前を挙げて、これはあるかと訊いてきます。多くのSmalltalk環境では、OSネイティブなウィジェットを使うことはないので、答えとしては「NO」になります。が、話はここで終わりません。
最新のUIとは最新OSのウィジェットを使ったUIなんでしょうか?むしろ2023年1月1日現在では、イマドキっぽいUIはあまりウィジェットを前面に出さないような気がします。OS標準のウィジェットに拘るほうがなんかげふんげふんだと思います。
Smalltalkの面白さは、自分でウィジェットを自作するところにあります。最新よりもっと新しい、未来のUIを自作できます。もちろんウィジェットっぽくないUIも簡単に作れます。
GUIの元祖は伊達じゃないのです。

新神話2. Smalltalkは学習コストが高い

これ、本当によく言われます。まじで。
Smalltalkの言語仕様はとてもシンプルです。構文規則はハガキ1枚に収まります。言語仕様については、学習コストが高いというより、いわゆるC風の構文と大きく異なっていることが、学習コストが高そうだという印象を与えているのだと思います。でも、たかがハガキ1枚に乗る内容に慣れるのに大した時間はかかりません。
Smalltalkを学ぶ中で学習コストが高く感じられる要素は2つあります。1つはライブラリです。Smalltalkは言語仕様が小さくライブラリが大きな言語です。しかし、80年代には重厚長大と言われていたSmalltalk標準ライブラリも、今となってはかなりコンパクトな部類に入ると思います。例えば、boostを眺めただけでも、これでコードを書ける人がSmalltalkの標準ライブラリを把握することができないとは考えられません。
さらに、Smalltalk処理系にはクラスブラウザという、ライブラリの読み書きに特化した素晴らしいUIが備わっています。自分のコードを書く作業、ライブラリの機能を調べる作業、Smalltalkでこういう処理をどう書くか調べる作業、などをシームレスに接続する、とても快適なIDEを体験できます。
学習コストが高く見えるのは、単にC風構文に魂を縛られているだけだと思います。

新神話3. Smalltalkを学んでも仕事の役に立たない

これもSmalltalkに関してよく言われる話です。
まあ確かにSmalltalk名指しでの開発案件は多くないです。私もよくSmalltalkで受託開発しますが、だいたい私がSmalltalkをゴリ押しした結果として採用されます。世の中、仕事は作るものなのです。私がSmalltalkの仕事を作ったところで皆さんの仕事には関係ない話です。
ではSmalltalkは仕事の役に立たないのでしょうか?そうは思いません。プログラミングとは違いますが、政治家や実業家が「サイン・コサインなんて習っても仕事の役に立たない」と言い放つことがあります。定期的に出てくる話題で、伝統行事のようなものです。仕事でサイン・コサインを直接計算する人が過半数を占めるとは思いませんが、では、なぜ学校ではサインやコサインという概念を教えるのでしょう?これは、サインやコサインは現代社会で共有される教養なのだと思います。サインやコサインで得た概念的なボキャブラリーを持つことで、いろいろな着想を得たり、より複雑なものを理解したりするから、学校で教えるのだと思います。
もちろん、Smalltalkはサインやコサインほど有名ではありません。プログラミング言語の中でも、マイナーな部類だと思います。ただ、Smalltalkを使ったことがあるために何か着想が得られるかもしれません。他の言語を理解する上で良い材料になるかもしれません。Smalltalkだけでなく、例えばML系やHaskell系での関数プログラミングや、Prolog系での論理プログラミング、VDMやZでの仕様記述を経験すると、プログラミングの幅が広がると思います。
役に立たないから学ばない、という発想はつまらないと思います。

新神話4. Smalltalkは処理系が重い

この話は90年代までよく言われていました。今ではPharo IoTなんてものもある程度には軽量な処理系です。
本当に重いのは、そう信じている人の知識の更新処理のほうだと思います。

新神話5. Smalltalkコミュニティは年寄りばかりで初心者はいない

これは主に日本のSmalltalkコミュニティで自虐的に言われていることです。
一方で、私が欧州の技術イベントesugに参加すると、毎年若い新顔を見かけます。それもそのはず、例えばPharoという処理系を授業で使っている大学は、わかっているだけでも、沢山あるのです。比較的マイナーな言語なので、確かに入門者の人数自体はメジャー言語と比べて少ないでしょう。が、それだけの話です。
絶対数が少なくたっていいじゃない、マイナー言語だもの。

新神話6. 歴史的経緯を知らないとSmalltalkは難しい

確かにSmalltalkは歴史が長いので、歴史的経緯を語りだすとなかなか話が長くなります。が、歴史的経緯なんて今現在書いているコードには関係ありません。歴史的経緯が必要あるとすれば、どうしてProcessクラスがLinkクラスのサブクラスとして実装されているのか、ぐらいのウンチク話です。
コードを書く時には、コードを書きましょう。(壊れてきた

新神話7. Smalltalkはもう死んでいるヒデブアベシ

そう言われているうちが華です。まる。

Discussion