
ã¡ã¿ããã°ã©ãã³ã°ã¯ãäœæ¥ã®çµæãšããŠä»ã®ããã°ã©ã ãçæããããã°ã©ã ã®äœæã«é¢é£ããäžçš®ã®ããã°ã©ãã³ã°ã§ãïŒ wiki ïŒã ããã¯ããªãäžè¬çãªçšèªã§ãããåããŠã£ãããã£ã¢ã«ããã°ãå€éšããŒã«ãããŸããŸãªããªããã»ããµãŒãããã³ãã³ã³ãã€ã©ãŒãžã®ãã©ã°ã€ã³ãã«ãããœãŒã¹ã³ãŒãã®çæãæããŸããèªå·±ä¿®æ£ã³ãŒããšããŠ-å®è¡æã®ããã°ã©ã èªäœã«ããããã°ã©ã ã®ä¿®æ£ã
ãã¡ãããèªå·±ä¿®æ£ã³ãŒãã¯ãããå¥ã®å€§ããªãããã¯ã§ãããå¥ã®ç 究ã«å€ããŸãã ããã§ãã¡ã¿ããã°ã©ãã³ã°ãšã¯ãããã°ã©ã ã®ã³ã³ãã€ã«äžã«çºçããããã»ã¹ãæå³ããŸãã
ã¡ã¿ããã°ã©ãã³ã°ã¯ããŸã£ããç°ãªãèšèªã§ããçšåºŠå®è£ ãããŠããŸãã ãšããŸããã¯ã§é¡äŒŒããèšèªãèæ ®ããªãå Žåãã¡ã¿ããã°ã©ãã³ã°ã®æãæåãªäŸã¯ããã³ãã¬ãŒãã·ã¹ãã ãåããC ++ã§ãã ãæ°ãããèšèªã®ãã¡ãDãšNimãæ€èšã§ããŸãã ã¡ã¿ããã°ã©ãã³ã°ã®å®è£ ã§æãæåããè©Šã¿ã®1ã€ã¯ãNemerleèšèªã§ãã å®éããã®4ã€ã®äŸã§ã¯ãäž»é¡ãæ€èšããŸãã
ã¡ã¿ããã°ã©ãã³ã°ã¯èå³æ·±ããããã¯ã§ãã ãã®èšäºã§ã¯ããããäœã§ãããçæ³çãªå Žåã«ã©ãããã¹ãããç解ããããšããŸãã
ã³ã³ãã€ã«æé
ãããã¯ã®èª¬æãå§ããåã«ãã³ã³ãã€ã©ã®åäœã確èªããå¿ èŠããããŸãã
ãã®ãããã³ã³ãã€ã©ã®å ¥åã«ã¯ãããã°ã©ã ããã¹ã圢åŒã®ãœãŒã¹ã³ãŒãããããŸãã
ã³ã³ãã€ã«ã®æåã®æ®µéã¯ã åå¥è§£æã§ãã ãã®æ®µéã§ãããã°ã©ã ã¯ãœãªããããã¹ãããããŒã¯ã³ïŒããŒã¯ã³ïŒã«åå²ãããŸããåå€æ°ããªãã©ã«ãæŒç®åãããŒã¯ãŒããã³ã¡ã³ãã¯åå¥ã®ãªããžã§ã¯ãã«ãªããŸãã ãã¡ããããã®ãããªãªããžã§ã¯ãã䜿çšããæ¹ãããœãŒã¹è¡ãçŽæ¥äœ¿çšãããããã¯ããã«äŸ¿å©ã§ãã
次ã®ã¹ãããã¯æ§æ解æã§ãæ§æããªãŒãæ§ç¯ããŸãã ãã®æ®µéã§ãç·åœ¢æ§é ã¯éå±€çã«ãªããŸãã ããã°ã©ã ãæžããšãã«ç§ãã¡ãå®éã«è¡šçŸãããã®ã«ã ã¯ã©ã¹ãé¢æ°ãã³ãŒããããã¯ãæäœã¯ãæœè±¡æ§æããªãŒïŒASTïŒã®ããŒãã«ãªããŸãã 解æèªäœã¯å€ãã®ã¹ãããã§æ§æãããŠããŸãã ããã«ã¯ãåã®æäœïŒåæšè«ãå«ãïŒãããã³ããŸããŸãªæé©åãå«ãŸããŸãã
æçµæ®µéã¯ã³ãŒãçæã§ãã æ§æããªãŒã«åºã¥ããŠãä»®æ³ããã³/ãŸãã¯ãã·ã³ã³ãŒããçæãããŸãã ããã¯ãã¹ãŠã¿ãŒã²ããã¢ãŒããã¯ãã£ã«äŸåããŸããã¬ãžã¹ã¿ãšã¡ã¢ãªãå²ãåœãŠãããããªãŒããŒããäžé£ã®ã³ãã³ãã«å€ãããè¿œââå ã®æé©åãå®è¡ãããŸãã
äž»ã«åå¥è§£æãšæ§æ解æã«é¢å¿ããããŸãïŒãã ããã³ãŒãçæã®æ®µéã§ã¡ã¿ããã°ã©ãã³ã°ãå¯èœã§ãããããã¯å¥ã®å€§ããªå®å šã«æªæ¢çŽ¢ã®ãããã¯ã§ãïŒã

