From 72ff0926ef71933463c41b96ca4c1968ce9a064b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E6=B5=A6=20=E7=9F=A5=E4=B9=9F=20Matsuura=20Tomoy?= =?UTF-8?q?a?= Date: Mon, 3 Nov 2025 12:42:27 -0500 Subject: [PATCH] [obsidian] vault backup: 2025-11-03 12:42:27[ --- ...†ã‚£ãƒ–プログラミングã®ã«ã‚ˆã‚‹ä¿¡å·å‡¦ç†ã®ãƒ©ã‚¤ãƒ–コーディング.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/content/多段階計算ã¨å¢—分関数型リアクティブプログラミングã®ã«ã‚ˆã‚‹ä¿¡å·å‡¦ç†ã®ãƒ©ã‚¤ãƒ–コーディング.md b/content/多段階計算ã¨å¢—分関数型リアクティブプログラミングã®ã«ã‚ˆã‚‹ä¿¡å·å‡¦ç†ã®ãƒ©ã‚¤ãƒ–コーディング.md index ca1f0ace..aeee6c87 100644 --- a/content/多段階計算ã¨å¢—分関数型リアクティブプログラミングã®ã«ã‚ˆã‚‹ä¿¡å·å‡¦ç†ã®ãƒ©ã‚¤ãƒ–コーディング.md +++ b/content/多段階計算ã¨å¢—分関数型リアクティブプログラミングã®ã«ã‚ˆã‚‹ä¿¡å·å‡¦ç†ã®ãƒ©ã‚¤ãƒ–コーディング.md @@ -44,13 +44,25 @@ Faust[@Orlarey2009]ã‚„Maxã®Genã€ã®ã‚ˆã†ã«ã€ã‚µãƒ³ãƒ—ルå˜ä½ãƒ¬ãƒ™ãƒ«ã§ mimiumã¯ã€Rustã«è¿‘ã„シンタックスをæŒã£ãŸé–¢æ•°åž‹ã®éŸ³æ¥½ä¿¡å·å‡¦ç†ã‚’ターゲットã«ã—ãŸãƒ—ログラミング言語ã§ã‚ã‚‹[@matsuura2021]。ç¾åœ¨ã®å†…部実行モデルã¨ã—ã¦ã€å€¤å‘¼ã³å˜ç´”型付ãラムダ計算を拡張ã—ã€æœ€å°é™ã®å†…部状態をæŒã¤ãƒ—リミティブæ“作:ディレイã¨ãƒ•ィードãƒãƒƒã‚¯ã‚’加ãˆãŸLambda-mmm[@matsuura_lambda-mmm_2024]ã¨ã„ã†è¨ˆç®—体系をæŒã£ã¦ã„る。 -mimiumã¯ã‚³ãƒ¼ãƒ‰ã‚’専用 +mimiumã¯ã‚³ãƒ¼ãƒ‰ã‚’専用ã®VMãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰ã¸ã‚³ãƒ³ãƒ‘イルã—実行ã™ã‚‹ã€‚実行モデルã¯ã€ä¸€èˆ¬çš„ãªãƒ¬ã‚¸ã‚¹ã‚¿ãƒžã‚·ãƒ³ã®å‘½ä»¤ã‚»ãƒƒãƒˆã«ã€å†…部状態æ“ä½œç”¨ã®æ“作ãŒåŠ ã‚ã£ãŸã‚‚ã®ã¨ãªã‚‹ã€‚ディレイやフィードãƒãƒƒã‚¯ã§ç”¨ã„られる内部状態ã¯ã€çŠ¶æ…‹ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã¨ã„ã†1次元ã®é…列領域ã¨å˜ä¸€ã®èª­ã¿å‡ºã—ä½ç½®ãƒã‚¤ãƒ³ã‚¿ã‚’組ã¿åˆã‚ã›ãŸãƒ‡ãƒ¼ã‚¿é ˜åŸŸã«ä¿å­˜ã•れる。 +コンパイラã¯ã€çŠ¶æ…‹ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã®èª­ã¿å‡ºã—ä½ç½®ãƒã‚¤ãƒ³ã‚¿ã‚’相対的ã«å‰å¾Œã•ã›ã‚‹å‘½ä»¤ã‚’é©åˆ‡ã«å‡ºåŠ›ã™ã‚‹ã“ã¨ã§ã€VM実行時ã«ã¯ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã®ä¸€éƒ¨åˆ†ã‚’ディレイ用ã®ãƒªãƒ³ã‚°ãƒãƒƒãƒ•ã‚¡ã¨ã—ã¦è§£é‡ˆã—ãƒ‡ãƒ¼ã‚¿ã‚’èª­ã¿æ›¸ãã™ã‚‹ã€‚ -内部状態ã¯Delayã‹Memã€Feedã®ã„ãšã‚Œã‹ã«é‚„å…ƒã•れる。 -Memã¯1サンプルã®ã¿ã®ãƒ‡ã‚£ãƒ¬ã‚¤ã§ã‚ã‚‹ãŸã‚ã€æœ€çµ‚çš„ãªè¨ˆç®—çµæžœã¨ã—ã¦Delayã«ä¸Žãˆã‚‹é…延時間を1ã¨ã—ãŸã‚‚ã®ã¨åŒä¸€ã«è¦‹åšã›ã‚‹ãŒã€å®Ÿè¡Œãƒ¢ãƒ‡ãƒ«çš„ã«1サンプルã®ã¿ã®ãƒ‡ã‚£ãƒ¬ã‚¤ã¯ãƒªãƒ³ã‚°ãƒãƒƒãƒ•ã‚¡ã®èª­ã¿æ›¸ãインデックスã®è¿½è·¡ãŒå¿…è¦ãªã„ãŸã‚ã€åŒºåˆ¥ã—ã¦ãŠãæ–¹ãŒåŠ¹çŽ‡çš„ã«å®Ÿè¡Œã§ãる。 +mimiumã§ã¯é«˜éšŽé–¢æ•°ãªã©ã‚’使ã†ã“ã¨ã«ã‚ˆã£ã¦ä»»æ„ã®æ•°ã®ãƒ•ィルタãƒãƒ³ã‚¯ã®ã‚ˆã†ãªã€ãƒ‘ラメトリックãªãƒ—ロセッサを生æˆã™ã‚‹ã“ã¨ã‚‚ã§ãã‚‹ãŒã€ã“ã†ã—ãŸãƒ—ロセッサã¯çŠ¶æ…‹ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã¨ãƒ¡ãƒ¢ãƒªã‚µã‚¤ã‚ºã‚’決定ã§ããªã„。ãã®ãŸã‚ã€ã‚°ãƒ­ãƒ¼ãƒãƒ«ãªé–¢æ•°ã®å‘¼ã³å‡ºã—ã¨ã‚¯ãƒ­ãƒ¼ã‚¸ãƒ£ï¼ˆå®Ÿè¡Œæ™‚ã«é«˜éšŽé–¢æ•°ã‹ã‚‰ç”Ÿæˆã•れる関数)ã®å‘¼ã³å‡ºã—ã¯åŒºåˆ¥ã•れã€ã‚¯ãƒ­ãƒ¼ã‚¸ãƒ£ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«å€‹åˆ¥ã®çŠ¶æ…‹ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚’ç”Ÿæˆã—ã€ã‚¯ãƒ­ãƒ¼ã‚¸ãƒ£å‘¼ã³å‡ºã—時ã«ä½¿ç”¨ã™ã‚‹çŠ¶æ…‹ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ãã®ã‚‚ã®ã‚’切り替ãˆã‚‹ã“ã¨ã§å¯¾å¿œã—ã¦ã„る。 +ä»Šå›žææ¡ˆã™ã‚‹ãƒ©ã‚¤ãƒ–コーディング機能ã¯ã€2ã¤ã®æ©Ÿèƒ½ã«ã‚ˆã£ã¦å®Ÿç¾ã•れる。 +1ã¤ã¯ã€çŠ¶æ…‹ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’コンパイル時ã«å¯èƒ½ãªé™ã‚Šç¢ºå®šã•ã›ã‚‹ãŸã‚ã«ã€å¤šæ®µéšŽè¨ˆç®—ã¨ã„ã†åž‹å®‰å…¨ãªãƒžã‚¯ãƒ­ã®ä½“系を言語ã«å°Žå…¥ã™ã‚‹ã“ã¨ã§ã‚る。 + +ã‚‚ã†1ã¤ã¯ã€ç”Ÿæˆã•れãŸãƒ—ログラムåŒå£«ã®çŠ¶æ…‹ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’比較ã™ã‚‹ã“ã¨ã§ã€å¯èƒ½ãªé™ã‚Šå‰ã®å†…部状態を引ãç¶™ã„ã æ–°ã—ã„状態ストレージを計算ã™ã‚‹è§£æžãƒ—ログラムã®å°Žå…¥ã§ã‚る。 + +ã“ã®2機能を組ã¿åˆã‚ã›ã‚‹ã“ã¨ã§ã€mimiumã¯å˜ç´”ã«ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’毎回最åˆã‹ã‚‰ã‚³ãƒ³ãƒ‘イルã—ã€å‰ã®ãƒ—ログラムã¨ã®æ¯”較を行ã„ã€æ–°ã—ã„内部状態ストレージをå«ã‚€VMを生æˆã—インスタンスを入れ替ãˆã‚‹ã‚‹ã“ã¨ã§ã€ã‚¨ãƒ‡ã‚£ã‚¿ã¨ã®é€£æºãªã—ã«ãƒ©ã‚¤ãƒ–コーディング機能を実ç¾ã™ã‚‹ã€‚ + +## 多段階計算 + +多段階計算ã¯ã€åž‹ä»˜ãラムダ計算ã«å¯¾ã—ã¦ã€è¨ˆç®—ã®ã‚¹ãƒ†ãƒ¼ã‚¸ã‚’複数段階ã«åˆ†å‰²ã™ã‚‹æ˜Žç¤ºçš„ãªã‚·ãƒ³ã‚¿ãƒƒã‚¯ã‚¹ã‚’å°Žå…¥ã™ã‚‹ã‚‚ã®ã§ã‚る。Lisp系言語ã®quote/splice機能[@lisp]ã®ã‚ˆã†ã«ã€éƒ¨åˆ†çš„ã«è¨ˆç®—ã—ãŸã‚³ãƒ¼ãƒ‰ç‰‡ã‚’埋ã‚込むよã†ãªã‚‚ã®ã‚’想定ã—ã¦ã„ã‚‹ãŒã€ä¸æ­£ãªå€¤ãŒåŸ‹ã‚è¾¼ã¾ã‚Œãªã„ã“ã¨ã‚’型システムã¨ã—ã¦ä¿è¨¼ã™ã‚‹ã“ã¨ãŒç‰¹å¾´ã§ã‚る。 + +実用的ãªä¾‹ã§ã¯ã€Scala 3ã§ã®ãƒžã‚¯ãƒ­ã‚„ã€é–¢æ•°åž‹çµ„版処ç†ã‚¨ãƒ³ã‚¸ãƒ³SaTysFi[@suwa2024]ã®ã‚ˆã†ã«ã€è¨€èªžå†…DSLを型安全ã«ãƒ©ã‚¤ãƒ–ラリã¨ã—ã¦å®Ÿè£…ã™ã‚‹ã“ã¨ã‚’想定ã—ã¦ã„ã‚‹ã‚‚ã®ãŒã‚る。 ## コールツリーã®è§£æž