Top / Alan ã¸ã®èª˜(ã„ã–ãª)ã„

Introduction to
Alan v0.31

Alan ã¸ã®èª˜(ã„ã–ãª)ã„

Last updated: 2008-01-07
Created: 2004-12-11


by Fumisky Wells
ãµãŸã‚Šã¯æ‰‹ã‚’ã¨ã‚Šã‚ã£ã¦ã€
ã“ãˆã‚’ãã‚ãˆã¦ã„ã„ã¾ã—ãŸã€‚
「ãƒãƒ«ã‚¹ï¼ã€
ãã®ã¨ãŸã‚“ã€æœ¨ã®ã­ã«
ã¤ã¤ã¾ã‚ŒãŸã€ã‚ã®å¤§ããª
飛行石ãŒã´ã‹ã‚Šã¨å…‰ã‚Šã€
ãŸã¡ã¾ã¡é»’ãã‹ã‚ã£ã¦ã„ã£ãŸã®ã§ã™ã€‚
....
ラピュタã¯ã€ä¸­ã—ã‚“ã‹ã‚‰
ãŒã‚‰ãŒã‚‰ã¨ã“ã‚ã‚Œã¦ã„ãã¾ã™ã€‚

--天空ã®åŸŽãƒ©ãƒ”ュタ より

CONTENTS

  1. Alan ã£ã¦ä½•ï¼Ÿ
  2. ã¯ã˜ã‚ã®ä¸€æ­©
  3. 例
    1. 例1 "Hello, World"
    2. 例2 シンプル㪠grep
    3. 例3 関数呼ã³å‡ºã—
    4. ãã®ä»–ã®ã‚µãƒ³ãƒ—ル
  4. ラピュタã®å‘ªæ–‡
  5. ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆã€ã”質å•ã€ã”æ案ãªã©
  6. 用語
  7. 補足

Alan ã£ã¦ä½•ï¼Ÿ

Alan ã¯ã€ãƒ—ログラム言語ã§ã™ã€‚ ã‚ãŸãã—ã“㨠Fumisky Wells ãŒè¶£å‘³ã§ä½œã£ã¦ã„ã‚‹ã‚‚ã®ã§ã™ã€‚
  1. Alan ã§ä½•ãŒã§ãã‚‹ã‹
  2. 概è¦

Alan ã§ä½•ãŒã§ãã‚‹ã‹

(v0.31) class ã§ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒ»ãƒ‡ã‚£ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒ»ãƒ¡ãƒ³ãƒé–¢æ•°ãŒä½¿ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚ãŸã ã—ã€ãƒ¡ãƒ³ãƒé–¢æ•°å†…ã§åž‹ãƒ‘ラメータã¯ã¾ã ä½¿ãˆã¾ã›ã‚“。ã¾ãŸã€ã‚ªãƒ–ジェクト指å‘ã¯ã¾ã ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。
(v0.30) class (ã¨ã¯è¨€ã£ã¦ã‚‚ã¾ã æ§‹é€ ä½“レベル)ã§ç·ç§°åž‹ãŒä½¿ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸ(例: class Complex[T] ... end)。ãŸã ã—ã€ãƒ¡ãƒ³ãƒé–¢æ•°å†…ã§åž‹ãƒ‘ラメータã¯ã¾ã ä½¿ãˆã¾ã›ã‚“。
(v0.29) class (ã¨ã¯è¨€ã£ã¦ã‚‚ã¾ã æ§‹é€ ä½“レベル)を組ã¿è¾¼ã¿ç·ç§°åž‹(array, list, map)ã®ä¸­ã§ä½¿ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚
(v0.28) class (ã¨ã¯è¨€ã£ã¦ã‚‚ã¾ã æ§‹é€ ä½“レベル)ãŒè¨˜è¿°ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚
(v0.15) WikiMini ãŒè¨˜è¿°ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚
(v0.10) DNS ã§åå‰æ¤œç´¢ã‚’ã—ãŸã‚Š(Netパッケージ)ã€çµæžœã‚’キャッシュã—ãŸã‚Šã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚
(v0.09) Webサーãƒã®ãƒ­ã‚°è§£æžãらã„ã¯ä½•ã¨ã‹ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚
(v0.08) å¤ä¸–代㮠BASIC 程度ã®ã“ã¨ãŒã‚„ã£ã¨ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸ(^^;)。

骨組ã¿(例外処ç†ã€åå‰ç©ºé–“ã€ãªã©)ã®ä½œæˆã‚’優先ã—ãŸã®ã§ã€ æä¾›ã•ã‚Œã¦ã„る関数やデータ型ã¯ã¾ã åŒ…括的ã§ã‚‚直交的ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。

何ãŒã§ããªã„ã‹ã€ã¯ 制約事項 ã‚’ã”å‚照下ã•ã„。



