2010年9月 8日(水) 17:19 JST

HOME > i am BEST > C と RPG でプログラムの構造が似ているわけ - モジュール化について -

C と RPG でプログラムの構造が似ているわけ - モジュール化について -

  • 2010年6月20日(日) 02:05 JST
  • 投稿者:
    hidehi

今まで、「RPG は C の標準関数もカンタンに使えるハイブリッド言語!?」、「C より RPG の方が関数の使い方がわかりやすい!?」、「ILE RPG と C は似ている!?」といった RPG についての一連の記事で、C との類似性、RPG のシンプルさ、「関数」の有用性についてお話ししてきました。

ポイントは三つ、

  • RPG を学ぶのは簡単だ、ということ、
  • その結果 C を読み書きするための基礎スキルにもなる、
  • モジュール化の考え方が身につく、

になります。

逆に言えば、C をちゃんとわかっている人であれば RPG なんてとっても簡単なはずなので、
RPG プログラマーが少ない、といってもそれほど心配することはないのでは?! と言う気もしますね。

プログラムの構造も、構文もとてもよく似ていることには理由があります。
これは、RPG が C を真似した、というわけではなく必然的に似てしまっている、ということなんですね。



たとえば、
RPG/400 では結果のフィールドで新規の変数を定義できたりしてしたので、
(言い方は悪いのですが)場当たり的にフィールドを定義できてしまう結果にもなり、
「このフィールドは何?」「どこで定義されているの?」「何のため?」などと探し回ることがあったりしました。
(これはプログラミング言語の黎明期にはそういった"決まり"がなかっただけで RPG/400 が悪いわけではありません。ちなみに)


いまやモダンなプログラミング言語では処理の記述の前には変数の宣言をまとめて行うのが普通になっています。C しかり、Java しかり。
登場人物をすべて最初に把握しておくことができるわけです。
プログラムの中でよく把握されていない部分がバグを生みやすい、ということから、クリアに把握するための仕様ですね。
登場する変数のリストが最初にまとめてあれば、処理を読むのにもラクですし、実は書く方でも初期化忘れや直し忘れが起きにくい、というわけなんです。

C では使う関数の宣言(= プロトタイプ宣言)も、やはり処理の記述の前にまとめて宣言するようになっています。
特別な処理については、これもあらかじめ把握しておくことができるわけです。

戯曲の脚本は、最初に登場人物と舞台装置のあらましをまとめて書いてあるものですが、同じ発想なんでしょうね。

C でも RPG でも、
「変数」というものは、変数名とそのデータ型からなり、
「関数」が、関数名とその引数のデータ型と数、戻り値のデータ型からなっています。

どういうレイアウトにするにせよ、↑ のすべては記述する必要があります。

さらに「変数」も「関数(プロトタイプ)」も処理に先立って記述してある必要があります。

となると、プログラムの全体の構成は

  1. プログラム全体に影響する設定
    (C であれば #include などのプリプロセッサなど
     RPG の場合は H 仕様書に書くもの)
  2. プロトタイプ宣言
  3. 変数の宣言
  4. 処理の記述
  5. プロトタイプで宣言した関数の処理の記述

といった流れが標準的なものになってきますね。

これも発想としては、プログラムの中のいろんな機能を"機能単位(= モジュール)"にわけてまとめておく、ということだと思います。
結局これも前回の"モジュール化"につらなるお話になりますね。

"モジュール化"の考えにそってプログラムの仕様をまとめると、そんなに違ったものにはならないわけです。
C と RPG がモダンな手続き型プログラミング言語として洗練されてきた結果、似たような構造を持つに至ったということなんですね。

ちなみに、その"モジュール化"の考えを、さらに進めたものが"オブジェクト指向"なんですね。
C や RPG を通じて、段階を追って理解していけば、より本質がわかるようになると思います。
"オブジェクト指向"、ひいては SOA や REST を使いこなすための本当の基礎になるでしょう。

もひとつ、ちなみに。

RPG/400 では結果のフィールドで新規の変数を定義できたりしてしまっていましたが、ILE RPG IV ではきちんとまとめて最初に宣言する必要があるようになっています。
これはここまで述べてきたような、いわゆる「ソフトウェア工学」の知見を取り入れた結果なので、"不便になった"わけではありませんのでよろしくどうぞ!!

トラックバック

このエントリのトラックバックURL:
http://www.iforum.ne.jp/trackback.php/20100602020501154
  • C と RPG でプログラムの構造が似ているわけ - モジュール化について -
  • 0件のコメント
  • アカウント登録
表示形式
コメント投稿

コメントは投稿者の責任においてなされるものであり,サイト管理者は責任を負いません。

iForumサポーター

      iFourmの趣旨にご賛同いただき、ご支援いただける企業または個人を募集しています。詳しくは、info@iforum.ne.jp へお願いします。