想到一个比较沙雕的语言设计问题,不知道是否有标准答案?

271 天前
 BNineCoding

不同语言中,参数名和类型的位置是不一样的。

比如 java 中是:String name ,先写声明类型,再写变量名。

但在 JavaScript 中是:name:string ,先写变量名,再写类型。

在我看来这两个声明方式完全没任何区别,为什么语言设计者要搞出两种不同的使用方式?

这不是徒增 diff 吗?

1593 次点击
所在节点    问与答
17 条回复
ferock
271 天前
所以世界才这么五彩斑斓
ferock
271 天前
为什么要都一样呢?那何必再多个语言呢
cmdOptionKana
271 天前
因为 “照顾老习惯” 并非最高优先级。百花齐放,自由地创造反而更重要。

另外要注意,它们不一样,不是故意不一样,而是各自选择了自己认为最合适的方式,有时恰好一致,有时恰好不同,有时恰好大同小异。
NotLongNil
271 天前
name:string 是 TypeScript 的写法吧,我个人猜测采用这种写法是为减轻编译器的实现
crysislinux
271 天前
这个问题是有明确答案的,去问 gpt 吧。
panlatent
271 天前
归根到底还是设计哲学的问题
Leviathann
271 天前
因为 C 是 BS
yoyoyoyolol
271 天前
故意的,都一样了还有啥区分.就跟 switch 手柄和 xbox 手柄那四个控制键反着来差不多
CEBBCAT
271 天前
这个网站目前不接受 AI 生成内容 建议楼主点击“下沉主题”按钮
DOLLOR
271 天前
TS 的变量类型是可以省略的,编译器、LSP 可以自动推导。
既然是可省略的东西,应该放在后面,因为相对不那么重要。

另外请不要直接贴 AI 的长篇大论。
Perry
271 天前
校服穿惯的学生想法是这样子的
cmdOptionKana
271 天前
> 提炼了一个重点:JavaScript 这种语言其实是动态类型的...所以类型被弱化放后面了

虽然但是,静态类型的 Go 也是类型放后面 func f(x string) {}
glcolof
271 天前
最早的时候,底层语言关注的是内存空间,内存空间对应的是类型,变量名只是帮助记忆的符号,所以先确定类型再赋予名字。
高级语言关注的是逻辑,变量是逻辑的一部分,所以先确定变量,后面有需要的时候再赋予类型。
时间长了之后,大家各自养成了习惯,形成了固定的审美倾向,所以也就不管这些了,想类型在前就类型在前,想变量名在前就变量名在前,反正结果都一样。
zhhbstudio
271 天前
众所周之,Javascript 变量没有类型,直接 name = anything 。
name:string 已经是 Flow 或 Typescript 的了,都是得做一次转换才是 Javascript ,转完了也没类型定义了。
zhhbstudio
271 天前
@zhhbstudio #14 众所周知....
cenbiq
271 天前
@glcolof 跟我想的一样,变量在前的语言主要着重变量本身,类型放前面的语言主要着重类型。并且据我观察确实越新的语言越是前者。
wanguorui123
271 天前
成熟的人要接受世界的参差不齐

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

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

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

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

© 2021 V2EX