JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう
※前スレ
Kotlin 5
https://mevius.5ch.net/test/read.cgi/tech/1544268581/
探検
Kotlin 6
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/06/22(土) 15:59:57.23ID:zj+KJbMh657デフォルトの名無しさん
2020/02/06(木) 01:34:47.55ID:c8/ceEGP658デフォルトの名無しさん
2020/02/06(木) 01:42:08.64ID:c8/ceEGP >>651
型チェック+処理を頻繁に書きたいのなら
こういうの用意しておくといいんじゃね
inline fun <reified T> Any?.letif(b:(T)->Unit){ if(this is T) this.let(b) }
fun main() {
val x2: List<Any> = listOf(0.3)
x2[0].letif<Double>{ println(it + 0.2) }
}
型チェック+処理を頻繁に書きたいのなら
こういうの用意しておくといいんじゃね
inline fun <reified T> Any?.letif(b:(T)->Unit){ if(this is T) this.let(b) }
fun main() {
val x2: List<Any> = listOf(0.3)
x2[0].letif<Double>{ println(it + 0.2) }
}
659デフォルトの名無しさん
2020/02/06(木) 06:43:59.78ID:SCigAXfk >>650
val x2: List<Any> = listOf(0.3)
val x3 = x2[0]
if (x3 is Double) println(x3 + 0.2)
これはスマートキャストいけた。
雑に考察すると、x2の右辺には別スレッドで
val x4: MutableList<Any> = mutableListOf(0.3)
と定義したx4を書くことも出来て、
ifの条件式が評価されてprintlnが実行されるまでに、
元のスレッドでx4[0] = "string"が実行されている可能性が微粒子レベルで存在するのかなと。
val x2: List<Any> = listOf(0.3)
val x3 = x2[0]
if (x3 is Double) println(x3 + 0.2)
これはスマートキャストいけた。
雑に考察すると、x2の右辺には別スレッドで
val x4: MutableList<Any> = mutableListOf(0.3)
と定義したx4を書くことも出来て、
ifの条件式が評価されてprintlnが実行されるまでに、
元のスレッドでx4[0] = "string"が実行されている可能性が微粒子レベルで存在するのかなと。
660デフォルトの名無しさん
2020/02/06(木) 09:49:06.64ID:hv8rQXh6 data classなんかの読み取り専用プロパティへの参照なら同じ書き方でスマートキャストできる
そのプロパティを参照するだけのメソッドやカスタムgetterを経由したら不可
コンパイラ設計上、メソッドの副作用がないことを無制限に推論することは時間的制約の面で不可能で、どこかで線引きするしかない
リフレクションで変数を書き換えてるかもしれない
その合理的な線引きの範囲がval値への参照なんだと思う
そのプロパティを参照するだけのメソッドやカスタムgetterを経由したら不可
コンパイラ設計上、メソッドの副作用がないことを無制限に推論することは時間的制約の面で不可能で、どこかで線引きするしかない
リフレクションで変数を書き換えてるかもしれない
その合理的な線引きの範囲がval値への参照なんだと思う
661デフォルトの名無しさん
2020/02/06(木) 09:57:34.37ID:/RKPlkxl662デフォルトの名無しさん
2020/02/06(木) 19:48:08.86ID:RMCcx4bu kotlinはc++みたいな玄人向けのクソ言語になろうとしてるのか?複雑すぎやろ。コルーチンでどうやってエラー伝えればいいんだ
https://qrunch.net/@kyoutoday/entries/64IYC8Ye81WyzA5L
https://qrunch.net/@kyoutoday/entries/64IYC8Ye81WyzA5L
663デフォルトの名無しさん
2020/02/06(木) 22:01:06.64ID:cD2QUy+I Eitherに一票
664デフォルトの名無しさん
2020/02/07(金) 01:10:47.77ID:cvaigXbo >>662
>coroutinesなどで実行している非同期なコードの例外をキャッチすることができません。
どういうこと?出来るだろ?
suspend fun f(): String { throw RuntimeException() }
fun main() {
try { runBlocking { f() } }
catch(e:RuntimeException){ println("catch") }
val d = GlobalScope.async { f() }
try { runBlocking { d.await() } }
catch(e:RuntimeException){ println("catch") }
}
>coroutinesなどで実行している非同期なコードの例外をキャッチすることができません。
どういうこと?出来るだろ?
suspend fun f(): String { throw RuntimeException() }
fun main() {
try { runBlocking { f() } }
catch(e:RuntimeException){ println("catch") }
val d = GlobalScope.async { f() }
try { runBlocking { d.await() } }
catch(e:RuntimeException){ println("catch") }
}
665デフォルトの名無しさん
2020/02/07(金) 03:04:38.78ID:nyDcvFOU runBlockingって、名前の通りスレッドブロックするん?だったらさすがに実際そんな使わないだろ。launch,asyncなどのコルーチンビルダーで例外キャッチできないと
666デフォルトの名無しさん
2020/02/07(金) 03:18:27.55ID:nyDcvFOU >>662と似た記事https://qiita.com/kencharos/items/6fd0a9e92363b08c0340
c#のasync/awaitレベルで十分なのにやり過ぎkotlin...
c#のasync/awaitレベルで十分なのにやり過ぎkotlin...
667デフォルトの名無しさん
2020/02/07(金) 06:43:46.22ID:cvaigXbo >>665
基礎無しで応用を全部使おうとして混乱してるように見える
Kotlinに関しては道筋のドキュメント不足が原因かもしれない
> launch,asyncなどのコルーチンビルダーで例外キャッチできないと
C#のasyncやJavaScriptのPromiseでも変わらんよ
言語に限らず非同期処理の基礎知識として
コールバック、待機/通知、イベントループをまず学ぶべき
基礎無しで応用を全部使おうとして混乱してるように見える
Kotlinに関しては道筋のドキュメント不足が原因かもしれない
> launch,asyncなどのコルーチンビルダーで例外キャッチできないと
C#のasyncやJavaScriptのPromiseでも変わらんよ
言語に限らず非同期処理の基礎知識として
コールバック、待機/通知、イベントループをまず学ぶべき
668デフォルトの名無しさん
2020/02/07(金) 06:46:22.97ID:cvaigXbo エラー処理については
まず、正常値/エラー値/多値/例外 はどれも
結果(処理への入力に対する出力)の一形態に過ぎないというところからスタート
まず、正常値/エラー値/多値/例外 はどれも
結果(処理への入力に対する出力)の一形態に過ぎないというところからスタート
669デフォルトの名無しさん
2020/02/07(金) 08:06:13.01ID:lRgw/j43 >C#のasyncやJavaScriptのPromiseでも変わらんよ
他の言語とkotlinの違いはkotlinの場合は、suspend関数を呼ぶにはどっかにcoroutineが必要で、
coroutineの境界(lanuchなどで)例外は外側に伝わらないじゃん。
try {
GlobalScope.launch { 例外発生}
} catch (ex: Exception) { キャッチできない }
で、どうすりゃいいの?ってことで悩んでて、ググったら上記の記事が出てきて、kotlinは他の方法でやるの??
って思ったけど今回とあんま関係なかったのかも。
とりあえず、JobにinvokeOnCompletionで完了ハンドラ登録できるから、
coroutineの外側ではJobを受けわたせばいいのかな・・
他の言語とkotlinの違いはkotlinの場合は、suspend関数を呼ぶにはどっかにcoroutineが必要で、
coroutineの境界(lanuchなどで)例外は外側に伝わらないじゃん。
try {
GlobalScope.launch { 例外発生}
} catch (ex: Exception) { キャッチできない }
で、どうすりゃいいの?ってことで悩んでて、ググったら上記の記事が出てきて、kotlinは他の方法でやるの??
って思ったけど今回とあんま関係なかったのかも。
とりあえず、JobにinvokeOnCompletionで完了ハンドラ登録できるから、
coroutineの外側ではJobを受けわたせばいいのかな・・
670デフォルトの名無しさん
2020/02/07(金) 08:06:35.60ID:lRgw/j43 suspend fun fun2() {
throw Exception("hoge")
}
suspend fun fun1() {
fun2()
}
// コルーチンスコープが定義されてるところはJobで返す
fun test(): Job {
return launch {
fun1()
}
}
// 大元
fun main() {
val job = test()
job.invokeOnComplete(t: Throwable?) { }
}
とまぁこんな感じになっちまうけどいいか・・
他の言語なら普通に例外を伝搬させられるが・・?
throw Exception("hoge")
}
suspend fun fun1() {
fun2()
}
// コルーチンスコープが定義されてるところはJobで返す
fun test(): Job {
return launch {
fun1()
}
}
// 大元
fun main() {
val job = test()
job.invokeOnComplete(t: Throwable?) { }
}
とまぁこんな感じになっちまうけどいいか・・
他の言語なら普通に例外を伝搬させられるが・・?
671デフォルトの名無しさん
2020/02/07(金) 08:11:00.57ID:lRgw/j43 と、coroutine境界の内外でどうエラーの例外を伝えればいいか悩んでた次第です・・
672デフォルトの名無しさん
2020/02/07(金) 08:54:24.91ID:cvaigXbo >>669
>>664をC#で書くとこうなる → https://ideone.com/QwtGY4
try{ GlobalScope.launch {例外発生} } ...
これはスレッドで言えば
try{ Thread {例外発生}.start() } ...
と同じこと
>>668で書いたように戻り値も例外も同じで
待機やコールバックにより「受け取る」ことが必要
Kotlinでは runBlocking{}
C#では .Resultまたは.Wait() (どちらもスレッドをブロックする)
JavaScript(Promise)ではonRejectedコールバック
>>664をC#で書くとこうなる → https://ideone.com/QwtGY4
try{ GlobalScope.launch {例外発生} } ...
これはスレッドで言えば
try{ Thread {例外発生}.start() } ...
と同じこと
>>668で書いたように戻り値も例外も同じで
待機やコールバックにより「受け取る」ことが必要
Kotlinでは runBlocking{}
C#では .Resultまたは.Wait() (どちらもスレッドをブロックする)
JavaScript(Promise)ではonRejectedコールバック
673デフォルトの名無しさん
2020/02/07(金) 09:11:43.28ID:cvaigXbo >>670
> 他の言語なら普通に例外を伝搬させられる
まずここに勘違いがある
Kotlinに限らず同期メソッドと非同期メソッド間で
待機やコールバック無しに伝搬することは無い
main自体を非同期メソッドにしているか
ブロックする呼び出しをしていることに気付いていないだけ
> 他の言語なら普通に例外を伝搬させられる
まずここに勘違いがある
Kotlinに限らず同期メソッドと非同期メソッド間で
待機やコールバック無しに伝搬することは無い
main自体を非同期メソッドにしているか
ブロックする呼び出しをしていることに気付いていないだけ
674デフォルトの名無しさん
2020/02/07(金) 09:21:26.29ID:lRgw/j43 >>673
うん。だから、他の言語でmainメソッドを非同期メソッドにして、普通にtry-catchで
例外捕まえれるけど、kotlinだと無理だから他の方法あるのかな??って
話をしてたんですけど・・・
うん。だから、他の言語でmainメソッドを非同期メソッドにして、普通にtry-catchで
例外捕まえれるけど、kotlinだと無理だから他の方法あるのかな??って
話をしてたんですけど・・・
675デフォルトの名無しさん
2020/02/07(金) 10:13:20.15ID:cvaigXbo >>674
mainを非同期メソッドにして普通にtry-catch出来るけど
suspend fun fun2() { throw Exception("hoge") }
suspend fun fun1() { fun2() }
suspend fun main() {
try { fun1() }
catch(e:Exception){ println("catch") }
}
mainを非同期メソッドにして普通にtry-catch出来るけど
suspend fun fun2() { throw Exception("hoge") }
suspend fun fun1() { fun2() }
suspend fun main() {
try { fun1() }
catch(e:Exception){ println("catch") }
}
676デフォルトの名無しさん
2020/02/07(金) 11:43:04.21ID:cvaigXbo 躓きの原因になってそうな点を書いてみる
・Kotlinのsuspendメソッド間は暗黙で同期して明示で非同期するが
他言語のasyncメソッド間は暗黙で非同期して明示で同期する
・GlobalScope.launchには地雷がある(joinで例外が受け取れない)
※同スコープの launch は受け取れる
GlobalScope.async/await に置き換えるのが良いと思う
・同スコープで非同期起動(async{})した場合の連鎖キャンセルで混乱している
スコープがよく分からなければ GlobalScope.async を使っておけばいい
GlobalScope.launchの件は使わないから気付かなかった
基本的には GlobalScope.async/await, runBlocking を使えば良い
・Kotlinのsuspendメソッド間は暗黙で同期して明示で非同期するが
他言語のasyncメソッド間は暗黙で非同期して明示で同期する
・GlobalScope.launchには地雷がある(joinで例外が受け取れない)
※同スコープの launch は受け取れる
GlobalScope.async/await に置き換えるのが良いと思う
・同スコープで非同期起動(async{})した場合の連鎖キャンセルで混乱している
スコープがよく分からなければ GlobalScope.async を使っておけばいい
GlobalScope.launchの件は使わないから気付かなかった
基本的には GlobalScope.async/await, runBlocking を使えば良い
677デフォルトの名無しさん
2020/02/09(日) 13:51:35.05ID:nzKzkqWJ Kotlin 〜地図にない場所〜
678デフォルトの名無しさん
2020/02/11(火) 05:13:51.51ID:LP4Ep5U4 >>677
脈絡がなさすぎてよくわからんが、これがやりたかったん?
https://ja.wikipedia.org/wiki/Will_%E3%80%9C%E5%9C%B0%E5%9B%B3%E3%81%AB%E3%81%AA%E3%81%84%E5%A0%B4%E6%89%80%E3%80%9C
水をさして悪いが地図にはあるんだなこれが。島の名前が由来だからね。
https://www.google.com/maps/place/%E3%82%B3%E3%83%88%E3%83%AA%E3%83%B3%E5%B3%B6/@60.0019041,29.649169,12z/data=!3m1!4b1!4m5!3m4!1s0x4696454b3c730d79:0x84277e6a3fbe0093!8m2!3d60.0125003!4d29.7336138
脈絡がなさすぎてよくわからんが、これがやりたかったん?
https://ja.wikipedia.org/wiki/Will_%E3%80%9C%E5%9C%B0%E5%9B%B3%E3%81%AB%E3%81%AA%E3%81%84%E5%A0%B4%E6%89%80%E3%80%9C
水をさして悪いが地図にはあるんだなこれが。島の名前が由来だからね。
https://www.google.com/maps/place/%E3%82%B3%E3%83%88%E3%83%AA%E3%83%B3%E5%B3%B6/@60.0019041,29.649169,12z/data=!3m1!4b1!4m5!3m4!1s0x4696454b3c730d79:0x84277e6a3fbe0093!8m2!3d60.0125003!4d29.7336138
679デフォルトの名無しさん
2020/02/11(火) 08:36:48.94ID:NSYf+CGe KaMP Kitの紹介 (Kotlin Multiplatform用のツール)
https://blog.jetbrains.com/kotlin/2020/02/accelerate-your-kotlin-multiplatform-evaluation-with-kamp-kit/
試してないけど、マルチプラットフォームでアプリを作る際の
注意点やどのように書くかのガイドを目的としたツールのようだ
ツール自体ではないけど、ツールを作った会社の人によるKotlin/Nativeでの並行性についての話
https://www.youtube.com/watch?v=oxQ6e1VeH4M
https://blog.jetbrains.com/kotlin/2020/02/accelerate-your-kotlin-multiplatform-evaluation-with-kamp-kit/
試してないけど、マルチプラットフォームでアプリを作る際の
注意点やどのように書くかのガイドを目的としたツールのようだ
ツール自体ではないけど、ツールを作った会社の人によるKotlin/Nativeでの並行性についての話
https://www.youtube.com/watch?v=oxQ6e1VeH4M
680デフォルトの名無しさん
2020/02/12(水) 23:27:40.61ID:KU1jPpQ4 Jupyterとか手広げすぎだろ...
https://kotlinlang.org/docs/reference/data-science-overview.html
https://kotlinlang.org/docs/reference/data-science-overview.html
681デフォルトの名無しさん
2020/02/13(木) 00:51:57.99ID:29zvuXGO682デフォルトの名無しさん
2020/02/14(金) 22:21:03.52ID:QVXriQlN リプ大量で草
お前らは当然valも変更される前提でコード書いてるよな?
https://twitter.com/kotlin/status/1227993505332682753
https://twitter.com/5chan_nel (5ch newer account)
お前らは当然valも変更される前提でコード書いてるよな?
https://twitter.com/kotlin/status/1227993505332682753
https://twitter.com/5chan_nel (5ch newer account)
683デフォルトの名無しさん
2020/02/14(金) 22:57:32.18ID:ZYSFhOo2684デフォルトの名無しさん
2020/02/14(金) 23:20:06.53ID:1RNC29HJ >>682
open valじゃん
それが変化しないと考える奴はただの初心者だろ・・・
Kotlinでは@JvmFieldを付けない限り
privateでないアクセサがメソッド(getter/setter)になるのは基礎の範疇
public class Read {
public String getValue(){return "hello";}
}
でgetValueがオーバーライドされて固定値じゃなくなることに騒いでるのと同じ
open valじゃん
それが変化しないと考える奴はただの初心者だろ・・・
Kotlinでは@JvmFieldを付けない限り
privateでないアクセサがメソッド(getter/setter)になるのは基礎の範疇
public class Read {
public String getValue(){return "hello";}
}
でgetValueがオーバーライドされて固定値じゃなくなることに騒いでるのと同じ
685デフォルトの名無しさん
2020/02/14(金) 23:34:40.26ID:08nJ6zct kotlinのvalは「valで定義されたものに=を使われていたら、コンパイル時にエラー出して止める」というご利益しかないよ
動作的にイミュータブルにする機能はないよ
動作的にイミュータブルにする機能はないよ
686デフォルトの名無しさん
2020/02/15(土) 00:55:36.25ID:/QpUFa9s valの前にわざわざopenを書いてる以上、こういう拡張への意図があったということだよ
慌てなくても怖いならopenをむやみに書かなければそれでいい
継承がカプセル化を破壊するというのは昔Effective Javaで習ったろ
これはその端的な例で、だからこそKotlinはopenを明示しないと継承できない道を選んでる
慌てなくても怖いならopenをむやみに書かなければそれでいい
継承がカプセル化を破壊するというのは昔Effective Javaで習ったろ
これはその端的な例で、だからこそKotlinはopenを明示しないと継承できない道を選んでる
687デフォルトの名無しさん
2020/02/19(水) 22:25:28.94ID:CCUNbFwX interface の val も実装を var にできるしな
688デフォルトの名無しさん
2020/02/23(日) 23:35:56.01ID:gLwCsTk/ 関数の引数をラムダ式にして、それをnullableにしたいんですがどう書いたらいいですか
fun fuck(abc: () -> Unit) {
}
みたいにして、呼び出す方は
fuck({
})
でも
fuck()
でも良いようにしたいんですが
fun fuck(abc: () -> Unit) {
}
みたいにして、呼び出す方は
fuck({
})
でも
fuck()
でも良いようにしたいんですが
689デフォルトの名無しさん
2020/02/23(日) 23:39:09.88ID:gLwCsTk/ fun fuck((abc: () -> Unit)? = null) {
}
でできましたありがとうございました!
呼び出す方は
abc?.invoke()
としたら良いようですね
}
でできましたありがとうございました!
呼び出す方は
abc?.invoke()
としたら良いようですね
690デフォルトの名無しさん
2020/02/24(月) 18:50:03.42ID:1BIvZ8XA それなら、nullable外してデフォルト値{}がよくない?
691デフォルトの名無しさん
2020/02/25(火) 05:29:25.56ID:SMgXQhso 尼で検索したら Kotlin の新しい本が出てきた。
尼はURLがNGワードになってて書けないので以下にタイトルだけ並べておく。一番上の本だけが紙の本とKindle版両方ある。それ以外はKindle版のみ。
みんなのKotlin 現場で役立つ最新ノウハウ!
プログラマーにおくるKotlin流し読み入門: Androidアプリ開発の新言語をスピードマスター
解決!Androidアプリ開発のアレコレ
尼はURLがNGワードになってて書けないので以下にタイトルだけ並べておく。一番上の本だけが紙の本とKindle版両方ある。それ以外はKindle版のみ。
みんなのKotlin 現場で役立つ最新ノウハウ!
プログラマーにおくるKotlin流し読み入門: Androidアプリ開発の新言語をスピードマスター
解決!Androidアプリ開発のアレコレ
692デフォルトの名無しさん
2020/02/27(木) 18:40:34.96ID:SgVrqVkS >>691
去年に出たのを見ると、超初心者向けのが若干少ない気がするね
去年に出たのを見ると、超初心者向けのが若干少ない気がするね
693デフォルトの名無しさん
2020/02/29(土) 19:31:55.24ID:PZdDBNK2 Kotlin始めました。導入しましたって話聞く機会が減ってきた悲しい。
694デフォルトの名無しさん
2020/02/29(土) 20:08:01.92ID:46OW7AmV 結局残るのは考えがしっかりした言語だ
小粋なのははやりすたりが激しい
MSはおかしい
小粋なのははやりすたりが激しい
MSはおかしい
695デフォルトの名無しさん
2020/02/29(土) 20:38:11.60ID:JJ549bP/ KotlinてMSが作ったの?
696デフォルトの名無しさん
2020/02/29(土) 22:40:18.84ID:ih/BSqRh まあC#から拝借した機能の多さを考えるとMSが作ったと言えなくもない
697デフォルトの名無しさん
2020/03/01(日) 11:08:43.11ID:70xHYE3h kotlinで関数型を受け付けるメソッドに、特定のクラスのメソッドを渡したいのですがどうすればいいでしょうか??
fun registerHandler(handler: (Int, Int) -> Unit)
にhanlderと同じシグニチャを持つメソッド(例えばhoge)を持つクラス(例えばFoo)を作って
val a = Foo()
registerHandler(a.hoge)
みたいなことをやりたいのですがどうすればいいでしょうか?
要するにコードを再利用したいのです
fun registerHandler(handler: (Int, Int) -> Unit)
にhanlderと同じシグニチャを持つメソッド(例えばhoge)を持つクラス(例えばFoo)を作って
val a = Foo()
registerHandler(a.hoge)
みたいなことをやりたいのですがどうすればいいでしょうか?
要するにコードを再利用したいのです
698デフォルトの名無しさん
2020/03/01(日) 12:50:48.59ID:yvqnHgQz >>697
registerHandler(a::hoge)
Bound Function and Property References
https://kotlinlang.org/docs/reference/reflection.html#bound-function-and-property-references-since-11
registerHandler(a::hoge)
Bound Function and Property References
https://kotlinlang.org/docs/reference/reflection.html#bound-function-and-property-references-since-11
699デフォルトの名無しさん
2020/03/01(日) 14:23:26.97ID:70xHYE3h >>698
ありがとうございます
ありがとうございます
700デフォルトの名無しさん
2020/03/04(水) 05:03:33.71ID:HcJR2/8S701デフォルトの名無しさん
2020/03/04(水) 23:04:30.12ID:G7V9iIFO 日本語に翻訳してくれ。
702デフォルトの名無しさん
2020/03/04(水) 23:19:14.25ID:4yioSA0z Kotlin 1.3.70 Released
品質改善がメイン
品質改善がメイン
703デフォルトの名無しさん
2020/03/06(金) 07:06:53.15ID:Z/vcpuAM smart castってvarに効くっけ
704デフォルトの名無しさん
2020/03/06(金) 09:22:52.49ID:7w4EZP5c >>703
効いたと思うが、他スレッドから変更される可能性があるならダメなのでは?
効いたと思うが、他スレッドから変更される可能性があるならダメなのでは?
705デフォルトの名無しさん
2020/03/06(金) 11:32:22.77ID:xJXeOVO9 普通に書いていれば別スレッドから書き換えられるvarにsmartcastはできない
706デフォルトの名無しさん
2020/03/06(金) 11:38:02.14ID:VtIZxMve 変数にもローカル変数やらいろいろあるし
ローカルは効きそう、インスタンス変数は無理だろう
ローカルは効きそう、インスタンス変数は無理だろう
707デフォルトの名無しさん
2020/03/11(水) 00:08:05.10ID:IcorLBpl IntellijでKotlinでJavaコード呼び出した時
どんなchecked Exception投げるか簡単に知る方法教えてください。
どんなchecked Exception投げるか簡単に知る方法教えてください。
708デフォルトの名無しさん
2020/03/12(木) 13:57:27.22ID:T8doL2Lc 何を言ってんだ?
シグニチャーを見ろ
シグニチャーを見ろ
709デフォルトの名無しさん
2020/03/13(金) 19:20:51.87ID:GcLjhKTc 初めて触る言語がコトリンなんだが異端か?
710デフォルトの名無しさん
2020/03/13(金) 21:32:38.08ID:YqqN4LBM (・_・)フツウ
711デフォルトの名無しさん
2020/03/14(土) 05:19:54.50ID:qmE7NC86 むしろ異端だったとしてなんかあんの?
712デフォルトの名無しさん
2020/03/14(土) 08:26:54.32ID:AOabs0cu Kotlinって単純にJavaの上位互換と考えていいんですかね?
それとも特定の用途ならJavaの方が優れてることもある?
それとも特定の用途ならJavaの方が優れてることもある?
713デフォルトの名無しさん
2020/03/14(土) 08:50:35.96ID:uPAEOS5i714デフォルトの名無しさん
2020/03/14(土) 11:17:54.82ID:cJqY8aA1 >>711
俺は特別!
俺は特別!
715デフォルトの名無しさん
2020/03/14(土) 15:02:17.48ID:SYJjC+91 特別な俺に酔いしれる、アートなプログラミングをするスレ民にふさわしいな
716デフォルトの名無しさん
2020/03/15(日) 01:00:14.34ID:UPbVmx1a 異端だな。
Androidアプリ作ってる場合はまあ普通だが。
Androidアプリ作ってる場合はまあ普通だが。
717デフォルトの名無しさん
2020/03/15(日) 13:40:42.45ID:JeE8EKc6 アンドロイドアプリ作る案件でしか触ったことないけどアンドロイドアプリ以外でもこの言語使うことってどれくらいあるんだ?
フリーでいろんな会社のいろんな案件に携わってきたけどアンドロイドアプリ以外でこの言語選択してるシステムに出会ったことがない
フリーでいろんな会社のいろんな案件に携わってきたけどアンドロイドアプリ以外でこの言語選択してるシステムに出会ったことがない
718デフォルトの名無しさん
2020/03/15(日) 13:43:15.79ID:G4jfON4Y SwiftもRustもそんな感じ
719デフォルトの名無しさん
2020/03/15(日) 14:28:52.20ID:JeE8EKc6 アプリ制作専用言語という認識で差し支えないってことね
720デフォルトの名無しさん
2020/03/15(日) 14:45:30.20ID:3NnqBxtE 2年前くらいの頃はサーバーサイドJavaも食いそうな勢いだったんだけど、見る影もないね
もうAndroidアプリ制作専用言語以上は何も期待できない
もうAndroidアプリ制作専用言語以上は何も期待できない
721デフォルトの名無しさん
2020/03/15(日) 14:57:29.36ID:+eqDq3h/ 何度も言われてるがベターJavaで、近代Java案件の置き換えが可能なのだが、
新規Java案件が今はもうAndroid非ゲームアプリくらいしかないため、結局Android非ゲームアプリくらいしか用途がない
もちろんかつてのJavaのように何を作っても構わないしなんでもだいたい作れるが、そもそもわざわざJavaで作る理由がもうないので…
新規Java案件が今はもうAndroid非ゲームアプリくらいしかないため、結局Android非ゲームアプリくらいしか用途がない
もちろんかつてのJavaのように何を作っても構わないしなんでもだいたい作れるが、そもそもわざわざJavaで作る理由がもうないので…
722デフォルトの名無しさん
2020/03/15(日) 15:54:52.18ID:uLtpsypH う、うん…
723デフォルトの名無しさん
2020/03/15(日) 19:04:24.46ID:U0exLU+5 javaの上位互換だからjava出来るならKotlinも直ぐ出来るって勘違いしてる人結構いるけど、
細かいところで書き方とか違うからそれなりに慣れるまで時間かかるよね
細かいところで書き方とか違うからそれなりに慣れるまで時間かかるよね
724デフォルトの名無しさん
2020/03/15(日) 19:05:45.28ID:8Tu8byB5 まぁ何でもそうじゃね
725デフォルトの名無しさん
2020/03/15(日) 19:14:18.96ID:AJhRJqKO ( ´゚д゚`)
726デフォルトの名無しさん
2020/03/15(日) 19:24:15.07ID:W4rB3Afy Javaはお固い分野でも新規に使われてるのに
縁がない人は頓珍漢な分析するよね
縁がない人は頓珍漢な分析するよね
727デフォルトの名無しさん
2020/03/15(日) 19:57:21.56ID:sgfXfD7p Java<kotlinだけどそもそも新規でのJava需要が下がってきてるから流行らないって事か?
728デフォルトの名無しさん
2020/03/15(日) 20:02:19.40ID:g43aymu7729デフォルトの名無しさん
2020/03/15(日) 21:07:47.62ID:Sa9u1DCG730デフォルトの名無しさん
2020/03/16(月) 00:53:01.45ID:hDAZpInh731デフォルトの名無しさん
2020/03/17(火) 01:35:07.82ID:Aeuh89FK かつてJavaは凄く人気が有った言語だから、エコシステムが物凄く大きい。
一方、KotlinはAndroid開発で使う人は使うと言う位置づけなのでは。
一方、KotlinはAndroid開発で使う人は使うと言う位置づけなのでは。
732デフォルトの名無しさん
2020/03/17(火) 07:47:03.83ID:sU5dKoAT エンタープライズでJavaを採用するような案件や環境は安定と安心が最優先すぎるのが逆風だと思う
Kotlinで生産性が上がると言われても移行の総コスト、安いコーダーが安定供給できるか
この先立ち消えたりJBがやらかしたりでKotlinコードが不良資産化しないかなど不安が大きい
おじさんを説得するには実績が欲しいがまだキャズムを越えない
越えて欲しいなあ
Kotlinで生産性が上がると言われても移行の総コスト、安いコーダーが安定供給できるか
この先立ち消えたりJBがやらかしたりでKotlinコードが不良資産化しないかなど不安が大きい
おじさんを説得するには実績が欲しいがまだキャズムを越えない
越えて欲しいなあ
733デフォルトの名無しさん
2020/03/17(火) 10:22:24.77ID:aozOj1qc エンタープライズではテストと比べればコーディングの手間は無視できるし、
一発作り切ったら運用に移管して手を切るのが基本だからコードが冗長で見通しが悪いとかはあまり問題にならない
どう考えてもマイナー言語ロックインのリスクをペイしないよ
一発作り切ったら運用に移管して手を切るのが基本だからコードが冗長で見通しが悪いとかはあまり問題にならない
どう考えてもマイナー言語ロックインのリスクをペイしないよ
734デフォルトの名無しさん
2020/03/17(火) 14:06:05.53ID:Aeuh89FK KotlinはJavaとは宣言の書き方が前後逆になっただけの様な言語のイメージ。
それ以外でも何かは良くなっているかもしれないが、何かは悪くなっているだろうと予想され、敢えてJavaの代わりに使おうとは思えない。
KotlinはAndroidでは使えても、デスクトップでは難しいだろうが、
Javaなら、Swingを使えば、Win/Mac/Linuxで共通アプリが作れる。
昔はさらにここにブラウザ内のアプレットも加わっていたが、今はそれが動かなくなった。
ところが、アプレットをWasmとして復活させる動きも出ているようだから、プラットフォームは広い。
恐らくそのうちSwingもAndroidやiOSで動くようになるのではないか。
それ以外でも何かは良くなっているかもしれないが、何かは悪くなっているだろうと予想され、敢えてJavaの代わりに使おうとは思えない。
KotlinはAndroidでは使えても、デスクトップでは難しいだろうが、
Javaなら、Swingを使えば、Win/Mac/Linuxで共通アプリが作れる。
昔はさらにここにブラウザ内のアプレットも加わっていたが、今はそれが動かなくなった。
ところが、アプレットをWasmとして復活させる動きも出ているようだから、プラットフォームは広い。
恐らくそのうちSwingもAndroidやiOSで動くようになるのではないか。
735デフォルトの名無しさん
2020/03/17(火) 14:21:17.83ID:yigrTQzb なんで思い込みのイメージだけで語るの
736デフォルトの名無しさん
2020/03/17(火) 14:26:37.12ID:Aeuh89FK >>733
短い簡単なプログラムなら、習いたての新しい言語でも作れるが、長くて複雑なプログラムには、十分に時間をかけて習熟した言語でないと作るのは難しい。
次々に生まれる新しい言語をニワカに学んでもいいプログラムを作るのは難しいのだ。
新しい言語では逆に間違ってしまったり、やりたいことを実現する方法が分からなくてそれを調べるために効率が下がることが多い。
Javaの言語仕様は、人気が有ったことからも分かるように昔から既に優れており、それはそれで一つの完成系をなしている。
根本的に新しい言語は一部だけは優れていても、どこかではむしろ劣っていることが多い。
一方でJavaはJavaで進化し続けている。
短い簡単なプログラムなら、習いたての新しい言語でも作れるが、長くて複雑なプログラムには、十分に時間をかけて習熟した言語でないと作るのは難しい。
次々に生まれる新しい言語をニワカに学んでもいいプログラムを作るのは難しいのだ。
新しい言語では逆に間違ってしまったり、やりたいことを実現する方法が分からなくてそれを調べるために効率が下がることが多い。
Javaの言語仕様は、人気が有ったことからも分かるように昔から既に優れており、それはそれで一つの完成系をなしている。
根本的に新しい言語は一部だけは優れていても、どこかではむしろ劣っていることが多い。
一方でJavaはJavaで進化し続けている。
737デフォルトの名無しさん
2020/03/17(火) 15:01:46.47ID:IQmvYlpF だからなに?
738デフォルトの名無しさん
2020/03/17(火) 15:04:23.46ID:+OGH67Oj だから勉強したくないでござる
739デフォルトの名無しさん
2020/03/17(火) 15:07:56.32ID:IQmvYlpF そういうことなんだろな。
JAVAだけやっとけば安心なんだ!って自分に言い聞かせてるようにしか見えん
JAVAだけやっとけば安心なんだ!って自分に言い聞かせてるようにしか見えん
740デフォルトの名無しさん
2020/03/17(火) 15:52:42.79ID:Aeuh89FK 言語ばかり学んでいてもな。
741デフォルトの名無しさん
2020/03/17(火) 15:56:41.70ID:aozOj1qc >>739
そういう観点でいえば、学ぶべきはKotlinじゃなくてGoやC#などの非JVM系言語だろう
Kotlinを選んでいる時点で、自分もまたコンフォートゾーンに留まろうとしている平凡な人間の一員であることを自覚したほうがいいぞ
そういう観点でいえば、学ぶべきはKotlinじゃなくてGoやC#などの非JVM系言語だろう
Kotlinを選んでいる時点で、自分もまたコンフォートゾーンに留まろうとしている平凡な人間の一員であることを自覚したほうがいいぞ
742デフォルトの名無しさん
2020/03/17(火) 16:00:09.84ID:Aeuh89FK どんなに優秀な人でも、あらゆる言語やツールキットを学ぶほどの時間は無いから、学ぶべきものを取捨選択や優先順位付けが重要。
一つの言語だけを学んで、プログラムに必要ななんらかの(専門的な)知識を学ぶのも立派な選択だ。
一つの言語だけを学んで、プログラムに必要ななんらかの(専門的な)知識を学ぶのも立派な選択だ。
743デフォルトの名無しさん
2020/03/17(火) 16:05:41.43ID:yigrTQzb 令和のstaticおじさん(この方はJavaおじさん)かな
744デフォルトの名無しさん
2020/03/17(火) 16:29:11.06ID:XIub247n ねぇねぇScalaって息してる?Kotlinとどっちがすごい?
745デフォルトの名無しさん
2020/03/17(火) 16:45:02.15ID:yigrTQzb 息はしているがどっちが凄いかは知らん
ScalaのコードをJavaScriptのコードに変換する「Scala.js 1.0」リリース
https://thinkit.co.jp/news/bn/17374
ScalaのコードをJavaScriptのコードに変換する「Scala.js 1.0」リリース
https://thinkit.co.jp/news/bn/17374
746デフォルトの名無しさん
2020/03/17(火) 16:46:06.62ID:Aeuh89FK747デフォルトの名無しさん
2020/03/17(火) 16:49:51.14ID:Aeuh89FK >>746
というか、新しい言語を学んで無い人を馬鹿にするのは良くない。
自然法則は昔からずっと変化しないから学んで損は無いが、言語は人工的なため、不変性も無く学ぶ価値の無いものも多数含まれる。
その取捨選択が重要。
というか、新しい言語を学んで無い人を馬鹿にするのは良くない。
自然法則は昔からずっと変化しないから学んで損は無いが、言語は人工的なため、不変性も無く学ぶ価値の無いものも多数含まれる。
その取捨選択が重要。
748デフォルトの名無しさん
2020/03/17(火) 17:07:25.05ID:IQmvYlpF 少なくとも多言語のスレでJAVAだけでいいんだ!って力説されてもね
749デフォルトの名無しさん
2020/03/17(火) 17:07:39.27ID:IQmvYlpF 他言語
750デフォルトの名無しさん
2020/03/17(火) 17:09:29.69ID:Aeuh89FK Kotlinが蔓延することで困る人もいるんだから。
751デフォルトの名無しさん
2020/03/17(火) 17:13:44.67ID:yigrTQzb 毎日使うものだから。
752デフォルトの名無しさん
2020/03/17(火) 17:17:56.69ID:Aeuh89FK >>748
ネットではKotlinそのものに価値があるようなことを言う人を良く見かけるが、実際はGoogleがOracleとの訴訟に負けて、Javaを使っていることを注意されて、それで使われるようになっただけの言語、と捉えるのが標準見解だ。
ネットではKotlinそのものに価値があるようなことを言う人を良く見かけるが、実際はGoogleがOracleとの訴訟に負けて、Javaを使っていることを注意されて、それで使われるようになっただけの言語、と捉えるのが標準見解だ。
753デフォルトの名無しさん
2020/03/17(火) 17:27:30.89ID:4Vk7SyLR754デフォルトの名無しさん
2020/03/17(火) 17:31:48.86ID:4Vk7SyLR >>736
わかった。それじゃあかれこれ30年ぐらい使い続けているPerlと35年ぐらい使い続けているC言語を使うことにするよ。Javaのような新言語に手を出すのは止めておこう。
わかった。それじゃあかれこれ30年ぐらい使い続けているPerlと35年ぐらい使い続けているC言語を使うことにするよ。Javaのような新言語に手を出すのは止めておこう。
755デフォルトの名無しさん
2020/03/17(火) 18:15:43.46ID:Aeuh89FK756デフォルトの名無しさん
2020/03/17(火) 19:06:22.80ID:+Hw83ygo >>736
そういう観点なら、better javaのkotlinを学習する費用対効果は大きい。
実際、自分でクラスを設計するのならnull freeにできるkotlinの価値は高い。
……というより、型無しのnullを排除できないjavaの型システムが破綻しているだけだけどな。いいかげん、nullを受け付けないクラス/変数に対応してほしいぜ。
そういう観点なら、better javaのkotlinを学習する費用対効果は大きい。
実際、自分でクラスを設計するのならnull freeにできるkotlinの価値は高い。
……というより、型無しのnullを排除できないjavaの型システムが破綻しているだけだけどな。いいかげん、nullを受け付けないクラス/変数に対応してほしいぜ。
757デフォルトの名無しさん
2020/03/17(火) 19:15:03.66ID:Aeuh89FK■ このスレッドは過去ログ倉庫に格納されています
ニュース
- パワフル女性世界3位に高市首相 米誌フォーブス選出 [蚤の市★]
- テレ朝本社から社外スタッフの男性が転落し死亡 テレビ朝日がコメント [ひかり★]
- 【米FRB】0.25%利下げ決定 3会合連続、雇用下支え [蚤の市★]
- アイヌ民族の「戸籍簿」がヤフオクで落札 団体「人権無視」と憤り [蚤の市★]
- 【S.RIDE】「忘年会の幹事ずるい」 ソニー系配車アプリの広告が物議…… 運営が謝罪「配慮に欠ける不適切な表現」掲出終了に [ぐれ★]
- 【維新→自民党・旧安倍派】元衆院議員の妻を逮捕、コロナ補助金5000万円詐取疑い 名古屋地検 [ぐれ★]
- 苺ましまろ
- 【堂上隼人】ソフトバンク幹部「よし更生してる」→現在までに逮捕12回、レイプ被害者15人
- 風俗嬢「ブラ外してくれる?」←これやめろ
- 【悲報】教育ママ「ギャオオオオオン!息子が大麻吸ってるのお!!」⇨中3の息子を警察に突き出し全てを終わらせる [455031798]
- 【画像】東京都民「助けて!満員電車もう無理いいぃぃいいぃぃぃいいいいいぃ😭」!!!! [732289945]
- 【誰食】おせち料理で確実にゴミ箱行きになる食材1位、「黒豆」 [748563222]
