不是玩具语言,不是玩具语言,不是玩具语言,重要的事情说三遍。
就是常规的通用目标编程语言,不过它有些很独特的特性,很强的,很强的,很强的!!!
希望能找一两个会做编译器或解释器的(不会也行,只要是程序猿都可( • ̀ω•́ )✧,毕竟太高级的程序猿可能会很不屑 d(´ω`*)),还想找一个会写文档的,自己文笔太菜,草案写的很丑 ̄ω ̄=,哈哈。
有兴趣的,都欢迎加入,稍后我看有多少人再决定建个讨论组或群。 还请觉得不屑的大大不要喷,虽然可能看上去很菜,但是实现了绝对能够惊世骇俗,我坚信(`_ゝ´)。
备注:1.没有工资,没有工资,没有工资,本人很穷(/ω\)。 2.希望能做成开源项目,让更多的人用,人人为我,我为人人。
101
Qiaogui OP |
102
halou12 2019-05-08 11:46:02 +08:00
|
103
opengps 2019-05-08 11:47:02 +08:00
我要统治世界。你们都过来免费全力支持我!
|
104
gxq0926 2019-05-08 11:47:09 +08:00
尊重楼主的梦想,不过实践还是最重要的
|
105
largecat 2019-05-08 11:48:17 +08:00 via Android
有想法是好的,,,支持
|
106
Qiaogui OP |
107
VictorJing94 2019-05-08 11:52:40 +08:00
插个眼
|
108
wutiantong 2019-05-08 11:53:26 +08:00 2
@Qiaogui 我引用一下你文档里写的东西:
“ 首先来说一下区别。与其他语言不同,它对这些特性的支持是多位一体的,无缝的,不会为了这些特性而产生让人难以理解的语法。它的逻辑结构清楚,语法简单。比 Basic 容易理解,比 Java 更加高级,比 Python 更加健壮。 其次是设计这门语言的原因。我喜欢 C/C++,它对底层数据操作非常很方便,但是,它的指针以及大量莫名所以的运算符让人非常困惑;我喜欢 Basic/Pascal,它的结构简单,极易理解,但是它的语法却十分繁琐,句式冗长;我也喜欢 Java,它对类的封装非常优雅,不过还没写到真正有效的句法之时,便要先写一大堆的限定符;同时,我也喜欢 Python,它的各种库非常完善,开发起来非常方便,但是,如果在不经意间碰到一个语法错误,有时一天甚至连续几天都无法解决(可能我技术太菜。LOL );我也学习过 Scheme,我喜欢它的函数式风格,我想把它融入进去。” 我的看法是,你需要去进一步阐述这些文字,因为它们代表着你的出发点 /初衷。 但现在的情况是它们全部由一些主观感受的形容构成,这是毫无价值的,因为没有人能明白你到底想说什么。 所以呢,我的建议是,希望你就这些文字补充一些比较有说服力的例子, 比如: “比 Basic 容易理解”,Basic 有什么不好理解的地方?你的语言是如何更容易理解? “比 Java 更加高级”,你的语言是如何做到比 Java 更高级的? “比 Python 更加健壮”,你的语言是如何做到比 Python 更健壮的? C/C++的指针以及大量莫名所以的运算符是如何令人感到困惑的?你要如何去完整的取代它们并且更易懂? Scheme 的函数式风格有哪些?你是如何把它们一一融入的呢? |
109
zxq2233 2019-05-08 11:58:49 +08:00
首先要跨平台,高效率,其次要 easy,便于学习,,能开发桌面及移动端级应用
|
110
2kCS5c0b0ITXE5k2 2019-05-08 11:59:06 +08:00
感觉你的目标就是做一个缝合怪 什么语言的哪个地方好 就把他缝合过来
|
111
EscYezi 2019-05-08 12:00:31 +08:00 via iPhone
我有一个一百万的点子,就差一个程序员了
|
112
ss0xt 2019-05-08 12:02:14 +08:00
多年后你再来看你发的这个帖子得多有( z )趣( z )
|
113
learnshare 2019-05-08 12:05:26 +08:00
不如先把设计文档写一下,编译器参考文档实现起来只是堆工作量的问题
|
114
expy 2019-05-08 12:08:58 +08:00
可以考虑写点细致、可操作的文档,而不是简单的目标描述。
|
115
tt67wq 2019-05-08 12:09:52 +08:00
虽然我完全不懂,但是资瓷,建议还是自己写,来 v2 求助,能收货的只有嘲讽
|
116
xuanwu 2019-05-08 12:12:09 +08:00
@Qiaogui 就一个易语言?
比起每年都出现的英文编程语言来说,中文编程语言远没到达商用的程度。现状是,不开源,就难有商业项目敢用。就我知道的开源的中文编程语言+配套 IDE,还一个都没有。 |
117
SupperMary 2019-05-08 12:13:09 +08:00 via Android
我想 mark 这个贴
|
118
zy445566 2019-05-08 12:14:10 +08:00
@learnshare 终于看到了一个明白人
|
119
zy445566 2019-05-08 12:18:28 +08:00
楼主可以看看 LLVM 教程:
https://github.com/zy445566/llvm-guide-zh 下面是我的实践和总结: https://github.com/zy445566/myBlog/blob/master/20180825llvm/README.md 剩下的基本就是和 learnshare 说的差不多,做一门语言难度现在已经不大了,就是搬砖问题了。 比如语法解析,流程控制要自己实现,基础类型之外的类型要自己实现,而这些都是搬砖 |
120
qwz 2019-05-08 12:22:06 +08:00
想做就做吧
在这儿划水, 不如直接开始 JavaScript 这样的粪语言不是大把人用么 (讨论无关) PHP 是 ... (破音) |
121
MonoLogueChi 2019-05-08 12:41:41 +08:00 via Android
我曾经写过一点小玩意,可以在 C#里执行非常简单的语句,一共有五六个关键词,世界上只有一个用户,而且这个用户用的非常舒服。抛开应用场景谈语言,很蛋疼
|
122
Qiaogui OP @wutiantong
“比 Basic 容易理解”。Basic/Pascal 容易理解是对于外国人而言的,它们用详细的关键字来描述每个语句或者表达式,但这对国人而言无异于读天书,满屏的 dim 和 as,光看着就让人心烦,还不如 C 的声明方式,简洁而且易懂。各种流程方面也是一样,还不如使用一些易懂的符号来表示。 “比 Java 更加高级”。Java 中有公有类,私有类,保护类以及各种性质的方法,一旦继承,所用东西都会解开到子类内部。一个类就变得非常复杂。而我这门语言则将公开,私有,保护,虚分别实现为四种类,每种类都具有各自的性质,用模块和目录来组织各种模块,模块内包含各种类和方法。一个实现的非常完美的模块,你不需要知道它内部的任何细节,只需通过模块提供的一个单一接口便可得到所有想要的数据。 “比 Python 更加健壮” 这门语言是完全模块化的,导入和卸载都是动态的,这对外围的各种包和模块的开发非常方便。 C、C++ 的各种指针操作,*和->经常让人云里雾里,而这门语言则强调名字的重要性,避免了这些问题。 @zxq2233 跨平台的实现不是一个大的问题,高效率方面,它使用静态类型,它的形式同时可以满足编译语言和解释语言的需要,学习方面,它的学习路线是呈一个向上抛物的,你只要了解简单的东西,复杂的东西自然会融汇贯通,最后一个就取决于不同实现了。 @emeab 如果它能称为语言界的怪物,而为大部分人所知,那也是极好的。ヽ(ー_ー)ノ @expy @learnshare @jessehzj 就设计文档和编译器文档我不是分的太清,能详细讲下吗?我看 ISO Pascal 102..和威尔斯教授自己写的文档好像也没大区别。 @qwz @zy445566 LLVM 我学习过,看过那三本什么 Ess ... 啥啥啥的,原谅我,那东西写起来更加复杂,甚至还不如 bison 和 flex 还是感谢你们 |
123
rainmakeroly 2019-05-08 12:49:32 +08:00 via Android
自己的想法让别人帮助实现可以。你得先有个原型 核心。
就差一程序员! 过程中,听你的还是听自己的。听你的,你自己都不想实现。 看 Python Lua 等语言之父,他们本身编码设计能力就很强。前期版本都是主要参与人。 |
124
heylogo 2019-05-08 12:49:48 +08:00 2
别的不说,楼主对待他人意见的态度还是很值得肯定的。
|
125
FrankHB 2019-05-08 12:52:27 +08:00
看标题以为是能随便甩手投资几百 w 的那种,万事俱备只差程序员了。
结果嘛…… LZ 你这技能明显没点对啊,你哪来的自信以为你发明的别人就没搞过?还是先学会怎么写需求文档同时 diss 别人吧,否则还不是老调重弹了无新意嘛。给个示范: https://github.com/FrankHB/pl-docs/blob/master/en-US/calling-for-language-features.md |
126
CSM 2019-05-08 12:57:31 +08:00 via Android 1
连指针这么简单的概念都理解不了,居然想设计语言?
|
127
FrankHB 2019-05-08 13:00:34 +08:00 1
@rainmakeroly 跑个题,虽然你书的队,就设计上的本事,GvR 和那坨巴西人还真是不够看的:前者是连 proper tail recursion 都不知道的程度,后者是 EWD831 都理解不了的水平。虽然这不妨碍 py 和 lua 在各种偶然下 dssq,但有原型能力能让屑流行起来,也是一种工程灾难。
@Qiaogui 常识水平也不行,你这姿势离历史的行程差太远了。 LLVM 虽然是屑,但是“不如 bison 和 flex ”…… emm,你确定你清楚这些玩意儿是干什么了的吗? 还有你喜欢辣么多辣鸡有用么。。。就设计语言的工作,首要产出自然不是解释器和编译器之类的实现,而是 spec,但是你似乎连这点都不怎么清楚。如果清楚目标的话,Scheme 是暴打剩下几个几条街的(如果不算开发过程撕逼的话;不过其它几个这方面也不好看)。 |
128
FrankHB 2019-05-08 13:03:25 +08:00
@CSM 指针这概念还真没几个人理解得清楚了,基本上脑子正常的人理解了就不会尝试塞进高级语言里面去了(塞 machine-oriented ISA 里面勉勉强强还可以说得通,然而纠结是否钦定 flat address space 之类的笑话还是敬谢不敏)。
|
129
jon 2019-05-08 13:04:23 +08:00
建议开发中文编程语言,做中国人自己的编程语言ヾ(o・ω・)ノ
|
130
vanishcode 2019-05-08 13:05:43 +08:00 via Android 1
初二到大四 9 年程序员就这样?
我也是大四,我感觉我还比较正常,最起码我想做什么先自己去做而不是发个帖子开始“就差一个程序员了” 你还是先自己实现一个简单的前端,看看比如 tj 的 luna (纯 c 实现)这类大神写的玩具语言吧,进阶的话 Lua 源码才万行级别 其他的我就不喷你了 |
131
crazypig14 2019-05-08 13:06:58 +08:00
lz 基于你描述的痛点,了解 ruby 不?我个人认为 ruby 算是对写代码的人最友好的了
|
132
yingo 2019-05-08 13:10:32 +08:00
是不是可以先弄个 dsl 行不行得通再说?
|
133
pynix 2019-05-08 13:14:52 +08:00
我有一个赚大钱的想法,就差一个程序员了。
|
134
huangke 2019-05-08 13:18:37 +08:00
“完整的想法我已经有了,就等实现了”, -- 我有一个 idea,就差程序员了
“ 备注:1.没有工资,没有工资,没有工资,本人很穷(/ω\)。” -- |
135
ibufu 2019-05-08 13:19:41 +08:00 2
为什么不问下王垠呢?
|
136
huangke 2019-05-08 13:20:06 +08:00
“完整的想法我已经有了,就等实现了”, -- 我有一个 idea,就差程序员了
“ 备注:1.没有工资,没有工资,没有工资,本人很穷(/ω\)。” -- 我要白嫖 楼主你告诉我一下你的勇气是哪来的?我也想要这样的勇气 |
137
gabon 2019-05-08 13:20:45 +08:00 via Android
我觉得楼主先拿出一篇业界认可的论文放到 GitHub 上肯定会有人一起帮忙做的
|
138
PureWhiteWu 2019-05-08 13:21:01 +08:00 1
@googlecomhk @Livid 95 楼
|
139
PureWhiteWu 2019-05-08 13:22:26 +08:00
楼主,建议你先写一个 spec 出来,毕竟口说无凭。
如果你都不能落笔成文,就算有人愿意来开发,也不知道怎么实现,因为你没法写下来等于你说不清楚。 |
140
FrankHB 2019-05-08 13:22:55 +08:00 1
@Kilerd 不要强人所难,SICP 确实不教这种玩意儿。
我同意这语法设计的不咋地(另外,如果看的是新版 SICP,会出现各种奇葩口味也不奇怪)。不过,这跟“不一致”有什么关系? 你这里有一个显然的技术性的错误:没拿到形式文法( LZ 是在 89L 发的),怎么知道“不一致”? var int q = 1, w = 2 int i = 1 没看 LZ 的文档,花 1 秒钟就能反应过来,很容易规约成类似这样的: var_opt type-id (identifier = initializer)(, identifier = initializer)* 如果这种文法都算所谓的不一致,按你的逻辑,C++之类的大多数 ALGOL-like 语言都是妥妥的 toy language 了。或者你拿你的作业跟这些语言比比看看先进在哪?(虽然老实说,要比这些语言更烂才是更难的……) (看了下 LZ 的文档,比这个是麻烦多了。) @halou12 这个明确说了创建的是 DSL,跟 LZ 目的不搭(而且因为很多原因……这货显然没什么牌面)。 @Mutoo 王垠这 dd 就别指望了吧,看他的 publication,非得说肚子里的墨水的话,这人本质上更接近他自己鄙视的“低于设计语言的”“搞编译器的”人士。反正我是没发现他搞出过半个 model (不管是 calculi 还是 abstract machine 还是其它什么乱七八糟的。) 像 Rust 为什么搞出 lifetime,CheckedException 失败在哪,其实都是很浅显的东西,只不过理由比较偏工程需求而已。混了那么多年还不能一眼看清楚,这应该不是工程实践不足,还是天赋问题了。 |
141
WhoCanBeRich 2019-05-08 13:24:16 +08:00
感觉很厉害,Mark 下先
|
142
learnshare 2019-05-08 13:25:50 +08:00
|
143
stabc 2019-05-08 13:28:24 +08:00 6
最恶心人的是『没有工资』四个字。他要说『没有报酬』还好,可以看做两个人一起做点有意义的事。『没有工资』直接把自己定义成老板了,免费帮他忙的变成他员工了……
|
144
lamada 2019-05-08 13:29:27 +08:00
支持 LZ,看来大家还是需要一个完整的文档来了解你的想法
|
145
fzy0728 2019-05-08 13:32:01 +08:00 1
做事情,要有先后顺序,你可以先说出你的想法,起一个比较好的文案,然后建立一个同样感兴趣的讨论组,沟通交流之后,再
`备注:1.没有工资,没有工资,没有工资,本人很穷(/ω\)。2.希望能做成开源项目,让更多的人用,人人为我,我为人人。` 你直接就上来像是招人的感觉,让我感觉你目的不纯! 还有!如果你真的了解各种语言的原理,我觉得,你可以自己动手做一个小的 demo,把你的亮点什么的自己实现一下,至少底层的东西自己写一写。纸上谈兵在历史上有很多人,下场并不好。 |
146
FrankHB 2019-05-08 13:34:54 +08:00
@learnshare 你给的链接里出了个奇怪的东西……
Rust 一直没有成型的 spec。那个 reference 虽然被迫代替 spec 来用,但是根本不足以判定 conformance,也没提多少 design rationale。比起设计文档更接近用户手册。 |
147
Qiaogui OP @vanishcode
首先,您可能搞错了我自身的定位,我是一个建筑设计师,不是妥妥的程序员|ू・ω・` )。编程菜很正常,而且我一开始就搞错了很多方向,当时想学编程一开始就把语言学了个便,后来才发现语言只是表达的工具而已,重要的是自己的思想。后来我转念一想,既然走错了,就干脆啊错下去,学更多语言,错路走多了,正确的路虽然我已经走不了了,但至少可以告诉后人哪些路好走,哪些不好走,而我开发这门语言就是想铺这条路。 @crazypig14 ruby 确实对程序员很友好,它的源语言编程能力也很强大,但它最后是依赖 Rail 库才火起来的,一门语言竟然要依赖它方的库,就语言本身的设计来说,我觉得它是失败的。还有我希望这门语言不光程序员能用,一般大众也能用的很舒服。 @gabon @PureWhiteWu 很多东西我可以用口语化的语言让人很容易理解,但是我不会转换为书面语言,程序的逻辑非常清晰,但我的表述不一定清晰,所以需要有人整理。 @FrankHB 感谢大佬,您的观点针针见血,您有兴趣参加吗? haha ^_^,说着玩的,我想我也没有那么好的命能请到大佬的帮忙。。。 |
149
Kilerd 2019-05-08 13:38:07 +08:00 1
@FrankHB #139 这还不算设计不一致吗?
> int i = 1 这样设计可以说明这个语言倾向于前置类型设计,type identifier = expression. >var int q = 1, w = 2 这个设计又给我一种感觉是可以用过关键字在实现后置类型设计的。var type identifier = expresion (,identifier = expresion)*; 然而看回现在大部分语言都会混着这样设计。 var cons(x, y): //组合两个变量 rtn sel(int x): if x == 1 : rtn cons.x _ //返回函数 if x == 2 : rtn cons.y _ _ _ 包括他的函数定义里面, 一时间出现了函数 parameter 里面需要显式定义类型,一时间函数都可以「自动」推断类型的。 在没有一份 完整的 language specification,我认为这就是设计混乱,没毛病啊。 |
151
learnshare 2019-05-08 13:38:40 +08:00
@FrankHB 我的错,随手翻的,没有仔细了解
|
153
PureWhiteWu 2019-05-08 13:44:54 +08:00
@Qiaogui 我觉得你说的不对,书面语言才是最终最清晰的逻辑,所以你 必须 自己落笔成文,白纸黑字写下来(更何况你的设计只有你自己是最了解的,口语的表达是无凭无据也容易有偏差的)。落笔成文是协作的基础。
换句话说,你既然觉得你口语化能表述清楚,那么你就把你口语化打算说的,写下来,自己阅读一遍,看看是否逻辑清晰,前后不矛盾? 如果你写下来之后,能够满足以上条件,那么自然有人会愿意帮你把口语化的文字转换成书面文字。 |
154
HGladIator 2019-05-08 13:45:48 +08:00
编程语言设计确实是一门科学,但科学难道只有专门人士才能懂吗?我不像信,如果真这样,就没有民间出大神这一说了(虽然我并不是大神*罒▽罒*)。
------------------------------------- 科学本来就是只有专业人士才能懂! 民间出大神,这个大神如果不是民科的话,他也是通过自身努力懂得了科学,才在前人沉淀下来的知识中继续前行。 你不是大神,你就是想我们大家一起去你梦里。 你这从初二到大四自学编程都是梦里学的吧。 而且你本专业我猜测也没有学好。 |
155
Qiaogui OP @PureWhiteWu 您说的没错,不过我不觉得会有人喜欢看流水账。。。
|
156
PureWhiteWu 2019-05-08 13:49:20 +08:00 1
@Qiaogui 永远不要认为你自己脑补中觉得很清晰能说出来就没问题了,自己脑补和说出来让其他人学会,再到落笔成文是完全不同的 level,实际上无法写出来就是还没有想好或者逻辑不清晰,所以自己不知道该如何表述。
举个例子,我现在让你解释一下勾股定理你是不是能够落笔成文 1234 解释清楚,那就是因为这个逻辑对你来说是真正的清晰了;你无法落笔成文你的 spec,就代表你还没想清楚。 再退一步说,假设真的有人和你一起合作了,你怎么向他表述?不可能一直在他边上或者一直语音,最终还是要通过打字的方式来交流,那这不就是落笔成文? |
157
wutiantong 2019-05-08 13:51:40 +08:00 1
@Qiaogui 如果你的流水账里有包含巨大的信息量,我觉得也是极好的。
|
158
hafuhafu 2019-05-08 13:52:11 +08:00 2
别的我也不太懂...不过你这莫名其妙的颜文字让我得了癌..
|
159
Qiaogui OP |
160
haon 2019-05-08 14:02:11 +08:00
项目都没做过,来做编程语言?
|
162
1024hack 2019-05-08 14:04:33 +08:00 via Android
听说过易语言吗?
|
163
FrankHB 2019-05-08 14:06:30 +08:00 1
@Qiaogui
你搞错了不少东西,不过好像也不是很难纠正。(只是错的地方有些让我意外。) 首先,设计语言是专业的领域,有门槛,但大部分门槛跟程序员的经验的确不搭。 (比如,确实也不能指望大部分程序员搞清楚什么东西才能够得上是语言的 spec。) 不清楚怎么写现有语言的代码,确实不碍着设计语言。大致上你能清楚你设计出来的东西怎么用即可。 但是,自己能实现会远远更省事,并且会避免一些实现手段上的认知偏差。我认为你已经在吃这个亏了(比如说,不够清楚 LLVM 为什么不值得用),要让别人帮忙减小这样的问题并不现实。 还有个更根本的原因是,对一般意义的通用语言来说,区分元语言和对象语言是不必要的,因此不了解实现又没有能力自己发明整套新方法代替现有实现技术的话,势必无法得到你想要的设计。 只不过不止是你,劝诫你需要自己了解如何实现的各位好像也没都理解这个。 其次,语言不止是表达思想的工具。如果要强调通用语言,一定意义上,语言就是思想本身。你对语言的想法,不止是通过 spec (元语言),也会通过代码传染到你用语言表示的目的上。 即便放弃这点,style 这种东西也不会自动不存在。这也是形成 paradigm 的主要理由之一。 (搞 AI 的管这个叫符号主义学派,但在 PL 领域没有类似搞 AI 的其它学派的备胎能指望,所以回避不了。) 第三,程序员觉得所谓语言的友好大部分是错觉:社区友好 /用户友好跟设计出来的语言友好是两回事。 (比如说,随便拿坨实用的代码自己人肉解释一下然后问问自己有没有解释对,底气在哪,就知道大概多不友好了。) 作为语言的设计者不要落入这个陷阱。特别是你学会了了解“友好”,却没学会熟练编码这种能体现这样的片面“友好”的最主要场景的话,那么基本只剩错觉了。 第四,你指望别人整理,那就不是自己设计,是甲方了……这样,穷真的是没救的。 至于我自己,早就有实现能用的设计了,就是想化缘拉点苦力做点偏体力的活…… 只是我发现 LtU 上人平均认知在准确理解需求的阅历和能力上尚且远远不足,刻意在这边找就是姜太公钓鱼随缘罢了。 |
164
1ychee 2019-05-08 14:06:43 +08:00
哦。
|
166
glaucus 2019-05-08 14:08:54 +08:00
「不过并不影响我对编程语言的理解」楼主可以详细阐述一下自己的理解吗?方便你找的和你志同道合的人
|
167
whypool 2019-05-08 14:11:48 +08:00 1
auto auto
auto auto(auto){ auto auto+auto auto auto } 差一个牛 x 编译器,等大神 |
168
railgun 2019-05-08 14:16:54 +08:00
2019 V2EX 钓鱼大师赛参赛选手?
|
169
aino 2019-05-08 14:20:41 +08:00
最搞笑的是文档还要叫一个人来写,弟弟醒醒。
|
170
qdwang 2019-05-08 14:20:47 +08:00 via iPhone 1
lz 你什么都不会,期末考试要挂科的...
|
171
Otho 2019-05-08 14:24:13 +08:00
哎 加油吧,动手能力也很重要的
|
172
lilydjwg 2019-05-08 14:28:54 +08:00
「完整的想法我已经有了,就等实现了」——谁的脑海中没有几个实现了就可以改变世界的想法呢?
况且你的连想法都看不到。 |
173
FrankHB 2019-05-08 14:52:43 +08:00
@Kilerd 我同意语法设计的一致性是重要的,但我不同意只是一眼看上去的风格上的一致才重要。
相反,你指出的设计上缺乏的一致性,我认为是一个比较次要的方面,次要到如果用我的立场来考虑甚至可以无所谓这里的一致性——因为已经到处都够不一致了。 在展开解释之前,为了避免理解困难鸡同鸭讲,首先,我先解释一下我为什么觉得 LZ 这样设计的语法不好——因为比较复杂。 这个复杂并不是单独语法意义上的,而是牵涉到整个语言的语义设计和可用性上的。这样说过于抽象,我就说一下什么是我认为足够好的吧:能自然地接近 AST,允许自动获得同像性(homoiconicity) 的语法。 进一步,parse 这种语法的实现也是从简的,比如 LL(1)都能搞定。麻烦的东西全扔给语义去处理。 从我的角度来看,没有这样的性质的语法,就已经不够“一致”。 如果我要人肉 parse 这样的不够一致的语法,就必须参考具体的 BNF 或者其它表示,而不是仅记忆一个整体的只依赖词法设计上的文法规则(这样的规则的字典是字符集合,而不是记号集合),才能做到严格准确。 虽然有时候并不严格的准确也可以凑合用甚至还可能发现一些经验规则,但这种特例是破坏各种意义上的一致性的,让我觉得很不舒服;这对实现也不友好(基本没法用)。这种不严格可能非常微妙以至于大部分人都容易错误地忽略。举个例子,有许多人认为 C 的复杂声明可以用所谓“右左右左”的“黄金法则”来 parse,但是实际上真正看清楚 C 的声明符(declarator) 语法的会知道,这样做其实是不靠谱的——因为这隐含了“知道哪个标识符是要被声明的”这个不靠谱的前提。C 的 parser 也不能这样地实现对。 现在再回过头来讨论你说的“一致”。我的观点是,已经能肯定,这样的语法不得不看具体语法规则才能 parse 那么麻烦了,再去假定如何能在细节上“一致”,是没多大实际意义的。 因为,这样硬编码的整套语法规则其实并没有余地正式保证你所谓的一致,所谓一致全是君子协定。于是,就算这里改成符合你期望的一致了,万一哪里突然又冒出一个特例为违反你指望的这种一致呢?再发明不同的乱七八糟的“黄金法则”然后来 trial and error,或者干脆像 C++的常见套路一样做 speculative parse,然后通过语义分析排除掉错误的 parse 路径? ……这对人类读者来讲也太扯了。(天下人苦 C-like 久矣……) 上面说的是语法的方面。你提的一致还提到了一些语义上的东西,例如类型推断。不过同样我不觉得这里的一致性有你说的这般重要。因为,只要不限制 spec 的长度,写出强行规定成一致的语义规则的余地实在是太大了。你觉得不一致?很好,那只是你没发现…… 所以,没看到 lang spec 之前,我不同意你的不一致的理由。反过来,看到 spec 之后,倒是可能容易判断这样的设计不只是语法,在语义上也明显不必要地复杂了。 |
174
Qiaogui OP |
175
SuperMild 2019-05-08 15:17:36 +08:00
@FrankHB 第四点非常关键,如果 LZ 能自己做出东西来,那就算出来的东西不完美,也是值得尊敬和帮助的。但自己什么都做不出来,只有想法(而且是说不清楚的想法),这种情况下唯一正确的做法就是 LZ 出钱请别人做。
光凭想法,自己基本上不怎么出钱,拉到了巨额投资,把事情真的运作起来,这样的忽悠天才我只见过一个:罗永浩。 很明显 LZ 的忽悠功力也没那么高。 |
177
VEEX6 2019-05-08 15:32:52 +08:00 via Android
要脚踏实地,建议 lz 先定个小目标,比如赚它一个亿
|
178
srect2018 2019-05-08 15:37:44 +08:00
支持
|
181
persontia 2019-05-08 15:41:22 +08:00
请问楼主您上过 Programming Language Paradigms 课程吗?🤨
|
182
Qiaogui OP @persontia 没有,不过我学习过程序语言设计原理,程序语言设计实践,以及特伦斯 帕尔教授的程序语言设计指南。
|
183
unknown32767 2019-05-08 15:59:39 +08:00
我局得您比较适合干 PM,不就是提需求🐎
|
184
persontia 2019-05-08 16:00:40 +08:00
@Qiaogui 那应该足够了。推荐 Jetbrains 的 MPS IDE 给你,专门用来写编程语言的 IDE。加油!有志者事竟成!
|
186
zhw2590582 2019-05-08 16:13:19 +08:00 via iPhone
我觉得能开发语言的需要很深厚的理论基础,你觉得你可以的话就试试
|
187
Sasasu 2019-05-08 16:15:33 +08:00
函数定义的语法没看明白:
var Cons(var x, var y) 和 var Cons<var x, var y> 有什么区别? |
188
Sasasu 2019-05-08 16:18:47 +08:00
= = 好吧... 在下面写着
|
189
MrTEA 2019-05-08 16:22:36 +08:00 via iPhone
一想天开? [手动滑稽
|
190
araraloren 2019-05-08 16:24:51 +08:00
想搞的话先搞个 SPEC 出来。。
|
191
maxco292 2019-05-08 16:30:20 +08:00
有类型系统吗?楼主可读过《 types of programming languages 》,要设计函数式语言必备技能书
|
192
maxco292 2019-05-08 16:32:07 +08:00
即便函数式 toy language 也一般要搞一套自洽的 type system
|
193
bokchoys 2019-05-08 16:37:34 +08:00
我身边有个同学也想搞,但是难以下手
现在他拿现成的在做注释学习, 如果有兴趣,我再联系他一下, 支持楼主。 |
194
inwl 2019-05-08 17:01:09 +08:00
可以自己先写一个 demo 放到 github 上。
|
195
afirefish 2019-05-08 17:07:38 +08:00
“比 Basic 容易理解”,Basic 有什么不好理解的地方?你的语言是如何更容易理解?
“比 Java 更加高级”,你的语言是如何做到比 Java 更高级的? “比 Python 更加健壮”,你的语言是如何做到比 Python 更健壮的? 这难道不是。。。。。。C#? |
196
zhang1215 2019-05-08 17:11:58 +08:00
我秦始皇打钱
|
197
OakScript 2019-05-08 17:23:30 +08:00
合着你啥都没有就想骗苦力?疯了吧
|
198
aijam 2019-05-08 17:26:46 +08:00
loop for 不就是 ruby 的 until do 么?
|
199
way2create 2019-05-08 17:27:32 +08:00
不懂,我虽然会写框架,但要写出成熟安全的目前都不太 ok,也不是一朝一夕,编程语言不敢想 ,我还是学习吧
|
200
gh0007 2019-05-08 17:30:00 +08:00
走过
|