开发一个编程语言,类似 Python ,一定要很高的学历才行吗?初中没毕业行吗?要补充什么知识 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
find456789
V2EX    问与答

开发一个编程语言,类似 Python ,一定要很高的学历才行吗?初中没毕业行吗?要补充什么知识

  •  
  •   find456789 2020 年 10 月 25 日 7349 次点击
    这是一个创建于 1967 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想自己开发语言, 可以用来做爬虫, 做网站 , 就行了, 这是第一个目标

    但是我了解了一下,发现这里面门槛挺高的,似乎要很高的学历才行

    所以想问问大家

    谢谢

    第 1 条附言    2020 年 10 月 25 日
    补充 1:
    或者有其他什么开源的、现成的方案,能够快速的、粗狂的、 让自己创造一个语言?



    补充 2:

    看到有朋友推荐 ANTLR, 似乎挺不错的, 还有其他类似的现成的工具吗



    谢谢
    60 条回复    2020-10-26 12:37:45 +08:00
    wandehul
        1
    wandehul  
       2020 年 10 月 25 日   11
    兄弟为什么会有这种想法 ? 安安静静做个首富不行吗
    Hansah
        2
    Hansah  
       2020 年 10 月 25 日
    用工具也可以啊,不一定非要学 python
    villivateur
        3
    villivateur  
       2020 年 10 月 25 日   1
    是的,一定要很高的学历,很强的思维能力才可以,否则是不可能的,至少概率上不可能
    levelworm
        4
    levelworm  
       2020 年 10 月 25 日 via Android   1
    学 Programming Language theory
    fiveelementgid
        5
    fiveelementgid  
       2020 年 10 月 25 日 via Android   6
    需要对计算机体系有特别深的理解
    操作系统交互
    底层汇编或者 C 语言设计解释器
    我又想起来了中科院的那个套壳 python 语言。。。。草
    t6attack
        6
    t6attack  
       2020 年 10 月 25 日   1
    《编译原理》
    locoz
        7
    locoz  
       2020 年 10 月 25 日 via Android   1
    开发一个编程语言是很复杂的事情,如果你只是做个玩具的话倒是无所谓,但是如果你要做个有实用价值的东西,那还是算了吧。
    Issacx
        8
    Issacx  
       2020 年 10 月 25 日   1
    计算机里面就没什么东西是跟学历挂钩的。设计语法简单,实现这种语法需要一个编译器或者解释器,这门课的名字叫编译原理。兄弟你这需求还是学门现成的语言和一个框架比较快。
    真想自己设计门语言也不一定要从头写到尾,前端自己写完,后端找个现成的就行。
    delectate
        9
    delectate  
       2020 年 10 月 25 日
    @Issacx 还真有,比如英语。
    msg7086
        10
    msg7086  
       2020 年 10 月 25 日   1
    不一定要从原生通用语言开始做。有个东西叫 DSL,可以在现有的语言上搭,比徒手撸一个语言简单很多。

    而且都 2020 年了,已经没有个人撸语言的意义了。
    只有大厂才考虑自己搞新语言( Go 或者 TS 等)。
    毕竟,没个几十个月薪几十万美刀的工程师,搞不定这玩意儿啊。

    你自己一个人搞的话,首先得要几十年的时间。
    学历不需要高,花时间读上去就行了。
    活不到几百岁才是大问题。
    geebos
        11
    geebos  
    PRO
       2020 年 10 月 25 日   1
    和学历没什么关系,但是能开发一门能用的编程语言的话,至少在能力上已经超过国内绝大多数计算机专业的研究生了
    secondwtq
        12
    secondwtq  
       2020 年 10 月 25 日
    语义啊语义…
    black11black
      nbsp; 13
    black11black  
       2020 年 10 月 25 日
    @msg7086 请问 python 有相关项目吗,用 python 重新实现某种语法,用在特定领域,似乎挺好的
    msg7086
        14
    msg7086  
       2020 年 10 月 25 日
    @black11black 我不会 Python,可以看看其他 Python 大佬怎么说。
    whileFalse
        15
    whileFalse  
       2020 年 10 月 25 日   4
    不一定要很高的学历,但要很高的能力。
    如果 LZ 初中没毕业是因为现在才 9 岁,那应该不影响。
    Perry
        16
    Perry  
       2020 年 10 月 25 日
    这个大学本科大多数人都做不到,光是理论知识就要学个好几门课。。。
    Cbdy
        17
    Cbdy  
       2020 年 10 月 25 日 via Android   1
    看做到什么程度
    简单的话,小学学历的脚本小子就可以了,比如用 antlar4 做一门在 jvm 上跑的小语言
    Felldeadbird
        18
    Felldeadbird  
       2020 年 10 月 25 日   1
    设计一门新的编程语言不需要学历。
    你只要了解计算机原理就可以了。

    举个例子,你可以在 JS 上开发一门新的语言。也可以在 PY 上开发一门新的语言。 只是,这个东西,别人看起来可能会说,是一个库。

    如果从计算机底层写起来……这不是学历的事情了。是时间的事情。你出来社会,根本没时间做。真正空闲,让你钻研的时间,就是大学了。。。
    jsun
        19
    jsun  
       2020 年 10 月 25 日   1
    《计算机程序的构造和解释》推荐看看
    natashahollyz
        20
    natashahollyz  
       2020 年 10 月 25 日 via iPhone
    开发一个编程语言。。怎么说呢,能搞成的话,至少比 99.99%的人强。既然你问这了,那还是
    xyooyx
        21
    xyooyx  
       2020 年 10 月 25 日 via iPhone
    把问题改成如使用 cpu 指令爬取数据,需求的知识就都出来了
    bgm004
        22
    bgm004  
       2020 年 10 月 25 日 via Android
    此贴终结。
    不需要任何学历。只要你有这水平就可以。
    或者你 ppt 做的好也可以。
    love
        23
    love  
       2020 年 10 月 25 日 via Android
    不用,你看最简单的 js 解释器,没多少代码,也没什么高深算法
    cmdOptionKana
        24
    cmdOptionKana  
       2020 年 10 月 25 日 via Android   1
    正面回答:1. 不要求学历。

    2. 首先需要补充的知识是搜索引擎的使用方法。

    3. 然后需要补充的知识都请自行搜索。

    我这不是开玩笑,非常认真,搜索不是唯一的方法,但几乎是最好的方法了,比你上论坛问,甚至可能比你花钱请人教更管用。
    chocovon
        25
    chocovon  
       2020 年 10 月 25 日
    “可以用来做爬虫, 做网站 , 就行了”

    现在的语言满足不了你的需求吗?
    IGJacklove
        26
    IGJacklove  
       2020 年 10 月 25 日 via Android
    感觉你就是来骗回复的吧。
    jmc891205
        27
    jmc891205  
       2020 年 10 月 25 日
    只是做爬虫做网站
    为什么要重新开发一种编程语言?
    ByZHkc3
        28
    ByZHkc3  
       2020 年 10 月 25 日
    @delectate 啥?
    xth12138
        29
    xth12138  
       2020 年 10 月 25 日   1
    Issacx
        30
    Issacx  
       2020 年 10 月 25 日
    @xth12138 言简意赅,要素齐全。
    loading
        31
    loading  
       2020 年 10 月 25 日 via Android
    我想问问为什么要这样做?想出名然后逆袭吗?
    crella
        32
    crella  
       2020 年 10 月 25 日 via Android
    不只是 Python 之父有浓密的头发啊,你看 Delphi 、C#、Typescript 之父 A.H.
    FurN1
        33
    FurN1  
       2020 年 10 月 25 日 via iPhone   1
    骗回复的吧。楼主说的这个人学历到底是啥啊
    Liyiw
        34
    Liyiw  
       2020 年 10 月 25 日   1
    xd314697475
        35
    xd314697475  
       2020 年 10 月 25 日   1
    直接上编译原理课,然后看龙书,哪里不懂补哪里。

    做一个入门的编程语言就是个大作业难度。

    但是做一个 C++、C#级别的编程语言,全球没多少能做到的。
    lixon166
        36
    lixon166  
       2020 年 10 月 25 日
    不用的,认识一个最小的 python 程序员,才 10 岁
    FurN1
        37
    FurN1  
       2020 年 10 月 25 日 via iPhone
    @lixon166 我儿子三岁写 python
    Death
        38
    Death  
       2020 年 10 月 25 日 via Android   2
    ncepuzs
        39
    ncepuzs  
       2020 年 10 月 25 日
    缺铜币直说啊
    lscexpress
        40
    lscexpress  
       2020 年 10 月 25 日
    @lixon166 我儿子认识一个最小的程序员,才 10 岁
    araaaa
        41
    araaaa  
       2020 年 10 月 25 日 via iPhone
    先写个 lisp 编译器
    dtgxx
        42
    dtgxx  
       2020 年 10 月 25 日
    即使你有很高学历,你也不行。开发一门编程语言,还得火起来,得需要天时地利人和,不是随便说说
    DoctorCat
        43
    DoctorCat  
       2020 年 10 月 25 日   1
    害,学就完了又不是没那条件。
    编译器原理、工程和动手写编译器的教程英文资料比较多,英语好就行,难得是解决困难的动力。可以先写个简单的 lexer,再去考虑要不要继续学下去。
    namelosw
        44
    namelosw  
       2020 年 10 月 25 日   2
    我过一阵子离职赋闲一阵,打算搞个语言练练手,也正在学习,感觉如果只是普通语言这种需求的话,其实没那么深奥

    楼上很多“不仅我不懂,而且我觉得你也懂不了”的态度…… 不要妄自菲薄,感觉中国的程序员普遍很不错,但是在语言设计之类的方面和欧美还有差距,主要问题是不了解,周围的人也不了解就觉得很难。可能欧美有很多老程序员以前都做过这些,就有一小部分这些文化传承下来了,或者教育上可能也有差距把。

    1. 推荐一个很不错的书 http://craftinginterpreters.com/
    非常实用,一方面不像龙书或者 Stanford 的那个编译原理课那么费时间,另外一方面又不像其他的小教程那样过于凑合,里面还有很多额外的 consideration 。
    只要看到前一小半写个 Tree walking interpreter 这个语言就完全能用了,后面写 VM Compiler 主要是为了效率。
    这本书里面为了教育意义是手写的,但是每个小部分有现成工具可以用的时候脚注会告诉你。
    明白道理之后,把工具也用一遍最后发现做编程语言也不过如此,困难 /麻烦的事情都被别人解决过了(比如 LLVM )。真正困难的是学别的东西,比如要造 Hindley-Milner 那种语言,首先得理解那套类型系统,再学习实现那套推断算法。如果只是发明一个跟 Python 差不多的普通语言,就没什么特别的坑了,这本书都教给你了。

    2. 然后感兴趣或者想练手可以把这个当个作业做,用啥语言实现都行,花不了太多时间: https://github.com/kanaka/mal

    3. 然后有兴趣深入可以再看 Stanford Alex Aiken 的编译器课程

    4. 龙书都说浪费太多时间在 Parser 上了,而且又厚又枯燥,不看也无所谓,或者当个参考书偶尔翻一下把。

    5. 另外有一些资源就是 SICP 的第四第五章其实就是重写解释器,重新发明 register machine 和汇编,然后再重新给这个机器写编译器,比较自成体系,如果对 SICP 本身或者 LISP 感兴趣可以看看,不感兴趣的话感觉有点绕路。
    bojue
        45
    bojue  
       2020 年 10 月 26 日 via iPhone
    @delectate 也不一定
    jxie0755
        46
    jxie0755  
       2020 年 10 月 26 日 via iPhone
    是“初中没毕业”,还是“初中无法毕业”?
    THP301
        47
    THP301  
       2020 年 10 月 26 日   1
    上过 编译原理 课的大学生基本都知道怎么开发编程语言, 最好自己读一下相关的书籍,难度不高,只是概念有些多
    xumng123
        48
    xumng123  
       2020 年 10 月 26 日 via iPhone
    当然可以
    xianxiaobo
        49
    xianxiaobo  
       2020 年 10 月 26 日   1
    我记得王垠说过发明一个编程语言没有那么难,就跟组装电脑似的。
    发明 cpu,内存条,显卡这些零件才是真的难。
    所以结论是应该不需要很高的学历,初中没毕业应该是可以的。
    laike9m
        50
    laike9m  
       2020 年 10 月 26 日 via Android
    建议放弃
    Curtion
        51
    Curtion  
       2020 年 10 月 26 日   1
    LLVM 呀,现代语言很多都是用这个作为后端
    sunziren
        52
    sunziren  
       2020 年 10 月 26 日
    加油,你可以的
    billgreen1
        53
    billgreen1  
       2020 年 10 月 26 日
    不行,行的人不会来问的,直接干
    neptuno
        54
    neptuno  
       2020 年 10 月 26 日
    “可以用来做爬虫, 做网站”,就这俩需求,学学 python 不就好了,,,,人生苦短
    www5070504
        55
    www5070504  
       2020 年 10 月 26 日
    可以的 在国内很容易 你只需要套个壳 再从以前的历史书 或者周易之类的比较有知名度的书里边 挑个你喜欢的词当名字 就可以了
    libook
        56
    libook      2020 年 10 月 26 日   2
    学历只是一种粗略地评估个人知识和能力水平的方式,历史学博士未必能造出核反应堆来,最先发现原子结构的人肯定没有核物理博士学位。

    你想干成一件事情,得看这件事情究竟需要哪些知识和能力,你不具备的话可以去学,当然去学这些东西可能还要求其他的知识和能力,就像你学习导数得懂得极限,想懂得极限得懂得基础算数,想懂得算数就得会数数。

    你想自己做一门编程语言,可以去了解一下编程语言相关的理论知识和技能都有哪些,自己没掌握的就去学习。

    当然如果只是应付差事,可以以各种现有的语言为基础套个壳子,改改关键字、加一些语法糖,比如之前出现的“木兰语言”就是用 Python 套的壳子。

    如果你的终极目的不是想自己做一门编程语言,而是想做网站和爬虫,那没必要自己搞编程语言,流行的编程语言已经经受过了相当长的时间的检验,解决了大量问题,这些你都重新来一遍,还不如人家做得成熟,岂不是很浪费时间。除非你真的对各种编程语言的底层原理极其了解,胸有成竹可以做出一门更优秀的编程语言。
    levelworm
        57
    levelworm  
       2020 年 10 月 26 日 via Android   1
    我也推荐冷门书,game scripting mastery, 手把手教你写一个游戏脚本语言,带字节码和虚拟机的。比较浅显,适合入门的。
    afx
        58
    afx  
       2020 年 10 月 26 日   1
    嗯,我先下结论,玩具级的语言很容易设计出来,要做出一门好的语言那是大大大神才能干的。目前我们开发的软件内部就有一种类似于 excel 公式的功能,语法语义完全是结合特定行业设计的,所以自认为比一般的程序员在编译原理上应用得深一点,毕竟我们需要使用这个技术来赚钱的。目前遇到的问题,语法语义的严谨性,类似数学里面的定理,需要非常严谨,否则自身设计出来的语言很容易自身就矛盾了, 光这一点在我看来一般人根本无法胜任。看看当初只花了 10 天设计出来的 Javascript 。
    gitgabige
        59
    gitgabige  
       2020 年 10 月 26 日   1
    干就完了,即使是国家领导人,也不一定需要很高的学历的
    Selenium39
        60
    Selenium39  
       2020 年 10 月 26 日
    @xth12138 中科院大佬
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1159 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 17:30 PVG 01:30 LAX 10:30 JFK 13:30
    Do have faith in what you're doing.
    ubao msn 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