Kotlin [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2016/02/27(土) 01:46:01.68ID:Ag8w7//2
JetBrainsが開発した期待の新言語Kotlinについて語りましょう
https://kotlinlang.org
2017/07/11(火) 21:08:20.35ID:k/zCsCNx
僕Javaはちょっとしか使ったことないLisperだけど、Kotlinサクッと学んでAndroid開発してるよ? 難しくないよ?
2017/07/11(火) 21:13:00.00ID:xWYiv0j+
LISPerが書くコードとか他人が読めなそうやな
2017/07/11(火) 23:22:21.14ID:rvrzGERi
>>423
javaのエコシステムが学習障害なのかな。歴史がある分根深そう
gladleとかいうタスクランナー用に専用言語あるんだっけか
2017/07/11(火) 23:23:35.24ID:rvrzGERi
swift、typescriptと触ってoptionalが無い言語は正直触りたくなくなっとる。
2017/07/12(水) 06:26:01.18ID:HQm2gXhD
>>418
Kotlin = Java + Groovy

Javaのオブジェクト指向に、Groovyの関数型を付けたもの。
クロージャを多用する

まずこの本で、Javaとオブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014

その後、
プログラミング GROOVY、2011
Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016
2017/07/12(水) 06:44:11.99ID:Tu2UL3Q1
KotlinはGroovyはあんまり関係ないだろ
機能的にはC#をリスペクトしていて、文法はScalaを簡略化したもの
2017/07/12(水) 08:03:32.77ID:LUkpq5Wd
>>432
さわっちゃだめよ
2017/07/12(水) 08:14:26.72ID:Tu2UL3Q1
C#の思想でScalaを再設計した感じだな
2017/07/13(木) 00:38:10.55ID:uHqOeG/1
メソッドの最後の引数にクロージャを書いて、
そのクロージャの中のメソッド呼び出しの最後の引数にクロージャを書いて・・・
って感じの記法でDSLを作れるのが ruby から groovy 経由で kotlin に引き継がれた特徴かね?
gradle の build.gradle みたいな奴ね

これを引き継いでる関係で build.gradle を kotlin で書けるのがもう実装されてる
Androidのレイアウトを kotlin のこの DSL 記法で書けたりもするね
2017/07/13(木) 01:28:56.84ID:JW4C8wb9
>>435
その辺はほぼScalaだよ
2017/07/13(木) 10:30:47.12ID:9URTCQsI
最近の言語はどれもよく似てるだろ
Swiftにも似てると思ったし
2017/07/13(木) 10:37:01.80ID:FzpRErWm
>>436
そりゃあscalaは何でもてんこ盛りだから同じことできるだろうけど、
公式がGroovy-styleって言ってるんだよね

Type-Safe Groovy-Style Builders
https://kotlinlang.org/docs/reference/type-safe-builders.html
2017/07/14(金) 05:04:39.07ID:SOKcdYDj
>>437
Swiftより古い言語なんだよなぁ…
2017/07/14(金) 09:50:43.08ID:tqlcOT7v
>>426
> そもそもKotlin(JNI)との互換性の話にC++は関係無い
KotlinとKotlin/NativeでNative I/Fを変えるなら、Kotlin/NativeでC++ APIをシームレスに使いたい、けど実現しないだろうねー
って笑い話をしてるのに、JNIEnvがーとか、JNIやったことないだろーとか関係ないこと言い出した子に言われても・・・
素直に、clangに依存するrustと違って、kotlin/nativeは特定C/C++コンパイラに依存しない選択をしたんだ、で良いだろうに

SwiftがKotlinのOptionalをパクったって、それ一番言われてるから
ここ10年の新興言語はお互いにパクリあってるからもう何が大元か分からなくなってるよね
2017/07/14(金) 11:53:31.95ID:JnCMaGHk
>>440
実現していないことに対し「しょっぱいなぁと思う」「ショボい機能」と罵ることと
「けど実現しないだろうねー って笑い話」というのは
お前の中では同程度の表現なのか?
2017/07/14(金) 11:59:48.94ID:JnCMaGHk
>>440
I/Fの話というだけで、JNI踏襲とC++対応は別々の話で関係無いだろ?
だから>>371に対しての>>372は改行で分けている

>>417といい、そのレスといい何故混ぜて話そうとするんだ?
「JNI踏襲するか、しないならC++対応」という思考のようだが
どちらも愚案だと言ってるだけだぞ

外部ツールとしてC++→Kotlinの変換ツールなら否定しないが
2017/07/14(金) 20:37:24.56ID:F62iti5K
>>441-442
> 「JNI踏襲するか、しないならC++対応」という思考のようだがどちらも愚案
うむ、後者は出来ないし、しないだろうからなw
前者は出来なくないだろうけど、仕様乱立(>>367)してでもCをシームレスに呼び出せるのがクールだと思ったんだろうね

「JNIを踏襲せず、C++に対応せず、Cをシームレスに呼び出せる」という現行仕様を両手あげて歓迎しない限り収まりそうにないね
Kotlin/Nativeの微妙な現行仕様を笑ってたけど、あなたの現行仕様に対する信仰が分かったので取り下げるよ
宗教は理屈じゃないと、ObjCでも散々言われているのを知っているのだ
2017/07/15(土) 08:38:17.95ID:HFaGoOZi
最後まで技術的な話が出来ない奴だったな
>>396-397で説明したのに「C++(ソースレベル)」と「CのABI」が
並べて書けるものでないことも理解されなかったようだし
まぁ取り下げたならそれでいい
445デフォルトの名無しさん
垢版 |
2017/07/15(土) 13:44:47.75ID:KAmmMYRz
>>438
そのBuilderだけの話だろ。
ここだけ取り出して、Groovyベースとか言っちゃうのはイカレてる。
2017/07/15(土) 23:24:57.48ID:5uf8kOgL
第2引数のラムダ式を、引数の外に出せる、糖衣構文あり

関数(引数, { it })
関数(引数){ it }

確か、Groovy, Gradle も同じだったか
2017/07/16(日) 00:40:29.56ID:mqalEvhx
クロージャ以外の実引数を省略して
関数 { it } とかも書けるよね

まあたしかscalaも同じことができるんだが
ruby、groovy では特に好んでこの形式を使ってDSLを作ったり
文法の拡張的な感じに使う

kotlin ではこれをさらに効率的に使い倒すために
上記のように使う関数の定義に inline という指定ができる

https://kotlinlang.org/docs/reference/inline-functions.html

引数にクロージャをとるけど、
実際にはクロージャを使わない形にインライン展開される
2017/07/16(日) 06:49:43.02ID:ZSYh3+ww
あとはコンパイル時処理があるといいな
2017/07/18(火) 08:52:46.31ID:Ttzd9ReG
Java8でもlamda構文はコンパイル時にインライン展開されるよ
2017/07/23(日) 20:14:23.56ID:5U3qvpGz
一瞬不相応に盛り上がったけど「将来性は高いが現時点ではJava利用者向けのベターJavaである」ということが周知されて落ち着いたな
よかったよかった
451デフォルトの名無しさん
垢版 |
2017/07/24(月) 10:25:57.37ID:d8RjP+27
スッゲー上から目線の総括にワロタwwww
2017/07/25(火) 02:00:55.92ID:UzXdgK41
Android公式の言語になって悔しい奴も居るんだろう
2017/07/25(火) 06:18:37.30ID:5XPEt11J
oracleが噛んでる時点で終わりの始まり。
solarisとかね。
2017/07/25(火) 07:07:22.80ID:BBsjcCUe
WorkStation, MySQL, OpenOffice...う、頭が...
455デフォルトの名無しさん
垢版 |
2017/07/26(水) 10:30:04.80ID:VR8TYjgB
IDE使わずに複数のファイルにコードを分割したときにどうやってコンパイルしてから実行する方法を教えてください
これはだめでした
kotlinc a.kt b.kt
kotlin AKt.class BKt.class

■a.kt
fun main(args: Array<String>) {
name()
}

■b.kt
fun name() {
println("Name?")
}
2017/07/26(水) 11:06:32.93ID:M5MsN9/+
kotlin -classpath . AKt
ではどう?
2017/07/26(水) 11:07:19.20ID:M5MsN9/+
あーあとjar作ってもいいし
458デフォルトの名無しさん
垢版 |
2017/07/26(水) 11:40:00.85ID:VR8TYjgB
できました!どうもありがとうございます
2017/07/27(木) 08:44:41.76ID:ol3Ji14g
KotlinがAndroid Studio公式サポートになって悔しい、ムキー
ってなるのはGoMobileユーザくらいか?実在するか分からんレベルな実用性だけども
2017/07/27(木) 09:33:07.79ID:Spup3DD1
その件で主に煽られてるのは主にScalaユーザーじゃね
彼ら自身はこれまでScalaの筋の悪さと付き合ってきて、なぜKotlinなのかをある意味一番よく理解してるから
反発する奴は少ない印象だけど
2017/07/27(木) 09:49:55.47ID:ol3Ji14g
Scalaって今は亡きJ2EE Servletに対抗する化石ソリューションでKotlinと全く関係ないんじゃないの
流石にあれは関係ないから反発も何もないと思うぞ、関係を探すなら同じJVM言語ってくらいか?
2017/07/27(木) 22:48:26.51ID:q/d1LfH4
実際にScalaでAndroidアプリ作ってた奴も居るし、Androidが出るまではJVM言語はおろかJavaすらあんまり積極的に使われてなかったしな
もともとKotlinよりはScalaの方が有名だったし、JVM言語としては悔しいだろうよ
2017/07/27(木) 22:52:33.46ID:qe1/bFe6
scalaよりkotlinが優れてるところなんてないやろ
464デフォルトの名無しさん
垢版 |
2017/07/27(木) 23:36:19.26ID:ZxLGu3dd
javaなんて覚えられそうにないからkotlin学習しようと思ってるけど
記述量が減るのは優れているとは言えませんかセニョール
2017/07/27(木) 23:57:49.40ID:0y0CpLqK
小さなソースコードが高レベル言語の目的であり、力がその目的をどれだけうまく達成できるかというものなら、
プログラミング言語の力を測るには、それがプログラムをどれだけ小さくできるかを見ればよいということになる。

逆に、言語がプログラムを小さくしないのなら、それはプログラミング言語の役割をちゃんと果たしていないということだ。
切れないナイフとか、読めない印刷とかと同じだ。

ってポールが言ってた
2017/07/28(金) 05:37:58.09ID:H2JBSSoH
>>462
そりゃScalaはサーバサイドJavaにおいて歴史があって、組み込みJavaはAndroidが出る前は落ち目だったからだろ
お前のレスはKotlinユーザは全く別の土俵のScalaにコンプレックスを持ってんだなって感想しか出ないぞ
2017/07/28(金) 13:00:03.02ID:QPanRF+L
listをfor文で回す処理を書いてるんですが、
for(data in some_data?.datas!!) {
}
ってなって、datasの後の!!を消したいんですがどうするべきなんでしょうか
2017/07/28(金) 13:39:12.54ID:k8WFShoV
some_data?.datas?.forEach { data ->
}

こうかな
2017/07/28(金) 13:48:48.64ID:QPanRF+L
>>468
できました!ありがとうございました!
2017/07/28(金) 21:34:18.74ID:8b7/0WjD
>>466
悔しいのうw悔しいのうwww
471デフォルトの名無しさん
垢版 |
2017/07/28(金) 21:54:39.65ID:GOfdf3yM
Javaに挫折したPHPの経験しかない初心者なんですけど
kotlinの勉強する場合の王道の本を教えてください
2017/07/28(金) 22:02:07.02ID:PUrhlE/b
>>471
KotlinはJavaをマスターしてる人がちょっと便利なJavaとして齧るもので、基本的にWebで十分
まずはJavaをマスターしてきなさい
2017/07/28(金) 22:17:54.83ID:zVVm7Ell
なんか勘違いしてるみたいだけど、そもそもKotlinはJavaに沢山の機能が足されていてJavaよりずっと複雑で難解な言語だぞ。
敷居の低い言語というイメージがあるのは、Javaができる人にとってストレスなく入れる言語であり、プログラミング自体の初心者がほぼ皆無だから。
Javaを学べばそれは全てKotlinでそのまま活かせるんだから、幻想は捨ててまずJavaやったほうがいい。
2017/07/28(金) 22:23:58.60ID:z1qsdhOb
本などで勉強しようとするから挫折する
言語を身に付けるにはコードを書いて読む以外に道はない
2017/07/28(金) 23:13:12.64ID:wSdfWqng
まずこの本で、オブジェクト指向をみっちり学ぶ
1. スッキリわかる Java入門 第2版、2014

2. たのしいRuby 第5版、2016
3. Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016

この順番が最短。
2を省くと、関数型プログラミングが分からないので、必要
2017/07/29(土) 00:10:16.43ID:W96Wekxi
AndroidStudioでJavaコードをKotlinに変換する機能を使ってKotlinのコードを生成して内容を見てると分かった気になってくる
2017/07/29(土) 00:50:30.28ID:DIZfrj77
むかーしjavaをちょっとやってたけど
そんなに癖がない言語だよねjava自体は。
必ずクラスを挟まないといけないから無駄に書くコードが多いくらいだよね。そんな認識の人間ならkotlin
触り始められます?
2017/07/29(土) 03:36:29.97ID:W96Wekxi
KotlinはどちらかというとJavaよりもC#に似ている
2017/07/29(土) 07:41:06.02ID:sH/xP+7Q
ScalaはKotlinの発展を悔しがるくらいに類似性があるらしいからScalaをやったことあると尚良し
結局どこに悔しがる要素があるのかサッパリ分からんかったけど
2017/07/29(土) 12:46:08.39ID:DY1QEEX5
javaアンチパターンとkotlinベストプラクティスのセットって、どっかに無いの?
2017/07/29(土) 13:01:26.70ID:JySrTbDn
Kotlin自体に関しては、他の現代的で使いでのあるプログラミング言語と比較して何か特別に学びにくいということはない
じゃあどこに壁があるのかというと
・公式の説明やマニュアルですら「Javaでいうところの○○」「動作詳細は以下のJavaプログラムを参照」のようにJavaの習熟者を対象にしている
・現状唯一の日本語本であるスタートブックすらJavaである程度の規模のプログラムを組んだ経験を前提としている
・そんな人たちが作る公開ライブラリはもちろんJavaの(類似ライブラリの)知識が前提の用法・動作説明である
というようなあたりにある
別にこれが非難すべきものだとは全く考えないのだが(これらを部外者に解説しようとすると何冊分ものJava基礎と応用を自前でゼロから解説する羽目になるため)、
単に想定対象者以外には苦難の道であるよとは伝えておきたい
「英語で書かれたマニュアルしかないから英語読めないと辛いよ」と同じような感じで
「Javaで書かれたマニュアルしかないからJavaできないと辛いよ」というやつだ
2017/07/29(土) 13:13:06.22ID:VZ2r/0rx
解説がJavaだけでなく全体的にC#/ES6(&TypeScript)/Scalaあたりの「C+F系」の経験者を意識してるのも初学者には優しくないポイントだろうな
その辺の経験がある人だとKotlinは非常に素直で分かりやすくて
資料も経験者向けに要点を押さえて作ってあって手早く学べる、とても敷居の低い言語なんだけどね
2017/07/29(土) 13:59:26.36ID:7KFbni30
初学者向きではないってのはネックですな
2017/07/29(土) 16:36:34.64ID:U9LihKmk
>>71
ガイジ晒しage
2017/07/29(土) 17:17:33.51ID:W96Wekxi
Null安全型はいいよね
486471
垢版 |
2017/07/29(土) 20:15:51.81ID:DdYvAide
2ちゃんのjavaスレが荒れててあんまり回答貰えなかったからkotlin選んだようなものなんですが
心を入れ替えてjavaから勉強します
先輩方どうもありがとう
2017/07/29(土) 20:26:38.68ID:DIZfrj77
他の言語に精通してたらjavaって何か勉強必要な言語?
interfaceとかわかってればいいんでしょ?
2017/07/29(土) 20:43:20.90ID:W96Wekxi
ライブラリ関係とか周辺知識も必要やな
2017/07/29(土) 21:30:26.28ID:c4yh7S8Z
Kotlinに限らないけど今の言語を使う上ではHaskell界隈由来のflatMapとかも理解しておいた方がいい

別言語のだけど図解部分は支障無いから貼っておく
https://www.slideshare.net/ksc1213/swiftmonad
2017/07/29(土) 22:18:06.96ID:CGKorK5y
むしろ周辺知識の方が覚える事膨大で困る
2017/07/29(土) 22:19:42.45ID:qR/5D+lk
>>489
haskell由来?www
2017/07/29(土) 22:34:22.42ID:DIZfrj77
>>488
ライブラリ系の学習って遅延学習じゃ駄目なの?
2017/07/29(土) 22:37:08.86ID:qR/5D+lk
>>492
いいよ
2017/07/29(土) 23:53:54.93ID:c4yh7S8Z
>>491
何由来だと思ってるの?
2017/07/30(日) 00:04:10.80ID:PpFa/iNU
その手の奴はだいたいLisp由来とか言っとけば当たる
2017/07/30(日) 09:16:23.60ID:AatiOL5G
>>487
主要言語の「Effective 何々」という本を読めば、わかるけど、
すべての言語でほぼ同じ

本では、equals, hashCode, toString の三種の神器を、
最初にオーバーライドしましょうって書いてあるけど、

Kotlin では、データクラスと言って、最初から用意されている
2017/07/30(日) 10:13:47.62ID:1EcJb2Jm
またお前か
ミュータブルなクラスでequalsやhashCodeをオーバーライドするのは多くの場合不適切
498
垢版 |
2017/07/30(日) 15:50:13.09ID:P5Qwr2jW
Haskell大人気だな。
ただのflattenとmapで、ほんとにlispの頃からある。
2017/07/30(日) 18:11:16.75ID:X+REAxPs
型システムと共にMonadやFunctorとして整理された経緯を知らないと
そう思うのも無理は無い
Lispやさらに前段の数学も由来として合ってはいるが
関数単体で導入されたわけでなく包括的な概念で導入されている
500
垢版 |
2017/07/30(日) 18:24:32.50ID:P5Qwr2jW
包括的な概念で導入された、って、関数型言語なら当たり前の概念を集めて来たって話で、
Haskellで知った、って話をドヤ顔されても、って話なんじゃないの?
2017/07/30(日) 22:02:52.21ID:4pngWMeM
Javaは(意外と)シンブルな言語なんだから、3言語ぐらい精通してる人ならばkotlinなんて難しくないよ。
Javaをマスターしてないとって思う人もいるみたいだけど、Javaの持ってる要素なんて、プログラミングの様々な要素からしたらそんなに多くないから大丈夫だよ
2017/07/30(日) 22:16:46.98ID:W7NHR4pI
>>501
良かった。
typeScriptとswift2とobjcとgo
が使えてる俺はなんの問題もなく使いこなせるって事だね?
2017/07/30(日) 22:18:14.70ID:sGCf83rH
CommonLispやC++に比べれば屁でもない
2017/07/31(月) 08:02:41.90ID:IjzZ4ZfD
>>500
>概念を集めて来たって話
是非ともMonadやFunctorとして整理された経緯を調べてみてくれな
2017/07/31(月) 14:27:59.07ID:luO5NyKL
elixirのパターンマッチに感動したんだけど、バイナリ列にパターンマッチングできるんでバイナリデコーダが簡単にできそうなんですが
kotlinもそういうことできます?
506
垢版 |
2017/07/31(月) 18:32:19.26ID:/DHTAviI
>>504
知ってるよ。そもそも物理屋、工学屋は圏論自体から入っとる。
2017/08/01(火) 00:27:55.71ID:PARHYe6N
>>481だけがわりと正確な物言いしてるが「解説の大部分がJavaプログラムに依存してる」ことが学習上の問題
自然言語でほとんど書いてないからJavaの動作を斟酌して理解しないといけないのだ
時間と人手が解決する問題ではあるが、今から学びたい人にはあんまり嬉しくなかろうな

理解に必要なのはJavaの文法そのものではなくJavaの個々の動作と実装のされ方なのでJava使ったことない人はしばらく戻ってこれないぞ
ただ、遠回りだけど近道なので頑張ってくれ
508デフォルトの名無しさん
垢版 |
2017/08/01(火) 01:54:59.02ID:sayqMREC
>>502

>>475
の順番に読めば、OK
2017/08/01(火) 02:05:24.99ID:A0OBZNC2
>>475
rubyみたいなオワコン勧めるなボケ
2017/08/01(火) 02:07:40.68ID:A0OBZNC2
kotlinってアンチパターンすぎる。
純粋な実装を隠蔽するんだから。
2017/08/01(火) 03:56:21.19ID:sayqMREC
>>505
Byte Stream に変換して、その中から探せば?
2017/08/01(火) 09:50:52.12ID:5VpZIsuu
kotlinやってみたくなったけど
入門者向けの情報がjava前提の物ばかりなので
javaやり始めました

で、思ったんだけど
javaって言語仕様以外の部分で覚えなきゃならない事多すぎ
kotlin入門者向けのライトなjava入門の情報が欲しい今日この頃
2017/08/01(火) 14:33:06.94ID:bOmdPaNn
何はともあれHello worldよ
色々丸コピでもいいから手持ちのAndroid端末上に画面を出す

そこで登場したよく分からないものを全てググって
その後はやりたいことをベースに調べていけばいい
本読むのはその後でも
2017/08/01(火) 19:23:29.20ID:A6tuVNB3
JavaとKotlinなんて文法以外にさほど違いがないから、覚えることが多いことに変わりない罠
2017/08/01(火) 19:34:51.60ID:HNVJVpAf
覚えるって発想がよくわからない
調べたらいいと思う
516
垢版 |
2017/08/01(火) 20:43:30.74ID:ps+Dq31M
>>510
案外bytecodeはjavacより賢いと思う。
kotlin nativeにも期待たし、隠蔽ってのはそこまで深く考えんで良いのでは?

あんまり隠蔽と言い出すと、アセンブラ書くしか無くなる。
517デフォルトの名無しさん
垢版 |
2017/08/01(火) 23:16:53.17ID:NbT5I2SP
(´・ω・`)これって、コーリンって読むらしいね
2017/08/01(火) 23:25:56.46ID:WvvXqR8d
じゃあそう読めばいいんじゃない?
伝わらないと思うけど
519デフォルトの名無しさん
垢版 |
2017/08/01(火) 23:56:00.53ID:NbT5I2SP
(´・ω・`)いまね、wiki見たらことりんってかいてたー
さっきTwitterみてたらコーリンってよむってウソ情報ながれてたのー
すいません
2017/08/02(水) 00:30:22.22ID:Mrcj6vwl
ここやTwitterのような有象無象発信の情報は一度調べることをオススメする

1次情報や文責のある情報なら話は別だけどね
521デフォルトの名無しさん
垢版 |
2017/08/03(木) 02:14:23.09ID:dP8PygxN
コトリチャンって読むんやで
522デフォルトの名無しさん
垢版 |
2017/08/04(金) 02:49:08.32ID:C9CuhslM
この言語でiosアプリも開発できるの?
ならSwiftもJavaもいらなくね?
523デフォルトの名無しさん
垢版 |
2017/08/05(土) 22:07:19.73ID:q6QkhQr1
初心者向けの定番本教えて
2017/08/05(土) 22:40:45.42ID:su6WsJEB
まだ出てないだろ?
2017/08/05(土) 22:41:57.37ID:Zex8il51
>>475
に書いてある

定番もクソも、Kotlin の本は、ユーザーグループ代表の本だけ
2017/08/05(土) 23:47:57.71ID:1Q3JuekX
電子書籍でも出てるよな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況