作者: davi
日時: 2009/2/10(22:55)
機械伯爵さん 機械言語考古学者の皆さん <  こん??は でび です

# ATOK2009で書くお初の文章です。

On Tue, 10 Feb 2009 21:12:49 +0900 (JST)
kikwai@... (機械伯爵) wrote:

> > >  そういえば、誰も触れてませんが、Pascalは定数や型の宣言は『=』を
> > > 使ってますね。

[TSabc:612] で挙げた例の2個目には

|      if key[middle] > x then high:= middle -1;
|      if key[middle] = x then middleが求める位置(終了);
|      if key[middle] < x then low:= middle +1;

とあります。
今、見直しましたが、確かに==でなく全角の=で書かれています。

これってば、定数宣言ではなくて比較の文脈で同等か否かを
検定しているんですよね?
つまり、今時の言語で普通に書くと「==」として使われている。

すると、例文はPascalっぽいけど、PascalやAlgolですらない。

[TSabc:619] で、まつもとさんがお書きの

>BASICでは等号も代入も「=」ですよね。

という扱い、なのかなぁ? 単なるtypoなのかもしれませんが…。

ちなみに岩波講座 言語の科学9 『言語情報処理』
http://www.iwanami.co.jp/.BOOKS/00/2/006901+.html ← 表紙あります。
(長尾真,黒橋禎夫,佐藤理史,池原悟,中野洋 2004/12)の
pp.24-25にあるクイックソートのアルゴリズムは、以下の
ように書かれていました。

−−−−−−−−−−−−−−−−−−−−−−−−−
begin
    quicksort(1,n);
end

procedure quicksort(first,last);
begin
 x := data[(first+last)/2];
 i := first;
 j := last;
repeat
  while data[i] < x do i := i+1;
  while x < data[j] do j := j-1;
  if i ≧ j then goto 1;
  swap(i,j);
  i := i+1; j :=j-1;
  until false;
  1;
  if first < i-1 then quicksort(first,i-1);
  if j+1 < last then quicksort(j+1,last);
end
−−−−−−−−−−−−−−−−−−−−−−−−−

最初の宣言で関数っぽくしているのが、高級言語っぽさを
出していますが、beginで書き始めるのがBASICっぽいです。

で、procedureとかrepeatとかswapとかの謎(?)の
コマンド名(予約語?)が…。

「〜以上」は、「>=」とか「=>」とかではなく「≧」と
全角で書かれていました。

あと、個人的には until false;の直後の 1; が意味不明です。
何かのフラグ立てとして使っているんですか?

でもでも、こういう、どこかに代入されるようには見えない
ものを、いきなり1と宣言するってことは、この例文には、
何らかの暗黙のルールがあり、それが事前に説明されていない、
ってことになりますよね?

# 確かに、「対象読者:こどもから大人まで」って書いてないけどさ…。

その下の2行文のif文も、その上にある2行文のwhile文で
吸収できそうな無駄な記述っぽい雰囲気が漂っているように
感じます。

でも、「論文向け、疑似言語書法の仕様書」などというのは
存在しないだろうし…。

共著者間でのコンセンサスは、「ほぼ、pascal + basic風な
感じで書こうよ」って辺りだったんですかねぇ?

でび  http://davi.txt-nifty.com/1984/