Kotlin [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0278デフォルトの名無しさん
垢版 |
2017/06/22(木) 19:42:12.44ID:wKDRovrw
いやJVMは十分速いよ?
C++でもJavaと同じように書いたらパフォーマンスは大差ない
C++が速くなるのは低レベルな汚いハックができるからで、それができないならあまり意味がないということだろ
0279デフォルトの名無しさん
垢版 |
2017/06/22(木) 19:55:38.89ID:mgpLFN+F
>>277
kotlinから変換されたllvmコードは、kotlinの言語仕様を満たすために、
例えばメモリ管理はガベージコレクションが前提となるから
その為の少し大きめなランタイム付いてくるはず
境界チェックのようなc++なら省略できるコードも漏れなく付いてくるはず
0280デフォルトの名無しさん
垢版 |
2017/06/22(木) 22:21:35.91ID:3yY7lcXH
>>276
c++ほどの速度は出ないのね
結構早くなると思って期待したんだけど

>>278
以前画像にブラー処理掛けたときは結構違った
0281デフォルトの名無しさん
垢版 |
2017/06/23(金) 09:47:11.55ID:hp7X3mpn
それは言語の違いではなくアルゴリズムの違いではなかろうか
もしくはJavaヒープ/Nativeヒープの性能差分ならByteBufferを使う手もある
そこまで考慮するくらいなら素直にC/C++使った方が幸せだけど

ByteBufferはGC走りづらいから性能良いんだけど普通は使わないよねぇ
0282デフォルトの名無しさん
垢版 |
2017/06/23(金) 10:01:06.35ID:9PTuVR6v
ByteBuffer(もしくはそれと同様の使い方をするプリミティブ配列)がGCの性能に大きな影響を与えるって一体どんな状況?
バッファは長時間使い回すんだからGCなんかほとんど関係ないだろ
GCの負担になるほど頻繁に生成しまくるとかアホなことしてるとしても、その場合はネイティブヒープの方が割当時のオーバーヘッドの分かえって遅くなりそうだし
0283デフォルトの名無しさん
垢版 |
2017/06/24(土) 03:52:32.49ID:QlqTymbl
メモリ管理とかよりさ
JVMやDEXの中間コードからJITされたコードの場合、SIMDとかの特殊なCPU命令はまず使ってくれない
つまり十分に最適化されたネイティブコードに勝てる見込みはまずない

最適化されたライブラリの一つであるlibjpeg-turboみたいなのをアプリから使うときに
libjpeg-turboのAPIを一つ一つJNIでラップするのと
libjpeg-turboのAPIをNDKで利用してからアプリ固有のAPIだけJNIでラップするのと
どっちがリソース管理が楽かは言うまでもない

この「NDKで利用して」をKotlin Native でより安全に書けるのなら、価値はありそうだな
0284デフォルトの名無しさん
垢版 |
2017/06/24(土) 04:16:45.08ID:qquEaJ2M
んなこたない。
JITでSIMDぐらい普通に使われるし、
むしろ事前に最低限サポートするCPUを決めてそれに足を引っ張られる事前コンパイルより、実行しているCPUの拡張命令を最大限使えるJITの方が効率的なコードになる事もある。
0287デフォルトの名無しさん
垢版 |
2017/06/24(土) 09:54:27.72ID:LXfJ84Bv
Dalvik, ARTどころかOracle JVMですらSIMDは扱うよ

>>282
俺が使った時は、Androidでnew byte[1024]がOutOfMemoryでByteBuffer.allocate(1024)は通るような状況(実際は1KじゃなくM単位
画像加工を試みたんだけどbyte配列のままで処理しようとしたら分割操作が必要になってクッソ重たいのwww
0289デフォルトの名無しさん
垢版 |
2017/06/24(土) 15:08:57.88ID:LXfJ84Bv
NIOが出た当初も評判良くはなかったよねー, ないと困ることは確かにあるんだけど必要とする人は少ないし
それでも当時は仮想マシンを謳うくせにこんな基本機能もないのかよって風聞で過剰どころか不足と言われ
1.4は標準ライブラリを大量に追加しようってリリースだったから仕方ない
0291デフォルトの名無しさん
垢版 |
2017/06/27(火) 08:01:46.32ID:7qLYNCF8
間接的にお世話になってることも知らずに文句言ってるアホばっか。
0292デフォルトの名無しさん
垢版 |
2017/06/27(火) 08:19:48.98ID:p7AYCZKI
エンジン構造も知らずに車に文句付けてるってくらい論点が異なるよ
使う側であれば別に中身を意識しなくていいんだよ
0294デフォルトの名無しさん
垢版 |
2017/06/27(火) 12:59:12.87ID:thSLzROj
APIに文句言ってるだけじゃね
Javaが使いにくいからとKotlin使ってるお前らにそれを批判する資格はない
0295デフォルトの名無しさん
垢版 |
2017/06/27(火) 14:24:44.78ID:xkXC4vKS
実際問題java apiからkotlinを切り離すのはわりと簡単だったりするの?
google内で独自apiを作ってたりして
0298デフォルトの名無しさん
垢版 |
2017/06/27(火) 19:50:52.50ID:GY2ar0Yu
Java APIじゃなくJava Libraryだとするなら、そこを切り離して実用に耐えるにはJava1.4くらいには過剰設計しないと無理じゃね
0300デフォルトの名無しさん
垢版 |
2017/06/28(水) 03:57:50.54ID:ULDUfAbu
GoogleとOracleってまだちょっと揉めてるん?
0301デフォルトの名無しさん
垢版 |
2017/06/28(水) 09:52:23.47ID:1HRXLIL1
>>299
またOracleから技術をパクれは余裕綽々よ

しかし、あれは酷かったよなw
JVMのスポンサー/共同開発に名を連ねたと思ったら
その数年後にAndroid発表してSun JVMじゃなく自前のDalvik VM使うからwwwってSunを切り捨てる暴挙
そりゃ技術をパクられたSun(Oracle)はブチキレるわ

Googleはもうパクらないだろうから、Jetbrainsがパクることを期待しようか
0302デフォルトの名無しさん
垢版 |
2017/06/28(水) 11:09:49.25ID:fPVyfCmw
>>301
Androidは何もパクってないが
捨てられたApache Harmonyを引き継いだだけやし現時点ではOpenJDKになるってし
元を正せばOSS化を進めてたウンコOracleが突然APIのライセンスだなんだ
0304デフォルトの名無しさん
垢版 |
2017/06/28(水) 12:55:43.96ID:n0wEK4ez
当時、Sun JVMはクローズドソースでVMの中の人どころか、Java層のAPIも非公開だったろ...
ノウハウパクっておいてApache JVMから引き継いだだけだからってのは盗人猛々しいわw
0305デフォルトの名無しさん
垢版 |
2017/06/28(水) 13:02:32.04ID:WVoz31+g
>>304
JavaのAPIが非公開だったってそれまでJavaプログラマは何を見て書いてたんだよ。
0306デフォルトの名無しさん
垢版 |
2017/06/28(水) 13:09:21.41ID:1HRXLIL1
面倒な奴だなぁ
APIとLibraryを区別する気はないのかと思ったら、そこは区別するのかよ
0308デフォルトの名無しさん
垢版 |
2017/06/28(水) 16:04:17.62ID:1HRXLIL1
だーかーらー、>>301で言っているだろ
クローズドソースのSun JVMに首突っ込んで、自前のJVM実装のリリースに走ったのを悪行と言っている
当時もJVM自体はGNU, Apache, MSと多様に存在してたし、独自のJVMを作る自体は気にしないけど
仲良くしようぜーって近づいて技術を盗み見るのをパクったと表現しているんだ

自前のJVM作ろうが、JVM上で動く別言語作ろうが一向に構わんが、あの時のGoogleの行為は大笑いだったんだぜ
0310デフォルトの名無しさん
垢版 |
2017/06/28(水) 17:18:12.30ID:KUDOoNV3
Googleはライセンス料を回避するためDalvikを作った
Oracleが訴訟起こしたのはGoogleから和解金や継続的なロイヤルティーを得るため
金vs金

GoogleがOracle JVMでなくApache Harmonyをベースに開発したため
OracleはソースコードでなくAPIの著作権という方向からDalvikの権利を押さえに掛かった

今のところ訴訟バトルはGoogle有利に進んでいる模様
0312デフォルトの名無しさん
垢版 |
2017/06/28(水) 19:19:21.21ID:xWBVVuch
しかし何れにせよ、Androidが無かったらJava(及びそのエコシステム)はもっと廃れてたはずだよね
0313デフォルトの名無しさん
垢版 |
2017/06/28(水) 20:01:24.52ID:gsVJZ8oO
JDKのライブラリ群は30年ぐらい前の発想で作られた頭が痛くなりそうな
APIも多いのでKotlinでJDKと別にモダンなコアライブラリ
作ってくれるならとても嬉しい
0317デフォルトの名無しさん
垢版 |
2017/06/29(木) 00:16:43.10ID:OxDWNayQ
>>316
だからKotlinが生まれたんだっけな
0321デフォルトの名無しさん
垢版 |
2017/06/29(木) 11:47:39.86ID:JFxFowh1
ぬるぽは既存のライブラリやフレームワークから飛んでくるからKotlinを使ったところで解決にならないんだよなあ
自分で書いた範囲ならJavaでもぬるぽなんて滅多に出さないわ
0324デフォルトの名無しさん
垢版 |
2017/06/29(木) 12:28:25.79ID:JFxFowh1
>>322
そういう問題じゃない
Javaのライブラリにおいて引数にnullが渡されそれが不正値であるときに発生する例外は何か? →たいていぬるぽ
Javaのライブラリにおいて属性の値がnullでそれが不正値であるときに発生するエラーは何か? →だいたいぬるぽ
明示的なチェックを怠りランタイムエラーに頼るこの糞習慣がある限りぬるぽは決して無くならない
0326デフォルトの名無しさん
垢版 |
2017/06/29(木) 14:39:25.51ID:JUVsJKjr
そもそもテストを書けばぬるぽの9割は生まれる前から死ぬ
しかしそれでもテストをしないできないすり抜けるからこそ静的言語コード本体に「テスト機能」をつけたのだよ
人間とは間違うものなのだ
0327デフォルトの名無しさん
垢版 |
2017/06/29(木) 15:15:09.10ID:Xwk4Fgx6
Javaのライブラリにおいて引数に配列上限値が渡されそれが不正値であるときに発生する例外は何か? →たいていあれいいんでっくすあうとばうんど
Javaのライブラリにおいて配列の要素値がマイナス値でそれが不正値であるときに発生するエラーは何か? →たいていあれいいんでっくすあうとばうんど
配列操作を安全に操作できないKotlinはJavaと同じレベルで糞だな

ヌルポだけがバグの原因だと思ってるアホは置いといて、やっぱテストフレームワークを充実させたJUnitは偉大だわ
0329デフォルトの名無しさん
垢版 |
2017/06/29(木) 19:47:56.73ID:zX+YoTjc
>>327
問題の発生頻度が段違いだろ。

型システムを採用しているにもかかわらず、型無しのヌルポを排除できないjavaはとても古臭い。
0333デフォルトの名無しさん
垢版 |
2017/06/30(金) 00:28:01.26ID:56/qVjC+
>>331
情熱、自己顕示、小遣い稼ぎ、まあ理由はなんでもいいんだけど自分でちょろっと記事でも書いてみようとするとよくわかる
・Java入門
・Kotlin詳説
・よくわかるIntelliJ
・10日で学ぶAndroidプログラミング
あたりをごっちゃまぜにしたものが必要になる
ぶっちゃけとてもめんどくさい
0334デフォルトの名無しさん
垢版 |
2017/06/30(金) 01:58:55.10ID:q+HYO1HC
チュートリアルならKotlin Koansやるのが一番じゃない?
Webでも手軽に出来るしIDEAにも専用のプラグインがある
0335デフォルトの名無しさん
垢版 |
2017/06/30(金) 10:50:35.57ID:TsXJhClE
あれいいんでっくすあうとばうんどは、0除算並みの恥ずかしいミス。
nullpoとは次元が違うわw
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の代わりにはならないだろう
■ このスレッドは過去ログ倉庫に格納されています

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