https://developers.googleblog.com/2021/11/announcing-kotlin-support-for-protocol.html
At Google, we’re investing deeply in the Kotlin language and ecosystem. Android development is now Kotlin first, our engineering teams work on language evolution through the Kotlin Foundation, and inside of Google we’re using Kotlin more and more to build our backend services. We love Kotlin for its expressiveness, safety, simple async support through coroutines, and easy bidirectional interoperability with the Java programming language.
1
ampedee 2021-11-07 11:46:25 +08:00 via iPhone 27
亲儿子也可以生好几个
|
2
ericls 2021-11-07 12:07:21 +08:00 via iPhone
专业事情上不能感情用事
|
3
agagega 2021-11-07 12:08:57 +08:00 via iPhone 17
一定是某些 Google 员工水平不行,还没认识到大道至简
|
4
mikulch 2021-11-07 12:11:26 +08:00
kotlin 上位了?
|
5
SingeeKing 2021-11-07 12:25:48 +08:00
Kotlin 好像是 JetBrains 家的?毕竟 Android Studio 都是基于 IDEA 改的,已经领养一个儿子了,再来一个也没啥
|
6
imcczy 2021-11-07 12:29:58 +08:00
AOSP 12 已经有很多 frameworks 的库用 Kotlin 重写了,最明显的感受是编译速度慢了一倍,从 11 的 2 小时变成 12 的 4 个半
|
7
chendy 2021-11-07 12:30:00 +08:00 1
go 写基础设施,kotlin 写 backend services 没毛病,啥玩意好用就用啥呗
|
8
minsheng 2021-11-07 12:33:00 +08:00 via iPhone
说老实话唯一一个打算养个亲儿子干所有事情的公司,可能就是 Apple 了,Swift 核心团队依然在有条不紊( aka 蜗牛爬)地试图让 Swift 做系统编程( ownership ),Apple 内部也对拿 Swift 写服务器后端有很大动力,和 AWS 搞了 Swift 的 FaaS……
|
10
zcjfesky 2021-11-07 13:06:44 +08:00 via Android
谷歌这些年来除了少数核心业务以外基本都是管生不管养
|
11
wangxn 2021-11-07 13:14:08 +08:00 via Android
是把原来 Java 的后端无缝替换成 Kotlin 吧。Go 的话改动就太大了。
|
12
Leviathann 2021-11-07 13:18:09 +08:00
@minsheng rust 之父好像现在就在苹果做 swift
|
13
MakHoCheung OP @minsheng Swift 确实不错,但是 Xcode 太烂了
|
14
Leviathann 2021-11-07 13:24:22 +08:00 1
go 本来就只在有限的地方用
google 一直是 java 大厂 之前看一个亚麻的员工采访一个跳到 google 系医疗领域创业公司的前同事的视频,他们就还是在用 java 写 web 偏爱 kotlin 可以理解 优雅这个词用来形容它再合适不过了 |
15
quxinna 2021-11-07 13:31:58 +08:00
Google 怎么这么多儿子?哪一个是长子?
|
16
quxinna 2021-11-07 13:33:22 +08:00
@Leviathann kotlin 就是 java
|
17
iClass 2021-11-07 13:47:29 +08:00 via Android
人類的產物
|
18
zmxnv123 2021-11-07 14:01:17 +08:00 via iPhone
kotlin 比 Java 亲我寻思也正常啊
|
19
agagega 2021-11-07 14:14:25 +08:00
@minsheng
Swift 这么搞下去估计会成为特性最丰富的语言...加了 Async/Await/Actor ,下个大版本要加 Ownership ,现在也有一堆字面量的改进要进了,想想都酸爽。 不过 Apple 自己也在招做 Rust 的工程师。 |
20
moen 2021-11-07 14:24:34 +08:00
不会不知道 Google 里面还分各种组的吧。为什么会觉得 Google 里所有人就要拥护 Go 呢?
|
21
janxin 2021-11-07 14:30:41 +08:00
Dart/Flutter 就不是亲儿子了吗?
|
22
secondwtq 2021-11-07 14:32:49 +08:00
怕不是均分继承法,老日耳曼了
|
23
MakHoCheung OP @agagega 弱弱问一句 Ownership 是什么,有什么用
|
24
skiy 2021-11-07 14:54:51 +08:00 4
过几年,中国的大厂也会搞出属于自己的开发语言了。立个 FLAG 。现在很多大厂技术人员已经摸透底层了。
|
25
tourist2018 2021-11-07 15:01:04 +08:00
不就是一个编程语言么?什么亲儿子不亲儿子的。。。
|
26
totoroyyw 2021-11-07 15:01:23 +08:00
@MakHoCheung
https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html ownership 我是从 Rust 开始看所有权,有所有权这个概念的话管理变量生存周期比较方便 |
27
TypeError 2021-11-07 15:29:29 +08:00
大公司又不止用一个,苹果得 siri 爬虫都是 go 写的
|
28
Leviathann 2021-11-07 15:29:31 +08:00
@MakHoCheung 让编译器帮你管理内存,实现运行时无开销的内存安全(相比一些 native 语言的引用计数以及 gc 语言的 gc )
|
29
xarthur 2021-11-07 15:38:04 +08:00 via iPhone
很多年前 Kotlin 就成了安卓开发的推荐语言了吧
|
30
nil333 2021-11-07 16:31:21 +08:00
对待养的儿子要比亲儿子好
|
31
tanhui2333 2021-11-07 16:54:21 +08:00
看这么大的一个公司为什么要当成一个整体来看呢,一个很小的公司还有 1 、2 个山头呢。
|
32
jiayong2793 2021-11-07 17:23:22 +08:00 1
翻一下 go 的历史,貌似只是几个员工私下搞的语言,谷歌也从来没说过 go 是谷歌的产品
|
33
iPhone9 2021-11-07 17:34:42 +08:00
感觉 go 只是在国内用的人比较多
|
35
cmdOptionKana 2021-11-07 17:50:53 +08:00
这是被甲骨文逼的,要不是甲骨文瞎操作想割谷歌的韭菜,kotlin 也不会这么快上位。
|
36
ly841000 2021-11-07 17:53:36 +08:00 1
google 从来没给 go 背过书,使用也少,dart 都比 go 正统
|
38
sagaxu 2021-11-07 18:00:52 +08:00 1
Go is a statically typed, compiled programming language designed at Google[11] by Robert Griesemer, Rob Pike, and Ken Thompson.
Dart is a programming language designed for client development,[9][10] such as for the web and mobile apps. It is developed by Google and can also be used to build server and desktop applications. |
39
darknoll 2021-11-07 18:28:14 +08:00
看来就只有一个 dart 是 google 的亲儿子,但是这个 dart 又非常难用。
|
40
waltcow 2021-11-07 18:35:22 +08:00
龙生九子,各有不同
|
41
oOoOoOoOoOo 2021-11-07 18:39:26 +08:00 via Android
@skiy 所以不久后某些公司应征标准: 熟练掌握本公司开发语言
|
43
janus77 2021-11-07 19:09:43 +08:00
go 不擅长用于后端服务啊,都是中间件和工具类软件比较多,写业务还是 java 好
|
45
iseki 2021-11-07 19:26:13 +08:00 via Android
发表点暴论:go 除了编译打包比 kt 快,语法规范比 kt 短,还有啥好处吗?这两个特点也都是放弃了大量特性才换来的…
|
46
MakHoCheung OP @skiy 明年估计是华为的仓颉
|
47
GeekGao 2021-11-07 20:58:21 +08:00
Ref: https://qr.ae/pGDClR
There is no single programming language. Google has a very open development environment with many different service APIs. Java, Javascript, C++, Python, Go, Sawzal (a custom logging language), and probably a few other languages are supported. Search is mostly based on C++ and some Python. Ads is a Java/SQL stack. Google Apps is a Javascript/Java/C++ stack. |
49
minsheng 2021-11-07 21:09:15 +08:00
@MakHoCheung
具体到 Swift 里面,举个例子。 Swift 不像 Java ,语言自带 getter/setter 。Swift setter 可以理解成一个语法糖: var current = value.property modify(¤t) value.property = current 这样就会导致一个问题,在修改 value.property 的时候,它的值被复制了一遍。Swift 里很多类型内部存储都是一个引用计数的对象,然后实现了一层 Copy-on-Write 。但如果 current 被复制了一遍,那么在调用 modify 的时候,current 那边就会发现自己的内部存储和 value.property 是共享的,所以就直接必须分配内存、深拷贝。这就让 Copy-on-Write 变得没有意义了。 Swift 有隐藏语法,_read/_write 来替代 get/set ,可以直接 yield ,避免这个问题,但这不属于语言标准的一部分,是编译器暂时给大家在性能很要命的地方,比如说标准库的容器实现,用的。 |
50
zjsxwc 2021-11-07 21:14:32 +08:00 via Android
swift 与 java js 不能放一起比吧,swift 没有 gc ,是通过编译时自动代码生成回收资源,确实有成为系统级编程的可能,比那个立志取代 rust 的 v-lang ,但最后好像翻车了,靠谱多了。
|
51
ly841000 2021-11-07 21:14:32 +08:00 2
@iseki 不是暴论,go 除了能编译 native, go 有的 c#全都有,甚至 c#的 native 编译也基本可用, 我是不明白转 go 有什么意思
感觉 go 是私生子, Dark 是亲儿子,Kotlin 是干儿子 |
52
casillasyi 2021-11-07 21:22:15 +08:00
没有什么好怀疑争论的,原来写 go 的就踏实写 go ,原来写 Java 的就踏实写 Java 。不要因为 google 用了什么就觉得什么好,kotlin 写后端服务在国内要推广普及还有很长的路要走。虽然我也觉得 kotlin 是 better java 。
|
53
cyrivlclth 2021-11-07 21:47:20 +08:00
@skiy 不用立了,以前在华为用过一款自研语言,名字叫 GTR 。。。08 年整出来的
|
54
wtdd 2021-11-07 22:03:53 +08:00
亲不亲的别太当真,语言这种基础工具就像工具箱,换哪个都是用,喜欢就换,死脑筋才抱着一个工具箱当儿子
|
55
agagega 2021-11-07 22:16:02 +08:00 via iPhone 4
@skiy
做个新语言本来就不是什么麻烦的事情,现在 LLVM 已经非常成熟了。对操作系统和编程语言这些东西(单指「有没有」,可以挖的地方还是很多的)产生莫名其妙的崇拜,属于是十几年前某些专家言论的余波。 问题在于推了个语言,之后呢? Apple 能推 Swift 是因为对自家生态有高度的掌控力,微软的 C#也类似,但也是基于微软这种巨头十几年如一日地推; Rust 、Go 能流行是因为他们很好地解决了某类问题。 就国内某些企业朝三暮四始乱终弃对待自家开源项目的作风,且不论这些语言会成啥样,作为开发者很难对他们产生多少信任。 |
56
Leviathann 2021-11-07 23:04:03 +08:00
@MakHoCheung 听说是一个比较像 ts 的静态语言,编译到 js
|
57
Leviathann 2021-11-07 23:26:41 +08:00
@agagega docker k8s 的大获成功对 go 的推广简直是神之助力,killer app 绝对是推广语言的最佳办法
像 kotlin 1.0 了 5 ,6 年,大饼还摊的特别大,海陆空( jvm native web)三栖制霸,说实话生态也就差强人意,好在 jvm 上能沾 java 的光 |
58
skiy 2021-11-07 23:40:23 +08:00
@agagega 都是从内部推的吧。国内的开源治理很差。当初 centos 说要转成 stream 形式发布的时候,rockylinux 在短短的时间内就已经把整个架构搭建起来了。国内的很多开源项目都是单打独斗的多。或者说总搞内讧(最近发现 qv2ray 就是内讧了)
华为要推它自家的鸿蒙,所以它将要推的编程语言与它的手机操作系统生死与共。swift 与 apple 的各产品也是如此。 必须要依靠垄断性的产品和话语权来推吧。(比如如果出来一个现象级的 VR 产品,然后该产品要使用某某语言,我觉得还是有机会的) |
59
skiy 2021-11-07 23:44:32 +08:00
@MakHoCheung 如果鸿蒙没起来,华为的手机没芯片卖了的话,这个很难推。
|
61
xiadong1994 2021-11-08 00:24:24 +08:00 via iPhone
Google 内部的后端开发用什么语言还是看 PA 和组的,有的新东西还是用 java ,有的就用 Go 了。真的基础设施基本都还是 C++。
|
62
akira 2021-11-08 00:34:54 +08:00
不能绑死在一个语言上,大公司肯定更是怎么好用怎么来的啦
|
63
WilliamYang 2021-11-08 00:49:45 +08:00
Go 只是一开始内部员工从兴趣到孵化出来的项目吧,最多是私生子吧,没听说过 Google 拥护它
|
64
ArchieMeng 2021-11-08 01:21:06 +08:00
@iseki 居然在这里看到你(
(🐴归🐴,睡觉起来还不是要用 go 搬砖不是么......... |
65
x1aoYao 2021-11-08 09:46:18 +08:00
@Leviathann rust 之父确实去做了一段时间的 swift ,但都是好几年前的事了。
|
67
leeg810312 2021-11-08 10:09:37 +08:00 via Android
@janxin .net 已经跨平台,没有必要原生
|
68
libook 2021-11-08 10:37:15 +08:00
个人判断是因为甲骨文的 Java 专利问题打了很多年官司,烦了就想换个语言,而 Kotlin 对 Java 生态支持很好,也比较适合用来开发应用,框架迁移过去成本较低,开发者升级技术栈也比较丝滑,于是就推进 Kotlin 替代 Java 做安卓开发。
Google 内部的主力是 C++; Go 、Dart 、从 JetBrains 借来的 Koltlin 、从 ECMA 渗透来的 JavaScript 等只是对外的产品而已,凡是规模较大的企业都是有多种针对不同市场定位的产品的,根本目的还是背后的商业生态。 |
69
pythonee 2021-11-08 10:56:58 +08:00
如果别的语言也把轻量级并发和协程弄过来,应该大家没有理由坚持 go 吧
|
70
qq1340691923 2021-11-08 11:00:46 +08:00
钱才是亲儿子,别本末倒置了
|
71
sanggao 2021-11-08 11:06:16 +08:00 1
golang 本就是国内布道师专门割韭菜用的。 web 后端(非基础建设)使用 golang 难道不是为了用而用?
|
72
codepandali 2021-11-08 11:07:39 +08:00
喜欢 go ,也喜欢 swift😁
|
73
Zien 2021-11-08 11:18:44 +08:00
因为 Java 转 Kotlin 方便呗。
还有虽然国内各种迭代各种卷,但是也没开发出一个新语言什么的,基础知识、员工素养和企业文化其实比新技术要重要的多。 |
74
Kamiyu0087 2021-11-08 11:59:07 +08:00
Kotlin 是好东西啊,请加大力度😄
|
75
yazinnnn 2021-11-08 12:03:11 +08:00
vertx + kotlin 协程的并发不输 go 呀,而且 kotlin 的语法比 go 甜
|
76
az467 2021-11-08 12:11:57 +08:00
咋 米国也要自主研发排斥俄罗斯语言了吗
|
77
golangLover 2021-11-08 13:23:35 +08:00 via Android
@yazinnnn kotlin 的协程是假的吧
|
78
leiuu 2021-11-08 13:41:35 +08:00
熟悉 java 的同学看 kotlin 感觉很简洁。
System.out.println ( java ) vs println ( kotlin ) 。 |
79
skiy 2021-11-08 14:15:53 +08:00
@zhilincom 自己看说明: https://github.com/Qv2ray/Qv2ray/commit/a35ce6fba825ae3e6b9e4f03c53e018db3efb848
最早的我了解的一个是“易博”的第三方微博客户端。两个一起做的项目,你突然把我踢出了开发组,叫我 FORK 一下出来自己继续搞,你觉得可能吗?主导权变更了。所以这,就是我说的,中国的“开源治理”差的原因了。 |
80
xuhaoyangx 2021-11-08 14:16:10 +08:00
@golangLover #76 携程只是个概念。只要能方便实现挂起恢复 基本上都可以叫做携程
|
81
TypeError 2021-11-08 14:22:08 +08:00
|
82
FightPig 2021-11-08 14:29:17 +08:00
go 最爽的就是编译快,弄个 rust 编译半天。
|
83
xz410236056 2021-11-08 16:58:33 +08:00
@MakHoCheung #13 烂在哪?
|
84
xsen 2021-11-08 17:22:00 +08:00
@sanggao #69 真不是为了用而用。开发起来效率与体验还是比较完美的
唯一不足的就是不少轮子没有,或没有成熟的轮子(相对 java 来说);若只是 curd 真的没啥区别 |
85
MakHoCheung OP @xz410236056 重构名字界面要折叠起来,然后卡个 1 秒。运行到断点后添加运行表达式不能代码自动补全。Xcode 13 Color Literal 和 Image Literal 废了,估计是 bug 。其次还有好多 bug ,真的没见过这么多 bug 的 IDE 。当然我是跟 IDEA 比的,免费是这样的了,只是吐槽一下
|
87
xz410236056 2021-11-08 18:16:57 +08:00
@MakHoCheung #85
“重构名字界面要折叠起来,然后卡个 1 秒。” 折叠是要在一个窗口内显示多个类的地方啊,而且 13.1 没有折叠,卡是你电脑的问题。 我反而觉得 IDEA 这种不好用。主要是字体觉得太难看,界面太丑。我觉得最好的是 VS 这种,界面中文、报错中文,本地化做得好的。然后是 VScode 这种装插件的。Xcode 最大好处是能看 storyboard 和 Xib |
88
xz410236056 2021-11-08 18:31:50 +08:00
@MakHoCheung #85
“Color Literal 和 Image Literal 废了” #colorLiteral, #imageLiteral, and #fileLiteral aren’t rendered. (75248191) 是 bug ,没修复。现在只能用#colorLiteral( 这样就会显示了,加入代码段里能凑合用 https://web.archive.org/web/20210609010908/https://developer.apple.com/documentation/xcode-release-notes/xcode-13-beta-release-notes |
90
Lemeng 2021-11-08 19:42:50 +08:00
亲儿子太多,也分亲疏远近
|
91
agagega 2021-11-08 21:41:50 +08:00 via iPhone
@MakHoCheung
有一说一,用过 AppCode ,有时候感觉比 Xcode 稳定😂也是没谁了 |
92
xsen 2021-11-09 06:52:54 +08:00
@sanggao #84 真不是什么大道至简,相对来说新语言(包括 go )工程化方面确实做的好很多
本人前后用过 c/c++/java/python/javascript ,到现在的 go 不过很多人真的为了黑而黑,为了吹而吹。很多时候,没有对比就没有伤害 |
93
iseki 2021-11-09 08:19:20 +08:00 via Android
诶呀 go 可太工程化了,连泛型都没有,封装起来各种困难,然后索性不封装了,每个人自己弄一坨;标准库连 maxInt 都无,每个人自己写一坨……
|
94
skinny 2021-11-09 08:47:32 +08:00
@iseki 当初 go 吹把泛型贬得一文不值,结果真用得多的一批人受不了,现在也要加泛型,不过这泛型语法也依然 go 本色——反直觉、丑。
|
96
sanggao 2021-11-09 09:36:13 +08:00
@xsen 你当我没有用过一样 你可以拿 c cpp 跟 go 比,go 的初衷本就如此。 但是 你要拿 go 跟 java php 比 ,在 web 方面比就离谱的多,做快速业务迭代,维护性,轮子,没有可比性。 到现在 go 都没有一个像样的 web 框架,为啥没有? 因为 go 的基因决定了他就不能做出一个好用的框架
|
99
longkas239 2021-11-09 17:30:13 +08:00
go 就是个玩具
|
100
xsen 2021-11-10 07:23:36 +08:00
@sanggao #94 web 方面确实没有像 java 或 php 那样非常成熟的框架,但是不代表没有。目前我们主要用的是好未来的 go-zero 这个框架,当然我们的 web 主要其实就是提供 api 接口与第三方系统集成。目前对我们来说是够用的
对于轮子,这个确实是 go 的不足的地方。比如 sso 、workflow 都是没有成熟的框架;但是半成品还是有的,只是需要自己额外的维护。我们就是这样做的,需要的轮子有成熟就用成熟;有半成品就自己维护;没有就自己造 综合考虑——从开发速、维护、可测试等方面来说,这样的代价是可以接受的 |