Ïë³ÉΪһÃûÓÅÐã³ÌÐòÔ±£¿±¾ÎÄ×÷ÕßÓÃ×Ô¼ºÊ®¼¸ÄêµÄ¾Ñ飬Ìá³öÁËÆßÌõ½¨ÒéºÍ¾ßÌå´ëÊ©¡£
Óм¸¸öÈËÔÚ React ´ó»áÉÏÏòÎÒÇë½ÌÒ»¸öÎÊÌ⡪¡ªÈçºÎ³ÉΪһÃû¸üÓÅÐãµÄ³ÌÐòÔ±¡£ÈËÃǽ«ÎÒÊÓΪһÃû·Ç³£×ÊÉîµÄ³ÌÐòÔ±£¬Òò´ËÖµµÃÌýÌýÎҵĽ¨Òé¡£ÎÒ¾õµÃ¿ÉÒÔ·ÖÏíһϣ¬×Ô¼º¶àÄêÀ´ÔÚ±à³Ì·½ÃæµÄ¡°Ë¼Î¬Ä£Ê½¡±¡£
ÏȼòÒª×ÔÎÒ½éÉÜһϣºÎҽРJames Long£¬½ñÄê 32 Ë꣬Óг¬¹ý 10 ÄêµÄ·á¸»¹¤×÷¾Ñé¡£²»¹ý£¬Ö±µ½½ü¼¸Ä꣬ÎҲŶÔ×Ô¼ºµÄ¹¤×÷Ô½À´Ô½ÓÐÐÅÐÄ¡£¼´Ê¹ÏÖÔÚ£¬ÎÒ»¹ÊDz»¶Ï»³ÒÉ×Ô¼º¡£¹Ø¼üÊÇÕâÖָоõ²»»áÏûʧ£¬ËùÒÔÊÔןöÂÔËü£¬¼ÌÐøÉ¼¼Êõ֪ʶ£¬¼ÌÐø»ýÀÛ¾Ñé¡£
ÎÒÔÙ´ÎÌáÐÑһϣ¬ÕâЩֻÊÇÌá¸ßÄã¼¼Äܵļ¸µã½¨Òé¡£×îÖÕ£¬ÄãÐèҪŪÇå³þ×Ô¼ºÊʺϵķ½Ê½ÊÇʲô¡£
¹ýÈ¥Ðí¶àÄ꣬ÎÒÑöĽ¹ýÐí¶àÈË£¬²¢ÇÒͨ¹ýËûÃǹØעм¼Êõ¡£ÎÒÏàÐÅËûÃÇÊÇÕýÈ·µÄ£¬²¢ÇÒ¶ÔËûÃÇËù×öµÄÊÂÇéÉîÈëÑо¿£¬Òò´Ëѧµ½ºÜ¶à¡£
ÕâЩÈËÍùÍù·Ç³£¸ßЧ¡¢²Å»ªºáÒ磬²¢ÇÒÄܹÄÎèÈËÐÄ¡£ÄãÒªÏ뾡°ì·¨ÕÒµ½ËûÃÇ£¬ÈÃËûÃǼ¤ÀøºÍÖ¸µ¼Äã¡£
²»¹ý£¬±ð³ç°ÝËûÃÇ¡£Èç¹û½ö¿´ twitter ÉϵÄÌù×Ó£¬Äã»á¾õµÃËûÃÇÒ£²»¿É¼°¡£µ«ÊÇ£¬Èç¹û×ß½üËûÃǵÄÕæʵ¹¤×÷ÖУ¬Äã»á·¢ÏÖ×Ô¼ºÓëËûÃÇÏà±Èûʲô²»Í¬¡£Ö»²»¹ýÔÚµ½´¦ÃþË÷³¢ÊÔ¶øÒÑ£¬ÎÒÃǶ¼Ö»ÊÇÔÚ½øÐÐÊÔÑé¡£
×îºó£¬²»ÒªÃ¤Ä¿µØÏàÐÅËûÃÇ¡£Èç¹ûÄãÓв»Í¬Òâ¼û£¬¾ÍÇëËûÃDzÎÓë½øÀ´£¬²¢´Ó¹ÛµãÅöײµÄ¹ý³ÌÖм³È¡¾Ñé¡£
ÎÒµÄһЩ×îÓгÉЧµÄ¶Ô»°¾ÍÊÇÕâÑù·¢ÉúµÄ¡£Ôø¾£¬ÎÒµÄ Emacs ÅäÖÃÒ»ÍÅÔã¡£²»ÖªµÀΪʲô£¬ÎÒµÄ OCaml autocompletion ²»ÄÜÓÃÁË£¨Ëü»µÁËÒ»¸ö¶àÔ£©¡£ÎÒûÓÐ×Ô¶¯»¯µÄ¶«Î÷£¬ÓÐʱ±ØÐëÔÚ shell ÀúÊ·ÖÐÑ°ÕÒËùÐèµÄÃüÁΪÐÞ¸´ÎÊÌ⣬ÎÒÒ»¿ªÊ¼Ð´ ugliest ´úÂë¡£ÎÒ½«¶«Î÷д³ÉÈ«¾Ö¶ÔÏó£¬Ö±µ½×îºó²ÅÃ÷°×ÎÒµ½µ××öÁËʲô¡£
×îÓоÑéµÄ³ÌÐòÔ±Ò»Ö±ÔÚÆƽâºÍ×êÑУ»×îÖØÒªµÄÊÇ£¬ÄãÄÜÍê³ÉÈÎÎñ£¬´ï³ÉÄ¿±ê¡£
³ÌÐòԱС°×ÍùÍùÈÏΪËûÃǵŤ×÷¼ÛÖµ²»´ó£¬ÒòΪËûÃÇÊÇÐÂÊÖ¡£»òÕßÄã¿ÉÄÜÊÇÒ»ÃûÓоÑéµÄ³ÌÐòÔ±£¬µ«ÊÇÔÚÒ»¸öÐÂÁìÓò¹¤×÷£¬Õâ»áÈÃÄã¸Ðµ½²»Ë¬¡£µ«ÔÚÎÒ¿´À´£¬×îºÃµÄÏë·¨ÍùÍùÀ´×ÔÓÚгÌÐòÔ±£¬ËûÃÇ¿ÉÒÔ¿´µ½ÏÖÓм¼ÊõµÄ¸Ä½øµã£¬¶ø˼ά¹Ì»¯µÄÈËÈ´¿´²»¼û¡£
²»¹ÜÔõÑù£¬ÄãµÄ¹¤×÷¶¼ÊÇÖµµÃµÄ¡£×µÄÇé¿öÊÇ£¬¼´Ê¹ÄãµÄÏ뷨ûÓгɹ¦£¬ÉçÇøÒ²¿ÉÒÔ´ÓÖÐÁ˽⵽ΪʲôÕâÖÖ·½·¨Ðв»Í¨¡£
£¨¸øÉçÇøµÄÒ»¸öÌáʾ£ºÕâҪȡ¾öÓÚÎÒÃÇÊÇÔõô×öµÄ£¬²¢ÈÃÐÂÈ˺ÜÈÝÒ×ÈÚÈë½øÀ´¡££©
ÿÌ춼»áÓÐм¼ÊõÎÊÊÀ£¬Èç¹ûÄãÒ»ÍíÉϲ»Åö¼¼Êõ£¬¿ÉÄܾͻá¸Ð¾õ¸ú²»ÉÏÕâ¸öÊÀ½ç¡£Õâ²»ÊÇÕæµÄ¡£ÊÂʵÉÏ£¬Èç¹û¾³£·ÅÏÂÊÖÍ·¹¤×÷£¬Äã»á×öµÃ¸üºÃ£¬ÒòΪÄã»áÓÐÐÂÏë·¨¡£
ÎÒ·¢ÏÖ£¬µ±²»¹¤×÷µÄʱºò£¬ÎÒ×Ü»áÓÐÐÂÏë·¨²»¶Ï²úÉú¡£
ʵ¼ÊÉÏ£¬ÍøÂçÉÏÿÌì·¢²¼µÄÄÚÈÝ´ó¶àÊÇ¡°ÐÂƿװ¾É¾Æ¡±£¬ÕæÕý¾ßÓиïÃüÐԵļ¼Êõÿ¸ô¼¸Äê²Å»á³öÏÖÒ»´Î¡£¹ØÓÚÕâ¸öÎÊÌ⣬Äã¿ÉÒÔ¿´¿´Õâ¸öÊÓƵ¡ª¡ª Hammock Driven Development ¡£
https://www.youtube.com/watch?v=f84n5oFoZBc
¿Í¹ÛÉÏ˵£¬ÄãÄÜÈ¡µÃ¸ü¿ì½ø²½µÄÖ÷Òª·½·¨Ö®Ò»ÊǺöÂÔÄÇЩ²¢²»ÄÜÌá¸ß¼¼Äܵġ°fluff¡±¡£»»¾ä»°Ëµ£¬Òª¡°´ÏÃ÷µÄÀûÓÃʱ¼ä¡±¡£Ò»ÌìµÄʱ¼äÓÐÏÞ£¬ÄãÐèÒª½«Ê±¼ä»¨ÔÚ×êÑиüÉî²ã´ÎµÄÊÂÇéÉÏ¡£Ëæ×Åʱ¼äµÄ·¢Õ¹£¬Äã»á·¢ÏÖ×Ô¼ºÓкܴó½ø²½¡£
ÄÇʲôÊÇ¡°fluff¡±£¿ÕâÈ¡¾öÓÚÄã×ÔÉíµÄ¾ßÌåÇé¿ö¡£µ«ÊÇ£¬ÎÒ¿ÉÒÔ¸øÄãһЩÎÒÈÏΪÊÇ¡°fluff" µÄÀý×Ó£ºÓïÑÔÓï·¨¡¢¿â API ºÍÅäÖù¹½¨¹¤¾ß¡£ÀýÈ磬ѧϰһ¸öÐ嵀 ES7 JS Óï·¨²¢²»»áÈÃÄã³ÉΪһ¸ö¸üºÃµÄ³ÌÐòÔ±£¬Õâ¾ÍÏñѧϰ±àÒëÆ÷ÊÇÈçºÎ¹¤×÷µÄÒ»Ñù¡£Í¬Ñù£¬²ÉÓÃÒ»¸öʵÏÖÏàͬÏ뷨ȴʹÓÃРAPI µÄпâҲû¶à´óÒâÒå¡£µ±È»£¬ÕâЩÊÂÇéºÜÖØÒª£¬µ«ÎÒ½¨ÒéÄ㻨¸ü¶àʱ¼äѧϰ¸üÉî²ã´ÎµÄ¸ÅÄî¡£ÕâЩ¸ÅÄî¿ÉÒÔÈÃÄãÖÕÉúÊÜÒæ·Ëdz¡£
ÎÒÓиöÎÊÌâÏëÎÊÄ㣺ÄãÊÇ·ñ»¨·Ñ´ó°Ñʱ¼äÈôúÂë¿´ÆðÀ´ºÜƯÁÁ£¿Èç¹ûÊÇÕâÑù£¬ÎÒ½¨ÒéÄ㲻Ҫ̫¹Ø×¢ÕâÑùµÄÊ¡£²»¹ÜÔõÑù£¬Ëæ×Åʱ¼ä·¢Õ¹£¬ÄãµÄ´úÂë»áÓкܶà¸Ä±ä¡£
×îºÃ½«×¢ÒâÁ¦¼¯ÖÐÔÚÄãÊÔͼ½â¾öµÄºËÐÄÎÊÌâÉÏ£¬±ÈÈç×Ðϸ¿¼ÂÇÒ»ÏÂÄãµÄ³éÏó²ã¡£ÔÚÍê³ÉËùÓÐÕâЩ¹¤×÷ºó£¬Äã¿ÉÒÔ»¨µãʱ¼äÀ´¸Ä½ø´úÂë¡£ÕâÒ²ÊÊÓÃÓÚ DRY ÔÔò£¨Don¡¯t Repeat Yourself£¬²»ÒªÐ´Öظ´µÄ´úÂ룩¡£²»¹ý±ðÄÇôµ£ÐÄ£¬ËæÒ⸴ÖÆÕ³Ìù°É¡£
Èç¹ûÄãÓÐÒ»¸öÐÂÏë·¨£¬¾Í»á¸Ðµ½ºÜÐË·Ü£¬Çé²»×Ô½ûµØÏë×øÏÂÀ´ÂíÉÏÐж¯¡£µ«ÊÇ£¬Äã²»Ó¦¸ÃÕâÑù×ö£¬ÄãÓ¦¸ÃÏÈ×öһЩ´ÖÂÔÑо¿£¬Á˽âÇ°ÈËÊÇÈçºÎ½â¾öËüµÄ¡£Åöµ½ÀàËÆÇé¿öʱ£¬ÏÈ»¨¼¸Ììʱ¼äÑо¿Ò»Ï£¬×îÖջ᳹µ×¸Ä±äÎÒÃǽâ¾öÎÊÌâµÄ·½Ê½¡£
ѧ»áÔĶÁѧÊõÂÛÎÄÊÇÒ»ÏîºÜ±¦¹óµÄ¼¼ÄÜ¡£ÎÒ¶Ô denotational¡¢operational µÈÓïÒåÒ»ÎÞËùÖª£¬ËùÒÔÎÒ¿´²»¶®ºÜ¶àÂÛÎÄ¡£µ«ÊÇ£¬ÓкܶàÂÛÎÄʹÓôúÂë¶ø²»ÊÇÊýѧ¹«Ê½À´²ûÊöÎÊÌ⣬Òò´Ë²¢²»»áÌ«ÄѶÁ¡£¹ýÈ¥ 30 ÄêÀ´£¬ÓдóÁ¿µÄ֪ʶͨ¹ýÂÛÎÄ·¢±í³öÀ´¡£Èç¹ûÄãÉÆÓÚ»ñÈ¡ÕâЩÐÅÏ¢£¬ÄãºÜ¿ì¾Í»á³ÉΪ˼ÏëÁìÐä¡£
Prettier ÊÇÒ»¸ö¼ÑÀý¡£ÎÒÖªµÀ×Ô¼ºÏëÒªµÄÊÇʲô£¬µ«²»ÖªµÀÈçºÎʵÏÖËü¡£×ö¹ýһЩÑо¿ºó£¬ÎÒ·¢ÏÖÕâƪÂÛÎÄ£¬ÔÙ¹ý¼¸Ììºó£¬ÎÒ¾ÍÖªµÀÔõô×öÁË¡£ÎÒÔÚÒ»ÖÜÄھͰÑÖ÷Ì幤×÷È«Íê³ÉÁË¡£Èç¹ûºöÂÔ±ðÈ˵ÄÑо¿³É¹û£¬ÄÇÎÒ¾ÍÒª»¨¸ü³¤Ê±¼ä¡£
http://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf
Èç¹ûÄãÏëÑ°ÕÒÂÛÎĵĻ°£¬GitHub ¿â Papers We Love ÊÇÒ»¸öÍƼö¡£
https://github.com/papers-we-love/papers-we-love
¾Ñé±ÈÈκζ«Î÷¶¼±¦¹ó¡£²»ÊÇÿ¸öÈ˶¼Óлú»áÈ¥³¢ÊÔ£¬µ«Èç¹ûÓÐʱ¼ä£¬Äã¿ÉÒÔÊÔ×ÅÈ¥×öһЩ´óÏîÄ¿¡£ÄãÉõÖÁ²»ÐèҪȥÍê³ÉËüÃÇ¡£½ö½öÊdz¢ÊÔдһ¸ö±àÒëÆ÷Ö®ÀàµÄ¶«Î÷£¬Õâ¾ÍÄÜÔÚ¿ªÊ¼¼¸ÖܽÌÄãºÜ¶à¶«Î÷¡£
˵ʵ»°£¬ÎÒºÜÌÖÑáÄÇÖÖÎÒ²»ÖªµÀÈçºÎ½â¾ö¸´ÔÓÎÊÌâµÄ¸Ð¾õ¡£ÕâÈÃÈ˺ÜÍ´¿à¡£ÔÚ½Ó½ü½â¾ö·½°¸Ç°£¬ÎÒ±ØÐë×ö´óÁ¿µÄÑо¿ºÍѧϰ¡£ÓйýÕâÑùµÄÍ´¿à¾Àúºó£¬ÎÒ×ÜÊÇ¿ÉÒԵõ½ÌáÉý£¬³ÉΪ¸üÓÅÐãµÄ³ÌÐòÔ±¡£
´ÓѧϰһÃÅÐÂÓïÑÔ¿ªÊ¼¡£ÕâÊÇ°ïÄã°ÚÍѵ±Ç°Ï°¹ßºÍ´ÓнǶȿ´ÎÊÌâµÄ×îÓÐЧ·½·¨¡£
¶ÔÎÒÀ´Ëµ£¬µ±ÎÒ»¹ÊÇÒ»¸öÄêÇáµÄ³ÌÐòԱʱ£¬ÎÒ×öµÄ×îºÃÊÂÇé¾ÍÊÇѧϰ Scheme ¡£ÕâÊÇÒ»Ãŷdz£¼òµ¥µÄÓïÑÔ£¬Ëü»áÇ¿ÆÈÄãÒÔº¯ÊýʽµÄ·½Ê½Íê³ÉËùÓÐÊÂÇ飬²¢ÕæÕýÁ˽â´úÂ빤×÷µÄ»ù±¾ÔÀí¡£ÎÒÔÚ Scheme ÉÏ»¨·ÑÊýÄêʱ¼ä£¬Ö±µ½½ñÌìÈÔÈ»ÊÜÒæ¡£²¢ÇÒ£¬ÎÒ¶Ô´úÂëµÄ¿´·¨·¢Éú¸ù±¾ÐԸı䡣
ÎÒÍƼö×ö¼¸¼þÊ£¬ÕâЩ¶¼ÎҵijÌÐòÔ±ÉúÑIJúÉúÖØ´óÓ°Ïì¡£²¢ÇÒ£¬ËûÃÇÖеÄÐí¶àÊÂÖ±µ½ÏÖÔÚ»¹ÒÔ΢ÃîµÄ·½Ê½Ó°ÏìÎÒ£¬°ïÎÒ¶ÔÐÂÏë·¨½øÐзÖÎö¡£ÎªÁ˳ÉΪһÃûÓÅÐãµÄ³ÌÐòÔ±£¬ÄãÎÞÐè×öÍêÈ«ÏàͬµÄÊ£¬Äã¿ÉÒÔѧϰºÜ¶àÆäËû¶«Î÷Ìá¸ß×Ô¼º¡£
ѧϰ C ÓïÑÔ¡ª¡ªÈç¹ûÄãûѧ¹ý£¬Ñ§Ò»Ð©»ù±¾µÄ¾Í¹»ÁË¡£ÊÔ×ÅÈ¥ÏëÏ룬Ϊʲôÿ¸öÈ˶¼±§Ô¹Ëü£¬Õâ¼þÊ·dz£ÓмÛÖµ¡£
дһ¸ö±àÒëÆ÷¡ª¡ªÕâ¿ÉÄÜÈÃÄãºÜ²»Ë¬£¬¿ÉÒÔ¿´¿´ super tiny compiler ÏîÄ¿¡£
ѧϰºê¡ª¡ªÇë²Î¿¼ Scheme¡¢Lisp »ò Clojure£¨½Å±¾£©¡£ºê»áÕæÕý¸Ä±äÄã¶Ô´úÂëµÄ¿´·¨¡£
SICP¡ª¡ª SICP ÊÇÒ»±¾¾ÉÊ飬ÎÒÈÏΪֱµ½½ñÌìÈÔÈ»ºÜÓмÛÖµ£¨ÓÐЩÈË»òÐí²»ÔÞ³ÉÕâ¸ö¹Ûµã£©¡£Ö»ÒªÄãÓкÜÉٵıà³Ì֪ʶ£¬Ëü¾Í¿ÉÒÔÒýµ¼ÄãһֱʵÏÖ a meta-circular evaluator ºÍ compiler¡£ÁíÒ»±¾£¬ÎÒºÜϲ»¶²¢ÔÚ±àÒëÆ÷·½Ãæ×ö¹ýÉîÈëÑо¿µÄÊéÊÇ Lisp In Small Pieces ¡£
Á˽â Continuations£ºContinuations ÊÇÒ»Öֵͼ¶µÄ¿ØÖÆÁ÷»úÖÆ¡£Scheme ÊÇΨһʵÏÖËüµÄÓïÑÔ¡£ËäÈ»ÄãÓÀÔ¶²»»áÔÚÉú²ú»·¾³ÖÐʹÓÃËüÃÇ£¬µ«ËüÃÇ»á¸Ä±äÄã¶Ô¿ØÖÆÁ÷µÄ¿´·¨¡£ÎÒд¹ýһƪÊÔ׎âÊÍËüÃǵIJ©ÎÄ¡£
Èç¹ûÓпÉÄܵĻ°£¬ÊÔ×ÅʹÓÃÒ»ÖÖÐÂÓïÑÔ£º²»¹ÜÄã×öʲô£¬ÄãÕæµÄÓ¦¸Ã̽Ë÷ÆäËûÓïÑÔ¡£ÎÒÍƼöÒÔÏÂÈκÎÒ»¸ö£ºClojure¡¢Rust¡¢Elm¡¢OCaml/Reason¡¢Go »ò Scheme ¶¼¿ÉÒÔ¡£ËüÃǶ¼ÓÐ×Ô¼ºµÄÌص㣬¿ÉÒÔÇýʹÄãѧϰһÖÖеÄ˼ά·½Ê½¡£
ÁìȡרÊô 10ÔªÎÞÃż÷ȯ
˽Ïí×îР¼¼Êõ¸É»õ