作者: Bruce.
日時: 2009/2/09(03:23)
Bruce.です。

MATSUI Fe2+ Tetsushi さんは書きました (2009/02/08 14:51):

> 遡れば、とこういう話は Bruce. さんの方が詳しそうですが、
> ":=" は Pascal よりも前の ALGOL 60 とかが先ではないですか。
> (そこにヴィルトがどう関わっているかは知りません)
> 
> アルゴリズム記述に ALGOL を使う伝統が(60年代頃?)あって、
> しかし不幸にもその後 ALGOL は廃れてしまったので
> 仕方なく使用人口がまだ多く見た目の似ている「Pascal 風」と称しているのだ、
> という流れを漠然と思い描いていました。
> # 根拠を聞かれると困るのですが…

おっしゃるとおりで、Pascalが := を代入に使っているのは Algol のそれを
受け継いだとみて間違いないと思います。ヴィルト先生とAlgolの関わりですが
少なくともAlgol-68の前後ではあったと思います(Algol-Wという処理系を
作っていたりもします)。

古くは日本でも情報処理技術者試験で使用されていた言語であった時期も
ありましたので、一部ではそれなりに使われていたようです。
#たしかAlgolの亜種とそのコンパイラを作るというのがそれなりに盛んだったはず

で、参考書にあるのは「疑似言語」ですし、AlgolとPascalの違いが〜
と考えるときりがありませんが、少なくとも時代が下った時期においては
Pascalベースということで問題ないのではないかと思います。それは、

・Pascalでは引数の受け渡しが call by value もしくは call by referenceですが
Algolは call by name が基本です。この違いが問題になるようなコード片が
参考書に載るのか? といわれるとあまり強気に出られませんが、まあ
call by name は他の言語ではほとんど見られないやり方であるということで。

・Algol には C でいう static 変数のような own 変数というものがありますが
Pascalにはありません。これもまああっても使わなきゃいいジャンという見方もありますね。

>>  そもそも考えてください。
>>
>>  =は慣例的に代入/定義に使用されてますけど、本来「等号」ですよね。
>>
>>  <や>が不等号として判断として利用されているのに、等号だけが==って、
>> こちらのほうが、プログラミングに慣れていない人には気持ち悪いかも。
> 
> それはほら、あれは LET A=0 の省略形だと…

少なくとも BASIC は LET がありますね。オリジナルのBASICではLETの省略は
できなかったと記憶しています。
んでまあ、なぜに代入に = が使われるようになったのか。というのは
良くわからんのですが。

弾さんが知ってていずれ書くかもというようなことをblogで書いてたような
気もするのですがよくわかりません。

-- 
木村浩一
  I thought what I'd do was, I'd pretend I was one of those deaf-mutes or should I?
  mail kbk [at] kt.rim.or.jp
        web  www.kt.rim.or.jp/~kbk/zakkicho/
             homepage3.nifty.com/farstar/