最近正在设计并实现一门编程语言(续)

2019-08-07 14:44:19 +08:00
 Mohanson

项目地址: https://github.com/mohanson/pydouz

该语言前端由 Python 书写, 后端采用 LLVM. 因此原生支持 LLVM 的一切生态, 包括编译到 wasm 或 riscv 指令集(编译到 riscv 指令集已经过简单测试).

Example: 斐波那契数列

def fib(n) {
    if n 3 < {
        n;
    } or {
        fib(n 1 -) fib(n 2 -) +;
    };
}

(这个操作符后置的表达式学名叫 "逆波兰表示法")

目前还是早期开发状态, 但已经有可供运行测试的 Demo.


前情提要: https://www.v2ex.com/t/589166

3829 次点击
所在节点    程序员
28 条回复
SingeeKing
2019-08-07 14:49:20 +08:00
一直觉得 RPN 很难受。。为什么要叫优化
luoyou1014
2019-08-07 14:50:33 +08:00
都采用后缀表达式了,不如采用前缀表达式好了,前缀表达式还能将操作符等价为函数,同样能避免优先级问题。

不过不管是后缀还是前缀,应该都不会被大众接受。
slanternsw
2019-08-07 14:51:39 +08:00
逆波兰式是给你让人写的??你让人手工画二叉树再遍历一遍给你写?
zjsxwc
2019-08-07 14:53:58 +08:00
不好阅读
PALELESS
2019-08-07 14:55:44 +08:00
后缀表达式只是便于计算机解析, 对于人而言相当相当不友好
missdeer
2019-08-07 14:58:55 +08:00
为啥前缀、后缀表达式混用?
lumotian
2019-08-07 14:58:56 +08:00
干脆做成 Lisp 算了
darksword21
2019-08-07 14:59:25 +08:00
说得好,我选择 python
aijam
2019-08-07 15:11:31 +08:00
@luoyou1014 lisp 情何以堪
luoyou1014
2019-08-07 15:28:44 +08:00
@aijam lisp 已经够小众了,我指的大众接受,至少要到 lua ruby 这一级别
kilen3a
2019-08-07 15:36:53 +08:00
逆波兰这是给人写?
nguoidiqua
2019-08-07 15:54:47 +08:00
代码是写给人看的,硬要标新立异的话,用前缀表示法感觉也要好些。
AsceticBear
2019-08-07 16:22:28 +08:00
xixi, haha
janxin
2019-08-07 16:29:35 +08:00
还是别用 def 了,用 fn 挺好的
Tomotoes
2019-08-07 16:30:37 +08:00
没有 return,即没有可读性。
Aruforce
2019-08-07 16:32:12 +08:00
非要跟习惯两道...
你们数学公式 1 1 + =2 这么写啊?
为不一样而不一样...
不解决问题总想弄个新闻...
混娱乐圈的啊...
gpra8764
2019-08-07 16:41:09 +08:00
看完之后觉得很棒,所以我选择 Python
Mistwave
2019-08-07 16:44:25 +08:00
代码是给人读的,顺便给机器运行。
demo 看起来不伦不类,比如这个 if-or,比起常见的 if-else,除了少敲两个字符,有什么实际的意义吗?
inhzus
2019-08-07 16:46:08 +08:00
都已经用后缀表达式了,不如彻底消灭括号,所以语法应该是(滑稽):
n 1 - fib n 2 - fib +
Mohanson
2019-08-07 17:01:33 +08:00
统一回复下:保持对世界的好奇心和宽容心。感觉上升到语法战争了…… 不同的人对 美 的认知是不一样的,在我看来因为后缀表示法天生贴合栈结构,因此我认为后缀利于计算机理解,是美的。

不用中缀的语言有很多,比如 Lisp。世上除了恰饭语言外还有很多有意思的语言,比如 brainfuxk。

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

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

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

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

© 2021 V2EX