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

2020-10-25 12:54:03 +08:00
 find456789

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

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

所以想问问大家

谢谢

6617 次点击
所在节点    问与答
60 条回复
araaaa
2020-10-25 21:57:19 +08:00
先写个 lisp 编译器
dtgxx
2020-10-25 22:04:22 +08:00
即使你有很高学历,你也不行。开发一门编程语言,还得火起来,得需要天时地利人和,不是随便说说。
DoctorCat
2020-10-25 22:04:29 +08:00
害,学就完了又不是没那条件。
编译器原理、工程和动手写编译器的教程英文资料比较多,英语好就行,难得是解决困难的动力。可以先写个简单的 lexer,再去考虑要不要继续学下去。
namelosw
2020-10-25 22:37:58 +08:00
我过一阵子离职赋闲一阵,打算搞个语言练练手,也正在学习,感觉如果只是普通语言这种需求的话,其实没那么深奥

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

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 的编译器课程 <amp-youtube data-videoid="sm0QQO-WZlM" layout="responsive" width="480" height="270"></amp-youtube>
4. 龙书都说浪费太多时间在 Parser 上了,而且又厚又枯燥,不看也无所谓,或者当个参考书偶尔翻一下把。

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

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

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

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

如果你的终极目的不是想自己做一门编程语言,而是想做网站和爬虫,那没必要自己搞编程语言,流行的编程语言已经经受过了相当长的时间的检验,解决了大量问题,这些你都重新来一遍,还不如人家做得成熟,岂不是很浪费时间。除非你真的对各种编程语言的底层原理极其了解,胸有成竹可以做出一门更优秀的编程语言。
levelworm
2020-10-26 11:36:28 +08:00
我也推荐冷门书,game scripting mastery, 手把手教你写一个游戏脚本语言,带字节码和虚拟机的。比较浅显,适合入门的。
afx
2020-10-26 11:49:42 +08:00
嗯,我先下结论,玩具级的语言很容易设计出来,要做出一门好的语言那是大大大神才能干的。目前我们开发的软件内部就有一种类似于 excel 公式的功能,语法语义完全是结合特定行业设计的,所以自认为比一般的程序员在编译原理上应用得深一点,毕竟我们需要使用这个技术来赚钱的。目前遇到的问题,语法语义的严谨性,类似数学里面的定理,需要非常严谨,否则自身设计出来的语言很容易自身就矛盾了, 光这一点在我看来一般人根本无法胜任。看看当初只花了 10 天设计出来的 javascript 。
gitgabige
2020-10-26 12:15:31 +08:00
干就完了,即使是国家领导人,也不一定需要很高的学历的
Selenium39
2020-10-26 12:37:45 +08:00
@xth12138 中科院大佬

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/718353

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX