初步打算从 lisp to js 的解释器开始,逐步完善语法、API、标准库,等成熟后再编译到 C、wasm 等更高效的语言。
想了解一下各位的看法,比如有没有更好的做法、怎样才是更好的语言?
目前写的介绍开头
1
qiukong 2018-05-01 07:32:44 +08:00 2
想法不错,但需要有个高智商的头脑
|
2
Ultraman 2018-05-01 08:03:12 +08:00 via Android 17
跑个题
Every programming language was made up by people that were no smarter than you 我表示质疑😏😏 |
3
yu099 2018-05-01 08:23:35 +08:00 via Android
010101000001 这样的机器码吧
|
4
jazoma 2018-05-01 08:54:43 +08:00 4
这样的语言早就有了,而且有很多,它们都合起来就叫"面向员工编程语言", 使用这门语言的程序员叫老板。
|
5
metorm 2018-05-01 08:57:50 +08:00 via Android 1
Brainfuck 了解一下?
|
6
947211232 2018-05-01 09:41:45 +08:00
想法是好的,but 时间成本很重要,需要团队并且需要推广,否则你大概只写给你自己用。
|
7
KKKKKK 2018-05-01 10:07:44 +08:00 via iPhone 1
Rust 了解一下
|
8
htfy96 2018-05-01 10:09:20 +08:00
估计没有人用,worse is better
|
9
forestyuan 2018-05-01 10:15:34 +08:00 1
醒醒,起来搬砖!
|
10
skywalker 2018-05-01 10:23:19 +08:00
lisp to js? 直接用 clojure 不就好了,你自己都没想法,还是先搬砖吧
|
11
lulinux 2018-05-01 10:36:42 +08:00 via Android
不装逼会被打死。
|
12
AllOfMe 2018-05-01 11:16:25 +08:00
首先需要一个高智商的大脑+1
|
13
coyove 2018-05-01 11:18:08 +08:00
lisp -> llvm -> js
这样的话有现成的工具 |
14
enm OP 如果一个高智商的大脑就够了,那 Yin 语言不早就写出来了吗?
|
15
enm OP 仅仅是用 lisp 的语法,并不是要写一个 lisp
|
16
oswuhan 2018-05-01 11:27:46 +08:00
加油,别理这些冷嘲热讽的。
|
17
niubee1 2018-05-01 11:28:13 +08:00
编程语言跟软件好不好用完全是两个事情好吧
|
18
dtgio 2018-05-01 11:29:49 +08:00 via iPhone 1
希望你能坚持下去,希望看到你的作品
|
19
wizardforcel 2018-05-01 11:39:34 +08:00 via Android
不知道怎么个智能,你再怎么造也不如 nlp 智能
|
20
bumz 2018-05-01 11:51:47 +08:00 4
我觉得把
Everything around you that you called life was made up by people that were no smarter than you 改成 Every programming language was made up by people that were no smarter than you 不太好 毕竟事实上 Most programming language were made up by people that were much much smarter than you 很多你以为 愚蠢 不方便 不够个性化 的设计 其实是经过了长期实践的检验 无数失败的教训 才成了 今天这个样子的 而很多你觉得好并且真的好的设计 其实大多数编程语言本来就有 |
22
zhjits 2018-05-01 11:57:41 +08:00 1
你要在 editor 里面直接写 object 的话,JetBrains MPS 了解一下,都凉了好多年了(现在功能上还是可以用的,就是没人用而已)
|
23
ltoddy 2018-05-01 11:58:16 +08:00
prolog 了解一下?
|
24
SuperMild 2018-05-01 12:00:32 +08:00 via iPhone
说什么都没用,至少要先做一个 demo 出来才能讨论
|
25
shihira 2018-05-01 12:30:28 +08:00 via Android 3
现有语言有龌龊的地方,本质上是因为物理上不完美,需要 tradeoff。比如,内存不是无限大,内存不够快,等等等等你无法改变的东西。于是乎你必须要考虑资源管理这种龌龊的事情,gc ?还是提出某种机制如 raii 交由用户管理?无论哪个都有缺点,都不完美。
所以楼主,你打算怎么设计内存管理机制,或者放点设计得比较得意的代码片段吧 |
26
vsomeone 2018-05-01 12:40:00 +08:00 via iPhone 5
你这跟罗永浩有什么区别…
|
27
daigouspy 2018-05-01 12:43:06 +08:00 via Android
首先你确定你自己是更高智商的吗?
|
28
lrxiao 2018-05-01 12:54:14 +08:00
算了吧(
丢个 checklist: http://colinm.org/language_checklist.html |
29
lunafreya 2018-05-01 13:30:27 +08:00 via iPhone
我认识一个做 PL 的同学,现在跑去做 NLP 了。
另外我没有看到一个所谓的新语言, 而且楼主好像也不有表现出理解当代编译器机制的情况。 一个语言的核心当然是其语法和语义,不是什么 api, 标准库,后者只能决定这个语言好不好用,前者决定了这个语言的表现力(比如是否图灵完备等)如果你能给出一个比较好的 demo, 我觉得产生一个可用的新语言问题不大。 Ps. 每年在实验室产生的新语言有数千个 |
30
crlf0710 2018-05-01 13:40:39 +08:00
1. 我觉得首先需要定义高质量。
2. 读代码比写代码更困难。维护周期比书写周期长得多。 3. 按照楼主的思路,一个更容易定义的目标是:更高智商的人*才能*用的编程语言。 |
31
windfarer 2018-05-01 13:43:50 +08:00
haskell 了解一下
|
32
xiaojie668329 2018-05-01 13:46:50 +08:00 via iPhone
软件不好用跟语言没关系吧。
|
33
waruqi 2018-05-01 13:53:36 +08:00 via Android
有这点时间在这里扯,赶紧去码代码吧,写出来自然有人支持。
|
34
fox0001 2018-05-01 13:57:26 +08:00 via Android
感觉需求不明确。什么是好用,什么是只有聪明的程序员才适合用?更不明白的是,为什么是编译成其它语言?
|
35
tiancaiamao 2018-05-01 14:08:41 +08:00 2
|
36
FrankHB 2018-05-01 14:27:48 +08:00
小碰友们哪,天赋点对了没,基础知识兹瓷准备到家了没?不要没事就要造个大煋闻,有点经验的都会在 [事前] 怀疑为什么要拿 js 那么不靠谱的后端搞什么语言……识得唔识得啊?
利益相关:独立重新发明部分 fexpr & vau calculi [1](虽然懒得证 Church-Rosser property )/space hierarchy of activation records [2]/CESK-style abstract machine [3],刚刚尝试重新发明 abstraction power theory [4]。 发现有重复轮子之后悲痛欲绝欣喜若狂 /大失所望 /如释重负 /索然无味(?)。 [1] http://lambda-the-ultimate.org/node/4093 [2] http://www.brics.dk/RS/05/2/BRICS-RS-05-2.pdf [3] https://dl.acm.org/citation.cfm?id=277719 [4] http://lambda-the-ultimate.org/node/4861 半成品暂时不放了…… @tiancaiamao Shen 设计上还是比较水的,中规中矩吧。 |
37
FrankHB 2018-05-01 14:41:37 +08:00
@lunafreya 设计语言和实现语言都算是做 PL,然而内容差得远了。
恕我直言,搞 PL 的,至少我这些年听说过的看到过的,多数不会设计语言,强一点的主要体现在会发 paper 灌水,基本上也不会写 spec。 绝大多数从业者基础不达标到普通码农水准类似(例如啥 paralleism 和 concurrency 都扯不到点上,又如某乎上什么弱类型强类型的问题回答一溜儿槽点)。 少数知识比较健全又会写 spec 的,如 Robert Harper 之流,都未必算得上全职搞 PL 的,而且已然走偏了。 要实现嘛……企业里干活也有不上道的。(记得王垠提过个 Coverity 里的 C++代码的错误,一看就是说不上会 C++嘛) 搞 NLP 或许是个更正经的出路,因为正经的 NL 没有设计,只有演化;虽然我看来逆向文法是很疼的不过或许有人乐在其中吧。 |
38
FrankHB 2018-05-01 14:51:30 +08:00
@shihira 你这题目太水了吧,backend 就支持 GC 的设计,一个 GC 糊过去都碾压了(恶心不恶心另一回事)。
换个题目有兴趣的可以玩玩:提供 first-class environment,允许 first-class side effects,不使用全局 GC,如何设计内存管理相关的机制支持 proper tail call ? (Hint: It's ur freedom to re-shape the language rules.) |
39
sensui7 2018-05-01 14:51:43 +08:00
|
40
FrankHB 2018-05-01 14:57:24 +08:00
@waruqi emmm...
https://github.com/FrankHB/YSLib/blob/master/YFramework/source/NPL/NPLA1.cpp#L997 我柑橘这附近有些 bug ……谁か助けて~っ! (人格担保不是大作业:) |
41
FrankHB 2018-05-01 15:19:56 +08:00 1
@shihira 咦,刚才有一段好像没贴上……
反了,不完美的不是物理而是 model。比如,凭什么内存是无限大才是完美的?凭什么访存有延时比起延时为零是完美的?(足够小……好像没法吐槽……)物理上恰好相反,这些你想要的完美性质会引起无法处理的奇点。在我看来,妥协——或者说正视需求——是设计之所以成为设计的本质之一,而自以为是的完美是另一种龌龊。 @xiaojie668329 真不见得,比如 cmd 比 powershell 用起来屎主要还就是因为语言设计的关系。当然,反过来像 ps1 下 chcp 65001 都炸那就应该是比较纯粹的人祸了。 |
42
udtrokia 2018-05-01 15:32:17 +08:00 via iPhone
卧槽 兄弟你和我想的一样
|
44
udtrokia 2018-05-01 15:40:29 +08:00 via iPhone
我的思路是 先用 scheme 解释 html,然后 dom 操作,然后看看能不能基于 webkit 搞个浏览器出来,
可能这东西没有图灵完备 |
46
eccstartup 2018-05-01 16:36:36 +08:00 via iPhone
不用为了延长鄙视链而发明轮子了,鄙视链的顶端是数学,现在的发展方向是底端,不需要编程语言而编程。
|
47
enm OP @udtrokia 类似但更好的思路是 用 scheme/rust/c 等做后端数据操作,直接生成表示 view 的 json/html,通过 socket 传到 electron 或 webview 进行显示。
这类做法性能更好,但时间成本高,在开始阶段暂时不考虑。 |
48
enm OP 其他那些一点实现思路都提不出,就在那大言不惭的,感谢你们的激励
|
49
momocraft 2018-05-01 17:59:30 +08:00
"高智商" 可能一定程度上是 overfitting
|
50
udtrokia 2018-05-01 18:02:20 +08:00 via iPhone
@enm 不知道你的目的是什么😂 我第一步是用一种语言快速开发 web 应用,后面的协议方面可能会设计
|
51
udtrokia 2018-05-01 18:07:41 +08:00 via iPhone
@enm chez, phoenix, elixir, nix, webassembly, nim 我想做一个工具
|
53
greatghoul 2018-05-01 18:15:15 +08:00
写吧。
|
54
zcjfesky 2018-05-01 18:41:03 +08:00 via Android 2
这帖就是“我有一个好主意,征求一个帮我实现的程序员合伙”的扩大版本
“怎样才是更好的语言”这个问题你都没有一个完备的定义,就开始考虑“怎么写出一个更好的语言” 再譬如简介里的“ easily ”,"ideally",具体是要实现什么效果?在别的语言是否没有实现?为什么这个效果比别人更 easily ?你有具体的证明吗? 你自己的思路请自己先构出原型,别人才有机会插嘴,否则大言不惭的恐怕不是别人 |
55
hdjs5264 2018-05-01 19:11:26 +08:00
歪个楼,omnifocus 了解一下
|
56
maxco292 2018-05-01 19:20:06 +08:00 via Android
支持,类型系统想好了吗,给 lisp 加类型可不是什么简单的事。
|
57
xupefei 2018-05-01 19:34:19 +08:00
我觉得 LZ 可以先用中文写,顶楼这英文我看了半天也没懂……
|
58
cnt2ex 2018-05-01 19:37:33 +08:00
> 甚至有可能令人讨厌,比如已经有人连我的英文介绍都没看懂就出来秀智商。
这英文一堆问题。 |
59
cnt2ex 2018-05-01 19:57:07 +08:00
逗号不能分割完整的句子。单词拼写错误。不定冠词用错。复数形式。其他。
我甚至怀疑你是来钓鱼的。 |
60
changhe626 2018-05-01 20:06:31 +08:00
scala
不了解一下. |
61
carlclone 2018-05-01 21:28:31 +08:00
楼主你这英文真的要秀吗.....
|
62
Moackyy 2018-05-01 22:37:18 +08:00
楼主不妨先聊一下一门语言的发展?还有楼主透漏一下本身的职业,看到底有多靠谱
|
63
msg7086 2018-05-01 23:47:57 +08:00 2
the smart way to "progrom"
code editor showing the most concise "reprentation" for you object "reprentation" for every "lines" of code text "reprentation" with lisp syntax easily "manuplate" by program (eg. code editor) code to "excute" on different platform 抱歉,我智商真的没高到可以流畅地阅读这种语言文字。 而且看你说了那么多,不还是个键盘侠? |
64
tempdban 2018-05-02 01:20:23 +08:00 via Android
有 llvm 了,何苦呢…
|
65
neoblackcap 2018-05-02 01:31:52 +08:00
说那么多不就是一个以 s 表达式作为 ast 的语言嘛,同类型的东西请看 Jetbrains 的 MPS。
你说那么多都不是一个语言的问题了,反而更多的是工具。你这样语言基本限制了用什么工具打开你的源代码。如果我用 vim 打开就变成了写 lisp 了。唯有用你的 smart code editor 打开才能显示成最合适的的样子,你需要的是一个 IDE 而不是语言了。 |
66
ryd994 2018-05-02 01:37:47 +08:00 via Android
王垠
|
67
zhanao1994 2018-05-02 02:27:08 +08:00 via Android
话说垠王的语言弄完了吗
|
68
20015jjw 2018-05-02 03:14:35 +08:00 via Android
lz 你要不看看写 wolframalpha 的大佬有多聪明
|
69
FrankHB 2018-05-02 05:07:13 +08:00
@eccstartup 数学多了去了……幼稚园算术也是数学,还不让鄙视了不成。不说 PL 关心的很多东西根本就是基础数学(如数理逻辑)与(至少有试过作为)数学的基础(如范畴论),谁鄙视谁还不一定呢。
@tempdban llvm 是干嘛你造嘛……虽然他们当年也以为能吞并 libjit 的…… |
71
nycbdwss 2018-05-02 08:29:35 +08:00
我发现你跟老罗差不多 没造手机前抱怨别人的手机怎么怎么不好 说自己一定要创造一个秒天秒地的最 nb 的手机 结果....真正到他自己做手机的时候 才发现原来被说的话一次次被打脸
|
72
torbrowserbridge 2018-05-02 08:29:54 +08:00 via Android
|
73
torbrowserbridge 2018-05-02 08:31:37 +08:00 via Android
误操作
|
74
alphanow 2018-05-02 09:05:26 +08:00
Talk is cheap. Show me the code.
-Linus Torvalds |
76
zhaogaz 2018-05-02 10:14:42 +08:00
其实楼主说的有点矛盾
一般来说,语言智能了,就不需要聪明人写代码了。 语言不智能,需要聪明人来处理。 你举例的 gtd,想证明的是,软件这么多,但是没有一个好用,因为语言层面不智能。 成品的项目,显然不是编程语言能解决好坏的。。。不知道楼主想清楚没有? 楼主要是真的不知道自己在做什么,你就把你所有想说的话都说出来。我们帮你分析原因。。。。 |
77
LAS 2018-05-02 10:36:17 +08:00
c 语言了解下?
|
78
smallHao 2018-05-02 10:44:27 +08:00
不如先把英语学好可好?
|
79
FrankHB 2018-05-02 12:13:18 +08:00
@tempdban 如果你只是说“干嘛”的,不就是个挂了一坨拖油瓶的 LLVM IR 的实现么。
设计用来干嘛和能干嘛是两码事。是否合适又是另一回事。 |
80
FrankHB 2018-05-02 12:28:29 +08:00 1
@zhaogaz 不巧,刚好这个领域的聪明人都写代码,并且在可预见的未来内恐怕也只有写代码这种方式靠谱。
道理和说给 LZ 听的一样简单:需求到底是得用户自己说的,不是靠谁猜的。 与其说需要聪明人才能处理不够智能的语言,还不如说导致沟通成本大大上升、效率大大下降的所谓“智能”是不够聪明的人没有其它选项的妥协——不得不牺牲时间放在容错上先尽量保证正确性。 最清晰直接地表示需求的方式是什么?形式语言。不是类似自然语言那种以给没有经过训练的一般用户省事的模糊陈述,而是精确的程序设计语言——如果没有现成的系统去解这些描述的需求,那就顺便自己动手丰衣足食解了就是。至于消化成本的方式多得是,看有多“聪明”咯……而且可以肯定的是:1)比引入适应不够聪明的人解整体更简单; 2)整体还就是绕不过写代码(只不过不是自己写罢了)。 当然,也有再怎么聪明的人和不那么聪明的人没多大区别的时候——比如规模失控。但是聪明人为什么要浪费资源陪着玩呢? |
81
no1xsyzy 2018-05-02 12:30:25 +08:00
我怎么就突然变成了过来人……( https://github.com/no1xsyzy/pysinpl )
第一,先做成某个语言上的框架,保证在没有做到完全独立的情况下能够用现存的还过得去的语言写库,或者包装一个库。就一个 html 库就够写上很久的了 第二,如果你不提出一个全新的范式,也很难产生一个全新的语言,Python 给了很大的自由度(大约已经有 lisp 的 60%了),基本上就是包装一下的事,这种情况下与其称为语言,不如说是一个自用的代码库——这种其实随时间就自然形成了。 第三,库的 |
82
hmzt 2018-05-02 16:32:01 +08:00
果然每个程序员都喜欢重复的造轮子(包括我)
|
83
sampeng 2018-05-02 16:59:24 +08:00
看到题目进来。。。
然后又看到一句 等成熟后再编译到 C、wasm 等更高效的语言。。。 恩?要这何用?你就不能直接编译成机械码?轮子多的全世界汽车加起来都都不够用了吧。。。 第一要定义什么是高智商,第二要定义什么叫编程语言。。 我的理解。。高智商的编程语言真的像楼上所说的老板。 对着某人或者物吼一嗓子,东西就出来了。是不是很神奇 |
84
gamecreating 2018-05-02 18:29:42 +08:00
没必要
|
85
w4462358 2018-05-02 19:39:05 +08:00
楼主有想法.我很支持.但是现在抛出几个问题
1.你这个语言的定位是什么? 后端开发? 前端开发?嵌入式开发? 2.复杂的语言很多.语法糖多的语言也很多.但是真正火的语言.往往是简单容易理解的.因为你写出机器能理解的代码不难.但是写出人容易理解的代码就很难.项目上了规模考虑的都是迭代成本.语言可读性,维护性就很重要. 3.我不觉得写代码是个智商工作..往往和智商关联不大.也许你觉得算法可能跟智商有关系..但是本质上只是唯手熟尔罢了. |
86
GentleSadness 2018-05-02 19:56:42 +08:00 via Android
我说真的,与其说我要最安全,不如说我做了什么,你这堆东西说的好听叫有志气,说得难听叫只会吹
先上代码,说说自己会写什么再吹比 |
87
encro 2018-05-02 19:59:54 +08:00
框架不就是干这个事情的吗?
你要做的难道不是基于某框架做一套组件库吗? 移动端安卓和 iOS 设计规范不是做这个的吗? 复杂在于你认为每有一定标准,而现实审美是变化和动态的。 |
89
unusualcat 2018-05-02 21:15:38 +08:00
罗永浩了解一下
|
90
no1xsyzy 2018-05-03 00:33:47 +08:00
|
91
depeng 2018-05-03 09:02:47 +08:00
做个 demo 出来,否则都是放屁
|
92
hellojl 2018-05-03 10:56:42 +08:00
Wolfram 了解一下,然后,再学学英语......
|
93
FrankHB 2018-05-03 12:27:16 +08:00
@no1xsyzy 实现是指以你提供的特性允许表达和涵盖功能,还是指添加类似特性到你的语言中?
Lisp 的语法奇怪是指? S-expression 本身基本上就是一坨 AST,不过要用宏多出来的一坨 special forms 看起来是比较不干净。 如果能表达分清楚 eval 前后的东西,Lisp 的宏其实挺多余的……实现 hygiene 也远远不需要那么麻烦。当年 McCathy 大概没往这里细想就是了。 |
94
picasso2501 2018-05-03 13:56:14 +08:00
我已经开始做了
|
95
omnip 2018-05-03 17:01:05 +08:00
‘为什么现有的软件这么多,却没一个真正好用的? ’
是么?大家都这么想么? |