åå¥ãã¯ã
ä»æ¥ãŸã§æ®ã£ãŠããæãå€ãã¡ã¿ããã°ã©ãã³ã°ããŒã«ã®1ã€ã¯ãã·ã¹ãã ããªããã»ããµã§ãã ãããããæåã®ããªããã»ããµã¯å®éã«ã¯å¥åã®ããã°ã©ã ã§ãããååŠçã®åŸãäœæ¥ã®çµæããœãŒã¹ããã¹ã圢åŒã«æ»ããŸããã ããªããã»ããµã¯ããŒã¯ã³ã¬ãã«ã§åäœãããããã€ãŸãããŒã¯ã³ã®ã·ãŒã±ã³ã¹ãåä¿¡ããåŸïŒå®éã«ã¯ãããªããã»ããµã¯ãã®ç®çã®ããã«ãããšãã°åŒæ°ãæã€ç¬èªã®ãã¯ãã«å¯ŸããŠãæãåçŽãªè§£æãå®è¡ããŸããïŒãã¬ãã·ã«ã«ã§ãã ããªããã»ããµã¯ãããŒã¯ã³ã®1ã€ã®ã·ãŒã±ã³ã¹ãä»ã®ãã®ã«çœ®ãæããããšãã§ããŸãã 圌ã¯ããã°ã©ã ã®æ§ææ§é ã«ã€ããŠäœãç¥ããªã-ã ããæåã«ããã®ã¯ãšãŠãç°¡åã
#define true false
ãã·ã¹ãã å šäœã®ãããªããã»ããµã®åé¡ã¯ãäžæ¹ã§ã¯ãããã°ã©ã ããã¬ãŒã³ããã¹ããšããŸãå€ãããªããšãã®åå¥è§£æã®åŸãæ©ãããããšã§ãã äžæ¹ãããã¯æ¬æ Œçãªããã°ã©ãã³ã°èšèªã§ã¯ãªããæ¡ä»¶ä»ãã³ã³ãã€ã«ãšããŒã¯ã³ã®ã·ãŒã±ã³ã¹ãä»ã®ãã®ã«çœ®ãæããã ãã®ã·ã¹ãã ã§ãã ãã¡ãããããã§å€ãã®ããšãè¡ãããšãã§ããŸãïŒ boost.preprocessorãåç §ïŒããããã§ãæ¬æ ŒçãªïŒãããŠæãéèŠãªã®ã¯ç解å¯èœã§äŸ¿å©ãªïŒã¡ã¿ããã°ã©ãã³ã°ã«ã¯éããŸããã
C ++ãã³ãã¬ãŒã
次ã«ããç¥ãããŠããã¡ã¿ããã°ã©ãã³ã°ããŒã«ã¯C ++ãã³ãã¬ãŒãã§ããããã¯ããã©ã¡ãŒã¿ãŒåãããã¯ã©ã¹ãšé¢æ°ãäœæã§ããæ§é ã§ãã ãã³ãã¬ãŒãã¯ã倧ããªãã¯ããšã¯ç°ãªãããã§ã«æ§æããªãŒã§æ©èœããŸãã C ++ã§æãäžè¬çãªãã³ãã¬ãŒããæ€èšããŠãã ãã
template<class T, int N> struct Array { T data[N]; };
ããã³ãã®ã¢ããªã±ãŒã·ã§ã³ïŒã€ã³ã¹ã¿ã³ã¹åïŒïŒ
Array<int,100> arr;
ã³ã³ãã€ã©ã®èŠ³ç¹ããäœãèµ·ãã£ãŠããŸããïŒ ãã³ãã¬ãŒãæ§é ã¯ãå¥åã®ç¹å¥ãªASTã¢ã»ã³ããªã§ãã ãã³ãã¬ãŒãã«ã¯ãã¿ã€ããšæŽæ°å®æ°ã®2ã€ã®ãã©ã¡ãŒã¿ãŒããããŸãã ãã³ãã¬ãŒãã®ã€ã³ã¹ã¿ã³ã¹åã®æç¹ã§ãæ£åŒãªãã©ã¡ãŒã¿ãŒåã§ã¯ãªãããã³ãã¬ãŒããã©ã¡ãŒã¿ãŒïŒå®éã«ã¯ASTããŒãã§ãããïŒããã³ãã¬ãŒãæ¬äœã«çœ®ãæããããŸãã ãã®çµæãã¡ã€ã³æ§æããªãŒã§äœ¿çšãããããŒããäœæãããŸãïŒãŸãã¯ä»¥åã«äœæããããã®ãæ€çŽ¢ããŸãïŒã ããã§éèŠãªã®ã¯ããã³ãã¬ãŒãèªäœãšã€ã³ã¹ã¿ã³ã¹åãã€ã³ãã®ãã³ãã¬ãŒããã©ã¡ãŒã¿ã®äž¡æ¹ãåãªãã¿ã€ããšçªå·ã§ã¯ãªããæ§æããªãŒã®ããŒãã§ãããšããããšã§ã ã ã€ãŸããintåãšæ°å€100ãæž¡ãããšã«ãããå®éã«ã¯2ã€ã®å°ããªæ§æããªãŒïŒãã®å Žåã¯1ã€ã®ããŒãïŒãæ§ç¯ããŠããã倧ããªæ§æããªãŒïŒãã³ãã¬ãŒãæ¬äœïŒã«è»¢éãããã®çµæãã¡ã€ã³ã«æ¿å ¥ãããæ°ããããªãŒãååŸããŸãæ§æããªãŒã ããã¯ãsichenãã¯ãã眮ãæããã¡ã«ããºã ã®ããã«èŠããŸããããã§ã«æ§æããªãŒã®ã¬ãã«ã«ãããŸãã
ãã¡ããããã³ãã¬ãŒããã©ã¡ãŒã¿ã¯ãããè€éãªæ§é ã«ããããšãã§ããŸãïŒããšãã°ãstd :: vector <std :: set <int >>ãåãšããŠæž¡ãããšãã§ããŸãïŒã ããããC ++ãã³ãã¬ãŒãã®æ©èœã®æ ¹æ¬çãªäžå®å šãã«æ³šæãæãã¹ãæãæ¥ãŸããã æšæºã®14.1ç¯ã«ããã°ããã³ãã¬ãŒããã©ã¡ãŒã¿ãŒã¯åãšäžéšã®éåïŒæŽæ°ãåæèŠçŽ ãã¯ã©ã¹ã¡ã³ããŒãžã®ãã€ã³ã¿ãŒãã°ããŒãã«ãªããžã§ã¯ããžã®ãã€ã³ã¿ãŒãé¢æ°ãžã®ãã€ã³ã¿ãŒïŒã®ã¿ã§ãã äžè¬ã«ãããžãã¯ã¯æ確ã§ã-ãªã¹ãã«ã¯ã³ã³ãã€ã«æ®µéã§æ±ºå®ã§ãããã®ããããŸãã ããããããšãã°ãäžæãªçç±ã«ãããæååãæµ®åå°æ°ç¹æ°ã¯å«ãŸããŠããŸããã ãŸãããã©ã¡ãŒã¿ãŒãASTããŒãã§ããããšãèŠããŠããã°ãä»ã«å€ãã®æçšãªãã®ããªãããšãæããã«ãªããŸãã ããã§ã¯ãããšãã°å€æ°ã®ååãã³ãŒãã®ãããã¯ãªã©ãä»»æã®ASTããŒãããã©ã¡ãŒã¿ãŒãšããŠæž¡ãããšã劚ãããã®ã¯äœã§ããïŒ åæ§ã«ããã¿ãŒã³èªäœã¯ã¯ã©ã¹ïŒæ§é ïŒãŸãã¯é¢æ°ã®ã¿ã§ãã ãããŠãã³ãŒãã®ä»»æã®ãããã¯ããã³ãã¬ãŒããäœæããã®ã劚ãããã®ã¯äœã§ãã-åœä»€åïŒå¶åŸ¡æŒç®åãåŒïŒãšå®£èšåïŒããšãã°ãæ§é äœãŸãã¯åæã®æçïŒã®äž¡æ¹ã§ããïŒ C ++èªäœã«ã¯ãã®ãããªæ©èœããªãããšã«ä»ãªããŸããã
ãã³ãã¬ãŒãããæ§æãã¯ããŸã§
ãã³ãã¬ãŒããšã³ãžã³ã¯ãC ++ã§ååšãã圢åŒã§ãã£ãŠããããªãåºç¯ãªã¡ã¿ããã°ã©ãã³ã°æ©èœãæäŸããŸãã ããã«ãããããããããã¯ãäžéšã®ASTãã©ã°ã¡ã³ããä»ã®ãã©ã°ã¡ã³ãã«çœ®ãæããã ãã®ã·ã¹ãã ã§ãã ããããããã«é²ãã§ã眮æã«å ããŠãä»ã®äœããç¹ã«ã¹ã¯ãªããã䜿çšããASTããŒãã§ã®ä»»æã®ã¢ã¯ã·ã§ã³ã®å®è¡ãèš±å¯ãããã©ãã§ããããïŒ ãããã¯ããããŸã§ã§æã匷åãªã¡ã¿ããã°ã©ãã³ã°ããŒã«ã§ããæ§æãã¯ãã§ãã ããã°ã©ããŒã«ãã£ãŠæžãããã¡ã€ã³ããã°ã©ã ã®ã³ã³ãã€ã«æ®µéã§å®è¡ãããä»»æã®ã³ãŒããã³ã³ãã€ã©APIããã³ASTã®åœ¢åŒã§ã³ã³ãã€ã«ãããããã°ã©ã ã®æ§é ã«ã¢ã¯ã»ã¹ããå®éã«ã¯ãã³ã³ãã€ã«ãããããã°ã©ã ã«çµã¿èŸŒãŸããã³ã³ãã€ã©ã®æ¬æ Œçãªãã©ã°ã€ã³ã ãã®æ©èœãå®çŸããŠããããã°ã©ãã³ã°èšèªã¯å€ããããŸããã ç§ã®æèŠã§ã¯æé«ã®å®è£ ã®1ã€ã¯Nemerleèšèªã§ããããããããããã«è©³ããæ€èšããŸãã
ã»ãŒå ¬åŒã®ããã¥ã¡ã³ãããæãç°¡åãªäŸã次ã«ç€ºããŸãã
macro TestMacro() { WriteLine("compile-time\n"); <[ WriteLine("run-time\n") ]>; }
ãã¯ãåŒã³åºããå¥ã®ãã¡ã€ã«ã«æ¿å ¥ããå ŽåïŒããã¯ãé¢æ°åŒã³åºããšåãã§ãïŒ
TestMacro();
ã³ã³ãã€ã«äžã«ãã³ã³ãã€ã©ãã°ã«ãcompile-timeããšããã¡ãã»ãŒãžã衚瀺ãããŸãã ããã°ã©ã ãèµ·åãããšãã³ã³ãœãŒã«ã«ãã©ã³ã¿ã€ã ããšããã¡ãã»ãŒãžã衚瀺ãããŸãã
ã芧ã®ãšããããã¯ãã¯éåžžã®ã³ãŒãã§ãïŒãã®å Žåãã¡ã€ã³ããã°ã©ã ãšåãNemerleèšèªïŒã éãã¯ããã®ã³ãŒããã¡ã€ã³ããã°ã©ã ã®ã³ã³ãã€ã«æ®µéã§å®è¡ãããããšã§ãã ãããã£ãŠãã³ã³ãã€ã«ã¯2ã€ã®ãã§ãŒãºã«åå²ãããŸããæåã«ãã¯ããã³ã³ãã€ã«ããã次ã«ã¡ã€ã³ããã°ã©ã ãã³ã³ãã€ã«ããããšã以åã«ã³ã³ãã€ã«ããããã¯ããåŒã³åºãããšãã§ããŸãã æåã®è¡ã¯ã³ã³ãã€ã«æã«å®è¡ãããŸãã 2è¡ç®ã«ã¯ãèå³æ·±ãæ§æ-ç¹å¥ãªæ¬åŒ§<[]>ãå«ãŸããŠããŸãã ãã®ãããªè§ãã£ãã䜿çšãããšãéåžžã®æååãšåæ§ã«ãåŒçšç¬Šã§å²ããã®ããã«ã³ãŒããã©ã°ã¡ã³ããååŸã§ããŸãã ãã ããæååãšã¯ç°ãªãããããã¯ASTãã©ã°ã¡ã³ãã§ãããã€ã³ã¹ã¿ã³ã¹åæã®ãã³ãã¬ãŒããšåæ§ã«ãããã°ã©ã ã®ã¡ã€ã³æ§æããªãŒã«æ¿å ¥ãããŸãã
ãŸãããã³ãã¬ãŒããšã¯ç°ãªãããã¯ãã¯ä»¥åãšã¯ç°ãªãã³ã³ããã¹ããç°ãªã次å ã«ãããããç¹å¥ãªãã©ã±ãããå¿ èŠã§ãã ãã¯ãã³ãŒããšãã¯ããåäœããã³ãŒããäœããã®æ¹æ³ã§åé¢ããå¿ èŠããããŸãã Nemerleçšèªã®ãã®ãããªæååã¯ãæºã¯ã©ãŒããšåŒã°ããŸãã ãæºã-è£éã䜿çšããŠãªã³ã¶ãã©ã€ã§æ§ç¯ã§ãããã-ããŸããŸãªå€æ°ã®ååãç¹å¥ãªæ§æã䜿çšããŠæååã«æ¿å ¥ãããããã®å€æ°ã®å€ã«å€æããå Žåãã¹ã¯ãªããèšèªã§æžããã¹ãŠã®äººã«ç¥ãããŠããæ©èœã ããã¥ã¡ã³ãã®å¥ã®äŸïŒ
macro TestMacro(myName) { WriteLine("Compile-time. myName = " + myName.ToString()); <[ WriteLine("Run-time.\n Hello, " + $myName) ]>; }
åŒæ°-ASTããŒãïŒããã³ãã³ãã¬ãŒãçšïŒ; æºåŒçšç¬Šã«ããŒããæ¿å ¥ããã«ã¯ãååã®åã«$èšå·ã䜿çšããŸãã
ãã¡ããããã®ãããªæååã®ä»£ããã«ãã³ã³ãã€ã©APIãšASTããŒãã«å¯Ÿå¿ãããã¯ãã³ã³ããã¹ãã§äœ¿çšå¯èœãªã¿ã€ãã䜿çšããŠãæ¿å ¥ãããASTãã©ã°ã¡ã³ããæåã§æ§ç¯ããããšãã§ããŸããã ã®ãããªãã®
new FunctionCall( new Literal("run-time\n") )
ãããããçŸç¶ã®ãŸãŸãã³ãŒããèšè¿°ããASTã®æ§ç¯äœæ¥ãã³ã³ãã€ã©ã«ä»»ããæ¹ãã¯ããã«ç°¡åã§ãã
Dã§ã¯ãã¡ã¿ããã°ã©ãã³ã°ã¯ãã³ãã¬ãŒãïŒéåžžã¯C ++ãã³ãã¬ãŒãã«äŒŒãŠããŸãããããã€ãã®æ¹è¯ç¹ããããŸãïŒãšããã¯ã¹ã€ã³ã䜿çšããŠè¡šãããŸãã ãããããã詳现ã«æ€èšããŸãããã æåã®ã¿ã€ãã¯ãã³ãã¬ãŒãããã¯ã¹ã€ã³ã§ãã ä»»æã®ã³ãŒããã©ã°ã¡ã³ããã³ãã¬ãŒããäœæããæ©èœãåãããã³ãã¬ãŒãã®åãæ¡åŒµã ããšãã°ããã®ããã°ã©ã ã¯æ°å€5ãåºåããŸãã
mixin template testMixin() { int x = 5; } int main(string [] argv) { mixin testMixin!(); writeln(x); return 0; }
ããã¯ã¹ã€ã³ã§å®£èšãããå€æ°ã¯ãããã¯ã¹ã€ã³ãã³ãŒãã«å«ãŸããåŸã«äœ¿çšå¯èœã«ãªããŸãã
ããã¯ã¹ã€ã³ã®2çªç®ã®ã¿ã€ãã¯ãã¹ããªã³ã°ããã¯ã¹ã€ã³ã§ãã ãã®å ŽåãmixinããŒã¯ãŒãã®åŒæ°ã¯ãDã®ã³ãŒããå«ãè¡ã«ãªããŸãã
mixin (`writeln("hello world");`);
ãã¡ãããæååã¯ã³ã³ãã€ã«æã«ç¥ã£ãŠããå¿ èŠããããŸãã ãããŠãããã¯ãæ瀺çã«å®çŸ©ãããå®æ°è¡ïŒããã§ãªããã°æå³ããªããªãïŒã ãã§ãªããã³ã³ãã€ã«æã«ããã°ã©ã ã§åœ¢æãããè¡ã§ããããŸãïŒ åæã«ãDèšèªã®éåžžã®æ©èœã䜿çšããŠæååãäœæã§ããŸããããã¯ãå®è¡æã«äœ¿çšã§ãããã®ãšåãã§ãã ãã¡ãããäžå®ã®å¶éã¯ãããŸãããã³ã³ãã€ã©ãŒã¯ã³ã³ãã€ã«äžã«ãããã®é¢æ°ã®ã³ãŒããå®è¡ã§ããå¿ èŠããããŸãïŒã¯ããDèšèªèªäœã®ããªã匷åãªã€ã³ã¿ãŒããªã¿ãŒãDã³ã³ãã€ã©ãŒã«çµã¿èŸŒãŸããŠããŸãïŒã
æååããã¯ã¹ã€ã³ã®å ŽåãæºããŒããšããŠASTããŒãã䜿çšããŸããã 代ããã«ãèšèªã®ãœãŒã¹ã³ãŒãã䜿çšããŸãããœãŒã¹ã³ãŒãã¯æ瀺çã«ïŒããšãã°ãæååãé£çµããããšã«ããïŒåœ¢æãããåå¥è§£æãšæ§æ解æã®ãã¹ãŠã®æ¹æ³ãå®è¡ããŸãã ãã®æ¹æ³ã«ã¯é·æãšçæããããŸãã å人çã«ã¯ãASTã䜿çšããçŽæ¥äœæ¥ã¯ããœãŒã¹ã³ãŒãã®è¡ãçæããããããã¯ãªãŒã³ãã§ã€ããªãã®ãŒçã«æ£ããããã§ãã ãã ããç¶æ³ã«ãã£ãŠã¯ãæååã®æäœã圹ç«ã€å ŽåããããŸãã
ãŸããNimã®èšèªã«ã€ããŠç°¡åã«èšåããããšãã§ããŸãã ãã®äžã§ãtemplateããŒã¯ãŒãã¯Dã®mixinãã³ãã¬ãŒããšåæ§ã«æ©èœããŸãïŒåæã®C ++ã¹ã¿ã€ã«ã®ã¯ã©ã·ãã¯ãã³ãã¬ãŒãã«ã¯ãå¥ã®æŠå¿µã䜿çšãããŸã-ãžã§ããªãã¯ïŒã ãã¯ãããŒã¯ãŒãã䜿çšããŠãNemerleãã¯ãã«ãã䌌ãæ§æãã¯ãã宣èšãããŸãã Nimã¯ãã³ãã¬ãŒãã®åŒã³åºãã®æ®µéã圢åŒåããããšããŸãã-ç¹å¥ãªãã©ã°ãã䜿çšããŠãå€æ°ã®ååã解決ããåãŸãã¯åŸã«ãã³ãã¬ãŒããåŒã³åºããã©ãããæå®ã§ããŸãã Dãšã¯ç°ãªããASTããŒããæ瀺çã«äœæã§ããã³ã³ãã€ã©APIãããã€ããããŸãã ãã¯ãã®ãè¡çãã®åé¡ã«ã€ããŠè§ŠããŸãïŒãã¯ãã¯ãã¢ããªã±ãŒã·ã§ã³ã®æç¹ã§èå¥åã«åœ±é¿ãäžããªãããšãä¿èšŒãããŠããå Žåããã¯ãã¯ãè¡çãã§ã...ãããã®åé¡ããã詳现ã«æ€èšããå¿ èŠããããŸãããããããå¥ã®æéã«ãªããŸãïŒã
çµè«
ããŸããŸãªèšèªã§ã®ã¡ã¿ããã°ã©ãã³ã°ã®å®è£ ãèŠããšãçæ³çãªå Žåã®ã¡ã¿ããã°ã©ãã³ã°ã®èŠæ¹ã«ã€ããŠããã€ãã®èãããããŸãã ããã«ããã€ãã®èãããããŸãïŒ
ã¡ã¿ããã°ã©ãã³ã°ã¯æ瀺çã§ãªããã°ãªããŸãã
ãã¯ãã®åŒã³åºãã¯éåžžã«å ·äœçãªããšã§ãïŒå®éã«ã¯éåžžã«å ·äœçãªããšã§ãïŒïŒããŸããããã°ã©ããŒã¯ã³ãŒãå ã§ãã®ãããªãã¯ããäžæã«èŠèŠçã«èå¥ããå¿ èŠããããŸãïŒæ§æã®åŒ·èª¿è¡šç€ºããªããŠãïŒã ãããã£ãŠããã¯ãã®æ§æã¯ãé¢æ°ã®æ§æãšæ確ã«ç°ãªãå¿ èŠããããŸãã å€ããå°ãªããããã®èŠä»¶ã¯DïŒãã€ã€ã«ãã¢ã§ã®ç¹å¥ãªããŒã¯ãŒãmixinïŒã§ã®ã¿æºããããŸãã NemerleãšNimã§ã¯ããã¯ãã¯é¢æ°ãšåºå¥ã§ããŸããã ããã«ãNemerleã«ã¯ãã¯ããåŒã³åºãä»ã®æ¹æ³ãããã€ããããŸãããã¯ãå±æ§ãšèšèªæ§æããªãŒããŒã©ã€ãããæ©èœã§ããããã§ã¯å°ãæ°ãæ£ãããŠãé¢æ°ãã¯ã©ã¹ãšã¯ç°ãªãæ§æãã°ããŒãã«ã§ããããšã«æ³šæããŠãã ãã ãããŠãç§ã¯ããããã®ãããªæ©äŒã«åŠå®çãªæ 床ãæã£ãŠããŸããããã¯èšèªã®äŸµé£ãšèšèªãžã§ãã¬ãŒã¿ãžã®å€æã«ã€ãªããããã§ããã€ãŸããæ°ãããããžã§ã¯ãããšã«æ°ããèšèªãåŠã¶å¿ èŠããããŸã...èŠéãã¯çãããã§ãïŒ
ããã°ã©ã ãšã¡ã¿ããã°ã©ã ã«åãèšèªã䜿çšããã®ã¯ãªãã·ã§ã³ã§ã
æ€èšãããã¹ãŠã®äŸã§ãã¡ã¿ããã°ã©ã ïŒãã¯ãïŒã¯ã¡ã€ã³ããã°ã©ã ãšåãèšèªã§èšè¿°ãããŠããŸãã èšèªéçºè ã¯ãã³ã³ãã€ã«ããã解éã«é©ãããã¯ãã«å¥ã®ããã°ã©ãã³ã°èšèªã䜿çšããå¯èœæ§ã«ã€ããŠèããŠããªãã£ãããã§ãã
äžæ¹ã代æ¿ã¢ãããŒãã®äŸã¯åžžã«è¡šé¢ã«ãããŸããWebããã°ã©ãã³ã°ã§ã¯ãhtmlããŒã¯ã¢ããèšèªãšjavascriptããã°ã©ãã³ã°èšèªã䜿çšãããŸãã javascriptã¯htmlã¬ã³ããªã³ã°äžã«å®è¡ããïŒã³ã³ãã€ã«ã¢ããã°ïŒãhtmlããã¥ã¡ã³ããªããžã§ã¯ãã¢ãã«ïŒHTML DOMïŒã¯ã¹ã¯ãªããããå©çšå¯èœã§ã-ASTã«ããªãè¿ããã®ã§ãã é©åãªé¢æ°ã䜿çšãããšãHTMLãœãŒã¹ã³ãŒãã®åœ¢åŒãšDOMããªãŒã®ããŒãã®åœ¢åŒã®äž¡æ¹ã§ãããŸããŸãªã¬ãã«ã§HTML DOMããŒããè¿œå ãå€æŽãããã³åé€ã§ããŸãã
// html , mixin D document.getElementById('myDiv').innerHTML = '<ol><li>html data</li></ol>'; // html , Nim var link = document.createElement('a'); link.setAttribute('href', 'mypage.htm'); document.getElementById('myDiv').appendChild(link);
ãã®ã¢ãããŒãã®é·æãšçæã¯äœã§ããïŒ
æããã«ãã¡ã¿ããã°ã©ã ã¯ã³ã³ãã€ã©ãã¯ã©ãã·ã¥ãŸãã¯ãµã¹ãã³ããããã¹ãã§ã¯ãããŸããã æããã«ããã€ã³ã¿ããã®ä»ã®äœã¬ãã«ã®ãã®ã䜿çšããŠSIã§ã¡ã¿ããã°ã©ã ãèšè¿°ããå Žåããããçµäºããã®ã¯éåžžã«ç°¡åã§ãã äžæ¹ãããã°ã©ã ãã¡ã¿ããã°ã©ã ã§å ±éã®ã³ãŒãã䜿çšãããšäŸ¿å©ã§ãã ãã®ãå ±éã³ãŒããã¯ãçŽç²ãªã¢ã«ãŽãªãºã ã®ãããªéåžžã«äžè¬çãªãã®ã«éå®ãããŸãããã³ã³ãã€ã©APIã¯ããã°ã©ã ã«ã¯é©çšã§ããŸããããå®éã®OSãã®ã©ã€ãã©ãªïŒã°ã©ãã£ãã¯ããŠã£ã³ããŠã·ã¹ãã ããããã¯ãŒã¯ãªã©ïŒã¯ãã¡ã¿ããã°ã©ã ã«ã¯éåžžã«é©çšã§ããŸããã ãã¡ãããã³ã³ãã€ã«äžã«ããã€ãã®ãŠã£ã³ããŠãäœæããŠç»é¢ã«è¡šç€ºã§ããŸããããªãã§ããïŒ
ãããã£ãŠãããã°ã©ã ãšã¡ã¿ããã°ã©ã ãåãèšèªã§ããå¿ èŠã¯ãããŸããã ããã°ã©ã ãšã¡ã¿ããã°ã©ã ã«ã¯ãå®å šã«ç°ãªãã¿ã¹ã¯ãšå®å šã«ç°ãªãã©ã³ã¿ã€ã ããããŸãã ããããæè¯ã®è§£æ±ºçã¯ãããã°ã©ããŒãèªç±ã«ããããã€ãã®èšèªã䜿çšããããšã§ãïŒã¡ã€ã³èšèªã®å®å šãªãµãã»ãããšããã€ãã®äžè¬çãªã¹ã¯ãªããèšèªã®äž¡æ¹-åãjavascriptãéåžžã«é©ããŠããŸãã
ã³ã³ãã€ã©APIã®æšæºå
äžéšã®èšèªã§ã®æ¬æ Œçãªã¡ã¿ããã°ã©ãã³ã°ã®åºçŸãšæ®åã«ã¯ãå¿ ç¶çã«ã³ã³ãã€ã©APIã®æšæºåãå¿ èŠã«ãªããŸãã ãã¡ãããããã¯ã³ã³ãã€ã©ãŒèªäœã®å質ãæšæºãžã®æºæ ãããã³ã³ã³ãã€ã©ãŒéã®äºææ§ã«ãã©ã¹ã®å¹æããããããŸãã ãããŠãhtmlãšãã©ãŠã¶ã®äŸèªäœã¯ããªãè¯ãããã§ãã ASTæ§é ã¯htmlããŒã¯ã¢ããïŒäžéšã®ããŒãããã³ä»ã®æ©èœã®éäºææ§ïŒãããè€éã§ããããã®ãããªAPIãæ§ç¯ããããã®åºç€ãšããŠãæ¢åã®ã¡ã¿ããã°ã©ãã³ã°å®è£ ã®çµéšãšçµã¿åãããŠãã©ãŠã¶ãŒãã¯ãããžãŒã®çµéšãåãå ¥ããããšã¯çŽ æŽãããããšã§ãã
IDEãµããŒã
ã¡ã¿ããã°ã©ãã³ã°ã¯éåžžã«è€éã«ãªãå ŽåããããŸãã ä»ãŸã§ãç§ãç¥ã£ãŠãããã¹ãŠã®å®è£ ã¯ãããã°ã©ãã®ä»äºãä¿é²ããæ段ãææ¡ããŠããŸããã§ããïŒç§ã®å¿ã§ã³ã³ãã€ã«ããããšã¯ãŸã ã¢ã€ãã¢ã§ãïŒãã¡ãããã¢ããã¥ã¢ãããŸã...ïŒã ããšãã°ãC ++ã®ã¡ã¿ããã°ã©ãã¯ãããè¡ããŸãã ãã®ããããããã°ã¢ãŒããšã³ãŒãç·šéã¢ãŒãã®äž¡æ¹ã§ãç¹å¥ãªIDEã¢ãŒãã§ãã³ãã¬ãŒããšãã¯ããå±éãããããªããŒã«ãå°å ¥ããå¿ èŠããããšèããŠããŸãã ãã¯ãã®ãã³ãã³ãã©ã€ã³ã REPLã³ãŒãã®å®è¡ã«é¡äŒŒããŠããŸãã ããã°ã©ããŒã¯ãASTãžã®èŠèŠçãªã¢ã¯ã»ã¹ããã¯ãã®åå¥ã®ã³ã³ãã€ã«ãšãã¹ãå®è¡ããã¹ãããããšã®ã³ã³ãã€ã«ãïŒã¡ããã©ãã®ããã«-ã¹ããããã€ã¹ãããã¢ãŒãã§ã¡ã€ã³ã³ãŒããã³ã³ãã€ã«ãããšãã®ãã¯ãã®åäœãç¹å¥ãªãããã¬ãŒã§ç¢ºèªããããã®ïŒããŒã«ã®å®å šãªã»ãããæã£ãŠããå¿ èŠããããŸã
ãŸããããããããããã¹ãŠã§ãã å€ãã®çåãèå°è£ã«æ®ã£ãŠããŸããããã¡ã¿ããã°ã©ãã³ã°ã®ä¿¡ããããªãã»ã©ã®åãè©äŸ¡ããã«ã¯ããã§ååã ãšæããŸãã ä»ãããã¯ãã¹ãŠC ++ã«ãªã£ãŠãããšæ³åããŠãã ããã Boostã©ã€ãã©ãªãèŠãŠãã ãããæ¢åã®ãã³ãã¬ãŒããã¬ãã·ã«ã«ãã¯ãã«å¯ŸããŠã人ã ãè¡ãé©ãã¹ãä¿¡ããããªãã»ã©ã®ããšã...
ããããã ãšããã°...ç§ãã¡ã®åã«æ¬åœã«ããã«ãŒã®æ©äŒãéãããã§ãããïŒ