大学生などを対象にしたプログラミング教育の教科書などでは、疑似コードが用いられます。疑似コードとはなにかについてはこちらをご覧ください。いくつかスタイルがありますが、Pascal-likeなものが多く使われています。問題の分析とアイディアをコードの形にする際に使われます。これは日本語 (あるいはもちろん他の日常で使われる言葉) でも構わないのですが、「意味するところ」を明確にするために、疑似コードが用いられます。
疑似コードは、プログラムのなにもかもをそれで書くことは意図していないので、通常疑似コードと日常の言葉とを合わせて使います。明確にしたい箇所は疑似コードで、それほどでもないところは日常の言葉でという具合です。
疑似コードは教科書で使うためなどの理由もあり、そもそもそれ自体は動かなくて構わないのですが、実行系が存在する場合もあります。とくに、特定の言語を適切に制限した形の場合、元の言語の実行系で動かすことも可能である場合があります (日常の言葉を含まない場合)。
その例というわけではないのですが、プログラミング教育の初期にはScratchやそのコピーであるSmalrubyが使われます。いずれも普通のプログラミング言語でできることはおよそできるのですが、教育現場やプログラミング教室の現場においては、命令を表すブロックをどう組み合わせるかというパズルとしての活用が多いようです。文部科学省の指針においては、「プログラムを試行錯誤によって作る」という記載がありますが、例や実践例を見ると、それはまさしく「パズルとしてのプログラミング」を指しています (個人的にそうではない方法を取っている方もいます)。本プロジェクト、本企画および本企画の母体となる講習では、そのような立場を否定します。つまり:
- 問題を分析する
-分析からデータ構造とプログラムをデザインする
- コーディングする
- コードを検証する
となります。
ここにおいて、本プロジェクト、本企画および母体となる講習においては独自の疑似コードを用います。その簡単な説明についてはこちらをご覧ください。これはペラにまとめたもので、フル仕様ではありません。このペラの仕様では次のものを定義することはできません:
loop i in リスト :
中身
;
loop 条件あるいは値あるいは変数 :
中身
;
これはそちらの疑似コードがフル仕様ではないためです。フル仕様 (もちろんまだ設計中ですが) "loop" という命令が取る引数の違いにより、実行される部分が異なるという定義が可能です。
これは両方とも "loop" という命令を使っていますので、むしろわかりにくいかもしれません。その場合は次のようにすることも検討しています:
loop/for i in リスト :
中身
;
loop/while 条件あるいは値あるいは変数 :
中身
;
この場合であれば、オブジェクトのメソッドないしリファインメントの違いとして、公開しているペラの仕様でも定義可能になります。
また、これに加えて ――そのすべてではないとしても――、文芸的プログラミングの考えも導入したいと考えています。
本企画では、この疑似コードのフル仕様をより十分なものとし、同時にペラ版の仕様にも反映し、可能であれば形態はともかく実行系の実装も行ないたいと考えています。しかし、目的はあくまで分析結果にもとづくデザインの理解のしやすさである点は変えずにいきたいと考えています。