プログラミングナイト042回目ジャクソン方を学ぶ(2021-12-14)

1
ほえほえ@スプシマン @hoehoe1234

引き出しを増やすために、ジャクソン法に基づいて、いろいろな実装方法を検討します。 pic.twitter.com/zKxpbn8Gal

2021-12-14 23:16:04
拡大
ほえほえ@スプシマン @hoehoe1234

「この場合はこうすればよい」というのも良いですが、アルゴリズムなどは問題の本質を考えると腑に落ちることがよくあります。連結リストでいえば「削除」は、前後のノードのポインタを如何につなげるか?が中心的なアイデアになります。 pic.twitter.com/asLt7sKqTf

2021-12-14 23:17:33
拡大
ほえほえ@スプシマン @hoehoe1234

これを、単方向リストの場合はこう、双方向リストの場合はこう、などと覚えるのは効率がよくありません。リストの削除とは「前後のノードを如何につなぎかえるか?」を理解していれば後は自然とロジックが読めます。これが「意図」です。

2021-12-14 23:18:52
ほえほえ@スプシマン @hoehoe1234

白本のB木とRDBの関係性は?についての質問がありましたので簡単に説明しました。 pic.twitter.com/GNduOBBDvK

2021-12-14 23:19:48
拡大
ほえほえ@スプシマン @hoehoe1234

ジャクソン法は ①入力データ構造は正規表現である ②出力データ構造も正規表現である ときに、プログラムも対応関係を整理することで正規表現で表せるということになります。 以下、手順です。 pic.twitter.com/KzvnS6o1YG

2021-12-14 23:21:25
拡大
ほえほえ@スプシマン @hoehoe1234

プログラム構造を導出します。この場合はより複雑な出力構造に合わせています。いわゆる「帳票系」のプログラム構造になっています。 pic.twitter.com/sXNvZvGC4r

2021-12-14 23:22:31
拡大
ほえほえ@スプシマン @hoehoe1234

モジュールの構成が正規表現であらせたので、各関数(図では箱)にどのような処理を当てはめればよいのか?を検討します。正規表現はDFA(状態遷移図/表)と同等の表現力があります。 pic.twitter.com/R3R3uIAjN5

2021-12-14 23:24:06
拡大
ほえほえ@スプシマン @hoehoe1234

現代の感覚からいうとちょっと冗長ですね。順序不一致の解消には中間フィアルを使いますが、まさにRDBがここに相当しますね。RDBを中間に置くことにより入力系と出力系を分離し、かつ、出力系は宣言的にデータを取得することが可能となります。 pic.twitter.com/x8ZhJQcX8X

2021-12-14 23:26:27
拡大
ほえほえ@スプシマン @hoehoe1234

ジャクソン法、3つの不一致のうちの一つ、順序不一致です。プログラミングナイトでは火曜日は実装メインに、金曜日は書籍による理論メインに講義を行っています。ご興味のある方はぜひご参加ください。 pic.twitter.com/k7tNqbGM3p

2021-12-14 23:27:53
拡大