東方算程譚

Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。

目次

Blog 利用状況

ニュース

著作とお薦めの品々は

著作とお薦めの品々は
東方熱帯林へ。

あわせて読みたい

わんくま

  1. 東京勉強会#2
    C++/CLI カクテル・レシピ
  2. 東京勉強会#3
    template vs. generics
  3. 大阪勉強会#6
    C++むかしばなし
  4. 東京勉強会#7
    C++むかしばなし
  5. 東京勉強会#8
    STL/CLRによるGeneric Programming
  6. TechEd 2007 @YOKOHAMA
    C++・C++/CLI・C# 適材適所
  7. 東京勉強会#14
    Making of BOF
  8. 東京勉強会#15
    状態遷移
  9. 名古屋勉強会#2
    WinUnit - お気楽お手軽UnitTest

CodeZine

  1. Cで実現する「ぷちオブジェクト指向」
  2. CUnitによるテスト駆動開発
  3. SQLiteで組み込みDB体験(2007年版)
  4. C++/CLIによるCライブラリの.NET化
  5. C# 1.1からC# 3.0まで~言語仕様の進化
  6. BoostでC++0xのライブラリ「TR1」を先取りしよう (1)
  7. BoostでC++0xのライブラリ「TR1」を先取りしよう (2)
  8. BoostでC++0xのライブラリ「TR1」を先取りしよう (3)
  9. BoostでC++0xのライブラリ「TR1」を先取りしよう (4)
  10. BoostでC++0xのライブラリ「TR1」を先取りしよう (5)
  11. C/C++に対応した、もうひとつのUnitTestFramework ─ WinUnit
  12. SQLiteで"おこづかいちょう"
  13. STL/CLRツアーガイド
  14. マージ・ソート : 巨大データのソート法
  15. ヒープソートのアルゴリズム
  16. C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
  17. .NETでマンデルブロ集合を描く
  18. .NETでマンデルブロ集合を描く(後日談)
  19. C++/CLI : とある文字列の相互変換(コンバージョン)
  20. インテルTBBによる選択ソートの高速化
  21. インテルTBB3.0 によるパイプライン処理
  22. Visual C++ 2010に追加されたSTLアルゴリズム
  23. Visual C++ 2010に追加されたSTLコンテナ「forward_list」
  24. shared_ptrによるObserverパターンの実装
  25. .NETでマンデルブロ集合を描く(番外編) ── OpenCLで超並列コンピューティング
  26. StateパターンでCSVを読む
  27. 状態遷移表からStateパターンを自動生成する
  28. 「ソートも、サーチも、あるんだよ」~標準C++ライブラリにみるアルゴリズムの面白さ
  29. インテルTBBの同期メカニズム
  30. なぜsetを使っちゃいけないの?
  31. WPFアプリケーションで腕試し ~C++でもWPFアプリを
  32. C++11 : スレッド・ライブラリひとめぐり
  33. Google製のC++ Unit Test Framework「Google Test」を使ってみる
  34. メールでデータベースを更新するココロミ
  35. Visitorパターンで遊んでみたよ
  36. Collection 2題:「WPFにバインドできる辞書」と「重複を許す検索set」
  37. Visual C++ 2012:stateless-lambdaとSQLiteのぷち拡張
  38. 「Visual C++ Compiler November 2012 CTP」で追加された6つの新機能

@IT

  1. Vista時代のVisual C++の流儀(前編)Vista到来。既存C/C++資産の.NET化を始めよう!
  2. Vista時代のVisual C++の流儀(中編)MFCから.NETへの実践的移行計画
  3. Vista時代のVisual C++の流儀(後編) STL/CLRによるDocument/Viewアーキテクチャ
  4. C++開発者のための単体テスト入門 第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?
  5. C++開発者のための単体テスト入門 第2回 C++アプリケーションの効率的なテスト手法(CppUnit編)
  6. C++開発者のための単体テスト入門 第3回 C++アプリケーションの効率的なテスト手法(NUnit編)

AWARDS


Microsoft MVP
for Visual Developer - Visual C++


Wankuma MVP
for いぢわる C++


Nyantora MVP
for こくまろ中国茶

Xbox

Links

記事カテゴリ

書庫

日記カテゴリ

20年ぶりに書いたModula-2

ネタ元 → 始めはどの言語がいいですか?と聞かれたら…

今となってはいささか旧いけども、その埃っぽさをさっぴけば僕なら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より新しいんだよね。
"究極の手続き型言語"と呼ばれておりました。
ビギナはこーゆー堅ぁい言語でみっちり鍛えてもらいたいすねー
「そんなん流行んねーよ!」ってぶーたれるのは百も承知で。

投稿日時 : 2007年11月19日 23:59

コメントを追加