ã¾ã åˆ¶ç´„ã ã‚‰ã‘ã§ã™ãŒã€æ©Ÿèƒ½æ‹¡å¼µã¯ã“ã‚Œã‹ã‚‰å¾ã€…ã«è¡Œã£ã¦ã„ã予定ã§ã™ã€‚

概è¦

概è¦ã¯ä»¥ä¸‹ã®ã‚ˆã†ãªã‚‚ã®ã§ã™ã€‚

勉強

今ã¯ä»•äº‹&趣味㧠C++ 㨠Perl を使用ã—ã¦ã„ã¾ã™ãŒã€ 段々ã¨ä¸æº€ãŒãŸã¾ã£ã¦ãã¾ã—ãŸ(笑)。 「ã“ã‚“ãªè¨€èªžã£ã¦ãªã„ã‹ãªã€ã¨æ€ã£ã¦æŽ¢ã—ã¦ã¿ã¾ã—ãŸãŒã€ ãªã‹ãªã‹è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 ãã‚“ãªä¸­ã€å‹‰å¼·ã‚’å…¼ã­ã¦ä½œã£ã¦ã¿ã‚‹ã®ã‚‚1ã¤ã®æ–¹æ³•ã¨æ€ã„〠実行ã«ç§»ã—ã¦è¦‹ã‚‹ã“ã¨ã«ã—ã¾ã—ãŸã€‚ ã¾ã‚ã€éŽåŽ»ä½•åº¦ã‹é “挫ã—ã¦ã„ã‚‹ã®ã§ã€ä»Šå›žã‚‚ã©ã“ã¾ã§ã§ãã‚‹ã‹ã¯ï¼Ÿã§ã™ãŒã€‚ å°†æ¥çš„ã«ã¯ C++ & Perl (ã®ã†ã¡ã€ä»•äº‹&趣味ã§ä½¿ç”¨ã™ã‚‹ç¯„囲ã®ã‚µãƒ–セット) ã‚’ Alan ã«ç½®ãæ›ãˆã‚‰ã‚Œã‚‹ã¨ã„ã„ã‹ãªã€ ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚

(2006/05) 仕事㧠Ruby を使ã„始ã‚ã¾ã—ãŸã€‚ Ruby を最åˆã«çŸ¥ã£ã¦ã„れ㰠Perl を使ã‚ãªã‹ã£ãŸã‹ã‚‚ã—ã‚Œã¾ã›ã‚“(^^;)。 言語ã¨ã—ã¦ã¯ Ruby ã®æ–¹ãŒ Perl より好ãã§ã™ã€‚
ライブラリã¨ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã«é–¢ã—ã¦ã¯ perl ã«ã‚ã¨ä¸€æ­©åŠã°ãªã„よã†ã§ã‚‚ã‚ã‚Šã¾ã™ã€‚

(2007/08) ...ãªã©ã¨æ˜¨å¹´æ›¸ã„ã¦ã—ã¾ã„ã¾ã—ãŸãŒã€Rails を使ã£ã¦è€ƒãˆãŒ 変ã‚ã‚Šã¾ã—ãŸã€‚Rails 本(AWDwR) 㨠Rails API サイトã§ã€ã‚„ã‚ŠãŸã„ã“ã¨ãŒ 大体出æ¥ã¦ã—ã¾ã„ã¾ã™ã€‚é©šãï¼

åå‰ã®ç”±æ¥

åå‰ "Alan" ã¯ã€å˜ã« "A language", "Another language" ãらã„ã®æ„味ã§ã™ã€‚

今インタプリタã€ç›®æ¨™ã‚³ãƒ³ãƒ‘イラ

Alan ã¯ã€Œä»Šã®ã¨ã“ã‚ã€ã‚¤ãƒ³ã‚¿ãƒ—リタã§ã™ã€‚ 「今ã®ã¨ã“ã‚ã€ã¨ã„ã†ã®ã¯ã€æœ¬æ¥ã‚³ãƒ³ãƒ‘イラを作ã£ã¦ã¿ãŸã‹ã£ãŸã®ã§ã™ãŒã€ ãƒã‚¤ãƒŠãƒªã®ç”Ÿæˆãªã©é›£ã—ãã†ãªã®ã§ã€ã¨ã‚Šã‚ãˆãšã‚¤ãƒ³ã‚¿ãƒ—リタã«ã—ãŸã€ã¨ã„ㆠ安直ãªç†ç”±ã‹ã‚‰ã§ã™ã€‚

é™çš„型言語

