知者不言 |
||
(1) pi (2) > (3) 電卓 (4) 文関数 (5) VB (6) parameter |
(7) abs(x-y) < 1.0e-5 (8) 0 (9) コメント (10) go to (11) 日本人向け (12) if |
(13) A4 landscape (14) 英語 (15) frame (16) Lisp (17) Get (18) Beep |
(1) pi Fortran, Basic には pi を返す標準組込関数がない. 多分, それに代わる 関数があるので敢えて組み込まなかったのであろう. pi = 2.0 * acos(0.0) ! or = 4.0 * atan(1.0), in Fortran pi = 4# * atn(1#) '* in Basic それとも, 東洋の島国の愚民の将来を思ってくれたのであろうか. pi = 3 となれば, クヌース先生はどうするのであろうか. integer, public, parameter :: pi = 3 |
||
(2) > ここ数年来, 比較演算子 > を使わないように心がけている. if (MaxTemperature < DesignTemperature) then ! if (DesignTemperature > MaxTemperature) then if (.not. DesignTemperature < MaxTemperature) then ! if (.not. MaxTemperature > DesignTemperature) then 慣れるとコードを読まなくてすむように思える. 比較演算子は < か > の どちらか一方だけあれば困らない. また, 等値比較では定数を先に置くようにしている. if (10 == EntryNo) then ! if (EntryNo == 10) then |
||
(3) 電卓 そう遠くない昔, "パイは 3.141592654 とする." の一文を計算書に明記し なければならないことがあった. それを提出する公の機関からのお達しとの ことだった. "どこのメーカーの型番何の電卓で計算しろ" とのお達しはな いのですかと聞き返したが, 回答はあるはずもない. Public Const Pi As Double = 3.141592654 '* in ? 電卓の計算結果とプログラムの計算結果が微妙に違うぞ. ピタゴラスさん 7 桁の電卓を作って下さい. 必ず 1 個は買います. |
||
(4) 文関数 Fortran といえば 90/95, Basic といえば VB を指すようだ. それに伴い 文関数なるものも使わなくなった. N88 Basic が Basic であった頃, またこ の頃構造化プログラミングが声高に叫ばれたように思う. その頃次のコード を見た. DEF FN MAX(X,Y) = -1 * X * (X > Y) -1 * Y * (X < Y) 昔の人はよく考えたものだ (顔文字省略). |
||
(5) VB VB (Visual Basic) に足を向けて寝たいが現実が許してくれない. どこか に書いてあるのだろうが度々実験してしまう. Fortran と同じだと覚えてい ても実験してしまう. (a) For ループを抜ける時のカウンタ変数は何だっけ --- 常人の考える値 (b) if 文でショート サーキットしたっけ --- しない (c) 多次元配列は列優先だっけ --- 列優先 ランゲージ リファレンスのなんとぶあついこと. |
||
(6) parameter Fortran 77 では parameter は副プログラム単位に有効範囲が限られていた. 教科書の小プログラムで見ることがあっても, ほかで見たことは殆どない. Fotran 90 でモジュールが導入され, parameter 文は実用の意味を持つよう になった. "Programmar's Guide to F" [1] という Fortran 95 のサブ セット言語の 教科書がある. 邦書では見かけない類の本である. parameter の重要性につ いてジョークで以下の様に説明している. プログラム parameter_example で number_of_states = 50 と parameter 宣言した例を示し, For example, if Puerto Rico becomes the 51st state, the program parameter_example can be corrected easily. やっぱりなと思うのは考え過ぎか. USA, MS の底流が垣間見える. --- on May/07/2003 |
||
(7) abs(x-y) < 1.0e-5 "Programmar's Guide to F" で出色なのは, 7 頁, 1.2.5 比較演算子の項に abs(x - y) < 1.0e-5 を示していることだ. いうまでもなく, if (x == y) then はだめだよ, if (abs(x - y) < 1.0e-5) then にしなさいといっている のである. 実数を日々扱うものには常識ではあるが, こんなに早い段階で説明した本に 出会ったことはない. そもそも例を示した本が日本にあっただろうか. |
||
(8) 0 ブランク (' ') は 0 と考えてしまう. Fortran ではファイルを読む時に デフォルトで blank='zero' となるため, ブランク値は 0 と解釈してくれる. これに慣れているためかもしれない. これが常人の感覚だと思う. それとも, 文字列を整数に転換する関数 atoi があるとして, charge = atoi('') ! 料金はただ, (但し, Fortran 90 以降) charge = atoi(' ') ! 料金は任意又は規定料金 が正常な考えであろうか. VB のように空白, ヌル文字は数字でないと考 えればよいのだろうけれど. |
||
(9) コメント "一にコメント, 二にもコメント" の対に "無意味なコメントはつけるな." がある. 識別子の長さの制限が実用上ない現在, 変数のコメントは必要か. integer :: i ! index real :: DesignTemperature ! self-explaining, deg. C real :: ID ! of cylinder, mm 学校の教科書も安易な方に流れているときく. 新プログラミング__法を待 とう. |
||
(10) go to 構造化の流れの中で, 古語にも構造化 go to 文が加わった. "go to less" プログラミングは死語となったのであろうか. "go to LABLE less" にはなっ た. 具の無いイカスミ スパゲッティ プログラムが書けるようになった. If error Then Exit Sub '* structured go to ?, "return" in Fortran/C '* GoTo exit_sub, non-conditional go to End If exit_sub: '* LABEL 言葉の言い換えやすり替えの好きな, 構造改革を叫んでいる民の国はどこへ go to するのだろうか. LABLE があるべきではないか. |
||
(11) 日本人向け Fortran では空白は区切り子 (Delimiter) でないはずだ. 次の様に書き たい. --- が大抵の場合コンパイラに叱られる. 誰だ Ratfor 化したのは. e = 2.7182818284 5904523536 0287471352 6624977572 Fortran には予約語がない. DoWhile(Do<2000.0) ! Rear Do is outside diameter 日本人にぴったりの言語じゃないか. |
||
(12) if if 文ではありそうな条件から引っかけていくべきか, それともなさそうな 条件から引っかけていくべきか. if Today = Weekday then begin {Recomended by major books probably} DoWork() end else begin TakeDayOff() end; if Today = Sunday then begin DoWork() {I am a hard worker} end else begin DoWork() end 捻くれものは "読み難さは, 注意を喚起する." とでも弁解するのであろう. |
||
(13) A4 landscape VB のプログラマはプリンタの用紙設定を A4 横置きにしているのだろうか. IDE のエディタは色々とお節介をやいてくれる. ついでに 1 行 80 文字辺り で自動的に継続行として欲しい. プログラマは物理的視野が広くないと勤ま らないのだろうか. さらに, "*" と "/" の前後に空白を入れないオプションを追加して欲しい. 米国では通常の文書でも空白を入れるのだろうか. y = a*x^2 + b*x + c '* y = a * x ^ 2 + b * x + c |
||
(14) 英語 プログラムを英語読みする必要はない. if (10 < entry) then または do while (10 < entry) を読むとき, 多分 プログラマは "10 < entry" しか読んでいないと思う. if は mosi でも ? でも他と区別できる記号で良かったはずだ. このような記号は 1006 もない. |
||
(15) frame 今でも小学校では作文, 習字の時間に枠の中に文字を収めるように指導して いるのだろうか. 原稿用紙, 役所への届け出用紙, 全て枠だらけだ. 枠だら けの文書になれているので, "えくせる" が好まれるのかもしれない. "わーど", "びじお" の代わりに "えくせる" を使い, "えくせる" を使えな いと日本人にあらずの時代がくるのかもしれない. いまだに, 句読点も同じ一ますの美意識だけは受け入れ難い. |
||
(16) Lisp 時をあけず Fortran 77, 95, V.B, Pascal, Lisp でコーディングする日が ある. 夜遅くともなるとコンパイラに悪態を吐く. Lisp と揶揄されようが 腱鞘炎を恐れず括弧を使おう. 負の定数は必ず; y = ((-1.0) ** i) * ... 論理式は; if (0 <> i) and (0 == j) then begin {Scolded} Wirth さん, 配列の添え字はやはり [] です. ところで, 冗長な括弧は何 重まで許されるのだろうか. |
||
(17) Get "Get, Get" と喚く人気者がいるそうだ. 次は "Set, Set" と叫ぶのだろか それとも "Temp, Temp" で end. プログラマは常に "Get, Get" と呟いている. プロシージャの名前の先頭 は動詞とすべきだが, Get ばかりだとうんざりしてくる. プレフィックスだ. Get して Set して Check して Do して Put しているだけだからいかんと もしがたいのかもしれない. |
||
(18) Beep 久しぶりに "Beep" をコードに埋め込んだ. コンパイラにビー, ビー言わ れるが嫌だそうで, スピーカの音量を 0 にする若者と一緒に仕事をしたこと がある. コードには "Beep" とあるのに不思議に思い聞いて判った. コン パイラ オプションを見ると予想通り, これも文句の言いようがなかった. 口うるさいオヤジが煙たがられるように, うるさい箱も嫌われるのかも知れ ない. "MsgBoxWithVoice" がない理由の一つかもしれない. |
||
(C) Copyright 2003, N.T., All Right Reserved. |