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

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

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

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

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

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

目前大概想到的是这么多吧。
5623 次点击
所在节点    程序员
81 条回复
james122333
1 天前
@lysShub

其实 yymm 还是比较直观的 对应英文字 除了这点以外我觉得 go 其实不错 简洁好写 写命令行工具也好写
justdoit123
1 天前
@cocong 所以说,教条才是永恒。

“反正我跟你说好就是好”
“你看,这个函数多纯啊!”
“你看,我们能动态绑定,多灵活。”
“你看,我们现在摆脱动态绑定了,多纯粹”。

我现在对“语言软文贴”避而远之。
tt67wq
1 天前
@XCFOX CSP 模型设计的像 Go 这样开箱即用这么方便的还真没有
laminux29
1 天前
不建议发明新语言,因为,语言最重要的,并不是它有多好,而是需要有足够的资金与威望,能推广它,让更多的程序员去用,让配套环境足够广且大。

比如 C# 比 Java 、Python 、JS 语言好太多,但后面 3 者随便哪位都能在使用人数与配套环境上秒了 C#。
thinkershare
1 天前
很多语言的优点是相互矛盾的,你不可能将相互矛盾的东西融合到一起,取舍从来都是在现实世界做事的最基本的原则。
xuanbg
1 天前
别的我不知道,靠缩进而非花括号标识代码段这个必须学起来!
tianzhiya
1 天前
extends 可以继承多个类,并且内存释放必须自己管理
krixaar
1 天前
代码不使用大小括号,而是类似 BASIC 语言的 IF...THEN...END IF/FOR...END FOR/SUB...END SUB 的形式。
在此基础上,用缩进表示代码层级,写 END 只是为了 aesthetic 。
jspatrick
1 天前
很奇怪,每一行都有 js 的影子,但又不完全是
xz410236056
23 小时 12 分钟前
这些缺点,objective-c 得包含一半
rossroma
22 小时 30 分钟前
找出最流行的 20 种语言,每一种语言都提取出它最突出的 10 个优点,然后你把这些优点汇集在同一个语言上,那就是最糟糕的语言。
Doraismydora
22 小时 11 分钟前
vb:不区分大小写
py:用缩放区分代码块,变量可以不声明并且作用域直接是整个函数
js:this 指针到处乱飞,var 声明变量的奇奇怪怪的特性, 双等号和三等号
C/C++:看起来像是强类型语言但是实际上有各种显式隐式 cast ,编译报错几百行
java:1==1, 127==127 ,128!=128
matlab:下标从 1 开始
rust:返回值不用显式 return
proxychains
21 小时 56 分钟前
@SchwarzeR #9 time format 的 20060102150405 也是纯逆天
ninjashixuan
21 小时 38 分钟前
@rossroma 这么牛的编译器应该不存在吧。
layxy
21 小时 29 分钟前
仓颉好像就吸收了不少语言的优点,只是目前好像还没有开放
yb2313
21 小时 1 分钟前
js,然后再添加一些其他的特性,把速度再优化慢 100 倍
ayase252
20 小时 59 分钟前
隐式类型转换
cocong
20 小时 22 分钟前
最好的变成语言是人工智能,无需变成,要啥直接说,未来是不需要软件的。
EscYezi
20 小时 18 分钟前
变量用$声明
ns09005264
20 小时 14 分钟前
让这三种类型并存:null 、nil 、undefined 。
并且这样写可以通过编译:

```
varlet foo: Foo = null;
foo = nil;
foo.bar();
```

语法尽量地少,比如函数是一等公民,但是当函数作为参数或变量时完全没有简化的写法,必须严格按照完全的语法来写,且强制格式化换行:
```
func do(callback: Callback) {
callback();
}
do(func() {
println("hell word")
})
```

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

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

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

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

© 2021 V2EX