ネタ元 → 始めはどの言語がいいですか?と聞かれたら…
今となってはいささか旧いけども、その埃っぽさをさっぴけば僕ならModula-2を薦めます。
FreeのModula-2を見つけたのでものごっつ久しぶりに書いてみた。
----- Calc.def -----Cで言うところのヘッダに相当-----
DEFINITION MODULE Calc;
PROCEDURE Add(x : INTEGER; y : INTEGER) : INTEGER;
PROCEDURE Sub(x : INTEGER; y : INTEGER) : INTEGER;
END Calc.
----- Calc.mod -----Calcの実装-----
(* 予約語はすべて大文字 *)
IMPLEMENTATION MODULE Calc;
PROCEDURE Add(x : INTEGER; y : INTEGER) : INTEGER;
BEGIN
RETURN x + y;
END Add;
PROCEDURE Sub(x : INTEGER; y : INTEGER) : INTEGER;
BEGIN
RETURN x - y;
END Sub;
BEGIN
(* MODULE Calc の初期化はここに書く *)
END Calc.
----- Hello.mod -----Cで言うところのmainに相当-----
(* 久しぶりに書いたModula-2 *)
MODULE Hello;
(* 使う関数は必ずIMPORTすべし *)
FROM InOut IMPORT WriteString, WriteInt, WriteLn;
FROM Calc IMPORT Add, Sub;
(* 使う変数は必ず宣言すべし *)
VAR x, y, z, t : INTEGER;
BEGIN
(* 代入は := *)
x := 1;
y := 2;
z := Add(x, y);
WriteInt(z, 5);
WriteLn();
IF x < y THEN
t := x;
x := y;
y := t;
END;
z := Sub(x, y);
WriteInt(z, 5);
WriteLn();
END Hello.
...どぉよこの堅さ。PASCAL以上に厳格です。
わずかなミスも許しません。
[追記]
埃っぽいつったって70年代後期の言語だからCより新しいんだよね。
"究極の手続き型言語"と呼ばれておりました。
ビギナはこーゆー堅ぁい言語でみっちり鍛えてもらいたいすねー
「そんなん流行んねーよ!」ってぶーたれるのは百も承知で。