Swift 的设计是不是用力过猛了

2022-02-23 10:50:45 +08:00
 holydancer

看一些第三方库,眼花缭乱,啥写法都有。 论闭包的无数种实现形式。 语法糖的设计是不是太多了,各种各样,用力过猛并不利于一门新语言的推广啊。。 还是说,我太菜了?

9236 次点击
所在节点    Swift
70 条回复
chiaf
2022-02-23 15:52:57 +08:00
@okakuyang 很爽➕1
每天都能学到新东西😂
huage2580
2022-02-23 15:54:07 +08:00
这时候就要夸 Java
BrettD
2022-02-23 16:03:48 +08:00
@jackbrother UTF-8 就是不定长编码
Bijiabo
2022-02-23 16:15:00 +08:00
感觉过于花里胡哨... ...
Mohanson
2022-02-23 16:21:30 +08:00
如果你站在编程语言的开发者角度看问题, 你会发现给一门现成的语言加语法糖的开发工作是非常小的: 加语言糖属于编程语言的前端的前端, 只涉及到 parser 和 tokenizer 两个初学者模块, 属于 "简单, 代码成果容易展现, 同时容易在社区中吹牛" 的工作.

相反, 如果你去钻研如何提升编译速度, 或者进行后端优化提升运行性能, 这部分工作通常较难, 花费更多时间, 同时在社区中不容易被认可: 对于大多数用这门语言的人来说他看不懂也不是很在乎.

所以很多情况下随着一门语言的发展, 这个语言的开发团队中会混入越来越多的 "语法糖开发者", 而一旦创始人控制力变弱, 成为所谓的 "社区性语言", 那么这门语言就会不可避免的往语法糖的路上越走越远(很多社区中的人都是带着目的参与项目的, 为了刷 PR 美化简历, 他们只在乎自己是否能成为这个项目的贡献者, 贡献多少个 PR 和代码行数, 所以就专挑最简单的事情做, 对于一门语言来说语法糖毫无疑问是最简单的工作).
mineralsalt
2022-02-23 16:26:53 +08:00
@Mohanson 所以说 java 被甲骨文控制着, 这么多年都没烂, 也是有功劳的
Features
2022-02-23 17:32:46 +08:00
多得过 es6++吗?
Building
2022-02-23 17:39:10 +08:00
@Mohanson Swift 光是几个简单数做运算,都能把 CPU 卡死的操作……Swift 5 还能遇到,全靠 CPU 硬撑,已经不敢让编译器算了,老老实实自己算好
dusu
2022-02-23 19:09:04 +08:00
@HeapOverflow 近些年写的语言里 心目中也是 dart 排第一 写起来真心舒服
7gugu
2022-02-23 19:12:09 +08:00
是的,入门很困惑,各种写法各种简写
7gugu
2022-02-23 19:13:46 +08:00
@Features 比 es6 好吧,至少作为一个初学者,js 还是有一套古老且通用的写法,但 swift 感觉一大堆特性,绕着绕着就晕了😂
MakHoCheung
2022-02-23 19:23:43 +08:00
@mineralsalt Java 可不是 Oracle 说了算的,人家有个 JCP ,通过投票来决定的 Java 的走向
nigulasida
2022-02-23 20:59:03 +08:00
iOS 开发这个行业,最迟到明年必死。
这个行业死了,swift 也基本歇菜了。
caisanli
2022-02-23 23:24:09 +08:00
最近新学 swift 看到闭包那节 就想这么多种写法 好接手吗
powerman
2022-02-24 09:22:47 +08:00
@caisanli 我光是看 swiftUI 的文档 就折腾了半天 那个尾随闭包有好几种写法...
x1aoYao
2022-02-24 09:31:16 +08:00
@ksco 是的。昨天看到的,Chris Lattner 表示离开的导火索是核心团队其他人对他的嘲讽。表示可惜
Cbdy
2022-02-24 09:31:45 +08:00
和 OC 完全是两个极端
x1aoYao
2022-02-24 09:40:24 +08:00
我曾一度认为,Swift 就是我理想中的语言。
目前还是期待下 Swift6 的 ownership 吧,现在的 ARC 以及 CoW 全都要原子操作,性能实在是费拉不堪。
独占访问内存设计不好用还降低性能。
x1aoYao
2022-02-24 09:44:03 +08:00
@MakHoCheung 我感觉 Java 都比 Swift 开放,Swift 几乎就是苹果的语言。甚至还限制 Swift 在 Apple 平台静态链接标准库。
wupher
2022-02-24 09:48:02 +08:00
作者也这么想,可惜最终离开了

https://instant.lvv2.com/html/52ae57c594a25b355bb8723ddbe80a9b.html

他关于语法糖 的比喻我倒是蛮赞同的:

Lattner 认为一门编程语言的主要功能相当于盖房子时的“砖”,语法糖相当于填砖缝的“灰浆”。如果房子主体都盖好了去填缝没啥问题。如果砖还没摆全就先抹了大量的浆,那整个房子成了用浆盖起来的,结构不会牢固,以后再想摆砖头也找不到合适的地放了。

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

https://yangjunhui.monster/t/835867

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

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

© 2021 V2EX