X



Kotlin [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0337デフォルトの名無しさん
垢版 |
2017/06/30(金) 13:36:42.47ID:tesV9X+3
そんなんローカルに持ってきてやればよろしいがな
IntelliJ入れてあるならプラグインがある
コマンドラインしかないなら…、まあ、IDEなしは初心者であるからこそ積極的には勧めないんだけども、
コマンドラインしかないならgitで持ってきてテストが通るようにスクリプト本体編集すればいい
えっコマンドラインからテストするやり方がわからない?
0338331
垢版 |
2017/06/30(金) 13:58:27.40ID:svEzz20W
>>334
本家 (またはそれに近いコミュニティ) にある資料ならここで聞くまでもなく有るのはわかりますがな。
そうじゃなくて「日本語で」あったらうれしいなぁという話で。
0339デフォルトの名無しさん
垢版 |
2017/06/30(金) 14:35:57.92ID:5/+9iJSz
自分用でなく他の人用という話だったら
Chromeなどでのページ翻訳+原文で頑張る方法を勧める
0340デフォルトの名無しさん
垢版 |
2017/06/30(金) 14:52:56.61ID:tesV9X+3
>>331
あるかどうかで言えば「まだないです」
Kotlinは基本的にはただのJavaなので、上にもあるけどJavaの基本知識(を教えるだけの余裕)が必要なのでちゃんとした入門制作はハードルが高い
巷の日本語ページがスタートブックすら超えられてないのはそのへんが理由
そしてスタートブックですら初心者全く掬えてない
助走読本はとても頑張ってるけれど、助走ゴールな気がちょっとしなくもない。これはやっぱりJavaが悪いので仕方がない
ttps://drive.google.com/file/d/0Bylpznm149-gTGRjOFRkWm9PODg/view
0341デフォルトの名無しさん
垢版 |
2017/06/30(金) 15:08:07.12ID:svEzz20W
>>340
なるほど。
Java の資産を使えるメリットと引き換えに Java の知識が必要ってことね。
というか、 Java をマシに使える言語って感覚なのかな。

私は Scheme (LISP 系言語) を普段使いしてるので同じく LISP 系言語である Clojure を検討してたんだが、
やっぱり Java の知識が必要で、しかし Java について全然知らないので他の系統はどうなんかなと思って
このスレに来た次第。

やっぱりそう簡単にはいかんか……
0342デフォルトの名無しさん
垢版 |
2017/06/30(金) 15:20:46.15ID:5/+9iJSz
何に困ってるのか分からない
その辺の経験あるなら手動かせば身に付くまで大して掛からないだろう
0346デフォルトの名無しさん
垢版 |
2017/06/30(金) 16:43:11.20ID:svEzz20W
>>344
Scheme は日本語訳あるからそんなにつらくない。
Common Lisp とかみたいに仕様の日本語訳がなくてクソ巨大なのを使いこなすのは大変だと思うけど、
最初からリッチなライブラリがそろっているので実用しやすいという人もいる。

>>342
興味本位なので面倒くさかったらやらないだけ。
ハードルの低い入門があれば見るかもっていう感じ。
0347デフォルトの名無しさん
垢版 |
2017/06/30(金) 17:11:37.52ID:0PkxBZJ1
>>335
RuntimeExceptionの子クラスの例外は総じて同レベルで恥ずかしいんだが
原則、どれもパラメータチェックしてないから発生する例外だからな
むしろ、ヌルポが一番恥ずかしくて、それが起きないようにオプショナルがあるんだと思ってる
0348デフォルトの名無しさん
垢版 |
2017/06/30(金) 17:59:28.75ID:2uOE1xo7
Javaがクソなのと、クソの処理をしないプログラマがマヌケなのは別の話。一緒にすんな。

Optionalはその変数がnullでないことをコンパイル時に保証できたっけ?
実行時コストをかけて解決するのは鈍臭い。
0349デフォルトの名無しさん
垢版 |
2017/06/30(金) 18:12:49.54ID:0PkxBZJ1
そのクソの処理をしないプログラマでも安全にコーディングさせるためにオプショナルがあるんだよ...
オプショナルがあるからヌルポが起きないわけでもないから完全に安全とは言えんがまぁ言及すまい
0350デフォルトの名無しさん
垢版 |
2017/06/30(金) 21:30:17.46ID:2uOE1xo7
>>349
まともな言語なら(c++でさえ)コンパイル時に済ませられるのを、わざわざ実行時にチェックしなきゃいけないのは鈍臭い、つうこと。
0353デフォルトの名無しさん
垢版 |
2017/07/01(土) 15:33:59.29ID:v+Q0wrxJ
Rustだとガチでヌルポが起こせないゾ
オプショナルとかいう中途半端なモノを誇ってるKotlinとは格が違う
まぁ他の面倒が多くて全く勧められるものじゃないけど

オプショナル()だけで素晴らしいとか絶賛してる子は他にメリットを見出してどうぞ
0355デフォルトの名無しさん
垢版 |
2017/07/01(土) 20:36:50.31ID:M8KylmXN
ここまで、lazy 初期化の話が出ないw
0357デフォルトの名無しさん
垢版 |
2017/07/02(日) 13:51:47.79ID:RlGcb3P/
>>338
Koansとか英語読めなくても(読まなくても)分かるんだが…
メインはKotlinのソースコードで説明読めないなら問題と答えを比べて見るだけで基本的な構文は勉強出来るし
そもそもプログラミング自体の理解が浅いならJavaとかから始めないと例え日本語の解説あっても分からんと思うよ
0358デフォルトの名無しさん
垢版 |
2017/07/02(日) 23:49:50.72ID:ynDhLM7Z
Java + Groovy = Kotlin

つまり、Javaに関数型を付けた言語だから、
最初に、オブジェクト指向を学ぶ必要があるから、かなり大変

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

Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016
WEB+DB vol.94 の特集が、Kotlin, Electron

Try Kotlin のサイトで、ブラウザからプログラミングできる
0362デフォルトの名無しさん
垢版 |
2017/07/03(月) 06:33:05.51ID:4ljd5V+p
Kotlin.NativeよりSwiftのが使えるって本当?
Kotlin.Nativexはキーワードばかり散見されて実質何がどこまで完成してるのか分からんのだが
SwiftはWin, *nix, Androidで普通に動くようになってるけど、Kotlinはそこまで至ってないんだよね?
0365デフォルトの名無しさん
垢版 |
2017/07/03(月) 09:13:44.93ID:4ljd5V+p
Kotlin/NativeのCとの連携ってJNIを踏襲するんじゃなくて、現在進行形で独自I/F仕様を作ってるっぽいな
一応、Linux, Mac, Winで動くようだけど完成度はSwiftのがまだマシだ
0366デフォルトの名無しさん
垢版 |
2017/07/03(月) 12:50:39.71ID:v2mMhpE7
いまさらJNIはないだろ。
JVMの方も10か11でJNIに代わるNative対応が予定されているし。
0367デフォルトの名無しさん
垢版 |
2017/07/03(月) 15:28:28.68ID:BBsEUtpT
なおさら踏襲しとけよと思わなくもないな
Kotlin/NativeのNative I/F
Java9以前, KotlinのJNI
Java10以降のFFI
と仕様が乱立するのか・・・

Kotlinって仕様安定してないのな
0369デフォルトの名無しさん
垢版 |
2017/07/04(火) 09:13:03.70ID:ETZVte8W
KotlinがJNIを踏襲していることは知らないのか、知ってて度外視なのか
Kotlin/NativeアゲのためにKotlinを蔑んでちゃどうしようもないな
0370デフォルトの名無しさん
垢版 |
2017/07/04(火) 15:17:21.36ID:FOvT7Dr6
Kotlin/Javaが使うのは何でもないこと。
もしKotlin/NativeがJNI使うとしたら、それどこのXamarinだよってことだろw
0371デフォルトの名無しさん
垢版 |
2017/07/04(火) 16:48:31.76ID:E7VHi3Qh
JNIのI/F踏襲して
external fun fgetc(file: CPointer) char;
とかでいいじゃんっつーね
externalの先はわざわざVM/Runtimeかます必要はなくてCに繋げればいい

Kotlin/NativeのNative I/FはC++に対応してないようだし
後発で新規に仕様を作り始めてる割にしょっぱいなぁと思う
C++に対応するならまぁアリかと思うけどないんだろうしね
0372デフォルトの名無しさん
垢版 |
2017/07/04(火) 18:27:25.69ID:kEoD/tXz
>Cに繋げればいい
ならJNI要らないじゃん
JNI踏襲ならJNIEnvの実装必須でしょ

C++対応とか正気かよ
C++同士でさえコンパイラやバージョン違いで
マングリングが異なってリンク不可能だからCリンケージ使うのに
0373デフォルトの名無しさん
垢版 |
2017/07/04(火) 19:45:38.53ID:E7VHi3Qh
I/Fとランタイムの区別が出来てない
まぁ>>368とかもJavaとKotlinとKotlin/Nativeと区別してないからその程度なんだろうけど

> C++対応とか正気かよ
Rustのアホはbindgenって補完ツールで実現したぞ
他言語では見たことないから当然Kotlinもナイと思ってる, 後発なんだから検討はして欲しいけどねー
0376デフォルトの名無しさん
垢版 |
2017/07/04(火) 20:44:06.85ID:kEoD/tXz
>>373
>>365からの一連の流れはKotlin/NativeでのI/Fの話だぞ
区別云々は君が話の前提から混乱しているだけ

>bindgen
見たけどClang 3.9(〜4.0)のマングリングを前提としてるから
ヘッダだけじゃなく実装本体もClangでビルドする必要があるようだが

完全なC++コードがある場合は使えるが、ABIの代わりにはならないだろう
0378デフォルトの名無しさん
垢版 |
2017/07/05(水) 11:03:55.64ID:BRC1acOi
スマホアプリの言語ぐらい統一して欲しい
googleとappleで話し合えないのかねぇ
mac以外でもios用のアプリ製作からリリースまで最後まで出来るようにしてほしいよねぇ
0380デフォルトの名無しさん
垢版 |
2017/07/05(水) 12:07:39.48ID:Ejf+K2GI
Appleの昔から自分たちのプラットフォームにユーザーを囲いこんで、他のプラットフォームからの鎖国という考え方
Googleは自分たちのサービスを他のプラットフォームでも利用してもらってユーザーを増やし、収益を伸ばしたい考え方
統一でという方向で動く時、どちらがそれを拒んだり我を通した条件を突きつけてくるかは明白
0382デフォルトの名無しさん
垢版 |
2017/07/05(水) 12:46:52.77ID:BRC1acOi
開発者として開発環境を統一できるメリットがあるだろうが
0383デフォルトの名無しさん
垢版 |
2017/07/05(水) 12:51:04.90ID:XfevCCY3
>>382
開発側からすればwebフロントエンド系のように開発者余りまくりで単価デフレになるデメリットしかない
0384デフォルトの名無しさん
垢版 |
2017/07/05(水) 14:04:19.57ID:KnxHgcda
>>378
ブラウザですら自分の思い通りに開発できないからってwebkitからblinkフォークさせたのに
0386デフォルトの名無しさん
垢版 |
2017/07/05(水) 16:10:10.15ID:KD2VFbty
>>378
react native とtypescriptに期待してる。
typescriptならサーバサイドにも耐えそう。言語仕様もパターンマッチング提案中だったり、
結構格好いい言語になってきた
0387デフォルトの名無しさん
垢版 |
2017/07/05(水) 16:35:02.36ID:dBZFHwYj
>>385
JVM言語で「iOSとAndroidを統一環境で開発できる」と言うのもなんかがっかりではある
君は一体歴史のどこを見てきたのかと
0390デフォルトの名無しさん
垢版 |
2017/07/05(水) 18:58:19.44ID:nAxrn5ol
>>378
GoogleはAndroid開発環境を複数OS向けに出している

iOSアプリの公式開発環境がMac用しかないのはAppleが狭量なだけだし、Googleは無関係
話し合いで進展する問題ではない
0392デフォルトの名無しさん
垢版 |
2017/07/05(水) 19:12:52.25ID:nAxrn5ol
仮にAppleがiOSの開発環境をWindows向けに出すとして、iOSエミュレータはついてくんのか?っていう
Androidのような大真面目なエミュレータではなく、iOSはMac上でも「シミュレータ」しか動かん
それがWindows上で動かせるようになるとはあまり思わない
0394デフォルトの名無しさん
垢版 |
2017/07/06(木) 07:36:12.02ID:iYgfgx2U
>>376
JNIEnvが必須とか言い出すからIFじゃなくRuntimeの話を交え始めたと理解したが?

RustがclangでC/C++本体のコンパイルが必要だからNGなら
Kotlin/Nativeがclang等々でC本体のコンパイルを必要とするのもNGになっちまうだろw
他言語を他コンパイラでコンパイルするのは当然で、C++に限ってはその上でKotlin/Nativeが頑張るんだよ
0396デフォルトの名無しさん
垢版 |
2017/07/06(木) 13:03:11.11ID:A60SyEEL
>>394
>IFじゃなくRuntimeの話
Javaからnativeを使う方のJNIは以下から成り、JNIEnvはJNI仕様の中核
 ・CのABI
 ・シンボル名と引数のルール
    ※ Java_パッケージ_クラス_メソッド(JNIEnv*, thisインスタンス, java側引数)
 ・プリミティブ型の定義
 ・JNIEnv(JNI関数群)のインターフェイス仕様

>clang等々
特定のコンパイラ/バージョン依存なのと, CのABI依存なのはまったく異なる

Kotlin/Nativeのinterop, JavaのJNI, C#のP/Invoke, RustのFFIなどはABIで連携するけど
bindgenはI/FでなくC++コード全体を取り込む外部ツール
Clangの実装に強く依存するからRustの仕様の一部として取り込まれることも無いだろう

誰かがKotlin版bindgenを作ろうとすることに特に反対は無いけどすべきとも思わない
Kotlin/NativeでJNIのI/Fを使う話も労力に見合うものは得られない
0397デフォルトの名無しさん
垢版 |
2017/07/06(木) 13:14:33.18ID:A60SyEEL
>>394
追記
そもそも根本的な話としてCのABIと呼んでいるもの(↓と同義)が何か分かってる?

https://github.com/JetBrains/kotlin-native/blob/v0.1.0/INTEROP.md
>target is a C library

https://doc.rust-lang.org/book/first-edition/ffi.html
>C ABI

バイナリ内のシンボル名や呼出規約であって別にコード自体がC言語である必要は無い
C++(extern "C"), Rust, Haskellなどネイティブにビルド出来るものは
C ABIでのライブラリを作成する機能を持つものは多い

Cに無い機能(C++例外など)をそのまま透過出来ないというだけで、
C++やRustで作った共有ライブラリをKotlin/Nativeから呼べる
0402デフォルトの名無しさん
垢版 |
2017/07/06(木) 23:28:02.58ID:L8j5rxy6
呼出規約には、2種類ある

呼び出した方で、引数のスタック領域の確保・解放をするものと、
呼び出された方で、するもの
0403デフォルトの名無しさん
垢版 |
2017/07/06(木) 23:43:32.25ID:X1Wsv7xS
さらには引数を後ろからスタックに積むもの、前から積むものもってのもある。
0405デフォルトの名無しさん
垢版 |
2017/07/08(土) 17:26:45.29ID:69drE4+r
>>396
なんか長々書いてるけど、結局新規のIF, 文法切っても現仕様はSwift同程度なんだよね
中身がどうあろうがいいけどショボい機能しか載せられないなら、Kotlinの上っ面IFだけはKotlinとKotlin/Nativeで共通化して欲しかったって話だよ

まぁ絶賛開発中の言語仕様だし期待しないで気長に待つわ
0406デフォルトの名無しさん
垢版 |
2017/07/08(土) 19:34:40.80ID:dvBryjqP
しょっぱいだのショボいだのディスるのは簡単だが
浅い知識と考えでそれを言うのは恥ずかしいことだと少しは自覚しろよ・・・
0411デフォルトの名無しさん
垢版 |
2017/07/09(日) 22:15:33.42ID:x/k/RP/C
>>408
>構文糖衣が多くてperlみたいな雰囲気を感じないでもない
カッコとかなしでむき出しで書かれる A keyword B みたいな構文はどうにも慣れないね
A.method(B)やfunction(A,B)と同じはずなんだが、空白という文字で区切られていると脳が一瞬括りを拒否する
0412デフォルトの名無しさん
垢版 |
2017/07/10(月) 13:10:30.69ID:Y8I/wQdo
>>406
最初(>>367の時点)からKotlin層の文法だけを注視してて、C層は気にしてないからなぁ
Kotlin層の共通化が大変な訳でも無し、わざわざ大変な新規IF切ってしょぼい機能になってるのは恥ずかしいよ
0414デフォルトの名無しさん
垢版 |
2017/07/10(月) 23:27:47.39ID:LuuY8Q0f
>>412
C層を気にしてないんじゃなく知らないだけだろ
だから「わざわざ大変な新規IF」なんて的外れなレスをすることになる
JNIライブラリを書いたことすら無さそうだし

良案と思っているものがあれば↓で提案してみたらどうだ?
https://discuss.kotlinlang.org/
鼻であしらわれるのがオチだが
0415デフォルトの名無しさん
垢版 |
2017/07/11(火) 02:41:16.53ID:HQt0YaW2
言語なんて色々あるんだから自分の好きなの選んだらええんやで
Androidに正式採用されてから一気に書き込み増えたな
0416デフォルトの名無しさん
垢版 |
2017/07/11(火) 03:44:11.61ID:LaLOr5GK
>>414
別にKotlinがそこまで好きなわけじゃないし、ここでKotlin/Nativeの喜劇を鼻で笑ってた方が楽だし・・・
業務でJNIを書いてたのは15年くらい前の1.3の頃だねぇ、あの頃はJNIはC++が使えなくてラッパー層の実装も面倒だった
いつからか知らんけど、JNIEnvにC++ APIが追加されててC層の実装が楽になってて数年前にビビったわ

・・・と老害なレスしとけば、論点ズラして技術論から離れた場外乱闘になって俺が飽きれるだろ
0417デフォルトの名無しさん
垢版 |
2017/07/11(火) 11:50:37.31ID:HY0nK+zE
>>413
Kotlin
--
external fun sayHello();
System.loadLibrary("hello")
sayHello() // C API呼び出し

Kotlin/Native
--
import kotlinx.cinterop.*
sayHello() // C API呼び出し
// 別途、defファイル, gradleファイルを用意

Kotlin/Nativeはexternal funを宣言しないでシームレスにC APIを利用させるために、KotlinからIF構成を変えてる
external funの宣言がなくなった分だけKotlin層の記述は楽になったけど
代わりにdef, gradleが必要で、Kotlinと互換性なくて、C++ APIは呼べないという制限がある

そこまで変えるなら、頑張ってC++ API呼べるようにして欲しいなーって冗談半分で言ったら噛み付かれた
0418デフォルトの名無しさん
垢版 |
2017/07/11(火) 12:19:57.03ID:UunU8BlR
プログラマの勉強しようとおもってますが、これはジャバとなにがちがいますか?
大差ないようであればこれを勉強しようおおもいます
0419デフォルトの名無しさん
垢版 |
2017/07/11(火) 12:23:20.73ID:qIknPoW2
>>418
Javaとの大きな違いは、Javaを完全に理解してる人向けで初心者向けの情報がほぼゼロという点
0420デフォルトの名無しさん
垢版 |
2017/07/11(火) 12:38:05.79ID:TEHQIMDt
ObjCというマイナーで黴の生えた言語がiOS開発入門の障害になっていたところに現れたSwiftとは違い、
Javaは開発者ならはっきり言ってできて当然なので今後も初心者向けの情報の充実は望めない
0422デフォルトの名無しさん
垢版 |
2017/07/11(火) 13:43:49.66ID:6GA6X5kA
それ頼む。javaのライブラリに依存すると言ってもandroid似関係するのはごく一部でしょう?
フルセットのjavaを学ぶ必要ないよね
0423デフォルトの名無しさん
垢版 |
2017/07/11(火) 14:41:08.33ID:poL23Q4e
>>418
Kotlinは話題になってはいるが「Java言語を使いこなしている人がその知識を使うと楽に書ける」ので好評を得ている
Java言語を全く知らないのであればKotlinはむしろ二重三重の習得障壁があるので勧められない
なにするかもぜんぜんわからないし現実世界で聞ける師匠もいないというのならJavaでいいんじゃないかな

JavaなしでのKotlin学習術というのは数年したら出てくるとは思うがそれはKotlin本体の充実も待たねばならんのでしんどい
0424デフォルトの名無しさん
垢版 |
2017/07/11(火) 15:36:02.36ID:HBLQ2eVf
>>417
随分トーンダウンしたなw

>Kotlin/NativeのNative I/FはC++に対応してないようだし
>後発で新規に仕様を作り始めてる割にしょっぱいなぁと思う
 ↓
>頑張ってC++ API呼べるようにして欲しいなーって冗談半分で言った

そもそもKotlin(JNI)との互換性の話にC++は関係無いだろう
JNIでもエクスポートする部分はextern "C"なんだから
0427デフォルトの名無しさん
垢版 |
2017/07/11(火) 21:08:20.35ID:k/zCsCNx
僕Javaはちょっとしか使ったことないLisperだけど、Kotlinサクッと学んでAndroid開発してるよ? 難しくないよ?
0429デフォルトの名無しさん
垢版 |
2017/07/11(火) 23:22:21.14ID:rvrzGERi
>>423
javaのエコシステムが学習障害なのかな。歴史がある分根深そう
gladleとかいうタスクランナー用に専用言語あるんだっけか
0431デフォルトの名無しさん
垢版 |
2017/07/12(水) 06:26:01.18ID:HQm2gXhD
>>418
Kotlin = Java + Groovy

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

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

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

これを引き継いでる関係で build.gradle を kotlin で書けるのがもう実装されてる
Androidのレイアウトを kotlin のこの DSL 記法で書けたりもするね
■ このスレッドは過去ログ倉庫に格納されています

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