f********a 发帖数: 1109 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: ozin (ozin), 信区: Programming
标 题: 王银看kotlin(本文建议零售价 ¥15)
发信站: BBS 未名空间站 (Thu May 25 18:06:39 2017, 美东)
Kotlin 和 Checked Exception
最近 JetBrains 的 Kotlin 语言忽然成了热门话题。国内小编们传言说,Kotlin 取代
了 Java,成为了 Android 的“钦定语言”,很多人听了之后热血沸腾。初学者们也开
始注意到 Kotlin,问出各种“傻问题”,很“功利”的问题,比如“现在学 Kotlin
是不是太早了一点?” 结果引起一些 Kotlin 老鸟们的鄙视。当然也有人来信,请求
我评价 Kotlin。
对于这种评价语言的请求,我一般都不予理睬的。作为一个专业的语言研究者,我的职
责不应该是去评价别人设计的语言。然而浏览了 Kotlin 的文档之后,我发现 Kotlin
的设计者误解了一个重要的问题——关于是否需要 checked exception。对于这个话题
我已经思考... 阅读全帖 |
|
o**n 发帖数: 2130 | 2 Kotlin 和 Checked Exception
最近 JetBrains 的 Kotlin 语言忽然成了热门话题。国内小编们传言说,Kotlin 取代
了 Java,成为了 Android 的“钦定语言”,很多人听了之后热血沸腾。初学者们也开
始注意到 Kotlin,问出各种“傻问题”,很“功利”的问题,比如“现在学 Kotlin
是不是太早了一点?” 结果引起一些 Kotlin 老鸟们的鄙视。当然也有人来信,请求
我评价 Kotlin。
对于这种评价语言的请求,我一般都不予理睬的。作为一个专业的语言研究者,我的职
责不应该是去评价别人设计的语言。然而浏览了 Kotlin 的文档之后,我发现 Kotlin
的设计者误解了一个重要的问题——关于是否需要 checked exception。对于这个话题
我已经思考了很久,觉得有必要分享一下我对此的看法,避免误解的传播,所以我还是
决定写一篇文章。
可以说我这篇文章针对的是 checked exception,而不是 Kotlin,因为同样的问题也
存在于 C# 和其它一些语言。
冷静一下
在进入主题之前,我想先纠正一些人的误解,让他... 阅读全帖 |
|
s***o 发帖数: 2191 | 3 android上我觉得kotlin压倒java是迟早的事,server端不是那么肯定。
kotlin强调跟java的无缝对接。Spring和vert.x都对kotlin提供很好的支持,所以生态
系统方面我觉得应该不是大问题。但real world use cases尤其是javaEE方面肯定有大
大小小的坑,而且还有一个程序员的惯性问题。 |
|
d******c 发帖数: 2407 | 4 Kotlin的许多优点,Groovy都做到了,而且我看着语法更舒服。
比如减少boilterplate,functional, closure,还有Builder for layout (
MigLayout更牛,欧洲某战斗机飞行员写的,完全用DSL定义复杂的swing layout,我觉
得很好用,比可视化工具强)。
唯一的问题,就是许多人害怕dynamic lanuage,所以kotlin宣传是静态的,对于企业
界的可能比较有吸引力--jetbrains就是做IDE的,当然喜欢static typed
看来kotlin活下去并且逐渐扩展是没有问题了。groovy是希望不大了。 |
|
n******7 发帖数: 12463 | 5 需要静态语言
跨平台
自动GC
开发效率高
资源多
基本就jvm和.NET语言了吧
也就是java/scala/clojure/C#/F#/kotlin
kotlin感觉优势很大
1. 与java完全互操,可以说站在java肩膀上。java的东西都能用,还可以一个project
混合java/kotlin代码,无痛迁移
2. 设计很务实,各种语言好的东西都弄过来,也不避讳。感觉从C#抄了不少好东西。
3. 学习难度低,不用把脑子掰弯来写码
4. google站台应用,不用担心社区和需求的问题
5. jetbrain站台IDE,开发效率不用担心
各位大牛怎么看? |
|
d****n 发帖数: 1637 | 6 想用java有不想从头学,给为牛人觉得kotlin怎么样?
web framework 类库完整么?
这玩意是文艺青年玩的么?
scala v.s. kotlin,怎么感觉,看了不少评价,还是没主见。 |
|
m****o 发帖数: 182 | 7 jetbrain主要产品还是各种各样的gui editor,就像Mozilla的主要产品是浏览器而不
是rust一样。我估计kotlin以后的演化会主要靠社区推动,对比Scala的演变进化则主
要由lightbend控制。
举个具体的例子,slick之前的商业数据库driver都是bsd, apache这样完全免费的
license,结果后来有一天lightbend fork了源代码,直接把这些驱动的后续版本变成
了闭源状态。现在由社区维护的开源版本驱动直接上了lgpl license,目的就是防止之
前那中事情再出现。你说这么个搞法Google能不放着吗?
:那么推kotlin不怕给jet brain做嫁衣?
: |
|
x***4 发帖数: 1815 | 8 我觉得公司和manager都是懒惰的。虽然说spring和android都可以用kotlin,但是估计
大部分地方还是会继续用java。我觉得kotlin需要一个独有的killer app才会受到更多
注意。举个例子,scala在spark之前也也不是很多人提。 |
|
g****t 发帖数: 31659 | 9 除了Android之外。还一件怪事。
Java转成Kotlin,不就可以走LLVM了吗?
Kotlin已经有LLVM native executable的preview版本了。 |
|
|
s***o 发帖数: 2191 | 11 是很不错。除了刚刚宣布的 "officially supported on Android", gradle也早已经投
靠kotlin了。
但是,当年Scala刚出来的时候也是很不错的样子。。。 |
|
|
N*****m 发帖数: 42603 | 13 kotlin还搞native了。
不过,现在新语言层出不穷,坑都太多了,不急。 |
|
d*******r 发帖数: 3299 | 14 在server端kotlin能有前途么?对android开发目前不感兴趣 |
|
n*w 发帖数: 3393 | 15 为什么Android用急Java开发stuck 在Java 6?
而kotlin没有这个问题? |
|
w********m 发帖数: 1137 | 16 不就是Android吗?
加上Spring。这两个就是java圈最大的两个应用,现在都加持Kotlin。
google io这个消息,其实比apple宣布swift代替obj c还震撼。 |
|
w********m 发帖数: 1137 | 17 企业级的应用里面,spring的份额最大吧。
对于还没有出来的Spring 5, 我现在的感觉是,没Kotlin没法写。 |
|
W***o 发帖数: 6519 | 18 kotlin 的syntax 看起来是抄袭了swift的,语义更明确 |
|
N*****m 发帖数: 42603 | 19 kotlin 2011公布的;swift 2014才出来。 |
|
N*****m 发帖数: 42603 | 20 mobile端scala没戏了;如果kotlin打入大数据和服务端,scala就会退出舞台了。 |
|
g****t 发帖数: 31659 | 21 As I remembered, the initial kotlin is quite different with today's version.
Anyway, both look nice to me. |
|
s***o 发帖数: 2191 | 22 kotlin的一个卖点就是跟java的interop几乎是无缝对接,比scala要好很多 |
|
s********k 发帖数: 6180 | 23 Flipboard, Pinterest APP基本都是用kotlin做了 |
|
m****o 发帖数: 182 | 24 只要android上跑的是Java bytecode,看不出来对Scala和Kotlin的竞争关系会造成多
大影响,最终语言拼的还是第三方类库的支持。Scala上有akka actor,slick orm还有
play framework,再加上一堆typelevel造出的天顶星轮子,这个对于开发只有粘性的
。kotljn在语法上的某些方面有比较相对Scala比较clever的改进,但是你让人就因为
这个从了我不太相信,何况dotty出来以后任何jvm上的语言想和Scala拼feature那就是
笑话。
话说回Scala,想做android上Scala开发资源大把有,比如这个
http://scala-android.org/examples/ |
|
n*w 发帖数: 3393 | 25 难道是Oracle的原因?
或者Google等了kotlin等语言很久了。scala可能是一般程序员不易掌握? |
|
n*w 发帖数: 3393 | 26 那么推kotlin不怕给jet brain做嫁衣?
Google |
|
|
w********m 发帖数: 1137 | 28 Kotlin的伟大意义在于
人类历史上最成功的操作系统,终于有了一个看上去不错的语言。
很多痛恨java的人,比如魏老师,可以换个语言撸android了 |
|
P**H 发帖数: 1897 | 29 这个kotlin不就是一个换皮的java?还是慢,还是要GC。整这些幺蛾子干嘛? |
|
k****i 发帖数: 101 | 30 然
:是很不错。除了刚刚宣布的 "officially supported on Android", gradle
也早已经投靠kotlin了。
: |
|
d*******r 发帖数: 3299 | 31 Native Kotlin 要是有点非 GC 的内存管理就有意思了, optionally 的也行 |
|
w***g 发帖数: 5958 | 32 1.客户端稳定性差点问题不大。好多客户端还用js写呢。2.大部分程序员没垠神头脑缜
密和负责。混日子的多。
除此,垠神评论非常靠谱。
Kotlin |
|
x****u 发帖数: 44466 | 33 王垠真是一点编程经验也没有啊
人人都通过IDE静态分析自动加到源代码里的异常声明,就应该取消掉把位置留给其他
关键字,这是历史发展大趋势啊
Kotlin |
|
s***o 发帖数: 2191 | 34 这位实战经验的确不多,不了解checked exception带来的各种痛苦。
不过他对kotlin的结论倒是跟我类似,不做android开发的话,对我没有足够大的吸引力 |
|
T********i 发帖数: 2416 | 35 CE没啥痛苦的,IDE一键就自动生成try/catch代码了,或者自动生成throw。
学编程,基本功就是要学会守规矩。既然要守规矩,规矩多大多数情况下是好事。
用vi和emacs的android程序员们可能会痛苦。但是用vi和emacs写kotlin的程序员还在
娘胎里呢。
引力 |
|
g****t 发帖数: 31659 | 36 老王这篇狗屁不通。
My two cents:
对java,c#这种类型的大规模项目很多的语言。
尽可能的做静态分析,IDE自动化,一定是趋势。
程序员不要写静态分析搞不定的异常代码就可以了。
造汽车的就不要在螺丝钉上面镂空雕花了。
: 1.客户端稳定性差点问题不大。好多客户端还用js写呢。2.大部分程序员
没垠神
头脑缜
: 密和负责。混日子的多。
: 除此,垠神评论非常靠谱。
: Kotlin
|
|
p*****y 发帖数: 1049 | 37 很多中国程序员写的书都比他强
他如果把这些汇集写书的话,在中国定价应该不会超过30元人民币。。。
所以说,这篇文章显然不值15元钱
就说CE吧,取消它是时代潮流,现在c++ 17 编译器 gcc 7 直接彻底放弃ce了,写ce的
话根本编不过
难道c++委员会的大佬们还比不过这么个黄毛瞎逼逼的
Kotlin |
|
g********n 发帖数: 296 | 38 这篇写得很好啊。 实际上有两个问题,语言该不该有这个, 实际中这个应该多用还
是少用。
第一个问题人家的回答是明确的, 我也不觉得人家的论述有问题。
大家拿第二个问题的答案区反驳人家第一个问题的结论,是不是方向不大对。
想到老王这样的人在美国混个饭都有问题,江湖凶险啊
Kotlin |
|
g********n 发帖数: 296 | 39 这篇写得很好啊。 实际上有两个问题,语言该不该有这个, 实际中这个应该多用还
是少用。
第一个问题人家的回答是明确的, 我也不觉得人家的论述有问题。
大家拿第二个问题的答案区反驳人家第一个问题的结论,是不是方向不大对。
想到老王这样的人在美国混个饭都有问题,江湖凶险啊
Kotlin |
|
g****t 发帖数: 31659 | 40 在美国混饭很容易。
目测老王的收入还没到江湖险恶被灭掉的那个层次。
老王的技术能力做个principal engineer下面一级足够了。如果有较长时间的连续性的
项目经验很快就可以的principal .
在美国这完全是可以做到的。
但是老王这多少年的折腾,我觉得他的行为表明,他的目的
就是要回他妈身边,去弥补过去的问题。早看医生是正道。不然什么环境他都无法得到
他要的东西。
: 这篇写得很好啊。 实际上有两个问题,语言该不该有这个, 实际中这
个应该
多用还
: 是少用。
: 第一个问题人家的回答是明确的, 我也不觉得人家的论述有问题。
: 大家拿第二个问题的答案区反驳人家第一个问题的结论,是不是方向不大
对。
: 想到老王这样的人在美国混个饭都有问题,江湖凶险啊
: Kotlin
|
|
x***4 发帖数: 1815 | 41 vertx 3.5出来了。谁讲讲kotlin coroutine? |
|
x***4 发帖数: 1815 | 42 vertx 3.5出来了。谁讲讲kotlin coroutine? |
|
c******n 发帖数: 16666 | 43 kotlin折腾legacy code base |
|
z****e 发帖数: 54598 | 44
经常
停止这种无意义的blablabla吧?
我们上点能够测量的
我就这么说vert.x+java性能可以超过go,vert.x+kotlin应该也行
但是会略弱于vert.x+java,但是可读性会超过vert.x+java(现阶段)
其次vert.x&go不管在什么时候,都可以吊打其他任何一个同步api的系统
用异步或者协程肯定比同步快,快很多,尤其是在io bound的时候
再来,我们可以保证,用vert.x,可以把用户线程控制在很少量的几个上
具体是cpu available cores * 2
比如1core就是2个线程就够了
再来,在线程数有限的前提下,coroutine要做的事很少,就是suspend&resume
我相信go的coroutine要做的更多
木有错,所以go很有可能做得不好,所以性能比不过vert.x
说这些,都需要证据,不要没事blablabla,证据就在这里
https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=json
我个人认为啊,vert.x和异步,再加上coro... 阅读全帖 |
|
z****e 发帖数: 54598 | 45
vert.x过去两年大发展啊,早已今非昔比了
这两年错过vert.x的是一个巨大的损失,不是我说
准备技术输出了,然后噱头就是
比spring mvc快几十倍
生态比go好几十倍
市场买不买这个账,不知道,管他呢,反正就是宣传
至于kotlin对vert.x的促进作用,看上面讲的coroutine部分
这个中国人贡献的代码已经merge进官方库了
马上就release了,就能用了
3.5的新增功能包括
kotlin的coroutine原生支持
rxjava 2.0的升级
jdbc client的callback的简化
强烈建议马上升级
ceylon贡献给了eclipse之后,也会加入coroutine
java这个还需要时间
现在项目中,java, kotlin, groovy都有,因为idea社区版加入了scala的滋持
所以准备上scala了,至于js本来就有,但是gradle里面一般都放在resources目录下
最近搞了下ruby,感觉挺好玩的,拿ruby和另外一个中国人写的脚本到时候来做演示
展示一下这个随便选一个脚本就能用来开发项目是怎样一番光景
太有趣了
vert.x最... 阅读全帖 |
|
z****e 发帖数: 54598 | 46 尝试着回答一下这个问题
1)做不到比os native的更好,但是问题在于,有些操作系统根本就没有cooperative
sheduling,比如linux,如果有的话,直接做一层包装就好了,但是没有的话,就只能
让语言来做了
2)不靠机器码,但是靠字节码,基本上就差不多了,光靠当前java的api,是不够的,
需要加多一个context参数,参考kotlin的coroutine实现,或者是通过java agent_织
入_一些context代码,这就是quasar的实现,这也是loom名称的由来
3)强在哪里呢
嗯,这个说来话长,说说我的理解
wdong有一篇回帖,解释了os层面cooperative scheduling和preemptive scheduling的
区别,有空自己去找,但是我觉得他说得复杂了,当然也因为后来用户层面框架的发展
,比如actor model有关系,看看我能不能解释清楚,这一块涉及的东西太多,os&jvm
和vert.x/actor model乃至开发者自身,都有需要配合的部分,任何一个部分不能掉链
子,所以解释起来不容易
先说os&jvm层面,这个是... 阅读全帖 |
|
z****e 发帖数: 54598 | 47
kotlin的coroutine在3.5中会加入
这个我可以跟你保证
如果没有你来找我,我给你多少伪币都行
那个pr已经merged
viet还会写一个blog介绍具体怎么使用
其实你自己加都无非那么一回事
关键的类是那个中国人写的coroutine dispatcher
主要是让coroutine run在vertx thread上就行
因为kotlin官方coroutine api支持的那几个fork&join, single thread啊这些
就少一个eventloop,用context.run on context就可以搞定了
顺便说一下,vert.x的kotlin那个主要贡献者,就是jetbrains的人
kotlin这个语言的支持,那个毛子贡献了三年 |
|
z****e 发帖数: 54598 | 48 看了下,文档已经写得差不多了,应该这两天就会release
github.com/vert-x3/vertx-lang-kotlin/blob/master/vertx-lang-kotlin-
coroutines/src/main/asciidoc/kotlin/index.adoc |
|
z****e 发帖数: 54598 | 49
我们先找一个共识
就是在一个core上做
很容易,因为没有lock
对吧?这个是所有人都认可的
然后在这个基础之上,我们有两条路可以走
一种是直接上coroutine,要求coroutine解决多核环境下调度的问题
这就是go走的这条路,我相信这条路不好走
也需要“牛得不得了的人”才能搞定,很有可能
另外一条路是这样,你先放下这个问题,我们继续往前走
看看有没有其他的路,找啊找
诶,突然发现,有一条路叫做actor model
可以通过eventloop这种方式,把原来一大票线程给降下来
为什么呢?原理很简单,原先io的时候,同步api无论如何
要占用一个线程,给我等着
异步api的好处就是可以马上释放调用线程
这样我们可以复用同一个线程,然后对于我们常见的场景
也就是那些大量crud的业务场景
基本上都是io bound的场景,所以可以通过少量线程就能host住大量的请求
比如原来用tomcat,要几千个线程的线程池
现在只需要20多个就行了,甚至用1core 1g的机器,也就是2个eventloop,记住这个关
键字
以后你会经常遇到,spring都开始eventloop,spr... 阅读全帖 |
|
n******7 发帖数: 12463 | 50 问题是完整的fp往往没有必要吧
这两天看了一下java 8的stream,又看了眼kotlin
感觉fp的玩意,取其精华就好了,拘泥于正宗fp似乎得不偿失
这点kotlin的哲学我很喜欢 |
|