说实话,我这两天心情很糟糕,原因:
Lihaoyi 也写文章: http://www.lihaoyi.com/post/TheDeathofHypeWhatsNextforScala.html
也许这就是在 Kotlin 等语言,以及 疫情的冲击下 做出的艰难决定吧。
其实我当初加入阿里是想要来推广 Scala 的,我没有推广开 Scala,Akka 倒是推了一些。
我个人认为 Scala 肯定要比 Clojure 的前景明朗,不过的确,炒作结束了,一声长叹。
1
0xljh 2020-04-11 15:20:51 +08:00
我也挺喜欢 scala
|
2
hantsy 2020-04-11 15:25:08 +08:00 3
Lightbend 的产品说实在,很多局限性。Scala 并没有想像的那样大红大紫,路越走越窄,只是极客的玩物吧。
试用过一些不多。现在它的产品,也是 Java 和 Scala 语言都提供。 我第一不满就是 SBT,国内大环境大家知道,Lightbend 开发人员坚称 SBT 比 Gradle 和 Maven 高级一些,不仅是 Build 还是一个开发环境。 还好当时 Lagom 出来 1.0 的时候,提过一个 issue,后来还好 Lagom 添加支持了 Maven 。我比较奇怪的是,我就只需要一个 BUILD,为什么 SBT 启动非要给把所有环境全部启动(数据库,ServiceRegistry 等)。后来我很少去关注这个了,写过几个 DEMO 后,看了全部文件,我也不知道怎么才简单的一个 Lagom Microservice Demo 部署到我的自己的生产环境中去,比如 K8s, Aws 等,当然文档有提到 LightBend 是有商业环境支持的很好。 Akka HTTP 和 Play 都有自己玩过,但是都没有实际应用。 与 java 互通性,Scala 明显不如 Kotlin,Kotlin 调用 Java 类,拿来就用,Scala 很多需要转换,特别是 Collections 里面,非常不方便。曾经试过来写 Spring ( Spring 官方以前有一个 Scala 项目,后来停止了,没用那个项目),这一点非常痛苦,https://github.com/hantsy/scala-sandbox/blob/master/spring-boot-demo/src/main/scala/com/example/demo/DemoApplication.scala#L40-L45, https://github.com/hantsy/scala-sandbox/blob/master/spring-boot-demo/src/main/scala/com/example/demo/DemoApplication.scala#L94-L99 加上之前 Scala 版本兼容性问题,虽然最新版本好像兼容性问题改善了很多,但是一些老习惯留下来了,Scala 几乎每个大版本更新,整个生态都是重新以新版本后缀打包( SBT 是可以专门处理这个)。 |
3
gowk 2020-04-11 15:47:57 +08:00 1
不看好 Scala
|
4
liprais 2020-04-11 15:49:24 +08:00 via iPhone
怕啥,还有 databricks 接盘呢
|
5
sunziren 2020-04-11 15:51:31 +08:00
Scala 这个单词怎么读?汉语发一下
|
6
chihiro2014 2020-04-11 16:13:05 +08:00
Java 生态那么强,Scala 也只是依附的感觉,可有可无
|
7
wancaibida 2020-04-11 16:14:38 +08:00 via iPhone
感觉 scala 写出来的就是文言文
|
8
gejun123456 2020-04-11 16:18:26 +08:00 via iPhone 1
改推广 kotlin 吧
|
9
waruqi 2020-04-11 17:01:05 +08:00 via Android
scala 是我写过最不顺手的语言,写起来真蛋疼
|
11
hepin1989 OP @wancaibida 你是看的 cats 还是 scalaz 写的?
|
12
FireFoxAhri 2020-04-11 17:29:25 +08:00
同热爱 Scala,大佬团队还招人吗,18 毕业的工作还没到 2 年。
|
13
hepin1989 OP @hantsy 我同意你说的这个,Scala 中,调用 Java 的集合类,需要自己引入隐式转换,其实我个人和你的感受一致,说不定直接扩展效果更好。
|
14
hepin1989 OP @FireFoxAhri 社招的话,我自己所在的这个团队要 2+的工作经验,感谢感谢哈。
|
15
FireFoxAhri 2020-04-11 17:37:00 +08:00
@hepin1989 差半年 - -。必须 2+啊。太可惜了。。。
|
16
janxin 2020-04-11 17:59:42 +08:00
Kotlin 它不香嘛
|
17
fewok 2020-04-11 18:16:49 +08:00 1
换来换去,还是要学 java
|
19
loshine1992 2020-04-11 18:19:51 +08:00
Kotlin 的学习成本相比于 Scala 低太多了
很多 Scala 的高级特性一般开发人员可能并不会用到 so... |
20
fewok 2020-04-11 18:51:46 +08:00
换个推广吧,我觉得 golang 会是一个很好的方向。流行工具多,特性比较务实,大厂背书也不少
|
21
bsidb 2020-04-11 18:58:06 +08:00
Scala 太灵活,写不好的话效率巨低=_=
|
22
lidashuang 2020-04-11 19:40:28 +08:00
scala 太复杂, 写起来累, 还是 golang 好
|
23
nuistzhou 2020-04-11 19:40:57 +08:00 via iPhone
最近初学 Scala,看来是 49 年入国军?
|
24
araaaa 2020-04-11 19:42:32 +08:00 via iPhone
非常喜欢写 scala,但是 scala haskell rust 这类语法层面的门槛还是太高了,只能成为小众
|
25
araaaa 2020-04-11 19:45:12 +08:00 via iPhone
@nuistzhou #23 如果你喜欢它的语法设计还是希望你坚持学下去,毕竟写代码的同时也得给自己找点乐趣的吧
|
26
HuHui 2020-04-11 19:46:02 +08:00 via Android
sbt 就是第一个拦路虎
|
27
standin000 2020-04-11 19:47:29 +08:00
为啥比 clojure 前景好,clojure 有 java 做靠山
|
30
cjuexuan 2020-04-11 20:26:11 +08:00
不玩花活的 scala 写起来挺香的,小团队可以搞起
|
31
tairan2006 2020-04-11 20:40:52 +08:00
scala 堪比 c++的复杂度,看着头疼
|
35
yvanst 2020-04-11 22:03:49 +08:00 via Android
没想到 lightbend 会裁员… 本以为商业公司(全职开发)相比社区(业余)会积极一些。
看好 Scala 3,会简化语法。Scala 有 fp 爱好者可能生态中代码的质量更高,type class 这些特性对 library 作者还是很有用的 |
37
outoftimeerror 2020-04-11 22:04:43 +08:00 1
scala 现在也在用,不过是写 spark 。以前用过 spray akka-http play slick 写后台,但是说实话这些框架能做的事情 spring+mybatis 也能做,flask+SQLAlchemy 也能做,而且更成熟,到后面微服务 go+k8s+istio 这一套也很香。
前两年还能搜到用 scala 做后端语言的,比如挖财,这两年似乎都转了。不好招人是一方面,另一方面如果相较其他语言没有绝对优势,也很难流行。 (举个不恰当的例子,spark 对比 hive 在性能上碾压所以才能火起来) 写了这么多其实我想说我选择 rust 。 |
38
gjquoiai 2020-04-11 22:32:57 +08:00
当初 mozilla 裁员我也低落了几分钟_(:з)∠)_
|
39
wyd2004 2020-04-11 23:30:37 +08:00
同样喜欢 scala,真的很遗憾啊……
|
40
CoderGeek 2020-04-11 23:54:10 +08:00
我毕业 15 年第一份工作 4 年 推荐和协同都是 scala 小团队从初创走到 b 轮
从虚机 > docker 有的都两三年 从 O > 去 O 也会看到 php > java > go , python > go 搞得不行全回 java 的 楼主不用难过 真心觉得 一个是社区 一个是文化 还有一些商业团队使用 大公司难 反而小团队 规模不大更容易接收 至少我知道的一些语言 大公司不考虑 但是小团队或个人开发者都是拥抱心态 |
41
beidounanxizi 2020-04-12 01:04:59 +08:00
scala 生错这个时代了 唯一直观感受 在大数据方面 扒他源码看起来是舒服点。。。
现在 go 聚集了一帮大佬,JAVA 目测巅峰不了几年 。。 就因为在 go 底层设计学习了很多 编译,调度,通信,编程风格的转变,这是我从 java 学不到的东西 何况 scala |
42
ppphp 2020-04-12 02:05:07 +08:00
scala 除了类型牛比,其他真是一言难尽
|
43
ericgui 2020-04-12 02:11:12 +08:00
一个大公司推动一个语言,可以理解
一个中型公司去退推一个语言的目的是什么? |
44
limbo0 2020-04-12 02:19:50 +08:00 via Android
挺一下 scala, 不想写 java
|
45
jhdxr 2020-04-12 02:28:04 +08:00
@beidounanxizi go 也就在国内火
|
46
levelworm 2020-04-12 02:40:01 +08:00 via Android
不如出个教程,教我们读 spark 的源码吧。。。
|
47
beidounanxizi 2020-04-12 03:06:04 +08:00
@jhdxr 并不觉得 在云计算领域 起码 devops 领域 我觉得 做的很出色。
另外,你写过 go 体会 go 的 CSP 并发模型 以及 go 调度器设计 我都觉得很出色 心智负担小 是我发自内心喜欢的 |
48
Allianzcortex 2020-04-12 03:54:29 +08:00
@jhdxr Google 和 Uber 内部很早就大力推广 Go 了,在国外一样很火,和 Vue 天然的中文文档友好型不同
这个问题《 Scala Cookbook 》的作者也很早就谈过,`Whereas Java tends to be more verbose (yet obvious)`,一门语言要同时兼容 OO 和 FP 就注定了曲高和寡,算子太多带来的高开发效率就意味着不容易维护,终局可能在一开始早已写就^很佩服楼主在过去几年为推广 Scala 做出的努力 |
49
dayeye2006199 2020-04-12 04:58:06 +08:00 via iPad 1
LinkedIn 也是搞过一阵 scala,后来都撤回 java 了。看来这门语言对程序员心智负担太大了。不会写 scala 的人强行写的 scala 代码简直可怕
|
50
xuanwu 2020-04-12 07:49:49 +08:00 1
看到头像来打个招呼。
在《做煎饼果子的 N 种方式》之后,期待更多类似作品。 不相干的话题:早先有位用 Agda 演示了中文语法《带空格的中文编程都是垃圾》,刚想到 Scala 的灵活语法大概也可以做到 |
51
xuanwu 2020-04-12 07:55:34 +08:00
对了,python 库的中文化已经在多线进行中。国内推广的话,也许可以试试: https://www.v2ex.com/t/657607#;
|
52
NCE 2020-04-12 08:06:42 +08:00
为什么去推广 scala 呢? java 不香吗?
真要想深入搞点不一样的,就别用 jvm,不然都会被绑死的。 我 scala 和 kotlin 都尝试过,最终还是回到 java 了,主要是兼容性。 |
53
NCE 2020-04-12 08:07:43 +08:00
话说回来,虽然我并不认同你去推广 scala,但是,你如果想招人的话,我可以帮你推荐,那种学习型人才。
|
54
CosimoZi 2020-04-12 10:23:42 +08:00 1
这么多人在 scala 下推荐 go 的,我只想缓缓打出一个¿
|
55
ipwx 2020-04-12 10:27:54 +08:00
我一直想写个调度机器学习实验的东西,核心的部分用 actor model 我觉得最合适。奈何 scala 用起来是在太难,其他语言都没有合适的 actor model 。别说什么 vert.x,那东西写网站可能够用,但是感觉写个需要有调度算法的调度器忒不好用了。
最后我还是决定滚回 python asyncio 用手搓个简陋的 actor 用用。 |
56
newday1 2020-04-12 11:06:20 +08:00 1
阿里 scala 应该推不起来,主要是成员离职后留下的“遗产”难以运维,之前阿里有 scala 大神的,玩了不少 type 的高级语法,留下的人甚至都看不懂写啥,大型互联网公司在工程上更讲究可阅读可维护,而非 geek,kotlin 在这方面可能就好很多了
|
57
CosimoZi 2020-04-12 11:09:44 +08:00
scala 想要类型系统,函数式,还要工程实用性.可以批评它野心太大,哪方面做得不好(类型系统实现有很多坑啊,版本之间兼容性成问题啊,一堆新特性拍脑门啊).但是一堆人拿 go 来说事是个什么情况?go 工程是做得好,但是用 scala 的在乎的根本不(只)是这件事.除了吃饭生存以外的理由,劝写 scala 的去写 go 真的是搞笑.
|
58
jinsongzhao 2020-04-12 11:47:22 +08:00 via Android
@beidounanxizi 我怎么感觉 rust 把 go 按地上摩擦,然后 go 意志薄弱的转身对付 PHP 去了
|
59
hepin1989 OP @yvanst 是的,整体更加简单了,我认为整个是向好的,同时 Kotlin 的一些优点又反向借鉴了,并且做得更彻底更纯粹,毕竟搞学术的教授和一线的开发自己糊的还是质量不一样。
|
60
hepin1989 OP @dayeye2006199 谁说的,前两天还在发基于 Akka 的架构还是总监在讲。
|
62
hepin1989 OP @ipwx 哥,你还说得真的对,看法一致,vert.x 随便一个人 1 个小时都可以糊一个。其他的预言 Elixir 很好用。不过我需要强大的类型系统。
Scala 我还是建议大家简单用用就好了,当 ktolin 用,用的太复杂了不好相互交流。技术分享可以搞。 |
63
hepin1989 OP @CoderGeek Scala 社区真的,大概有 4-5 个流派吧,不过最终有大部分能力是共享的,还包括学院派。像我这种就是实干派,代码务实,克制。大公司推广起来得考虑很多方面的原因,Scala 本身灵活也是一个问题。
|
65
YY 2020-04-12 11:59:17 +08:00 1
想起这个视频
|
66
hepin1989 OP @CosimoZi 哈哈,写 Scala 的可能会去写 Haskell,或 写 Java 。如果不是为了钱,很难去写 Go,写 Go 都不需要怎么动脑子,一口作气,从上往下写就好了。
Scala 自己的问题,比如装逼侠太多了,写个 CRUD 饶他妈半天,还有版本的 BC 兼容问题。这些问题老马丁也发现了。我只能说。2.13 会长期 OK ; Scala 3 应该是第二春了。如果还不行,大家可以等,老马丁也等不了了。 |
68
feelinglucky 2020-04-12 12:44:48 +08:00
@hepin1989 `加入阿里是想要来推广 Scala`,没有业务支撑纯技术方面的强推会很难的,兄弟长路漫漫但是别放弃初心
|
69
feelinglucky 2020-04-12 12:49:27 +08:00
`写 Go 都不需要怎么动脑子,一口作气,从上往下写就好了。` 这个兄弟真的有误解了,golang 本身作为一门工程语言本身的确不复杂,但综合技术栈生态环境其实和 JVM 系列是一样庞大的
|
70
beidounanxizi 2020-04-12 13:38:47 +08:00
@jinsongzhao 👍🏻 没写过 php 和 rust,我讨厌 JAVA 2 点 1 反射 带来可读性差 注解 AOP 2 太 oop 缺少函数式编程味道 ,代码太多,啰嗦。例子:NIO AOP
|
71
hepin1989 OP @feelinglucky 开玩笑的,我的意思是语言本身简单、纯粹哈,不是说业务复杂性。这也是 Golang 发展比较顺利的原因。Scala 的话,语言特性太多,风格、路数、流派太多,大规模应用就必须要限制才行。
|
72
hepin1989 OP @feelinglucky 使用 Scala 的 Akka,是可以推广开,毕竟提供了很好的 Java API,但是 Scala 预言太难了。
|
73
Bruin 2020-04-12 14:59:02 +08:00
@FireFoxAhri 不用可惜,社招阿里最低要求 p6
|
74
Jirajine 2020-04-12 15:01:35 +08:00 via Android
Scala 不评价,但 sbt 是真的 sb
|
75
p2pCoder 2020-04-12 15:06:03 +08:00
主要还是数据开发再用,spark flink
|
76
hljjhb 2020-04-12 15:07:39 +08:00 via Android 1
stupid build tool
|
77
qsz13 2020-04-12 15:23:09 +08:00
@dayeye2006199 LinkedIn 的 web 是不太用 scala 了,但是 ML 相关的很多还是在用, 比如 https://github.com/linkedin/photon-ml
|
78
FireFoxAhri 2020-04-12 15:25:28 +08:00
@Bruin 想试试,不行只能过一两年再看了。。。
|
79
pursuer 2020-04-12 19:33:58 +08:00
@beidounanxizi #70 Go 不也有反射吗?现在大部分语言都有反射的了,除了 c/c++,太 OOP 不太懂什么意思,啰嗦方面,Java 的 stream api 和 lambda 配合我觉得比 go 好使,nio 是最底层的 select 模型的包装吧,可以找个好用点的上层封装,netty 之类的,Java 还是缺少一个协程方案,无论有栈无栈
|
80
beidounanxizi 2020-04-12 21:17:54 +08:00
@pursuer 主要是 注解 AOP 这些 利用反射实现,让人反感。 不是反射本身。
java 不支持 函数作为变量 ,缺少函数式编程风格 不喜。 java 的 stream 这东西 并不让人有多惊喜。 nio,所以 你 不会诧异 jdk 自带的 IO 是很令人不爽的。。。 再说 GC 回收,你需要扒 jvm 虚拟机 去看。 再来一个 issue 的提出 我可以 github 上追溯 golang 的 discuss 和 fix proposal 。JAVA 的 我迄今也不知道 |
81
fewok 2020-04-12 23:48:59 +08:00
@beidounanxizi 从低内存,高并发的角度,我是非常喜欢 go 的,因为有很多场景,很适合用 go,比如微服务,比如低消耗监控等。
但是 go 社区很多人,总喜欢发表一些非常幼稚的言论。令人觉得,我跟这群人用一样的工具,难道是判断失误? 举几个例子: 主要是 interface 这些 莫名其妙反射实现,让人反感。 不是反射本身。 golang 不支持 泛型 作为变量 ,缺少 OO 编程风格 不喜。 golang 的 协程 这东西 并不让人有多惊喜。 BIO 才是人类思路,所以 你 不会诧异 go 自带的 IO 是很令人不爽的。。。 再说 GC 回收,看完源码,大内存还是卡顿。 再来一个 可用性,不小心就崩进程的工具,真不是玩具? |
82
beidounanxizi 2020-04-13 00:58:56 +08:00
@fewok go 社区 幼稚言论 跟你没什么关系阿。。。。一码归一码
你实际编程用到泛型多么?都用在那些地方? 不是协程 而是 CSP 并发模型 让人觉得好 netty 的 io 改进了 jdk 多少缺点。。。 GC 回收 源码没怎么看 这点并不比 JAVA 好 承认 go 你见过谁写的代码很风骚么 让人虎躯一震? 没明白可用性 崩进程 是什么意思? 你见过 JAVA 开发里全是 dto po xml 到处是 辣鸡强行套设计模式多的去了 还有 get set 方法 简直是莫名其妙 纯 oop 编程 不是圣经 |
83
dayeye2006199 2020-04-13 04:31:08 +08:00 via iPad
@hepin1989 在特定领域可能还有使用,比如大数据可能过不掉这个语言。但是整个公司层面在 2015 已经决定不把这块作为主力投入。https://www.quora.com/Is-LinkedIn-getting-rid-of-Scala
|
84
hepin1989 OP |
86
tcfenix 2020-04-13 10:42:02 +08:00
看到楼主提到在阿里推广 scala 跟 akka,就想请教一下具体的情况
1 在基本都是前台把各种中台的接口拼装缝合的场景下,scala 相比 java 能带来什么更好的优势? 2 推广 akka 的话本质还是推广 actor 模型,实际场景中,大部分业务上的需要多线程并发的代码是比如一个商品列表,需要每一项都去拉详情, 目前基本都是用 fork join 的 parrel Streaming 来解决问题,这边如果导入 akka,对于这样的场景能带来什么帮助? |
87
quietnight 2020-04-13 10:42:23 +08:00
首先,书没人写,amazon 翻来覆去就是那几本,当然入门够了(吐槽下,akka in action 这本书的写作风格真的一言难尽,还不如官方文档。其次,人难招,大厂人都难招,小长更别提,面过很多自称熟练 scala 开发的,原来就是写写 spark 脚本的水平,再不就是当 java 用的。这个东西太 geek 了,随便拉一个特性都可以聊好久,比较适合学术派,不适合工程化,特性太多,不太好把握。
|
89
ZSeptember 2020-04-13 13:46:25 +08:00
Scala 确实有点酷,不过 写业务,什么语言不一样吗,没感觉会有很大区别。
|
90
cco 2020-04-13 14:27:56 +08:00
@FireFoxAhri 加班的算上不就行了
|
91
Aksura 2020-04-13 16:18:18 +08:00 1
@hepin1989 你发的 Lihaoyi 的文章里也写了,其实还是 Scala 社区的锅。不友好,太装逼。
Scala 是兼容 OOP 和 FP,但是写的人完全可以仅选择自己熟悉的范式来写程序,这跟语言自身兼容多范式毫无关系。如果以前社区推广的时候,就主要作为 better java 来推,也许现在大家对 Scala 项目的印象会好一些。 Scala 代码表现力强,本来编写 /阅读体验完全可以和 Python 比。可是工具链实在太不友好了,你看回帖里那么多楼,一说编译就是 sbt 。可是 maven 也是可以管理 Scala 项目的。特别是 Lihaoyi 文章里提到的他写的 mill 、amm 这些工具,对使用 Scala 的体验真是巨大的提升。他的库设计品味很好,可是很少看到社区推广的时候,很少看到这类实用的工具 /库,言必称 scalaz 、cats 。难怪 Scala 的关注热度越来越低。 |
92
Jooooooooo 2020-04-13 16:40:18 +08:00
这上面讨论 go 和 java 的不想想这两玩意在诸多大型公司都有成功落地, 承载相当大的流量, 说明语言是很成功的.
|
93
ncwtf 2020-04-13 17:33:32 +08:00
这个头像总觉得在哪见过似的。。
|
94
yankun 2020-04-14 21:59:48 +08:00
看了你写这个心情更糟糕了 cry~~
|
95
holsety 2020-05-26 16:09:56 +08:00
为什么 hype 结束了会难受了?除了更加难招人外,不觉得有什么不好。
我们公司现在还在用 erlang,也是很难招人。不过看了 scala 觉得很多 concepts 都是从 erlang 来的,十分亲切。 erlang 这么多年都没死,就如 Lihaoyi 所说 scala 的前途还是光明的。 |