C++(åž‹ã‚ã‚Š)ã¨Perl(åž‹ãªã—)ã®ä¸¡æ–¹ã‚’経験ã—ã¾ã—ãŸãŒã€å€‹äººçš„ã«ã¯åž‹ãŒ ã‚ã£ãŸæ–¹ãŒã‚ˆã„ã¨æ€ã£ã¦ã„ã¾ã™ã€‚ãªã®ã§ã€Alan ã‚‚åž‹ã‚り言語ã¨ã—ã¾ã™ (ã¨ã„ã†ã‹ã€å‹•çš„型言語や型ãªã—言語を使ã†ãªã‚‰ Ruby ã‚„ Perl ãŒæ—¢ã«ã‚ã‚‹ã§ã¯ãªã„ã‹)。 åž‹ã«é–¢ã™ã‚‹ç§è¦‹ã‚’ 「Technical Documentã€ã® 「設計方é‡ã€ã®ç« ã® 「型ã«ã¤ã„ã¦ã€ã®ç¯€ ã«æ›¸ã„ã¦ã„ã¾ã™ã€‚

例外処ç†

例外処ç†ã®åœ¨ã‚‹ç„¡ã—ã¯ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«å¤§ãã影響ã™ã‚‹ã®ã¨ã€ 気軽ã«ä¾‹å¤–処ç†ã‚’使用ã§ãる言語ãŒæ¬²ã—ã‹ã£ãŸã€ã¨ã„ã†ç†ç”±ã‹ã‚‰ã€ 例外処ç†ã¯æ—©ã„ã†ã¡ã‹ã‚‰ã‚µãƒãƒ¼ãƒˆã—ãŸã„ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚ ç¾æ™‚点ã§ã¯ã¾ã åˆ¶ç´„ãŒå¤šã„ã§ã™ãŒã€éª¨çµ„ã¿éƒ¨åˆ†ã¯å®Ÿè£…ã§ãã¾ã—ãŸã€‚

ã¯ã˜ã‚ã®ä¸€æ­©

Alan ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒã¾ã ã®å ´åˆã¯ ãã¡ã‚‰ã‚’å…ˆã«è¡Œã£ã¦ãã ã•ã„。

