[{"data":1,"prerenderedAt":405},["ShallowReactive",2],{"project-13406081":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":41,"post_text":44,"what":45,"said":89,"maker_in_thread":149,"shape":159,"grid":163,"attempts":365,"same_week":366,"maker_shows":42,"maker_hidden":397,"reader_version":398,"card":399},"13406081","Crafting Interpreters","A handbook for making programming languages","title","Show HN: Crafting Interpreters – A handbook for making programming languages","http:\u002F\u002Fwww.craftinginterpreters.com\u002F","craftinginterpreters.com","munificent",1484510838,2017,423,75,29,2242,2,"legend","learning_science","programming language book","other",[24,25,26,27,28],"interpreters","programming languages","compilers","handbook","language implementation","loved",0.516,{"positive":32,"neutral":33,"mixed":34,"critical":35},8,6,1,0,15,{"docs":38,"idea":39,"design":40},{"positive":35,"critical":35},{"positive":34,"critical":35},{"positive":35,"critical":35},[35,35,35,42,35,35,42,43,35,35,42,35,35,35,43,43,35,43,35,43,35,35,35,42,43,35,35,35,35,35,35,35,35,35,35,42,35,35,42,43],3,5,null,{"problem":46,"audience":52,"pricing":63,"motivation":44,"time_to_build":44,"stack":75,"openness":86,"stage":87,"team_size":88},{"value":47,"source":48,"evidence":49},"Teaches how to make programming languages and interpreters.","inferred",[50],{"id":51},"post",{"value":53,"source":48,"evidence":54},"Programmers learning how to build interpreters and languages.",[55,59],{"id":56,"by":57,"text":58},"13406538","trishume","A fantastic book covering similar things that you can read right now is https:\u002F\u002Fpragprog.com\u002Fbook\u002Ftpdsl\u002Flanguage-implementation-patterns. It's the book that got me into…",{"id":60,"by":61,"text":62},"13409957","Philomath","That's so cool! Learning to make a programming language is in my life's todo list, just as doing my own (super simple) operating system. Thank's for contributing with a free…",{"value":64,"source":65,"evidence":66},"Free to read online, code on GitHub.","commenter",[67,71],{"id":68,"by":69,"text":70},"13407466","mwcampbell","Looking forward to the chapters about the C interpreter. Meanwhile, it looks like both interpreters are available to study now in the Git repo. [1] [1]:…",{"id":72,"by":73,"text":74},"13412796","ftomassetti","One think I find lacking in books about building languages is a focus on tool. I am working on one (available for 0$ on leanpub: \"How to create pragmatic, lightweight languages\"…",[76],{"value":77,"source":78,"evidence":79},"C","maker",[80,83],{"id":81,"by":11,"text":82},"13407789","> See also Lua's upvalues for a way to optimize closure variable access Yes! In fact, that's how the C version of the interpreter in my book implements closures. It's pretty…",{"id":84,"by":11,"text":85},"13407796","Yes! The code for the whole book is done already and sliced into chapters. I had to do that first before I started putting things online. I didn't want to paint myself into a…","open_source","beta","solo",{"praise":90,"objections":106,"requests":114,"questions":125,"alternatives":130},[91],{"value":92,"source":65,"evidence":93},"Readers find it a welcome, approachable resource on language implementation.",[94,98,102],{"id":95,"by":96,"text":97},"13406872","kovrik","Thank you so much for the book, please, continue! I am currently working on Scheme R5RS implementation in Java. It is a hobby project, but I'm really enjoying it. It is somewhat…",{"id":99,"by":100,"text":101},"13411003","bogomipz","This looks great. Thanks for sharing. Looking forward to updates.",{"id":103,"by":104,"text":105},"13410178","szabot","I clicked the link without looking at the poster, and by the end of the \"What’s the Catch?\" paragraph I was thinking to myself that this really seems like something written by…",[107],{"value":108,"source":65,"evidence":109},"The sign-up box reappears on every page until closed.",[110],{"id":111,"by":112,"text":113},"13408807","plttn","Just from reading the first few pages of the book, I'm already a fan. However my one tiny complaint is that the sign-up box is on every page, and even after I've signed up, it…",[115],{"value":116,"source":65,"evidence":117},"Cover type checkers and statically typed languages.",[118,122],{"id":119,"by":120,"text":121},"13406930","jnbiche","Another great-looking book on making dynamic languages. There's been some good ones recently, and this one looks like another good one covering how to make a basic, interpreted…",{"id":123,"by":11,"text":124},"13407802","I did think about trying to sneak a type checker in here too, but it's just too much for a first book on languages and interpreters. If you're looking for a book on statically…",[126],{"value":127,"source":65,"evidence":128},"Advice on optimization techniques for interpreters.",[129],{"id":95,"by":96,"text":97},[131,135,142],{"value":132,"source":65,"evidence":133},"Language Implementation Patterns",[134],{"id":56,"by":57,"text":58},{"value":136,"source":65,"evidence":137},"Writing an Interpreter in Go",[138],{"id":139,"by":140,"text":141},"13408951","codebeaker","Seems to be a hot topic, a friend and colleague published this in December 2016 and I can thoroughly recommend it (Uses Go as an implementation language): -…",{"value":143,"source":65,"evidence":144},"Beautiful Racket",[145],{"id":146,"by":147,"text":148},"13407129","GavinMcG","Really looking forward to this! A much less involved language-building tutorial that's available now is Beautiful Racket.[0] Racket is a Scheme, but it's also specially outfitted…",{"comments":150,"answered":33,"key":151},11,[152,155,156],{"id":153,"text":154},"13411774","Yeah, I've talked to Thorsten over a email a little. I'm excited about his book too, and I hope it does really well. Go is a cool choice for a language book. It's low-level…",{"id":84,"text":85},{"id":157,"text":158},"13411781","Sorry, yeah. Those are the markers that the build script uses to insert the code snippets in the right place in each chapter. I know it makes the code hard to read. I should…",{"commenters":160,"max_depth":33,"maker_replies":150,"first_comment_mins":161,"lifespan_hours":162},52,94,67,[164,166,170,171,174,177,178,180,182,185,188,191,195,197,201,203,205,208,209,212,214,216,219,222,225,228,231,233,235,237,240,242,244,247,249,252,257,258,260,264,268,272,274,277,279,282,284,288,290,293,295,298,301,304,307,310,313,316,319,321,323,326,328,332,336,338,340,343,346,349,352,354,357,359,361],[56,35,35,165,57,35],"other\u002Fneutral\u002Fnone",[167,35,35,168,169,35],"13406970","commenter\u002Fneutral\u002Fnone","agumonkey",[139,34,35,165,140,35],[172,34,35,165,173,35],"13409107","jalfresi",[175,34,35,165,176,35],"13409275","bruth",[153,34,35,165,11,34],[68,18,42,179,69,35],"project\u002Fneutral\u002Fnone",[84,18,35,181,11,34],"maker\u002Fneutral\u002Fnone",[183,18,35,165,184,35],"13407869","zengid",[186,18,35,165,187,35],"13418201","sn9",[189,18,35,190,184,35],"13426562","other\u002Fpositive\u002Fnone",[192,18,42,193,194,35],"13408856","project\u002Fneutral\u002Fdocs","throwathrowaway",[157,18,35,196,11,34],"maker\u002Fneutral\u002Fdocs",[198,42,43,199,200,35],"13406632","project\u002Fpositive\u002Fnone","msangi",[95,202,43,199,96,35],4,[204,202,35,165,169,35],"13406997",[206,202,35,165,207,35],"13407286","ioddly",[81,202,35,199,11,34],[210,202,42,179,211,35],"13408750","Flow",[213,202,35,181,11,34],"13411788",[215,202,35,181,11,34],"13407776",[217,202,35,165,218,35],"13408748","spdegabrielle",[220,202,35,165,221,35],"13414293","sitkack",[223,43,35,165,224,35],"13410329","zitterbewegung",[226,43,35,165,227,35],"13410954","wuschel",[229,43,35,165,230,35],"13412125","throwaway7645",[103,33,43,232,104,35],"maker\u002Fpositive\u002Fnone",[234,33,35,181,11,34],"13411789",[72,236,35,168,73,35],7,[238,32,43,199,239,35],"13409159","jonathanstrange",[241,32,35,181,11,34],"13411792",[60,243,43,199,61,35],9,[245,243,35,165,246,35],"13411394","iKlsR",[248,243,35,190,61,35],"13425579",[250,243,35,165,251,35],"13411395","chester195",[253,254,43,255,256,35],"13406800",10,"project\u002Fpositive\u002Fidea","nickpeterson",[146,150,35,165,147,35],[259,150,35,165,147,35],"13410642",[261,262,35,165,263,35],"13412303",12,"whistlerbrk",[265,266,35,165,267,35],"13411916",13,"xrayspec",[269,270,35,165,271,35],"13408287",14,"d0m",[273,270,35,181,11,34],"13408456",[275,270,35,165,276,35],"13408634","kazinator",[111,36,42,278,112,35],"project\u002Fmixed\u002Fdesign",[280,36,35,281,11,34],"13411808","maker\u002Fneutral\u002Fdesign",[99,283,43,199,100,35],16,[285,286,35,165,287,35],"13423689",17,"dman",[119,289,35,165,120,35],18,[291,289,35,165,292,35],"13406984","johnbender",[294,289,35,165,120,35],"13407021",[296,289,35,165,297,35],"13408627","bbcbasic",[299,289,35,165,300,35],"13407150","jasperry",[302,289,35,165,303,35],"13407247","Jweb_Guru",[305,289,35,165,306,35],"13407384","inconclusive",[308,289,35,165,309,35],"13407529","rrradical",[311,289,35,165,312,35],"13407558","evincarofautumn",[314,289,35,165,315,35],"13408247","PeCaN",[317,289,35,165,318,35],"13407542","tekknolagi",[320,289,35,165,200,35],"13408751",[322,289,35,165,318,35],"13413267",[324,289,35,168,325,35],"13407727","KellAG",[327,289,35,168,120,35],"13407861",[329,289,35,330,331,35],"13410394","commenter\u002Fneutral\u002Fdocs","mafribe",[333,289,35,334,335,35],"13412580","other\u002Fneutral\u002Fdocs","dsp1234",[337,289,35,165,331,35],"13425612",[339,289,35,168,331,35],"13410261",[341,289,42,193,342,35],"13407797","harpocrates",[344,289,35,334,345,35],"13407847","AlphaSite",[347,289,35,348,120,35],"13407875","other\u002Fpositive\u002Fdocs",[350,289,35,334,351,35],"13408011","krat0sprakhar",[123,289,35,353,11,34],"maker\u002Fneutral\u002Fidea",[355,289,42,193,356,35],"13408079","mamcx",[358,289,42,193,120,35],"13413931",[360,289,35,334,331,35],"13410289",[362,363,43,232,364,35],"13407367",19,"peetle",[],[367,372,377,382,387,392],{"id":368,"name":369,"points":370,"category":371},"13423629","SkyTorrents",1183,"data",{"id":373,"name":374,"points":375,"category":376},"13412737","JSON Browse",138,"dev_tools",{"id":378,"name":379,"points":380,"category":381},"13384012","Hypergolix",130,"infrastructure",{"id":383,"name":384,"points":385,"category":386},"13390135","Skeletal Animation System",120,"creative",{"id":388,"name":389,"points":390,"category":391},"13421703","ChatSecure iOS v4.0",107,"productivity",{"id":393,"name":394,"points":395,"category":396},"13425089","Kur",103,"ai",false,"v2",{"id":400,"name":5,"line":6,"ai":397,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":401,"top":18,"kw":402,"maker":11,"domain":10,"tier":19,"attempts":35,"strip":403,"url":9,"mix":404,"praise":92,"objection":108,"sub":21},13406081,0.52,[24,25,26,27,28],"0003003500300055050500035000000000030035",[32,33,34,35],1793990953723]