想写一个更高智商的编程语言

2018-05-01 07:25:38 +08:00
 enm

初步打算从 lisp to js 的解释器开始,逐步完善语法、API、标准库,等成熟后再编译到 C、wasm 等更高效的语言。

想了解一下各位的看法,比如有没有更好的做法、怎样才是更好的语言?


目前写的介绍开头

11697 次点击
所在节点    程序员
95 条回复
Building
2018-05-01 11:57:16 +08:00
@bumz 一听就是有: 这代码写得真垃圾,让我来重构一下深刻体验的人。
zhjits
2018-05-01 11:57:41 +08:00
你要在 editor 里面直接写 object 的话,JetBrains MPS 了解一下,都凉了好多年了(现在功能上还是可以用的,就是没人用而已)
ltoddy
2018-05-01 11:58:16 +08:00
prolog 了解一下?
SuperMild
2018-05-01 12:00:32 +08:00
说什么都没用,至少要先做一个 demo 出来才能讨论
shihira
2018-05-01 12:30:28 +08:00
现有语言有龌龊的地方,本质上是因为物理上不完美,需要 tradeoff。比如,内存不是无限大,内存不够快,等等等等你无法改变的东西。于是乎你必须要考虑资源管理这种龌龊的事情,gc ?还是提出某种机制如 raii 交由用户管理?无论哪个都有缺点,都不完美。

所以楼主,你打算怎么设计内存管理机制,或者放点设计得比较得意的代码片段吧
vsomeone
2018-05-01 12:40:00 +08:00
你这跟罗永浩有什么区别…
daigouspy
2018-05-01 12:43:06 +08:00
首先你确定你自己是更高智商的吗?
lrxiao
2018-05-01 12:54:14 +08:00
算了吧(
丢个 checklist: http://colinm.org/language_checklist.html
lunafreya
2018-05-01 13:30:27 +08:00
我认识一个做 PL 的同学,现在跑去做 NLP 了。
另外我没有看到一个所谓的新语言, 而且楼主好像也不有表现出理解当代编译器机制的情况。
一个语言的核心当然是其语法和语义,不是什么 api, 标准库,后者只能决定这个语言好不好用,前者决定了这个语言的表现力(比如是否图灵完备等)如果你能给出一个比较好的 demo, 我觉得产生一个可用的新语言问题不大。
Ps. 每年在实验室产生的新语言有数千个
crlf0710
2018-05-01 13:40:39 +08:00
1. 我觉得首先需要定义高质量。
2. 读代码比写代码更困难。维护周期比书写周期长得多。
3. 按照楼主的思路,一个更容易定义的目标是:更高智商的人*才能*用的编程语言。
windfarer
2018-05-01 13:43:50 +08:00
haskell 了解一下
xiaojie668329
2018-05-01 13:46:50 +08:00
软件不好用跟语言没关系吧。
waruqi
2018-05-01 13:53:36 +08:00
有这点时间在这里扯,赶紧去码代码吧,写出来自然有人支持。
fox0001
2018-05-01 13:57:26 +08:00
感觉需求不明确。什么是好用,什么是只有聪明的程序员才适合用?更不明白的是,为什么是编译成其它语言?
tiancaiamao
2018-05-01 14:08:41 +08:00
小伙子,我年轻的时候也像你这么想。
后来我弄明白这门语言之后,就不这么想了。
http://www.shenlanguage.org/
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 设计上还是比较水的,中规中矩吧。
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 没有设计,只有演化;虽然我看来逆向文法是很疼的不过或许有人乐在其中吧。
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.)
sensui7
2018-05-01 14:51:43 +08:00
@vcinex 你好像没有理解这句话

> Every programming language was made up by people that were no smarter

而且还有 8 个赞,
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 ……谁か助けて~っ!

(人格担保不是大作业:)

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

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

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

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

© 2021 V2EX