























这是一个创建于 1974 天前的主题,其中的信息可能已经有所发展或是发生改变。
我的最终目标是创造一门编程语言
因为我看到 wiki 上说,llvm 用 c++写的, 所以我猜想,如果我学会了 c++, 将来用 llvm 做东西(开发编程语言), 应该会容易很多
请问我的观点对吗?
各位前辈能给点意见吗?
1 AndyAO 2021 年 1 月 17 日想问一问 你开发编程语言是出于什么目的呢? 单纯是为了兴趣还是解决某个实际问题? |
3 AndyAO 2021 年 1 月 17 日@piqizhu8 #2 |
4 yzbythesea 2021 年 1 月 17 日如果你是写一个 LLVM frontend,不用深入学 C++。 |
5 secondwtq 2021 年 1 月 17 日 via iPhone如果你想”创造编程语言”,也不必熟悉 LLVM…… |
6 secondwtq 2021 年 1 月 17 日 via iPhone倒是学学 C++可能对”创造编程语言”有更实际的帮助 |
7 piqizhu8 2021 年 1 月 17 日谢谢, 我目前已经掌握了 python,我想开发一门类似 c,go 这样可以静态编译的语言, 我在网上搜索研究后,发现 llvm 不但可以作为后端直接编译,还可以跨平台,所以我就直接拿来用了,不用从头造轮子 我目前,已经用 llvm+python 制作了一个支持加法、减法的 语言雏形, 由于加法、减法是 cpu 自带的功能(我之前看了一个讲操作系统的资料,明白了 cpu 默认是支持加减乘除、逻辑运算),所以借助 llvm 很容易实现加减乘除 但是我不知道如何用 llvm 制作高级功能,如 打印文字、网络请求 所以我就在想,是不是我需要学会 c++,以便更加了解 llvm 因为我本身英语能力很弱,需要借助翻译工具才能看,最后能理解消化的内容就更少了 |
8 piqizhu8 2021 年 1 月 17 日谢谢,因为我已经掌握了 Python 的基本用法, 所以我想前端用 python 做词法、语法分析;后端用 llvm 编译成目标平台的机器码 借助基础的 llvm ir,可以很容易实现 加减乘除, 但是 llvm ir 并没有提供 网络 io 、文件读取等高级功能 我之所以想深入学 llvm,是因为我觉得深入学好 llvm 后, 我就可以用 llvm ir 实现 高级的 网络 io 、文件读取等功能 不知道前辈有什么建议吗 感谢 |
10 hxndg 2021 年 1 月 17 日你需要区分计算机科学工作者 一线工程师干事可是追求简单粗暴的。很多时候会有很离谱的事情发生。 有点类似理论医学和临床医学,两波人互相鄙视。 |
13 Mithril 2021 年 1 月 18 日你说的打印文字、网络请求,都不是 LLVM 该做或者你想创造一门语言该有的功能。。。 |
14 piqizhu8 2021 年 1 月 18 日谢谢 看到你的解释,似乎我对 llvm 的理解有错误 ,llvm 没有封装操作系统的 api 吗 看来我还需要深入研究才行 现在我的编程语言已经可以实现加减乘除, 我该如何一步步让我的编程语言支持 文件读写,网络请求呢? 大哥能给一些关键词吗? 我想去搜索,深入了解一下 谢谢大哥 |
15 Mithril 2021 年 1 月 18 日@piqizhu8 所有涉及到硬件的东西,都需要硬件驱动进行支持。你觉得加减乘除不用,那是因为 LLVM 帮你做了这部分。LLVM 本质上也就是个编译器,通过前端和后端,把你的编程语言 A 翻译成另一种编程语言 B 。A 可以是自制的,B 可以是另一种,或者 B 干脆就是机器码。机器码你可以认为是 CPU 的硬件驱动支持的一种语言。 |
16 piqizhu8 2021 年 1 月 18 日谢谢大哥, 我去了解了一下 jvm,发现有很多语言都基于 jvm,如 Groovy 、Scala 等等 也明白了,基于 jvm 的好处, 但是好可惜,如此的话我得去学习 java 我目前掌握了 python, 所以 我在思考, 能否 基于 pvm ( python vm ) 来制作一门编程语言 不过可惜,似乎 pvm 远远比如 jvm 成熟、强大 |
17 levelworm 2021 年 1 月 18 日 via Android可以看一下 crafting interpreter 这个网站,跟着走一遍就知道大概怎么写解释器、编译器了。不过编程语言 |
18 levelworm 2021 年 1 月 18 日 via Android不过创作编程语言还是得了解一下编程语言理论方面的知识。解释器和编译器是编程语言创作者已经想好内容了然后他们负责实现的,但是创造编程语言本身并不仅仅是这些实现。 |
19 levelworm 2021 年 1 月 18 日 via Android如果只用 python 的话可以看一下两个内容,一个是 python 版本的 sicp,最后一部分是教你用 Python 写 scheme 的解释器。还可以看 Peter Norvig 用 Python 写 Basic 解释器的源代码,不长就几百行。但是看之前需要大致了解一下解释器到底是怎么个构成的,里头的几个部分是如何工作的。 |
21 Goldilocks 2021 年 1 月 18 日 via Android如果你不会 c++,你能用 llvm 做什么? llvm 的 code 和 API 都是 c++啊。 |
22 sadfQED2 2021 年 1 月 18 日 via Android不是我打击你,你这基础,连编译器是干啥的都没弄明白吧,就像新发明编程语言。你真要搞,先把编译原理,计算机组成原理这些东西学明白,然后搞明白各种语言不同的优势,生态,这时候再开始吧 或许说,第一步你先看看别人咋做的,看看 go 编译器源码,或者是看看 jvm 源码 |
23 xarthur 2021 年 1 月 18 日 via iPhone1. llvm 官网上就有如何用 llvm 写一个编程语言的例子,走一遍就知道如何创造编程语言了。 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。