打算设计一门集所有语言的缺点短板于一体的语言,可能从哪里开始或者有哪些功能建议呢?

21 天前
 netabare
这个想法大概一开始是从某语言的变量提升开始的,刚学到那语言就觉得怎么会有这么天才的设计,真是太符合心目中的「语言的经典设计」(恶趣味角度)了。

虽然后来慢慢也理解到了这个设计的缘由,而且其实对这个语言接近 Lisp 和函数式的一些角度还是蛮喜欢的。

后来接触了一些其他的语言,例如某个 J 开头的语言,包括各种设计模式,有时候写着代码的时候,看到一些奇怪的约束和很不方便的地方,也会想,是不是可以做个集这一些短处为一体的语言呢。

现在想的话,大概想到的可能还有这些想法吧:

- for 关键字同时用于不同的循环、分支里面
- 混淆 true/false 、0 、非 0 、void 等概念
- 遍历集合的时候会改变原集合的结构
- 用 plunk 之类的字符串匹配而不是 map/forEach/filter
- 用同一个东西和语法表达列表、字典等多种数据结构,并且不关心顺序
- 每个函数都有个 this 指针
- 没有泛型,并且需要强转
- 所有的对象都可以 call ,函数也可以 new

目前大概想到的是这么多吧。
6630 次点击
所在节点    程序员
85 条回复
658
19 天前
if err != nil {
}
proxychains
19 天前
null,undefined:=make(&nil)
8620
19 天前
如果想要折磨人,不如看看某学校大一上学期的一个作业,占那门课的 7.5%:
写一个简单的 RISC 汇编程序,程序功能自选但是得有功能,指令集只有加、取、存、跳转、大于等于跳转、不等于跳转、以及一些编译器提供的便利功能(标签、常数等)。
半个月前刚辅导完今年的学生,大概一半人直接放弃了,比去年稍微少点……
netabare
16 天前
@songray 虽然 var 那个确实有这个想法,但是其实某种程度上我还蛮喜欢 JS 的( bushi

@mekingname 这个思路不错,感觉可以再考虑一个专门应对它的设计模式(

@koykoi 这个之前也有看过,甚至有做过一点贡献( bushi 不过感觉 Dreamberd 比较偏向前端,和我的想法不太一样

@FalconD 认同

@kneo 听起来有点规则怪谈了

@DOLLOR 想起 PHP 那个 semicolon 了……

@FYFX 这个不错!不过感觉实际实现有点难度,很可能在实现之前自己人先晕了

@jianchang512 说到 try/catch ,我倒是想过一个只有 try/catch 来表达控制流,并且所有 if/while/for 都得用 try/catch 模拟的语法……

@soul11201 感觉这个思路是「做一件事,但做得马马虎虎」,刚好和 unix 哲学背道而驰

@spongebobsun 随着 JS 不停刷版本,其实 JS 似乎反而还越来越像个正常语言了……而且 JS 有许多灵活的东西我还是蛮喜欢的(叠个甲,我是静态强类型阵营的)

@llsquaer 不完全是,某种程度上我觉得 JS 的设计虽然有很多问题,但是其实已经算是蛮健全(?)的了。在低代码或者企业级技术栈里面有更多古神低语,当然 JS 的一些上古框架的很多设计也确实很难绷。

@xuld 其实我倒是有想做自己的语言,但是就像你说的,成熟的语言需要一整套生态和工具链,我眼下优先可能考虑更健全的设计吧,不过这个倒是后话了……问这个问题某种程度上算是吐槽()

@jspatrick 可能因为我比较熟悉 JS (

@ayase252 这个似乎确实某种程度上算是个潘多拉魔盒了……感觉也确实是这个问题下的必选项()

@ns09005264 还可以再加个 0 、void 和空字符串

@DiaoWang 想到了一个叫 BANCStar 的语言了(虽然跟你描述的不太一样,但感觉思路很像)

@8620 可以指一下路看看是什么课程嘛,感觉很有趣想 follow 一下,顺便也从比较高层的语言设计转向底层实现,近半年主要是自学 UW PL 和 Scala 的公开课,然后自己断断续续看书写自己语言搞各种东西,不过都离底层或者硬件实现感觉有点太远了(
soul11201
16 天前
@netabare #84 >@soul11201 感觉这个思路是「做一件事,但做得马马虎虎」,刚好和 unix 哲学背道而驰。
其实不是,Unix 里面的原话是 >让程序只做好一件事。
资源总是有上限的,对于一个系统来说很难件件事都做到最好。

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

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

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

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

© 2021 V2EX