V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
find456789
V2EX  ›  问与答

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

  •  
  •   find456789 · 2020-10-25 12:54:03 +08:00 · 6652 次点击
    这是一个创建于 1523 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    所以想问问大家

    谢谢

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



    补充 2:

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



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

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

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

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

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

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

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

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

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

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

    但是做一个 C++、C#级别的编程语言,全球没多少能做到的。
    lixon166
        36
    lixon166  
       2020-10-25 19:01:07 +08:00
    不用的,认识一个最小的 python 程序员,才 10 岁
    IgniteWhite
        37
    IgniteWhite  
       2020-10-25 19:07:33 +08:00 via iPhone
    @lixon166 我儿子三岁写 python
    Death
        38
    Death  
       2020-10-25 20:05:08 +08:00 via Android   ❤️ 2
    ncepuzs
        39
    ncepuzs  
       2020-10-25 21:33:37 +08:00
    缺铜币直说啊
    lscexpress
        40
    lscexpress  
       2020-10-25 21:53:28 +08:00
    @lixon166 我儿子认识一个最小的程序员,才 10 岁
    araaaa
        41
    araaaa  
       2020-10-25 21:57:19 +08:00 via iPhone
    先写个 lisp 编译器
    dtgxx
        42
    dtgxx  
       2020-10-25 22:04:22 +08:00
    即使你有很高学历,你也不行。开发一门编程语言,还得火起来,得需要天时地利人和,不是随便说说。
    DoctorCat
        43
    DoctorCat  
       2020-10-25 22:04:29 +08:00   ❤️ 1
    害,学就完了又不是没那条件。
    编译器原理、工程和动手写编译器的教程英文资料比较多,英语好就行,难得是解决困难的动力。可以先写个简单的 lexer,再去考虑要不要继续学下去。
    namelosw
        44
    namelosw  
       2020-10-25 22:37:58 +08:00   ❤️ 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 06:08:07 +08:00 via iPhone
    @delectate 也不一定
    jxie0755
        46
    jxie0755  
       2020-10-26 07:08:25 +08:00 via iPhone
    是“初中没毕业”,还是“初中无法毕业”?
    THP301
        47
    THP301  
       2020-10-26 07:17:59 +08:00   ❤️ 1
    上过 编译原理 课的大学生基本都知道怎么开发编程语言, 最好自己读一下相关的书籍,难度不高,只是概念有些多
    xumng123
        48
    xumng123  
       2020-10-26 07:37:21 +08:00 via iPhone
    当然可以
    xianxiaobo
        49
    xianxiaobo  
       2020-10-26 09:05:22 +08:00   ❤️ 1
    我记得王垠说过发明一个编程语言没有那么难,就跟组装电脑似的。
    发明 cpu,内存条,显卡这些零件才是真的难。
    所以结论是应该不需要很高的学历,初中没毕业应该是可以的。
    laike9m
        50
    laike9m  
       2020-10-26 09:41:17 +08:00 via Android
    建议放弃
    Curtion
        51
    Curtion  
       2020-10-26 10:06:47 +08:00   ❤️ 1
    LLVM 呀,现代语言很多都是用这个作为后端
    sunziren
        52
    sunziren  
       2020-10-26 10:12:27 +08:00
    加油,你可以的
    billgreen1
        53
    billgreen1  
       2020-10-26 10:40:23 +08:00
    不行,行的人不会来问的,直接干
    neptuno
        54
    neptuno  
       2020-10-26 10:46:25 +08:00
    “可以用来做爬虫, 做网站”,就这俩需求,学学 python 不就好了,,,,人生苦短
    www5070504
        55
    www5070504  
       2020-10-26 10:55:54 +08:00
    可以的 在国内很容易 你只需要套个壳 再从以前的历史书 或者周易之类的比较有知名度的书里边 挑个你喜欢的词当名字 就可以了
    libook
        56
    libook  
       2020-10-26 11:23:21 +08:00   ❤️ 2
    学历只是一种粗略地评估个人知识和能力水平的方式,历史学博士未必能造出核反应堆来,最先发现原子结构的人肯定没有核物理博士学位。

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

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

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

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