ã“ã“ã‹ã‚‰ã¯ã€ç°¡å˜ãªå…¥é–€ç·¨ã¨ã—㦠Alan ã®éŠã³æ–¹ã«ã¤ã„ã¦è¿°ã¹ã¾ã™ã€‚

  1. Alan スクリプトを入力ã—ã¦ã¿ã¾ã—ょã†
    $ alan
    put("Hi")
    Ctrl-D
    
    ãªãŠã€ä¸Šã® Ctrl-D ã¯ã€Unixç³»ã§ã® 入力ã®çµ‚りを示㙠Control-D ã§ã™ã€‚
    ã“ã®ä¾‹ã¯ "Hi" ã¨å°å­—ã™ã‚‹ Alan スクリプトã§ã™ã€‚

  2. çµæžœã¯ã“ã®ã‚ˆã†ã«ãªã‚Šã¾ã™:
    $ alan
    put("Hi")
    Hi
    $
    
    "Hi" ã¨è¡¨ç¤ºã•ã‚ŒãŸã§ã—ょã†ã‹ï¼ŸãªãŠã€æœ€å¾Œã® $ ã¯ãƒ—ロンプトã§ã™ã€‚

  3. alan ãŒå®Ÿè¡Œã§ãã‚‹ã“ã¨ã‚’確èªã§ããŸã‚‰ã€æ¬¡ã«ã€é©å½“ãªã‚¨ãƒ‡ã‚£ã‚¿ (vi, emacs, ãªã©)ã§ä¸‹ã®ã‚ˆã†ãª alan プログラムを書ãã€é©å½“㪠ファイルåã§ä¿å­˜ã—ã¾ã™ã€‚ã“ã“ã§ã¯ tst.al ã¨ã—ã¾ã™:
    put("Hello, World!\n")
    
    次ã„ã§ã€
    $ alan tst.al
    
    ã¨ã—ã¦ã€ç”»é¢ã«
    $ alan tst.al
    Hello, World!
    $
    
    ã¨è¡¨ç¤ºã•ã‚ŒãŸã‚‰ã€æˆåŠŸã§ã™ï¼ 1行ã®ç°¡å˜ãª alan プログラムã§ã™ãŒã€æ­£ã—ã実行ã•ã‚Œ 終了ã—ã¾ã—ãŸã€‚
    ã‚ã¨ã¯æ¬¡ç«  "例" 以é™ã‚’ã”覧ã«ãªã£ã¦ã¿ã¦ä¸‹ã•ã„。

  4. エラーã¨ãªã£ãŸå ´åˆã€‚
    ã‚‚ã—
    $ alan tst.al
    cannot open tst.al
    
    ã¨ã§ã‚‚出ãŸã‚‰ã€ãƒ•ã‚¡ã‚¤ãƒ«åã®æŒ‡å®šãƒŸã‚¹ã§ã™ã€‚ ファイル(ã“ã“ã®ä¾‹ã§ã¯ tst.al)ãŒå­˜åœ¨ã™ã‚‹ã‹ã€ ファイルåã®ã‚¿ã‚¤ãƒ—ミスã‹ã€ç¢ºèªã—ã¦ã¿ã¦ãã ã•ã„。
    ã‚‚ã—
    $ alan tst.al
    error: syntax error
      0001 put("Hello, World!\n"
                                ^
    
    ã¨ãªã£ãŸå ´åˆã€æ–‡æ³•ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚最åˆã® 0001 ã¯ãƒ•ã‚¡ã‚¤ãƒ« tst.al 中ã®è¡Œç•ªå·ã‚’表ã—ã¦ã„ã¾ã™ã€‚ã¾ãŸã€ä¸ŠçŸ¢å°(åˆã¯ãƒãƒƒãƒˆ(^))ã§ç¤ºã—㟠個所ãŒã‚¨ãƒ©ãƒ¼ã®ç™ºç”Ÿã—ãŸå ´æ‰€ã‚’指ã—ã¦ã„ã¾ã™ã€‚ 上ã®ä¾‹ã§ã¯ã€æœ€å¾Œã®é–‰ã˜æ‹¬å¼§ã§ syntax error(文法エラー) ã¨ãªã£ã¦ã„ã¾ã™ã­ã€‚詳ã—ãã¯æ¬¡ç« ä»¥é™ã§èª¬æ˜Žã—ã¾ã™ãŒã€ã“ã®å ´åˆã¯ é–‰ã˜æ‹¬å¼§ãŒæŠœã‘ã¦ã„ã¾ã™ã€‚
    エラーã¯æ§˜ã€…ãªã‚‚ã®ãŒç™ºç”Ÿã—ã†ã‚‹ã®ã§å…¨ã¦ã®ã‚±ãƒ¼ã‚¹ã‚’ã“ã“㧠示ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“ãŒã€ä»–ã«ç™ºç”Ÿã—ã†ã‚‹å…¸åž‹çš„ãªã‚±ãƒ¼ã‚¹ã‚’ ã‚ã¨ï¼’ã¤è¼‰ã›ã¾ã™:
    $ alan tst.al
    error: undefined ID(pt)
      0001 pt("Hello, World!\n")
           ^
    
    ↑ã“ã‚Œã¯ã€ã€Œptãªã‚“ã¦è­˜åˆ¥å­(ID; Identifier)ã¯ãªã„よã€ã¨è¨€ã£ã¦ã„ã¾ã™ã€‚ å°å­—関数 put ã®ã‚¹ãƒšãƒ«ãƒŸã‚¹ã§ã™ã­ã€‚
    $ alan tst.al
    error: string literal is ending without closing by double-quotation(")
      0001 put("Hello, World!\n);
               ^
    
    ↑ã“ã‚Œã¯ã€ã€Œæ–‡å­—列ãŒè¡Œã®çµ‚ã‚Šã§é–‰ã˜ã¦ãªã„ã§ã™ã‚ˆã€ 今ã®ã¨ã“ã‚ケアレスミスを防ã目的ã§ã€è¤‡æ•°è¡Œã«æ¸¡ã‚‹æ–‡å­—列㯠許ã—ã¦ã„ã¾ã›ã‚“(ã“ã‚Œã§ã¯ã¾ã£ãŸè¨˜æ†¶ãŒã‚ã‚‹)。

例

  1. 例1 "Hello, World"
  2. 例2 シンプル㪠grep
  3. 例3 関数呼ã³å‡ºã—
  4. ãã®ä»–ã®ã‚µãƒ³ãƒ—ル

例1 å°å­—

ãŠãã¾ã‚Šã§ã™ãŒã€Hello,World! ã‚’å°å­—ã™ã‚‹ãƒ—ログラムã¯ï¼š
put("Hello, World!\n")
ã§ã™ã€‚ãŸã£ãŸä¸€è¡Œã§ã™ãŒã€ä¸‹è¨˜ã®ã‚ˆã†ãª Alan ã®ä»•æ§˜ãŒåˆ†ã‹ã‚‹ã‹ã¨æ€ã„ã¾ã™:
  1. å°å­—㯠print ã§ã¯ãªã printf ã§ã‚‚ãªã cout ã§ã‚‚ãªã put ã¨ã—ã¾ã—ãŸ(*1)。
  2. putã¨ã„ã†æ‰‹ç¶šãã« Hello,World 文字列をパラメータã¨ã—ã¦æ¸¡ã—ã¦ã„ã‚‹ã®ã§ã™ãŒã€ パラメータã«ã¯æ‹¬å¼§ãŒå¿…è¦ã¨ã„ã†ã“㨠(ãŸã ã—ã€ãƒ‘ラメータãŒãªã„å ´åˆã¯æ‹¬å¼§ãŒçœç•¥ã§ãã¾ã™) (*2)。
  3. 文字列㯠double-quote ã§å›²ã„ã¾ã™ã€‚
  4. 改行ã¯æ–‡å­—列中㮠\n ã§è¡Œã„ã¾ã™ï¼ˆC/Perlç³»ã§ã™ã­ï¼‰ã€‚
  5. æ–‡ã®æœ€å¾Œã«ã‚»ãƒŸã‚³ãƒ­ãƒ³ã¯ã‚ã‚Šã¾ã›ã‚“。 v0.14 ã¾ã§ã¯ C/C++ ã¨åŒæ§˜ã‚»ãƒŸã‚³ãƒ­ãƒ³ã§çµ‚端ã—ã¦ã„ã¾ã—ãŸãŒã€ v0.15 ã§æ–‡ã¨å¼ã®åŒºåˆ¥ã‚’ãªãã—ãŸçµæžœã€ã‚»ãƒŸã‚³ãƒ­ãƒ³ã ã¨éƒ½åˆãŒæ‚ªã„ã“ã¨ã« 気付ãã€ã‚»ãƒŸã‚³ãƒ­ãƒ³ã‚’廃止ã—ã¦ã¿ã¾ã—ãŸã€‚ 言語仕様ã®ãƒ‡ã‚¶ã‚¤ãƒ³ã®é¡›æœ«ã¯ リリースノート ã‚’ã”覧下ã•ã„。

例2 シンプル㪠grep

Alan Ver0.09以é™ã§ãƒ•ã‚¡ã‚¤ãƒ«åž‹(file)ã¨æ­£å‰‡è¡¨ç¾åž‹(rex)ã‚’å‚™ãˆã¦ã„ã¾ã™ (言語仕様/データ型 å‚照)。 grep ã¨åŒç­‰ã®æ©Ÿèƒ½ã® Alan スクリプトã¯ä¸‹è¨˜ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ï¼š
for str:s in stdins do
   if s in /[Hh]ello/ then
      put(s)
   end
end
ã“ã®ã‚¹ã‚¯ãƒªãƒ—トã¯ã€stdins(Perl ã® <> ã«ç›¸å½“)ã‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’読ã¿ã€ 文字列 hello åˆã¯ Hello ã«ãƒžãƒƒãƒã™ã‚‹è¡Œã‚’å°å­—ã—ã¾ã™ã€‚ å„行を解説ã—ã¾ã™ï¼š

例3 関数呼ã³å‡ºã—

1ã‹ã‚‰nã¾ã§ã®å€¤ã‚’足ã™ã€Œç­‰å·®ç´šæ•°ã®å’Œã€ã‚’処ç†ã™ã‚‹é–¢æ•°ã®ä¾‹ã§ã™ã€‚ å…¬å¼ã‚’使用ã™ã‚Œã°ä¸€ç™ºã§ç­”ãˆã¯ã§ã¾ã™ãŒã€ã“ã“ã§ã¯å†å¸°å‘¼ã³å‡ºã—㧠実装ã—ã¦ã„ã¾ã™ã€‚
# 'sum' function

int:sum(int:n)
   if n==1 then
      1
   else
      n + sum(n-1)
   end
end

# Main
put(sum(10))
  1. 関数定義ã®æ–‡æ³•ã¯
    戻り型 : 関数å(引数宣言) ... end
    ã§ã™ (*4)。
  2. 関数ã®æˆ»å€¤ã¯é–¢æ•°ã®æœ€å¾Œã®å¼ã®å€¤ã§ã™ã€‚
    returnã§é€”中ã‹ã‚‰é–¢æ•°ã‚’抜ã‘ã‚‹å ´åˆã€return ã®ç›´å‰ã®å¼ãŒ 関数ã®æˆ»å€¤ã¨ãªã‚Šã¾ã™ (C/C++ 等㮠return å¼; ã¨ã„ã†è¨˜è¿°ã¯ã§ãã¾ã›ã‚“ã®ã§ã”注æ„下ã•ã„ (*5) )。

ãã®ä»–ã®ã‚µãƒ³ãƒ—ル

ãã®ä»–ã€ãƒ†ã‚¹ãƒˆçš„ã«ä½œæˆã—ãŸã‚µãƒ³ãƒ—ル㌠sample/ ã«ã‚ã‚Šã¾ã™ã®ã§ã€ã”å‚考ã¾ã§ã«ã€‚

以下ã¯ã€ä¸€ä¾‹ã§ã™:

ラピュタã®å‘ªæ–‡

天空ã®åŸŽãƒ©ãƒ”ュタã¯ä»Šã§ã‚‚ç§ã®å¥½ããªæ˜ ç”»ã®1ã¤ã§ã™ã€‚

映画ã®æœ€å¾Œã®æ–¹ã§ã€ã‚·ãƒ¼ã‚¿ã¯ç¥–国ラピュタをæ¨ã¦ãƒ‘ズーã¨å…±ã« 大地ã«é™ã‚Šã¦ç”Ÿãã¦è¡Œãã“ã¨ã‚’é¸ã‚“ã ã®ã§ã—ãŸã€‚ ãã®ã¨ãã€ã‚·ãƒ¼ã‚¿ãŒè¬Žã®å‘ªæ–‡ã‚’å”±ãˆã¦ãƒ©ãƒ”ュタを崩壊ã•ã›ãŸã‚·ãƒ¼ãƒ³ã¯å°è±¡çš„ã§ã™ã€‚

「ãƒãƒ«ã‚¹ï¼ã€

ã“ã®å‘ªæ–‡ãã®ã‚‚ã®ã«ãƒ©ãƒ”ュタを崩壊ã•ã›ã‚‹åŠ›ãŒã‚ã£ãŸã®ã§ã—ょã†ã‹ï¼Ÿ

多分ã€ãã†ã§ã¯ãªã„ã§ã—ょã†ã€‚呪文をスイッãƒã¨ã—ã¦ã€ ã‚らã‹ã˜ã‚ラピュタã«ä»•çµ„ã‚“ã§ã‚ã£ãŸè‡ªå·±å´©å£Šã®ãŸã‚ã®æ©Ÿæ§‹ãŒä½œå‹•ã—ãŸã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚

ã²ã¨ã¤ã®è¨€è‘‰ã‚’ãã£ã‹ã‘ã«ã€ã‚らã‹ã˜ã‚仕組んã§ã‚ã£ãŸæ©Ÿæ§‹ãŒåƒã出ã™...。 ãã†ã€ã“ã‚Œã¯ã¾ã•ã—ãプログラミングã®ä¸–ç•Œã§ã™ã€‚

「ãƒãƒ«ã‚¹ã€ã«ç›¸å½“ã™ã‚‹ã‚‚ã®ã‚’ Unix/Linux ã§è¨€ãˆã°ã€"sudo rm -r /" ã§ã—ょã†ã‹ã€‚「スゥドゥー アールエム マイナスアール スラッシュ〠...怪ã—ã„呪文ã§ã™ã­ã€‚良ã„å­ã®çš†ã•ã‚“ã¯æ±ºã—ã¦çœŸä¼¼ã—ãªã„ã§ãã ã•ã„(^^;)。

プログラミングをレゴã«ä¾‹ãˆã‚‹ã¨ã€ç„¡é™ã®ãƒ–ロックã®ã‚ˆã†ãªã‚‚ã®ã§ã™ã€‚ ブロックãŒè¶³ã‚Šãªããªã£ã¦ã¤ã¾ã‚‰ãªã„æ€ã„ã‚’ã™ã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。 レールや電池・モータã¾ã§ã¤ã„ã¦ãã¾ã™^^。 部屋ã„ã£ã±ã„ã®åŸŽã‚„町やロボットや車ãªã©ã€å¥½ããªã‚ˆã†ã«æ§‹ç¯‰ã§ãã¾ã™ã€‚ ãã—ã¦ã€ãã“ã«å¥½ããªå‘ªæ–‡ã‚’与ãˆã‚‹ã“ã¨ã§ã€å¥½ããªã‚ˆã†ã«å‹•ã‹ã™ã“ã¨ãŒã§ãã‚‹ã®ã§ã™ã€‚

Alan ã‚‚ãã†ã‚„ã£ã¦ä½œã£ã¦ã¿ãŸã€å‘ªæ–‡ã‚’å”±ãˆã‚‹ãŸã‚ã®å‘ªæ–‡ã€ã®ã‚ˆã†ãªã‚‚ã®ã§ã™ã€‚

用語

Alan ã§ã¯åŸºæœ¬çš„ã« C/C++ ã®ç”¨èªžã‚’使用ã—ã¾ã™ã€‚
フリー関数
クラスã«å±žã•ãªã„関数。C言語㮠sin(3), printf(3)ãªã©ã€‚
→メンãƒé–¢æ•°
メンãƒé–¢æ•°
クラスã«å±žã™ã‚‹é–¢æ•°ã€‚他言語ã§è¨€ã†ãƒ¡ã‚½ãƒƒãƒ‰ãƒ»feature。
→フリー関数

補足

「ユーザズ・ドキュメントã€ã¨ã„ã†è¦³ç‚¹ã‹ã‚‰ã¯æœ¬è³ªçš„ãªå†…容ã§ã¯ã‚ã‚Šã¾ã›ã‚“ãŒã€ Wells ã®ä¸»è¦³ãªã©ã‚’ã“ã“ã§ã‚³ãƒ¡ãƒ³ãƒˆã•ã›ã¦ã„ãŸã ãã¾ã™ã€‚

(*1) å°å­— = putæ–‡

ã¾ã‚ã€åå‰ã®é•ã„ã¯æœ¬è³ªçš„ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 マイナー言語 Turing ã®å½±éŸ¿ã‚’å—ã‘ãŸã¨ã“ã‚ã§ã¯ã‚ã‚Šã¾ã™ã€‚

(*2) 変数定義文法ã¨æ‰‹ç¶šã呼出ã—

Fortran/C/Algol68 ç³»ã®å¤‰æ•°å®šç¾©(宣言) "type var" を採用ã—ãŸçµæžœã€ 手続ã呼出ã—を括弧無㗠"proc parm" ã¨ã™ã‚‹ã¨æ–‡æ³•ã¨ã—ã¦çŸ›ç›¾ã—ã¦ã—ã¾ã£ãŸã€ ã¨ã„ã†ã¨ã“ã‚ã§ã™ã€‚Pascalç³»ã®æ‰‹ç¶šããŒæ‹¬å¼§ç„¡ã—ãªã®ã¯ä»–ã®æ–‡æ³•è¦å‰‡ã¨ 矛盾ã—ã¦ãªã„ãŸã‚ã§ã™ã€‚ã“ã‚“ãªã¨ã“ã‚ã«ã€ãªãœ C ã®æ‰‹ç¶šãã§æ‹¬å¼§ãŒã„ã‚‹ã®ã‹ã® ç†ç”±ãŒã‚るよã†ã§ã™ã€‚複雑ãªãƒ­ã‚¸ãƒƒã‚¯(å­—å¥è§£æžã«å­—å¥æƒ…報を feedback ã™ã‚‹ãªã©) ã‚’å°Žå…¥ã™ã‚Œã°å›žé¿ã§ãã‚‹ã®ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ãŒã€ãã“ã¾ã§ã¯ã—ã¾ã›ã‚“ã§ã—ãŸã€‚

(*3) 変数宣言ã®æ–‡æ³•

変ã§ã™ã‹ï¼Ÿå¤‰ã§ã™ã‚ˆã­ã€‚C/C++ çš„ã§ã‚‚ãªã‘れ㰠Pascalçš„ã§ã‚‚ãªã„。 ãŒã€è¦ã¯æ…£ã‚Œã§ã™ã€æ…£ã‚Œ(やや苦ã—ã„言ã„訳)。

(*4) 関数定義

(v0.15) begin ã‚’çœãã¾ã—ãŸã€‚

Cç³»ã¨Pascalç³»ã®ãƒ–格好ãªçµ„ã¿åˆã‚ã›ã®ã‚ˆã†ã§ã€ ç§è‡ªèº«ã€ã‚ã¾ã‚Šå¥½ãã§ã¯ã‚ã‚Šã¾ã›ã‚“ãŒã€ ä»–ã®æ¡ˆã‚‚æ€ã„ã¤ã‹ãªã„ã®ã§ã¨ã‚Šã‚ãˆãšã“ã®ã¾ã¾é€²ã‚ã¾ã™ã€‚

(*5) returnæ–‡

当åˆã€Eiffelã® result 構文を採用ã—ã¦ã„ãŸã®ã§ã™ãŒã€ æ„外ã«ä½¿ã„ã«ãã„。resultæ–‡ã¯ã€ã€Œå…¥ã‚Šå£ï¼‘ã¤ãƒ»å‡ºå£ï¼‘ã¤ã€ã®åŽŸå‰‡ ã¨å¯†æŽ¥ã«ã¤ãªãŒã£ã¦ã„ã¾ã™ã€‚ ãŒã€ã“ã®åŽŸå‰‡è‡ªèº«ãŒã€è¨€èªžã®å½¢å¼çš„æ„味論をより簡å˜ã«ã™ã‚‹ãŸã‚ã® ã‚‚ã®ã§ã™ã€‚ ä»–æ–¹ã€returnæ–‡ã¯ã€Œã“れ以é™ã¯å‡¦ç†ã‚’中断ã—ã¦é–¢æ•°ã‚’抜ã‘ã¦æ¬²ã—ã„〠ã¨è€ƒãˆã‚‹äººé–“ã®æ€è€ƒã®æ€§è³ªã‚’表ç¾ã—ãŸã‚‚ã®ã§ã‚ã‚‹ãŸã‚〠「入りå£ï¼‘ã¤ãƒ»å‡ºå£ï¼‘ã¤ã€ã®åŽŸå‰‡ã¨ã¯æ°´ã¨æ²¹ã¿ãŸã„ã§ã™ã­ã€‚ çµå±€ã€å¾Œè€… returnæ–‡ を採用ã—ã¾ã—ãŸã€‚

(*6) loopæ–‡

Turing言語ã‹ã‚‰ã®æ‹å€Ÿã§ã™ã€‚

(*7) 関数ã®å…¥ã‚Œå­

C ã«ç¿’ã£ã¦ã€Alan ã§ã‚‚関数ã®ãƒã‚¹ãƒˆã¯å®Ÿè£…ã—ã¦ã„ã¾ã›ã‚“。

関数ã®ãƒã‚¹ãƒˆã‚’廃止ã—ãŸã®ã¯ã€C ã®å¤§ããªåŠŸç¸¾ã ã¨ç§ã¯æ€ã£ã¦ã„ã¾ã™ã€‚ ã“ã®ãŠã‹ã’ã§ã€ã‚³ãƒ³ãƒ‘イラãŒå˜ç´”ã«ãªã‚Šã€ã¾ãŸç”Ÿæˆã•ã‚Œã‚‹ã‚³ãƒ¼ãƒ‰ã‚‚ å˜ç´”ã«ãªã‚‹ã ã‘ã§ãªãã€å®Ÿç”¨æ€§ã¯ã‚ã¾ã‚Šå¤±ã‚ã‚Œã¦ã„ã¾ã›ã‚“。

å…¨ã¦ã‚’直交的ã«ã™ã‚‹å¿…è¦ã¯ãªã„ã€ã¨ã„ã†ã“ã¨ã ã¨ç§ã¯ç†è§£ã—ã¦ã„ã¾ã™ã€‚

ç§ã¯ã€Pascal(関数ã®å…¥ã‚Œå­ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„る)ã§å°‘々㨠C/C++ ã§å¤šãã®ãƒ—ログラムを組ã¿ã¾ã—ãŸãŒã€ãã®çµŒé¨“上〠C/C++ã§ã€Œé–¢æ•°ã®å…¥ã‚Œå­ãŒã‚ã£ãŸã‚‰ãªã‚ã€ã¨æ€ã£ãŸã“ã¨ã¯ ã»ã¨ã‚“ã©ã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ã¾ãŸã€ã‚ã£ã¦ã‚‚ã€ã™ãã« ä»–ã®è§£æ±ºæ–¹æ³•ãŒã™ãã«è¦‹ã¤ã‹ã£ãŸã‚‚ã®ã§ã™ã€‚

ãã†ã„ã†ã‚ã‘ã§ã€Alan ã§ã‚‚「å¯èƒ½ãªé™ã‚Šå˜ç´”ã«ã€ã®åŽŸå‰‡ã«ä¹—ã£å–り〠関数ã®å…¥ã‚Œå­ã¯æŽ¡ç”¨ã—ãªã„ã“ã¨ã«ã—ã¾ã—ãŸã€‚

(*8) 関数引数ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã€Œèª­ã¿å‡ºã—専用å‚照渡ã—ã€

ã“れも Turing言語ã‹ã‚‰ã®æ‹å€Ÿã§ã™ã€‚ C++ ã§è¨€ã†ã¨ã“ã‚ã® "const type &var" をデフォルトã¨ã—ã¦ã„る〠ã¨ã„ã†ã“ã¨ã§ã™ã€‚

ã¾ãšã€å‚照渡ã—ã‚’ default ã¨ã—ãŸã®ã¯ã€ã‚µã‚¤ã‚ºã®å¤§ãã„変数(オブジェクト) を関数ã«æ¸¡ã™ã‚±ãƒ¼ã‚¹ãŒå¢—ãˆã¦ããŸã“ã¨ã¸ã®å¯¾å‡¦ã§ã™ã€‚

次ã«ã€readonly ã‚’ default ã¨ã—ãŸã®ã¯ã€å‘¼å‡ºã—å´ã§ã€å¼•æ•°ãŒ 関数ã®ä¸­ã§å¤‰æ›´ã•ã‚Œãªã„ã“ã¨ã‚’明示ã—ãŸã„ãŸã‚ã§ã™ã€‚

全体

学習・アプリ開発・アプリä¿å®ˆã€ã®åˆè¨ˆã¨ã„ã†è¦³ç‚¹ã§ã‚³ã‚¹ãƒˆã‚’下ã’ãŸã„〠ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚ã¾ã‚ã€ç§ã®è¦‹ç©ã‚‚りミスもã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ã®ã§ã€ ãã®éš›ã¯ã‚³ãƒ¡ãƒ³ãƒˆé ‚ã‘ã‚Œã°å¹¸ã„ã§ã™ã€‚




//以上

Top / Alan ã¸ã®èª˜(ã„ã–ãª)ã„





Alan ver0.31