# re: 20年ぶりに書いたModula-2 2007/11/20 0:09 中博俊

>使う関数は必ずIMPORTすべし
すばらしひ

# re: 20年ぶりに書いたModula-2 2007/11/20 0:18 επιστημη

あ、ウケた♪
ここんとこ、もひとつの記法がありまして。

FROM Calc IMPORT Add, Sub; を
IMPORT Calc; とすると、

z := Add(x, y); が
z := Calc.Add(x,y); となります。

これ使うとMODULE名が名前空間みたくなるですね。

# re: 20年ぶりに書いたModula-2 2007/11/20 2:53 やまだ

Calc 以外にも Add があったりすると、どっちの IMPORT を先に書くかで優先が決まったりするんですかねぇ?
#それともそういうことはそもそもできない?

「訊く前にやってみればよいじゃん」って言われるとごもっともなので、
> FreeのModula-2
これ、どこにあるんでしょうか?
#単に遊んでみたいだけだったりします……。

# re: 20年ぶりに書いたModula-2 2007/11/20 6:30 επιστημη

つ【http://www.excelsior-usa.com/xdsx86.html

# re: 20年ぶりに書いたModula-2 2007/11/20 9:15 とりこびと

コメントが(* *)ってのが♪

# re: 20年ぶりに書いたModula-2 2007/11/20 9:22 επιστημη

(*∀*) (*Д*) ←イイ!

# re: 20年ぶりに書いたModula-2 2007/11/20 12:55 よねけん

> FROM Calc IMPORT Add, Sub; を
> IMPORT Calc; とすると、
>
> z := Add(x, y); が
> z := Calc.Add(x,y); となります。

Pythonとおんなじじゃん!と思ったら、
Pythonが参考にしている言語の一つにModula-3がありますね。

# re: 20年ぶりに書いたModula-2 2007/11/20 13:24 れい

ModulaのコードをHTTPで見たのは生まれて初めてだ…

IronModulaとかModula-#ができるのかと思った。

# re: 20年ぶりに書いたModula-2 2007/11/21 11:52 とっちゃん

む。ネタ元にTB飛んでないな。飛ばしてしまえ!w
http://blogs.wankuma.com/aqua/archive/2007/11/19/109167.aspx

おいらは、Modula は名前しか知らないなぁ...
ソース見たのも初めてかもw

感想。
パスカル?そっくりだ!
:= はここからきてたのかぁ...w


# re: 20年ぶりに書いたModula-2 2007/11/21 13:39 επιστημη

PASCALソクーリでしょうとも。
生みの親はどっちもWirthセンセーですから。

# re: 20年ぶりに書いたModula-2 2008/09/15 15:19 ひろこ

もじゅら2と3のひかくのにほんごのぺーじはどこかにありませんか?

びるとせんせいはげんごをつくりっぱなしでほったらかしでこまったものです

# re: 20年ぶりに書いたModula-2 2010/02/26 19:25 キツネ

最近Modula-2はまた人気になったそうです。あたらしコンパイラーがいくつ出ってきた。例えば:

*GNU Modula-2 http://www.nongnu.org/gm2
*Modula2JCC http://code.google.com/p/modula2jcc
*Objective Modula-2 http://objective.modula2.net

コンパイラーのリストはこちら:
http://www.modula2.net/resources/compilers.shtml

# re: 20年ぶりに書いたModula-2 2010/11/02 10:53 F.O

20年以上前8BitのOS9でさわったことがあります。
マルチタスクがコンハイラだけで書けるのは画期的でした。
といってもOS9がすでにマルチタスクなのであまり使いませんでしたが。

# re: 20年ぶりに書いたModula-2 2012/03/03 18:56 MMSaito

引用仕様と本体に分かれることを除くととてもFortran90
に似ている。MODULA-2を真似して拡張したのだろうか。

# re: 20年ぶりに書いたModula-2 2012/03/03 18:56 MMSaito

引用仕様と本体に分かれることを除くととてもFortran90
に似ている。MODULA-2を真似して拡張したのだろうか。

# re: 20年ぶりに書いたModula-2 2012/03/03 18:56 MMSaito

引用仕様と本体に分かれることを除くととてもFortran90
に似ている。MODULA-2を真似して拡張したのだろうか。

# re: 20年ぶりに書いたModula-2 2012/03/03 18:56 MMSaito

引用仕様と本体に分かれることを除くととてもFortran90
に似ている。MODULA-2を真似して拡張したのだろうか。

# re: 20年ぶりに書いたModula-2 2012/03/03 18:56 MMSaito

引用仕様と本体に分かれることを除くととてもFortran90
に似ている。MODULA-2を真似して拡張したのだろうか。

タイトル
名前
URL
コメント