一起来写个编译器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
microcosm
V2EX    奇思妙想

一起来写个编译器

  •  
  •   microcosm 2013-04-13 18:18:24 +08:00 6151 次点击
    这是一个创建于 4566 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://www.v2ex.com/t/65800#reply0
    上面是我的状况,我学过一阵编程,但是没有我想的那样高效,甚至就是什么也没学到,我想到如果能有一群人一起学习,相互监督,相互交流,发表写作进度,这样会提高我们的学习热情,因为写的代码有很大一部分是给别人欣赏的,我选择Scheme语言,想按照SICP所说的实现一个编译器,就这样,如果你也刚好想学习编程语言,刚好你也喜欢Scheme,我弄了一个豆瓣小组,我们一起学习
    http://www.douban.com/group/468499/
    25 条回复    1970-01-01 08:00:00 +08:00
    yuelang85
        1
    yuelang85  
       2013-04-13 19:01:17 +08:00 via Android
    想加入。不过不了解scheme,本人性格纠结更希望从原始的lisp开始
    microcosm
        2
    microcosm  
    OP
       2013-04-13 19:13:26 +08:00
    虽然我不太了解Lisp,不过最原始的Lisp不知道你还能不能找到,Scheme是最简洁的
    reusFork
        3
    reusFork  
       2013-04-13 19:45:02 +08:00
    叶公好龙。不知道你撸管是不是也需要一群人互相监督互相交流互相欣赏才能有热情才能高潮?
    写程序这个活动本身不能给你乐趣,而是需要别人的欣赏,那还是放弃吧。就算不想放弃,现在也不应该以实现编译器为目标。
    看你喜欢骂自己而又骂得不够狠毒,我来帮帮你
    fly2never
        4
    fly2never  
       2013-04-13 19:51:56 +08:00
    楼上太恶毒了吧 楼主并无恶意
    yuelang85
        5
    yuelang85  
       2013-04-13 19:52:59 +08:00 via Android
    @microcosm common lisp
    nsa
        6
    nsa  
       2013-04-13 20:22:59 +08:00   1
    虽然不太懂,好强大的样子额,顶顶楼主,写代码可不是给人欣赏的;
    还有看楼主目前的样子是没到找到甚么方向额,不是贬低,的确是完全没有一点头绪的;
    如果楼主想做点事情,不妨列个进度表,比如你先想想弄个code generator要花多长时间,具体有哪些工作和其它值得考虑的东西,尽量要简洁,否者楼上的各位是没那闲功夫去“欣赏”的。。。
    yuelang85
        7
    yuelang85  
       2013-04-13 21:29:25 +08:00
    自己写的代码就是给人欣赏的,如果不抱着这样的心态,只能写出烂代码。自己写的代码就像自己的孩子,自然希望她是漂亮的,优秀的,为之骄傲的,希望他人欣赏的。
    microcosm
        8
    microcosm  
    OP
       2013-04-13 21:37:47 +08:00
    @reusFork 啊啊啊,重口味,我是不太懂,我是说一起学习,写自己的,同时阅读别人,有什么错,另外完整我写不错来,可以实现个别功能,像实现个基本运算总行吧
    bhuztez
        9
    bhuztez  
       2013-04-13 21:40:27 +08:00   1
    我正在写一个很烂的编译器,刚能勉强运行起来,求喷

    http://xiazheteng.github.io/orz/
    microcosm
        10
    microcosm  
    OP
       2013-04-13 21:44:58 +08:00
    另外V2ex有这么多做网站的,为什么没有人做个类似“一起学一种新技能”功能的网站,提供相互交流的平台,V2ex上面,但是很多人曾经学过某种东西,但很多细节问题不可能记得
    shiweifu
        11
    shiweifu  
       2013-04-13 21:54:48 +08:00
    @microcosm
    除了中小学,从来没有过「一起学一种技能」的体验……
    所谓的「交流」往往就成了是除了灌水就是不经思考的问题
    xiaoye5200
        12
    xiaoye5200  
       2013-04-15 11:45:49 +08:00
    @bhuztez 哈哈,还是lua..好亲切
    releasa
        13
    releasa  
       2013-04-15 18:03:33 +08:00
    各位都号生猛。。都要写编译器。
    yuelang85
        14
    yuelang85 nbsp;
       2013-04-15 18:35:32 +08:00
    @releasa 没说编译优化。。。编译器不是cs基础课吗?
    qtwhat
        15
    qtwhat  
       2013-04-21 02:08:03 +08:00   1
    很好的建议,我最近在看 the little schemer,要说我叶公好龙也罢,我就是觉得这个语言与众不同,我就是想装装,咋地?

    @reusFork 建议你自慰一辈子。做爱这种事情,你一个人就可以了,干嘛找对象?
    coderliss
        16
    coderliss  
       2013-04-21 11:19:48 +08:00
    一群男人居然聚在一起讨论这问题。。。太重味了,受不鸟了~
    linxihao
        17
    linxihao  
       2013-04-21 12:13:18 +08:00
    @qtwhat +1
    reusFork
        18
    reusFork  
       2013-04-21 20:29:43 +08:00
    @qtwhat 我说楼主叶公好龙,是因为他没有发自内心的对编程的热情,甚至“记不起为什么学这个”,,但又说有兴趣。我可不会因为一个人看the little scheme而说他叶公好龙,更不会认为他“装”。我对他的评价并不是因为语言。
    两个人做爱当然比一个人自慰要愉悦得多,但是,我不会群交,更不会公然约炮。
    qtwhat
        19
    qtwhat  
       2013-04-22 10:18:09 +08:00   1
    @reusFork 但其实呢,这个世界的大多数活动(包括做爱和编程),人都是本能的抗拒孤独的。而人又是本能的带着惰性的。为什么说考研堪比高考?后者其实花费时间更长,而前者,其实更累,因为经常是一个人自己,或者些许几个志同道合者,在自习室独自复习。

    其他的学习也类似,几个人一起讨论是再正常不过的事情,也是好事情。为什么现在有那么多在线程序学习?以及很早就有的 Project Euler?这里面当然包含了,怎么去克服人的惰性的问题。

    我觉得楼主这个想法实在再好不过。

    我暂且认为你现在心智足够强大,不需要被人的监督也可以高效的学习。但是为何摒弃并嘲笑你自己也经历过的所谓的「群交」呢?你所接受的初中教育是不是?高中教育是不是?
    reusFork
        20
    reusFork  
       2013-04-22 12:27:33 +08:00   1
    @qtwhat 其实不需要心智强大,而只需要有足够的兴趣,足够的热情,这是发自内部的动力,而不是来自外部,所以学习时不需要其他人的参与,更不需要监督。
    不是所有活动都可能让人产生此类动力,比如应试就很难,吸引应考生的是通过考试后的得益,而不是所学习的内容。反而正因为所学的内容如此枯燥,才让人不得不寻找外部的动力和支持。编程这个活动跟应试不同,本身就可以产生纯粹的乐趣。
    如果你从来没有产生过此类动力,从来没有体验过真正的发自内心的热情所带来的生产力,那真的挺悲哀的。
    另外,课堂教学这种无比落后的学习方式,早就该摒弃了。
    qtwhat
        21
    qtwhat  
       2013-04-23 01:51:34 +08:00   2
    @reusFork 还是那句话。

    所有的兴趣来自于:

    - 你可以轻而易举做的比别人好,你可以很快积累优势;(彰显你的与众不同)

    - 你已经有优势,你可以比别人好;(彰显你的与众不同)

    - 你做给你欣赏、你爱的人看;(彰显你的与众不同)

    我的观点是:人的任何一个非本能的行为,都是社会性质的。通俗的讲,都是「做给被人看」。

    而你的观点还是停留在兴趣上,我已经解释了兴趣来源于什么。你可以比照你所谓的兴趣,总可以放入上面的其中一个分类。

    我想学 scheme,因为我崇拜王垠,我想与王垠一样与众不同;我想了解这门语言,这门与众不同的语言,以让自己与众不同;我想了解这门「美」的语言,从而以彰显自己的审美,从而让自己与总不同;你看,我的动机,归根到底,与众不同。

    而为什么我们有时候缺乏兴趣?是因为缺乏一个源动力。而你呢,已经进入一个正循环。总能找到方式彰显自己的不同(姑且这么说)。

    而还有那么多人,像楼主,像我,找到了点子,让自己与众不同,但是因为惰性而失去执行力。于是,我们要互相给存在感,互相承认对方。承认对方和自己的与众不同。

    我们只是方式不一样而已。我们本质没有什么区别。
    reusFork
        22
    reusFork  
       2013-04-23 11:23:18 +08:00   2
    @qtwhat 你列举的这些是你自己的兴趣来源,而不是我的。我会因为一个语言本身的美,而产生学习探索它的兴趣,而不是因为崇拜谁、想与众不同、想彰显自己。你的分类只适合于自己而已。
    如果把”彰显自己的与众不同“作为动力,那是很脆弱的。如果王垠有一天说scheme坏话,你就会失去动力,如果学了很久发现别人不像你看王垠那样看你,你会失去动力。
    这种动力就是外部动力,很容易因为别人的改变而受到影响。内部的动力就不一样,不论别人怎么看待某个语言,你就是想要了解它探索它,然后发现更多的妙处,这样才能进入正循环。

    学院派语言研究者之所以推崇scheme,是因为他们更看重语义而不是语法,而scheme的语法足够简单,不会带来什么拖累,所以他们喜欢用。但非研究者的开发者会看重语法,表达同样的语义,简洁的语言会得到更多的青睐。所以如果不是做程序语言方面的研究,没必要把scheme当神来拜。

    王垠的技能点是在语言设计和类型系统这些,可以从这些书入门:
    http://book.douban.com/subject/10802357/
    http://book.douban.com/subject/1318672/
    qtwhat
        23
    qtwhat  
       2013-04-23 19:48:59 +08:00
    @reusFork 不不。不是我。是全世界。也当然包括你。

    是鸣人,希望得到大家的认可。

    是星矢,为了拯救雅典娜。以证明自己。

    是林平之,为了复仇。以证明自己。

    是你我,为了这世间的名利。以证明自己。

    这是我们来到世间的目的。

    甚至包括基督徒,他们向上帝证明自己。

    人活着的本质目的没有区别。

    当然,这或许就是我们的分歧点了。

    ---

    人最大的差别在于,心智的成熟度。


    心智成熟如你,如得道高僧、如杨过,可以放得下,可以隐忍。

    心智不成熟如楼主和我,需要成长过程的相互鼓励。

    (说来见笑,我没跟楼主说过一句话。我加入了他创办的小组,但是我还没真正开始学习,而忙于手头上的事,一旦空闲下来,便奖励自己去放纵,从没想过要花时间看那只看了一章的 little schemer)

    所以这个问题绝对不是技术上的。

    ps:我崇拜王垠,是因为他能够坚持自己是对的,并用行动证明给世人看他是对的,但他同时又能够推翻自己。仅此而已。我只在他擅长的领域相信他。在他擅长的领域,他的认可才有意义。

    ps:我是因为这个人的文章而去看 TLS,http://book.douban.com/review/1185328/

    ps:谢谢你推荐的书 :]
    perrywky
        24
    perrywky  
       2013-04-23 20:49:23 +08:00
    clowwindy
        25
    clowwindy  
       2013-04-23 21:13:30 +08:00
    前阵子在 Coursera 上学 Compilers,结果因为最近老加班 project 做烂尾了,还剩代码生成做不完了……不过前三部分还是很有意思的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1418 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 16:55 PVG 00:55 LAX 09:55 JFK 12:55
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86