エクセル指向プログラミング(Excel Oriented Programming、EOP)は、ノンプログラマにとって最も直感的で習得が容易なプログラミングスタイルです。
ブログラマは難解な言語機能を覚えることなく、拡張が容易なソフトウェアを、簡単に開発することができます。
プログラムのすべてのデータは長さ可変の二次元配列の上で管理されます。この二次元配列を「シート」といい、配列の各要素を「セル」と言います。
シートはシングルトンオブジェクトです。すなわち、EOPでは単一のグローバル変数を上書きすることでプログラムの状態を更新します。
構造化データはすべて配列で表します。データ型などのスキーマはありません。どの行・どの列がなんのデータを表すのかは、その場その場で変更することができます。
行方向または列方向に連続するセルが一つのデータ構造を表します。したがって、構造化データの読み取りは
while(cell) {
// do something
cell = sheet[r][c++];
}
のように書けます。使い終わった領域は0またはnullで初期化しておきます。
ネストされた構造化データは、セルへの参照をセルに書き込みます。たとえば、多重配列を表現する場合は、ネストされた配列の先頭要素の座標をセルに書き込みます。
EOPでは、プログラマは好きなときに好きなデータ構造を使用することができます。既存のプログラミングスタイルのように、データ型やメソッドのシグネチャに、データ構造が制限されることがありません。
探検
エクセル指向プログラミング
2024/03/26(火) 17:12:59.08ID:e/0sucGI
2024/03/26(火) 17:38:31.01ID:e/0sucGI
例として、nameとage属性をもったデータ構造を読み取るプログラムを書いてみましょう。
r = 0;
name = 0;
age = 1;
while(cell) {
print("name: " + sheet[r][name] + ", age: " + sheet[r][age]);
cell = sheet[r++][name];
}
このように、EOPでは構造体やクラスのような難解な機能を使わずとも、配列とループだけでデータ構造を操作することができます。
特筆すべきことは、EOPではデータ構造は使用時に自由に変更できます。もし、上のデータ構造に新たな属性sexが必要であれば、単に追加すればよいのです。
MALE = 1;
FEMALE = 2;
sex = 2;
sheet[0][sex] = MALE;
sheet[1][sex] = FEMALE;
r = 0;
name = 0;
age = 1;
while(cell) {
print("name: " + sheet[r][name] + ", age: " + sheet[r][age]);
cell = sheet[r++][name];
}
このように、EOPでは構造体やクラスのような難解な機能を使わずとも、配列とループだけでデータ構造を操作することができます。
特筆すべきことは、EOPではデータ構造は使用時に自由に変更できます。もし、上のデータ構造に新たな属性sexが必要であれば、単に追加すればよいのです。
MALE = 1;
FEMALE = 2;
sex = 2;
sheet[0][sex] = MALE;
sheet[1][sex] = FEMALE;
レスを投稿する
ニュース
- サウナ夫婦死亡 非常ボタンの通報装置の電源入っておらず オーナー「今まで電源入れたことない」 [夜のけいちゃん★]
- サウナ夫婦死亡 非常ボタンの通報装置の電源入っておらず オーナー「今まで電源入れたことない」★2 [夜のけいちゃん★]
- 日中関係改善は「下手をすると10年かかる」 トランプを全面信頼できない高市官邸の苦悩★5 [ぐれ★]
- 【野球】WBC、録画放送含め地上波中継なし (ネットフリックス) ★3 [阿弥陀ヶ峰★]
- ファミマ「遊べるコンビニ」へ ゲーム機を5000店舗に設置方針 IP強化 [七波羅探題★]
- 【東京】赤坂サウナ火事2人死亡 サウナ室のドアノブ外れ閉じ込められた可能性 ★11 [nita★]
- 高市首相、自身の発言を反省する [805596214]
- 【悲報】愛子「おあ゛っぁ!」鴨を握りつぶす [329329848]
- 倉田真由美「国会見てると高市政権を倒すための質問ばかり。もっと国のための質問をしてください」 [834922174]
- 『無職転生II 』ルーデウスが制作した「フィッツ人形」がフィギュア化キタ━━━━━(゚∀゚)━━━━!! サングラスを外した状態も再現可能 [303493227]
- お前ら俺に力をくれ
- 🏡要る?
