Kotlin 6

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2019/06/22(土) 15:59:57.23ID:zj+KJbMh
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう

※前スレ
Kotlin 5
https://mevius.5ch.net/test/read.cgi/tech/1544268581/
2デフォルトの名無しさん
垢版 |
2019/06/22(土) 16:00:16.55ID:zj+KJbMh
公式サイト
https://kotlinlang.org/
公式ブログ
https://blog.jetbrains.com/kotlin
コードを貼れる所
http://rextester.com/l/kotlin_online_compiler
オンラインコンパイラ
https://ideone.com/

Google、KotlinをAndroidアプリ開発言語に選定
http://jp.techcrunch.com/2017/05/18/20170517google-makes-kotlin-a-first-class-language-for-writing-android-apps/
Library support for Kotlin coroutines
https://github.com/Kotlin/kotlinx.coroutines
2019/06/22(土) 18:18:20.38ID:nhXKdHnn
2019/06/22(土) 22:15:29.17ID:StrowHaL
2019/06/22(土) 22:39:37.80ID:YCeHpUb8
マジンガー乙
6デフォルトの名無しさん
垢版 |
2019/06/23(日) 13:14:47.73ID:comcN3CJ
5uzuki 1chiro
2019/06/23(日) 19:33:46.30ID:qNPyGYcq
仕事で使う android アプリを作ろうと思って
とりあえずは「はざめての android プログラミング 第4版」
を買ってきました。まずはこれ読んで頑張ってみます。
開発環境のメモリが 8GBしかないのですが、
さすがにメモリ食いますね。
2019/06/23(日) 19:40:56.30ID:YFm/g+mx
>>7
>「はざめての android プログラミング 第4版」
内容を的確に表したすばらしい表現だと思う
2019/06/23(日) 20:07:44.10ID:v4StSsOA
>>7
8あればまあ出来ないことはないよ
10デフォルトの名無しさん
垢版 |
2019/06/24(月) 12:51:45.23ID:6xXOOyfa
はざめまして
2019/06/24(月) 13:27:47.09ID:J3Qu7kVd
Kotlin 1.3.40 released
https://blog.jetbrains.com/kotlin/2019/06/kotlin-1-3-40-released/

Kotlin/Nativeのメモリマネージャ周りの改良により
パフォーマンスが2倍程度向上したそうだ
2019/06/24(月) 13:40:20.01ID:VkFnTpt9
そろそろ言語機能はいいからライブラリ充実させてほしいわ
2019/06/24(月) 13:48:55.93ID:+zAjkeEW
昇龍拳乙
2019/06/24(月) 14:39:50.90ID:0lCQd4VD
僕のこともはざめて下さい。
2019/06/24(月) 15:07:10.70ID:J3Qu7kVd
Kotlinコンパイラのセルフホスティングを完成してほしい
2019/06/24(月) 19:44:02.95ID:q3/XOw+j
Exposed早くstableを出して欲しい
2019/06/25(火) 19:03:50.68ID:4m9XtVgK
>>16
roadmapを見る限り、やるべきことが山積みで先は長そうだ。
2019/06/25(火) 19:20:17.26ID:cYt8ae0z
現状でStableにされてもちょっと困る
2019/06/25(火) 21:26:27.71ID:uuBaeFE0
まぁ出して欲しいとか言いつつまだ出せる状況じゃないのは分かる

だからこれは5000兆円欲しいみたいな類いの願い
20デフォルトの名無しさん
垢版 |
2019/06/26(水) 00:47:11.97ID:f7jPAOIX
>>11
こんなのが出る。

$ kotlinc
exception: java.lang.NoClassDefFoundError: org/jline/reader/LineReaderBuilder
(以下略)

これだな。
https://youtrack.jetbrains.com/issue/KT-32085
2019/06/26(水) 20:56:59.66ID:eE9WxuCh
>>19
5000兆円あればStable版も夢ではない気がする。
Ktor, KotlinどころかJVMの仕様から作り直しても余りそう。
2019/06/27(木) 00:42:30.65ID:j4md1KM4
そんな額をバラ撒いたら世界経済大混乱やで
2019/06/27(木) 06:03:02.78ID:ynp0Kz4J
人生100年として、1秒間に約158万円使える額だ。
2019/06/27(木) 06:11:57.43ID:0XEDGOcC
5000兆円あったらさすがにエンジニアやめて田舎の山奥で陶芸家にでもなるわ
25デフォルトの名無しさん
垢版 |
2019/06/27(木) 11:40:01.19ID:te5kXF0f
株に手をだしたら簡単に倍増
26デフォルトの名無しさん
垢版 |
2019/06/27(木) 11:53:54.54ID:kqKyS1Lp
ももクロは5人時代が1番バランス良かったよな
2019/06/27(木) 11:54:24.64ID:kqKyS1Lp
誤爆った、すまん
2019/06/27(木) 11:58:24.86ID:7eOMsTCf
俺はことりん推し
29デフォルトの名無しさん
垢版 |
2019/06/27(木) 12:00:13.73ID:poT+X0ln
柏さんかわいい
有安も良かった
2019/06/27(木) 12:09:52.75ID:kqKyS1Lp
>>29
誤爆ついでに乗ると俺も有安推しだったから今はソロの方応援してる
31デフォルトの名無しさん
垢版 |
2019/06/27(木) 16:15:04.17ID:tw9eT+4X
>>24
そして自ら田畑を耕し自給自足して金を一切使わない。
2019/06/27(木) 16:36:43.10ID:meAi0mnS
>>31
いや、5000兆円の札束を窯焼きの燃料にする
2019/06/27(木) 16:41:16.67ID:i0IpkKVP
>>32
逮捕
2019/06/27(木) 17:55:34.00ID:hnYWi9MG
>>33
お札(日本銀行券)は破損しても逮捕されないよ。
逮捕されるのはお金(硬貨)の方だ。
35デフォルトの名無しさん
垢版 |
2019/06/27(木) 19:51:19.78ID:LYdb2c+f
>>34
貨幣損傷等取締法
っすね。
2019/06/27(木) 21:18:34.17ID:ynp0Kz4J
5000兆円を1万円札にしたら50万トン
毎日、1トン燃やして1369年
どんだけの量なんじゃw
37デフォルトの名無しさん
垢版 |
2019/06/27(木) 21:26:26.15ID:tw9eT+4X
$100札の方が少しコンパクトではないかな。
2019/06/27(木) 21:35:35.32ID:ynp0Kz4J
小切手なら1gだ
39デフォルトの名無しさん
垢版 |
2019/06/28(金) 09:59:38.37ID:0OgYllET
おれのビットコインなら0gだかそろそろ値が落ちそうだ
40デフォルトの名無しさん
垢版 |
2019/06/28(金) 15:55:58.93ID:NZvm4G9K
お札を数珠繋ぎにして裸で首輪ってのが今のトレンドらしいが

千円でやるなんてみみっちい
壱万円でやれ
2019/06/28(金) 16:40:01.94ID:je8oM0Vb
5000兆円だと100万円の札束を数珠繋にして地球と月とを往復できる長さ。
どんだけー
2019/06/28(金) 16:56:35.47ID:tIF72Nrn
5000兆円手に入ったらこのスレの住人に1兆円ずつ分配するわ
43デフォルトの名無しさん
垢版 |
2019/06/28(金) 21:17:21.86ID:ASw3jrNx
まず金にものを言わせてロビー活動をして日本政府に1000兆円札を作らせる。

するとたったの5枚に。
2019/06/29(土) 08:25:20.62ID:1As7AYKs
5000兆円を預金できる銀行はあるのだろうか?
桁数がオーバーフローしそう
金利0.001%でも膨大な額になる
2019/06/29(土) 09:56:10.72ID:EblSXbtQ
例え話で出したつもりが5000兆円の話になってて草
46デフォルトの名無しさん
垢版 |
2019/06/29(土) 18:06:44.77ID:k/WM/TXw
>>44
スイス銀行なら大丈夫な感じするな。
無理なら複数の銀行に分散したり自分で銀行作ったりするしかないかな。
2019/06/29(土) 18:40:58.45ID:s82QtMXw
自分で銀行作るのが最良だな
100兆円くらい使えば最高の施設と最高の人材を用意できるだろう
2019/06/29(土) 21:46:29.22ID:m31Xlcbd
>>40
> お札を数珠繋ぎにして裸で首輪ってのが今のトレンドらしいが
kwsk
2019/06/30(日) 09:04:10.29ID:M3gok3ot
>>48
闇営業のスリムクラブだろ
50デフォルトの名無しさん
垢版 |
2019/07/02(火) 10:28:09.14ID:1e1Toq0F
専業主婦27歳結婚5年目の実態
1. テレビ、家事、買い物
2. 優柔不断、決定に時間がかかる
3. 映画、カラオケ
4. 細身、目鼻立ちハッキリ
5. 経験一人
6. 胸のサイズ(I), 毎日でもヤリタイ
経験人数は夫ただ1人 27歳Icup巨乳妻。もっとSEXがしてみたくてAVデビュー!! 松浦理央 MEYD-230
冒頭インタビューまとめ
51デフォルトの名無しさん
垢版 |
2019/07/02(火) 12:23:39.55ID:duTOXDdL
そういやアクセス集中でサーバが重くて会員登録中々できないと今話題のファミペイアプリはアプリについて出すと先頭に Kotlin と出て来たよ。

https://i.imgur.com/0dlMYaV.jpg
2019/07/02(火) 12:55:39.24ID:O9CuNUNk
今更Androidアプリをjavaで書く奴なんていないだろ
2019/07/02(火) 13:34:21.60ID:uMGeffjZ
ファミペイは今日、テレビでやってた

公共料金なども支払えるから、ポイントが莫大!
54デフォルトの名無しさん
垢版 |
2019/07/02(火) 14:11:52.81ID:duTOXDdL
ところが今はチャージがファミマのレジでの現金チャージかファミマTカードのクレジットカードでしかできない。
他のカード使えないので持ってない人にはあまりメリットが感じられない。
わざわざ現金チャージするぐらいなら他のなんとかペイを使っちゃうんじゃないかな。普通は。
5553
垢版 |
2019/07/02(火) 15:41:07.45ID:uMGeffjZ
7月中にチャージすれば、還元率は現金チャージで10%(上限2,000円)、
ファミマTカード(クレジットカード)のチャージで15%(上限3,000円)です

上限額あり

普段は、200円で、1円のポイントだって。
0.5%
2019/07/02(火) 19:07:40.85ID:na8JfDaU
>>51
2019年の新規開発ならそらそうだろとしか
2019/07/02(火) 21:41:56.46ID:RcD3n35w
この手のものの開発は1.5年はかかりそうだが・・・
2019/07/03(水) 07:26:46.26ID:ta2V4Cxk
>>53
15%と聞いて飛びつきそうになったが、上限3,000円ということは450円分。
500ポイントプレゼントにすら劣るわけで、一瞬騙されそうになって自己嫌悪。
59デフォルトの名無しさん
垢版 |
2019/07/03(水) 09:44:57.10ID:0rGzsSa9
いやーしかし、この頃なんとかペイが増えて俺のスマホも関連アプリだらけになったよ。
2019/07/03(水) 10:51:07.22ID:ShyVzPo0
>>57
PayPayは全部半年で作ったらしい
61デフォルトの名無しさん
垢版 |
2019/07/04(木) 14:17:38.28ID:9AcphcSS
Androidのアプリを作りたいと思っている一般人ですが、現状Kotlinが最適解なんですかね?
2019/07/04(木) 14:37:42.05ID:iqQZWFIm
>>61
Kotlinは言語としては超複雑な部類で初心者向けの情報も少ないから初学者にはお勧めできない
まずはJavaの入門書を一冊終えよう
2019/07/04(木) 15:16:57.10ID:yMj25kGT
今から新規ならKotlin一択
2019/07/04(木) 16:08:20.82ID:E4xID2Gu
Kotlinは割とプロ仕様、ただ動かすだけならすっきりしていて良い言語だと思う
2019/07/04(木) 16:17:13.65ID:DbsxIi8I
最初から kotlin やるならどうしたらいいですか
2019/07/04(木) 16:33:45.66ID:UCCd2h4o
黙って書けばいいと思う
67デフォルトの名無しさん
垢版 |
2019/07/04(木) 18:43:55.06ID:5l/F9O0W
>>65
普通に入門書読めば?
またはネットで検索しまくって調べる。
2019/07/04(木) 19:29:00.65ID:dJZvsykV
Javaはオワコン
もう仕事ねえよ
2019/07/04(木) 21:59:27.67ID:56+8RSit
>>68
お前の使い道が無くて干されただけじゃね?
2019/07/04(木) 22:04:57.11ID:IenyIWZo
まだある。特に歴史のあるサービスだと新規部分はKotlinでも既存Javaコードはそうそうなくならない。
2019/07/04(木) 22:27:54.99ID:GcCVF+VU
ほんとに新言語はやっとんのか?
72デフォルトの名無しさん
垢版 |
2019/07/04(木) 22:29:31.84ID:m3YKpmd7
>>65
速習 Kotlin

俺、Paperwhiteにdownloadしたけど、まだ最初読んだだけ。
固定レイアウトではなくflow layoutなのもGood.
2019/07/04(木) 22:54:03.77ID:39oIY+N9
>>70
Kotlinコンパイラ自体がその状態だから困るw
2019/07/05(金) 00:04:11.88ID:EmUv49/Z
>>72
電子しかないの?
75デフォルトの名無しさん
垢版 |
2019/07/05(金) 01:45:20.92ID:kPtygQUQ
1.3.41 にしたら >>20 の症状は出なくなった。
https://github.com/JetBrains/kotlin/releases
76デフォルトの名無しさん
垢版 |
2019/07/05(金) 13:32:47.35ID:Faw4Vm9D
7payがkotlinだったら嗤う
2019/07/05(金) 14:22:11.70ID:RtG+ujnh
struts1らしいが
2019/07/05(金) 17:07:56.46ID:C73zsAIZ
javaだろ。データが魔改造したstrutsらしいし。
2019/07/05(金) 17:10:13.92ID:C73zsAIZ
というかそもそもあれは仕様が頭おかしいだけで実装言語は関係ないだろww
80デフォルトの名無しさん
垢版 |
2019/07/05(金) 18:56:51.67ID:058dVN+5
Kotlinさえ使っていれば・・・

なんてことはない。
2019/07/05(金) 19:12:47.06ID:Mrl/Ogam
エルビス演算子のあとってrunとletどれがいいんですか
2019/07/05(金) 20:11:35.88ID:Xw257OmR
もしかしてデータ担当の大手企業って全部魔改造struts1の可能性ないですか
2019/07/05(金) 20:53:02.89ID:GPWuBIl5
マジであると思う
2019/07/05(金) 21:37:52.84ID:D+1Cb9dR
>>81
let
2019/07/05(金) 22:39:44.51ID:toYPJIPr
strutsってまだ生存してたのかよ…
2019/07/05(金) 22:58:10.78ID:GPWuBIl5
もう死んでるけどNTTデータとかいうネクロマンサーが独自パッチを当てて使い続けてるそうだ
2019/07/05(金) 23:02:57.39ID:RQ1RkCug
なんでletがいんすか
2019/07/05(金) 23:18:13.57ID:RqC4v1rZ
正直withの存在価値がわからない
2019/07/05(金) 23:19:40.46ID:ooggE2Gp
>>81
もしかしてエルヴィス演算子?:じゃなくてSafe Calls ?.のこと?
>>87
別にラムダ式の中でthisが使いたいならrunでいいんじゃないかと。
2019/07/06(土) 01:00:18.43ID:7sFSWmXv
run/apply を選択する時は let/also における it を省略したい時
省略した際にプロパティと同じ名前のローカル変数・引数があると後者が優先されるので注意な
2019/07/06(土) 05:40:50.58ID:yJlOMfg/
>>87
凡ミスのリスクが上がるからDSLの文脈以外では
thisを差し替えるラムダはおすすめ出来ない

別言語での例として、JavaScriptのアロー関数式もfunction式と異なり
thisを差し替えないことが利点の一つとなっている
2019/07/06(土) 10:15:49.97ID:1dJxNgfF
>>90
applyの方が単語の意味的にコードの意図が明確になる気がするから好きなんだけど、そのローカル変数と名前被り問題がネックだわな。
2019/07/06(土) 10:42:53.28ID:PMIwOM+c
だったらrunとかalsoとか文法から消せばいいのに
混在して統一感取れなくてバグの原因にもなるからコーディング規約を決めないといけなくなるし
これは一つのKotlinが糞な点の一つだなあ一つの
2019/07/06(土) 10:45:23.31ID:PMIwOM+c
alsoじゃなくてapplyか
この辺すぐ分からなくなるのも糞
2019/07/06(土) 10:55:51.02ID:yJlOMfg/
T.run, with, applyは実際消したほうがいい
let, alsoは要る

レシーバ無しのrunは上記と違いローカルスコープ用なので要る(Swiftでのdo)
2019/07/06(土) 11:05:16.69ID:NRY4HgVe
ちょっとしたシンタックスシュガーのせいでバグりやすい仕組みを作ったので、今度は曖昧さを無くすために明示的な記述を強制するターンだぞ
2019/07/06(土) 11:26:43.90ID:z2fejyiy
全部letでいい
2019/07/06(土) 12:03:55.73ID:7sFSWmXv
apply はインスタンス化した後にそれに対する設定が書けるので便利
後、ビルダーパターンを独自スコープで書けるのも

with, run はほぼ使わないな…
2019/07/06(土) 12:17:58.82ID:XHGsMteC
それもalsoでやったらいいやん
2019/07/06(土) 23:00:37.81ID:QJqGW6Xc
>>95
レシーバ無しのrun{ ... }は{ ... }()でも書けるからやはりいらないのでは。
>>94
自分はスコープ関数早見表をブックマークしてる。
>>96
Effective Kotlinが出版されたら「itやthisよりも明示的な引数名を使う」が多分入ると思う。
2019/07/06(土) 23:58:21.85ID:yJlOMfg/
>>100
↓のコードの run{ ... } を { ... }() に置き換えてビルドすれば違いが分かるはず
https://paiza.io/projects/TL1UeckyJ8oSVbRwNo9t_Q?language=kotlin

これらはインラインかどうかとトレイリングラムダの性質による
2019/07/07(日) 09:51:44.20ID:b1ax5+md
そこらへんは実装時にちゃんと統制取れずグダグダと追加しちゃった感じあるよな
まじでスコープ関数こんなに何種類もいらんかったわ
103デフォルトの名無しさん
垢版 |
2019/07/07(日) 15:50:19.67ID:XjejoYnQ
でも言語そのものではなく言語仕様に則って誰でも作れてしまう拡張関数だからな。標準的なライブラリに含めなくても何れ誰かが作っちゃうのではないかな。(それなら使用頻度が少ないから良いのかも知れないが)。
2019/07/07(日) 16:03:55.29ID:sHOW+yiF
その両者は全然違う次元の話だろう
2019/07/07(日) 17:27:29.95ID:WZfWd3Mj
向いてないから死ね
2019/07/07(日) 21:07:53.35ID:+1wAiQ8k
>>105
「Xamarinほどの〜」は止めてそれを繰り返すことにしたの?
2019/07/07(日) 21:13:33.84ID:Gx3EsZeZ
Xamarinの案件でよほど嫌な目見たのかな?
2019/07/08(月) 12:40:16.25ID:tyVKqSJs
すまん、ここxamarinスレだったな
2019/07/08(月) 17:10:08.62ID:hzlBIGWN
確かに拡張関数が言語標準じゃなくて社内の誰かが勝手に作ってプルリク出してきてたらリジェクトするな、たぶん
紛らわしくてバグの原因になるからもうちょっと種類を減らせって言うわ
2019/07/08(月) 19:49:03.27ID:hKluWyE4
>>109
.also()が出来た理由が、ネストしたラムダ式の中で、itとthis両方を同時に使って引数名を
省略できるようににするためとかいう話があった気がするから、言語の方針として諦めざるを得ない...?
2019/07/08(月) 21:32:26.80ID:Z1fCyrsR
>>110
あー、そういうことなのか
言われればわかるけど、なんというか、その場しのぎ感が否めないな
112デフォルトの名無しさん
垢版 |
2019/07/09(火) 09:57:55.96ID:gdYXIa6p
あらそう
2019/07/10(水) 01:43:17.34ID:TAagG0ML
Androidだけじゃなくて、サーバー側も勉強しようと思って
Goの勉強してるんだけどこれってサービスとしてリリースしようと思ったら
どこの環境で公開したらいいの
やっぱawsですかね従量課金怖いんですが
2019/07/10(水) 15:05:24.11ID:bnXQMu19
何でここに書いたんや
2019/07/10(水) 17:26:54.04ID:ZnoB4bea
このスレで聞くならサーバーサイドもKotlinで書けよ。
Spring bootはもうKotlinでなんの問題もないぞ。
2019/07/10(水) 20:36:25.12ID:bnXQMu19
時期早々なんで試してないんだけど、aws lambda にkotlin native乗せて遊んでみてほしい。
api gateway/dynamo db繋げればandroidからの呼び出しにちょうどいい課金形態やろうし。
117デフォルトの名無しさん
垢版 |
2019/07/10(水) 20:54:12.25ID:lDiVjXP/
そうだ。このスレにおいては何もかも Kotlin にするのが正しい。
2019/07/10(水) 21:13:08.84ID:8qmSuihX
やあ、ことりんだよー
https://www.city.zama.kanagawa.jp/www/zamarin/images/img_zamarin.png
2019/07/10(水) 21:16:23.36ID:mLQ0O0Gx
URLがザマリンじゃねーか
Xamarinスレへ行け
2019/07/10(水) 22:05:01.82ID:k2InN2GI
Xamarin程の糞はない
2019/07/10(水) 23:17:52.20ID:Jpp4eP2F
kotlin 1.0 + spring boot 1.4 ぐらいの時から何の問題も無かったぞ
2019/07/11(木) 01:57:30.05ID:9psEid9N
そう言えばkotlinにはマスコットキャラいないの?
2019/07/11(木) 05:31:17.37ID:QHszqsWX
124デフォルトの名無しさん
垢版 |
2019/07/11(木) 09:33:25.22ID:42U1oSKO
https://en.m.wikipedia.org/wiki/Kildin-class_destroyer#/media/File%3A39_Kaldin_Class_Destroyer_Jan_1970.jpg
2019/07/12(金) 05:58:24.36ID:oNRVVyfS
>>124
なぜにKotlinの後継にしたし。
"Kotlin Class" Destroyer だけど、どうしても Kotlin "Class Destroyer" に見えてしまう。
デストラクタ的な何か。
2019/07/17(水) 14:41:47.91ID:ezRkQzKm
ことりん覚えるのって公式サイト見るのが一番ええんか?
2019/07/17(水) 16:21:27.33ID:rdoRhaHG
公式サイト見ながらIntelliJで実際に書いてみるのが一番かな
2019/07/17(水) 18:33:43.43ID:iI+O15gp
Xamarin書くのもいいかと思う
2019/07/17(水) 20:21:09.06ID:Z9VRk/N1
Xamarin程の糞はない
少なくともflutterよりは優先度が低い
2019/07/17(水) 21:51:57.28ID:dwyb6ngd
>>128
冗談だよな
2019/07/17(水) 22:03:38.29ID:AffUGxbZ
try kotlin で IntelliJ 無しでも勉強できんじゃね
2019/07/18(木) 14:20:44.63ID:6LRPswFk
>>130
このスレに昔からあるネタだから真面目に反応しなくていいぞ
133デフォルトの名無しさん
垢版 |
2019/07/18(木) 16:02:15.41ID:3t7lxD2f
🔹Part 1傾向、正解のパターン(%)
1. 現在進行形 65
The trains are pulling into the Park Station.

2. 受動態 25
The vehicles are parked in front of the townhouses.

3. その他 10
There is/are
is/are being Vpp
has/have been Vpp

The cars are being parked alone the road.

https://www.youtube.com/watch?v=tTsJbMe_Gx0
134デフォルトの名無しさん
垢版 |
2019/07/18(木) 16:08:36.41ID:3t7lxD2f
>>133
どうやら、is/are being Vppは動作を表すみたいだ。
e.g.
The potted plant is being placed under the picture.
135デフォルトの名無しさん
垢版 |
2019/07/18(木) 19:27:38.33ID:q9HPUerJ
i have a pen
2019/07/18(木) 20:08:06.63ID:Et7jLWPd
れりぴー
れりぴー
137デフォルトの名無しさん
垢版 |
2019/07/18(木) 21:12:55.10ID:q9HPUerJ
println("你好")
2019/07/24(水) 11:35:26.90ID:KzPZBDfC
そろそろkotlin nativeのコンパイル速くなった?
2019/07/24(水) 11:57:09.32ID:W7c9Mdig
こっとりーん!

はーい!
2019/07/25(木) 12:40:05.87ID:u+b8oMvx
CoroutineとRxはどう使い分けるんだろう。
141デフォルトの名無しさん
垢版 |
2019/07/25(木) 20:32:43.93ID:AjtfUs9C
そういやコルーチンって中でどうやって実現してるの?見た目スレッドとほぼ同じ動きになってるようだけど。
2019/07/25(木) 23:25:45.93ID:ypTjD+aw
suspend fun なら隠し引数がついてる
2019/07/26(金) 08:25:41.88ID:TLvlzBFz
>>141
非suspendからの非同期開始は、JVMなどではスレッドプールへのタスク登録
JavaScriptではPromise(仕組みはsetTimeoutなどでのイベントループへのタスク登録)

suspend内は終わったら呼ばれるコールバック関数でのチェーン

val a = suspendFn1()
val b = suspendFn2(a)
print(b)
 ↓
suspendFn1() { a ->
  suspendFn2(a) { b ->
    print(b)
  }
}
2019/07/26(金) 09:41:46.26ID:OnWiMZ2p
>>140
過渡期
目的によるけど、正直今となってはRxを新しく使う必要はあまりない
ただし例えばスマホでRxSwiftに慣れてるメンバーがAndroidも作るならRxの方が良いとか色々ある
2019/07/26(金) 13:08:22.57ID:G6/7ZqLd
coroutineでfluxできるん
146デフォルトの名無しさん
垢版 |
2019/08/04(日) 01:08:52.85ID:jdb5IUyg
java.beans.XMLEncoder や java.beans.XMLDecoder で XML 読み書きする場合に、書くのは出来ても読む時にクラスないって出て読めない。
うまく行ってる人居る?Java で作るとうまく行っても Kotlin だとダメなんだけど、何が原因なのかわからない。
2019/08/04(日) 07:20:33.29ID:pDN8jIIw
エラーが起きる最小コードを作って
環境/コード/エラーの3つをセットで貼るといいよ
2019/08/04(日) 10:09:16.42ID:MhvpWdMU
>>146
せめてコードとエラーを貼ってくれないと
2019/08/04(日) 10:10:03.30ID:MhvpWdMU
なんとなくだけど、import書き忘れとかの本当にしょうもない理由な気はする
150デフォルトの名無しさん
垢版 |
2019/08/04(日) 13:55:38.93ID:jdb5IUyg
コードね。ちょっと待って。なるべく今日中に貼る。
151デフォルトの名無しさん
垢版 |
2019/08/04(日) 15:34:58.73ID:jdb5IUyg
実行時にうまく行くパターンとダメなパターンがあることがわかった。
(というかむしろ自分でうまく行かないパターンをピンポイントで選んで実行していたような感じorz)

https://paiza.io/projects/6UeOmsYQMaYqbOlaYlvB-w

見ての通り paiza.io ではうまく行く。
その他、IntelliJ IDEA の Kotlin でもうまく行く。
コマンドラインで
kotlinc -d xmltest.jar -include-runtime xmltest.kt
java -jar xmltest.jar
でもうまく行く。

駄目パターンはこれだ。

・ コマンドラインから kotlinc -d xmltest.jar -include-runtime xmltest.kt でコンパイル後に
 kotlin xmltest.jar で実行。

・ コマンドラインから kotlinc xmltest.kt でコンパイル後に kotlin XmltestKt で実行。

すると java.lang.ClassNotFoundException: TestData を皮切りに色々と出てくる。
XMLDecoder#readObject() 実行時にクラスが見つからなっていて、要するに kotlin コマンド
内でセットしている CLASSPATH の問題なんだろうとは思うが、直前に writeObject() で
使っているクラスが直後の readObject() で見つからないという謎の状態だ。
(まあ、kotlin コマンドの中を延々と調べて行けば何れ分かるんだろうけどね・・・)。
2019/08/04(日) 16:49:55.55ID:uhQWO4AM
またkotlinc君か
そんなもの誰も使ってないからバグは多そうだね
2019/08/04(日) 22:48:23.15ID:tAcsZMQ3
向いてないから死ね
2019/08/05(月) 18:53:03.42ID:7pSup/Ha
kotlincってマジで誰が使うんだ
155デフォルトの名無しさん
垢版 |
2019/08/05(月) 20:47:56.43ID:LhsszH09
2019/08/05(月) 21:20:57.04ID:S7Ie+UC+
趣味でやってるならどうでもいいけど業務でそんな無駄なことしてたら引っ叩くわ
2019/08/05(月) 21:31:49.69ID:hoP4yagq
ゆうこりん
2019/08/05(月) 21:56:45.94ID:mbmWaX82
ゆうこりん何でもできるな
2019/08/06(火) 07:24:28.32ID:VqXkhbHq
こりん星に帰れ
2019/08/06(火) 07:43:34.36ID:B8lNLW/7
Kotlinはとっても
2019/08/06(火) 08:00:07.10ID:GxcN2t8z
宇多田好き!
2019/08/06(火) 09:04:28.58ID:QhfMxuAM
こりん星はありません
2019/08/06(火) 09:40:50.05ID:NEGlosyW
爆発しました
2019/08/10(土) 14:39:45.84ID:aHptj8zD
Set<K>とSet<V>からMap<K, V>を作りたいんだけどいい方法ある? (両方のSetは同じサイズ)
2019/08/10(土) 14:40:14.44ID:aHptj8zD
>>164
ど、いい方法ある?(両方のSetは同じサイズ)
2019/08/10(土) 14:51:44.46ID:GOby/sRA
>>164
どうやってKとVを対応付けるん?
2019/08/10(土) 14:53:06.48ID:7hwbBJNq
>>165
LinkedHashSetかTreeSetにように順序付けがあるならいいけど
単にSetとして考えるなら順序不定だから2つのSetの関連付けが出来ない

仕様の前提から考え直したほうが良い
一応順序があるなら m = setK.zip(setV).associate{it} で出来る
2019/08/11(日) 21:22:32.39ID:ZXwxD5+u
今コード書いていて疑問に思ったんだけど、String#sliceとString#substringって何が違うの?
169デフォルトの名無しさん
垢版 |
2019/08/11(日) 23:47:08.23ID:oR4Xkpxd
slice?
2019/08/12(月) 05:27:10.62ID:XEveaWQR
>>169
ないと思った? あるんだなこれが。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/slice.html
171デフォルトの名無しさん
垢版 |
2019/08/12(月) 07:04:34.47ID:+GFDKMmL
あー。しかしちょっと違うね。CharSequence と String の違いか。
2019/08/12(月) 09:27:25.92ID:ByCVSLZd
String#slice -> String もあるよ

挙動に差があるようだけど実用上意味があるかは微妙だな
https://ideone.com/lIfuV9

fun ck(nm:String, f:()->String){
try { println("${nm} = ${f()}") }
catch(t:Throwable){ println("${nm} throw ${t}") }
}

fun ck(r:IntRange){
ck("su(${r})"){ "0123456789".substring(r) }
ck("sl(${r})"){ "0123456789".slice(r) }
}

ck(1..3)
ck(3..1)
ck(-2..-4)
ck(1..-1)
ck(-1..1)
ck(8..12)
ck(-4..-2)
2019/08/12(月) 10:26:11.95ID:rOThr/rm
この並存状態と微妙な差はJavaScriptの現状に倣ったんじゃないかな
いずれにしてもそれぞれの意図が明確にドキュメント化されていないみたいなので実装の差を活用する気にはなれないけど
2019/08/12(月) 11:10:03.11ID:5YMnNr49
>>172
どうでもいいけどすごく読みにくいコードを書きそうな人だね
2019/08/12(月) 13:31:44.89ID:ByCVSLZd
>>174
どの辺が読みにくかったんだ?
2019/08/12(月) 16:13:09.70ID:4uT/qIKy
コードが読みにくいというか命名が15年前のセンスだと思う
2019/08/12(月) 16:55:39.77ID:DtCUafYG
jkならまだしもckだからな
2019/08/12(月) 17:12:20.38ID:2MqzCTOL
今の命名の主流はどんな?
2019/08/12(月) 17:32:35.13ID:ByCVSLZd
>>176
書き捨てなのと5chの制限回避で文字数・行数圧縮してるんすよ・・・
2文字以下で現代的(?)なのがあるならすまん
2019/08/12(月) 18:36:52.29ID:zabz7akz
文句あるやつは書けよ。
批判はそれからだ。
2019/08/12(月) 20:42:49.12ID:0G8rhhxx
戦うために武器(コード)を取るのだ
2019/08/12(月) 23:45:35.98ID:XEveaWQR
>>172
ちょっとわかった。ありがとう。
>>173
なんとなくそうかなと思っていたけど、やっぱりJavaScriptとの互換性のためにsliceを導入したのかな。
>>177
中高生...
183デフォルトの名無しさん
垢版 |
2019/08/13(火) 15:31:14.99ID:5AmJrB7O
ckは中高年だろjk...
2019/08/13(火) 17:47:19.54ID:Jow6dsXJ
こういうところもKotlinがとっつきにくいと言われる一因だよな
まあ実際には知らなくても困ることはあまりないんだけど
2019/08/13(火) 19:30:04.03ID:9XoWp9xR
firebase firestoreを使っていて月額固定のflameプランを契約しているんですが、
一日の上限の読み取り回数である25万回を超えても普通に使えてるんですが何なんですかね
2019/08/13(火) 23:01:55.66ID:Jow6dsXJ
サポートに聞いてみたら?
勝手に追加課金されることはないだろうけど、確かめるに越したこたはない
2019/08/13(火) 23:40:10.49ID:9XoWp9xR
てか読み取り回数すぐ増え過ぎじゃないですか
realtimedatabaseより遥かに高い
これからはfirestoreに移行するもんだと思って使ってみてるのに
クエリー使わないならrealtimedatabase使ったほうがいいし
188デフォルトの名無しさん
垢版 |
2019/08/14(水) 20:22:16.10ID:yoJp7Q+u
googleの新しいカモ要員っしょ
開発力あるなら柔軟性のあるGAEとかを直接叩くほうがいいと思う
2019/08/14(水) 21:19:15.88ID:84Oh9mQQ
オフライン機能ついたデータ同期する場合はfirestore楽なんだけど。
それを自前で実装?ご冗談を
2019/08/15(木) 06:03:55.70ID:hzhpdWuA
たぶんfirebaseで何ができるのか良く分かってない人なんだよ
2019/08/15(木) 19:17:22.46ID:HuJciu41
これもしかして25万回超えなかった日の分が
超えた日の分に補填されてるんですかね
2019/08/18(日) 17:49:48.37ID:aIP94dp2
アプリの更新がなかなかすぐにアップされなくなったり
2019/08/28(水) 11:55:43.22ID:M6/hRUv8
Kotlin 1.3.50 released
https://blog.jetbrains.com/kotlin/2019/08/kotlin-1-3-50-released/
2019/08/30(金) 23:44:51.89ID:CKkw9aVy
inline classには期待してる
2019/08/31(土) 07:36:06.91ID:yMMVEs16
なんだそれ
196デフォルトの名無しさん
垢版 |
2019/08/31(土) 15:34:13.20ID:8SnjJh04
初心者向けの本を買ったんだが、この方が簡単ですとか言いながらガラケー時代の画面を作らせるとんでもない本をつかまされた…
197デフォルトの名無しさん
垢版 |
2019/08/31(土) 16:27:15.76ID:E5RG3LAO
>>195
ぐぐると出てくる

>>196
ガラケー?今さら実行可能な環境がないように思うが。
Androidだけどガラホで画面が狭いだけではなく?
2019/08/31(土) 20:14:25.17ID:l+8K//xt
>>196
書籍名晒しておk
2019/08/31(土) 20:50:45.80ID:KfrTh11M
>>197
FF作れないと怒る初心者の方はいまだにいますよ
2019/08/31(土) 21:17:33.98ID:fnsFNUOu
あーそれ系か。
昔(2000年頃)、DirextXで3Dシューティングを作るための勉強本が出たんだけど、
物凄く丁寧で最初は数学の復習が書いてあった。
(高校数学の法線ベクトルの考えたかとか)

で、読んでも意味がわからん勉強ができない俺を馬鹿にしてるのか金返せと
本屋に怒鳴り込んできた20代の子が居たんだよ。

だからかは知らないが、本に載ってるゲームは結構簡単なレベルのものが多くなったなあ。
2019/08/31(土) 23:34:53.19ID:4oABfnfN
コトリンでガラケー作れるの?
202デフォルトの名無しさん
垢版 |
2019/09/01(日) 01:06:54.68ID:sYwYgS29
>>200
尼でもコメントに理解出来ないって書いて評価下げる香具師が多いな
2019/09/01(日) 08:18:34.70ID:4VzRiKqb
>>201
ガラスマなら
2019/09/01(日) 08:20:11.88ID:4VzRiKqb
ガラホだった
2019/09/01(日) 08:38:53.82ID:zZOev42p
まあ、著者や編集者の力不足で教えるの下手くそな本はあるにはあるよ
名プログラマーであるからといって、そのシステムの開発者であるからといって、他人(初学者)に教える文章を書くのがうまいとは限らない
ただ、思ったようなアプリの作り方が載ってないってのはあんまり作者の責任ではないな
206デフォルトの名無しさん
垢版 |
2019/09/01(日) 11:16:53.58ID:kCJZVLuH
造り方が既にそこら中に転がってて後追いで造っても面白くないやろ
創り方は自分で考えろ
2019/09/01(日) 11:51:21.62ID:KATDlG57
>>206
開発は本の方が勉強しやすいね。
2019/09/01(日) 14:35:22.29ID:9BbodNVn
後追いいいじゃないか
先人が1ヶ月悩んだ結果を15分で乗り越えて経験積めるんだぞ
残り29日23時間45分はそれをもとにしたさらに別なことに使えるんだ
梃子の効果すごいだろ(間違い)
2019/09/01(日) 17:45:48.09ID:ugxLNVG7
>>202
香具氏とか15年ぶりぐらいに見た
2019/09/01(日) 17:55:48.27ID:AgLO+mY6
ぬるぽ
2019/09/02(月) 06:40:57.18ID:M41ulF/8
ガッ!
212デフォルトの名無しさん
垢版 |
2019/09/02(月) 12:54:07.77ID:/e661u5A
香具師の木
2019/09/02(月) 16:49:42.23ID:rC6R2Kxv
かぐ・・香具師
2019/09/02(月) 22:15:36.95ID:bAKekKnt
振り返れば香具師がいる
2019/09/03(火) 13:18:29.16ID:uD7mrZbr
パーサーコンビネーターって無いんかな
216デフォルトの名無しさん
垢版 |
2019/09/03(火) 14:26:04.23ID:6Dqkf6EJ
今からプログラミングを学ぶとしたらjavaよりkotlinのほうがいいよね?
217デフォルトの名無しさん
垢版 |
2019/09/03(火) 14:34:14.84ID:fMS/rXUz
まあそうだろうな
2019/09/03(火) 14:39:57.01ID:SNzApyUr
これマジ?
2019/09/03(火) 15:39:56.36ID:Z/DGFcDe
内部DSLで無茶するよりコード生成の方が最終的には小回り効いて好きだな
2019/09/04(水) 19:59:15.19ID:juCQidKM
>>219
DSLは汎用ライブラリのために丁寧に設計する時用かな。
スキルによるだろうけどDSLのライブラリを使いたいとは思うけど、作りたいとは思わななかった。
2019/09/06(金) 18:04:10.08ID:ntx8q56D
もうAndroid Javaの仕事はないぞ
Kotlinがわからないやつに仕事はないぞ
2019/09/06(金) 20:10:18.09ID:+qwVl2yS
Kotlinでマウントするのはさすがに無理筋
こんなもんJavaわかれば誰にでもできる
223デフォルトの名無しさん
垢版 |
2019/09/06(金) 20:29:16.58ID:cFgJ4jGo
JavaができるならいずれはKotlinもできるようになるだろうがすぐにではない。
すぐにできたとしても最初の内は Kotlin らしくない Kotlin の良さを生かし切れていない「セミコロンなし Java」みたいな、何年後かに自分で読み直すと修正したくてしたくてたまらなくなるようなプログラムになるであろう。
2019/09/06(金) 20:56:07.38ID:f+pPgM/V
つーか何を使えるかじゃマウントとれないわ
225デフォルトの名無しさん
垢版 |
2019/09/06(金) 21:01:33.69ID:cFgJ4jGo
実は俺、N88BASIC(86)も使えるんだ(キリッ
2019/09/06(金) 21:48:01.99ID:hgPplejZ
実は俺R3000のアセンブラ使えるんだ…
2019/09/07(土) 00:23:23.27ID:C+Vj3AQn
アセンブラは価値があるかもだな。
どちらかというと何を作れるか、
もっと言うなら何を作ったことがあるかが大事かと。
2019/09/07(土) 07:50:58.59ID:o13lKSsS
Kotlinって結局のところJVM言語のひとつなんじゃない
2019/09/07(土) 08:37:16.28ID:C+iY+EtG
そうだけど、それがなにか
2019/09/07(土) 12:06:44.46ID:beTJlJpp
コットリーン!!!
2019/09/07(土) 13:16:09.14ID:6re/woh0
javaはkotlinに変換できるのに
kotlinはjavaに変換できないのか?
2019/09/07(土) 13:21:40.70ID:C+iY+EtG
する必要がないから
2019/09/07(土) 13:32:09.09ID:Z+q8qP+s
>>231
できると思うよ。
kotlin→jvmコード→逆コンパイル
2019/09/07(土) 14:16:30.85ID:C+iY+EtG
逆コンパイルしたやつってかなり非効率なコードしてそう
2019/09/07(土) 14:20:04.10ID:6re/woh0
あ、すまん、回答ありがと
実際にjavaにしたいわけじゃない
将来的にkotlinだけの巨大なスパゲッティを見たときに正しく読めるかな?と不安になってね
236デフォルトの名無しさん
垢版 |
2019/09/08(日) 14:12:59.11ID:vQDbHeJD
Kotlin使ってもなおスパゲッティになるようならJavaに変換したらもっと凄いスパゲッティになるのではないか?
237デフォルトの名無しさん
垢版 |
2019/09/08(日) 14:21:36.92ID:vQDbHeJD
Javaで書くと冗長な感じになる表現を小さくまとめられる事が多いしKotlinはそういうのも目標にして作られた言語だからな。
だからJava→Kotlin変換をするとだいたいは量が増えて複雑怪奇なソースになると思う。
238デフォルトの名無しさん
垢版 |
2019/09/08(日) 14:22:16.25ID:vQDbHeJD
逆だ。Kotlin→Java変換ね。
2019/09/08(日) 14:42:39.98ID:g2jzsvZp
作るのはまだjavaでいいだろうけどkotlinをネイティブで読めるようにはなりたい
2019/09/08(日) 14:45:06.45ID:laN+P70G
Java読むよりKotlin読む方がすんなり入ってくる
2019/09/08(日) 16:18:39.78ID:g2jzsvZp
>>240
完成品はね
でも製作途中で何処かがおかしいんですとか相談に来られても見れない
2019/09/08(日) 20:13:33.90ID:/L5LYKIY
javaをkotlinに変換すると大体20%ぐらい減る
2019/09/08(日) 20:48:04.68ID:h749KvV3
開発中の任意のタイミングでKotlinの方が分かりやすいと思うけど
244デフォルトの名無しさん
垢版 |
2019/09/09(月) 23:58:48.28ID:66UIYaje
今まで買ったjavaの本、全部kotlinにならないかなぁ…
逆引きのkotlin版ってないの?
2019/09/10(火) 02:20:28.10ID:haS0qyWJ
作ってけれ
2019/09/10(火) 07:03:13.64ID:x/dcDmPS
java見ながらkotlinにして書いてると
つまずいたときにjavaでいいやってなる
変換はなんとなくわかるけど、省略するとこがいまいちわからん
どうやら自分は省略すればいいとこを無理に変換しようとしてるぽい
そしてまたjavaを書く
2019/09/10(火) 07:46:08.16ID:EO8p3gy7
書きやすい方からでいいよ

言語の慣れもあるけどプログラム経験の方が重要
プログラムイディオムや関数型の理解などが進めば
言語の切り替えもスムーズになる
2019/09/10(火) 09:54:29.30ID:hogKSn/2
向いてないから死ね
249デフォルトの名無しさん
垢版 |
2019/09/10(火) 12:42:23.43ID:rIrXed8C
むきむき
250デフォルトの名無しさん
垢版 |
2019/09/11(水) 21:52:55.09ID:+fGXXck4
速習 Kotlin: Javaより簡単!新Android開発言語を今すぐマスター 速習シリーズ Kindle版
山田祥寛 (著)

まあまあ、良かった。Delegate、移譲の部分が消化不良だが、byっていうキーワードでメソッドcallの時にReceiverを取り替えられるって事がわかった。
by Delegate()でa.someMethodっていうメソッド呼び出しをDelegateオブジェクトのsomeMethod呼び出しへと変換できるらしい。
someMethod呼び出しの中でNotificationを行うとかの応用ができる。

lazyとかっていうオブジェクトがよく解らんかった。動かしながら理解しないとだめだな。本を読んだだけではピンと来ない。
251デフォルトの名無しさん
垢版 |
2019/09/11(水) 21:57:51.62ID:+fGXXck4
KotlinはSwiftに似てると思ってたが、言語仕様はSwiftに比べてコンパクトだった。

ただ、Kotlin関連用語がかなり違和感。vs Swift
constructer - initializer
lambda - closure
object - instance
val, var - let, var
fun - func
interface ISome<T: U> - protocol ISome { associatedtype = T where T: U}
252デフォルトの名無しさん
垢版 |
2019/09/11(水) 21:59:48.92ID:+fGXXck4
>>251
Genericsの汎用型、型パラメータの書き方はKotlinの方が好みだな。
e.g.
interface ISome<T: U> {…}
253デフォルトの名無しさん
垢版 |
2019/09/11(水) 22:04:19.76ID:+fGXXck4
他言語プログラマのためのKotlin基礎 Kindle版
Independent Laboratory (著)
その他()の形式およびエディションを表示する
Kindle版
¥0
Kindle Unlimited では、このタイトルや100万冊以上の本をお
254デフォルトの名無しさん
垢版 |
2019/09/11(水) 22:05:44.19ID:+fGXXck4
>>253
次はこれ読んで見る。
2019/09/11(水) 22:18:33.59ID:4pyg+RzE
山田しょうかんってひとは良い印象がある
2019/09/12(木) 07:23:50.51ID:W3DZId8k
漏れのフレームワーク本の著者の評価では、
掌田津耶乃がトップで、山田祥寛は2番目

山田は100名まで、1人4万円の講座もやってた
2019/09/12(木) 08:06:27.87ID:lapELpAL
英語の本でいいのある?
逆引き的な辞書的なサンプル集的なやつ
2019/09/12(木) 08:34:44.36ID:Cr8f/Gnu
スレチ
2019/09/12(木) 08:36:35.68ID:DXT4s2Ch
コピペグラマはおとなしくJavaにしとき
2019/09/12(木) 08:38:14.19ID:lapELpAL
あ、kotlinの英語の本です
技術英語なんて日本語の本と書いてあることはだいたい同じだから
2019/09/12(木) 09:14:06.31ID:o/qdyccE
>>256
漏れなんて言い方久しぶりに見たよ(藁)
262デフォルトの名無しさん
垢版 |
2019/09/12(木) 09:27:48.98ID:sCqf+kbI
>>256
>掌田
この人の本、めったに当たりが無い。
Rubyの本は良かったな。特に、CGIの部分。Rails出現以前の本だった。
この本でhttpdがCGIをどう扱ってるか理解した。
httpのputリクエストのrequest headerをRubyアプリは、stdinから取り込むと知ったのだ。

それまでコマンドライン引数でrequest headerを受け取るのか?
はたまた、環境変数で受け取るのか不思議だったのだ。
263デフォルトの名無しさん
垢版 |
2019/09/12(木) 09:37:40.30ID:mRFzyQxg
more
264デフォルトの名無しさん
垢版 |
2019/09/12(木) 09:39:32.11ID:mRFzyQxg
>>262
言語は関係ない。とにかく標準入力から読めば良いのだ。
2019/09/12(木) 09:54:54.56ID:xaz6/6gJ
つのだは糞
ネットで調べればすぐわかるような入門的なことしか書かない
266デフォルトの名無しさん
垢版 |
2019/09/12(木) 20:03:11.63ID:sCqf+kbI
>>253
この本、Win10環境で、Kotlinソースをコンパイルする方法が、巻末にあって良い!おまけにsource code download serviceもいい感じ。

Macbook Proをお布施代として払うのはこれからは遠慮したいし。
もう一冊の本、>他言語プログラマのためのKotlin基礎 Kindle版
こいつは、InteliJ IDEAだかなんだかのinstall方法からの説明で、思いやられる。

おれは、Vim + quickrun.vimで動かしたいのだ。おまけに、書籍掲載のソースのdownloadサービスも無し。
267デフォルトの名無しさん
垢版 |
2019/09/12(木) 20:25:58.64ID:sCqf+kbI
>>266
他言語…本は、すぐ読めた。山田本には無いpackage文の説明があっていい感じ。
package sample.pkg
class Person(val name: String) {…}
って書ける様になるらしい。

それから、
kotlin-prior-learning-book.pdf
へのlinkがあって、これもこれから読んでみる。
268デフォルトの名無しさん
垢版 |
2019/09/12(木) 20:36:51.69ID:sCqf+kbI
>>267
package文でクラス、メソッドをexportして
import文でクラス、メソッドをimportする訳だ。
import sample.pkg.Person
とか
import sample.pkg.*
とか、
import sample.pkg.launch as launch
でlaunch関数の呼び出しをsample.pkg.launchではなくlaunch一発記述OK.
269デフォルトの名無しさん
垢版 |
2019/09/19(木) 21:23:28.48ID:Q9xACwLf
var f = syori()
while (f != null){
 syori2()
 f = syori()
}

これ↑かっこいい書き方ない?
2019/09/19(木) 21:36:59.32ID:hGl0DjU/
while (syori() != null){
 syori2()
}
271デフォルトの名無しさん
垢版 |
2019/09/19(木) 22:16:26.03ID:Q9xACwLf
>>270
それそれ
さん
2019/09/19(木) 23:02:26.25ID:lHaCaaPO
generateSequence(::syori).forEach { syori2() }
2019/09/21(土) 14:27:28.60ID:+0XYo8lQ
作ればわかる!のkotlin対応版いいね
androidをkotlinで始める人で、とにかくサンプルを書き写したい!って人にお勧め
書け!ってとこを色分けで指示してあるからどこに書けばいいのかも分かりやすい
3.5環境のkotlinXのチェック入った状態でウクレレ前までやったけどimportを自分で書こうとしなければ変なエラーもなく普通に実行できた
中身が分かったか?と言われたらこれからだw
頑張る
274デフォルトの名無しさん
垢版 |
2019/09/21(土) 14:55:08.61ID:Ydb2EKuB
>>273
>作ればわかる

作ればわかる! Androidプログラミング Kotlin対応 10の実践サンプルで学ぶAndroidアプリ開発入門 単行本(ソフトカバー) – 2019/6/19
2019/09/21(土) 15:14:04.38ID:+0XYo8lQ
>>274
それ
今はAndroidアプリ開発の教科書 kotlin対応 基礎&応用力をしっかり育成 ってのやってる
実は最初にこっち買った
今なら読める
276デフォルトの名無しさん
垢版 |
2019/09/22(日) 00:45:59.55ID:8WvCpGjB
val adapter = mSpinner.adapter //Spinner
for (i in 0 until adapter.count) {
 if (adapter.getItem(i) == ”ここ”) {
  mSpinner.setSelection(i)
  break
 }
}
これ↑もっとかっこよく書ける?
277デフォルトの名無しさん
垢版 |
2019/09/22(日) 07:05:45.40ID:T60Ukkg+
>>275
>Androidアプリ開発の教科書

基礎&応用力をしっかり育成!Androidアプリ開発の教科書 Kotlin対応 なんちゃって開発者にならないための実践ハンズオン

これ良さそうですね。消費増税前に買っちゃおうかな。
2019/09/22(日) 07:57:26.70ID:Lf1jgTon
>>277
今年から趣味で休日プログラマー始めた初心者なんだけどSQLサンプルあるから最初にこれ買った
Android studioに慣れてなかったから初心者にはちょっと難しいかな
だから少し慣れた人にお勧め
こういうサンプル書いてある本は実際に動いて満足感得られるし紙上で矢印とかペン入れできるし理解を得るには良いですよね
サンプル載ってる本は他にもjavaも含めて5冊くらい買っちゃった
2019/09/22(日) 08:50:40.04ID:/w4tjdNw
この一連の自己レス臭い本の宣伝は何なんだ
こんな所でやっても効果無いだろ・・・
280デフォルトの名無しさん
垢版 |
2019/09/22(日) 09:31:14.71ID:T60Ukkg+
>>278
解る。

Visual Studio本、多量に買った。▶仕事でGUIアプリ作った。

Xcode本、10冊位買った。▶仕事でアプリ作ったが、職場で採用。

Android Studio本、1冊買った。Yahoo黒帯とか言うやつ▶趣味で始めたが、時間が取れない。◀イマココ
281デフォルトの名無しさん
垢版 |
2019/09/22(日) 10:20:57.94ID:Hc6O2uDq
>>276
searchのところは、ArrayAdapter#getPosition(T)がある。
2019/09/23(月) 13:11:46.19ID:g+evEEch
javaの逆引きだいたいkotlinに直した
2019/09/25(水) 09:07:52.84ID:pkvL+Jrl
>>273だけど
もう一度最初からやってみたらビジネスカードのところで躓いた
どうやらandroidXになる前に作ってたぽい
PreperenceManagerがXになって廃止になったとかなんとか、
一応他の方法で回避できたけど全くの初心者はここで立ち止まると思う
284デフォルトの名無しさん
垢版 |
2019/09/25(水) 09:28:46.36ID:pkvL+Jrl
>>283
あらら、ダメだ
血圧アプリのRealmの書き方もandroidXに対応してないな
ん〜悩む
2019/09/25(水) 13:10:41.63ID:WDVOBhzi
スレチだボケ
2019/09/25(水) 13:19:48.08ID:TKCpLHdM
kotlinのsynchronizedってdeprecatedなんすかね
2019/09/25(水) 18:43:43.29ID:ezuOeX2e
サクッと調べた限りはそんなこと書いてないな
2019/09/26(木) 08:50:49.34ID:eMNKcSXH
>>287
CommonとNativeでdeprecatedって意味か

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/synchronized.html
2019/09/27(金) 00:43:53.70ID:4sT2Ig8J
Kotlinの文字列中に変数かけるやつ
依存関係が逆転してる感じですごい嫌だなーとおもってたら
C#まで真似しやがった
世も末
2019/09/27(金) 05:17:59.01ID:JbCMTE4l
あんなの単なるStringBuilderの構文糖衣じゃん
あと変数でなく式な

"aa${10+1}bb"

StringBuilder("aa").append(10+1).append("bb").toString()
2019/09/27(金) 07:29:08.44ID:rzcsvF8H
依存関係が逆転???
2019/09/27(金) 07:45:12.85ID:boczQ2su
どういうことなの…
2019/09/27(金) 08:06:25.68ID:5FaPwfxq
むしろ素直だと思ってる
2019/09/27(金) 08:07:07.40ID:yKrr7IDu
""に値を設定するんでなく""から外を参照する形になって文字列が文字列じゃなくなった
書いてある文脈中でしか使えない。フォーマットと違ってどっかよそに貼り付けてもそれだけじゃ動かんくなる
変数の名前同じにしとけとかねーよ

最初から式ならまだしも""の中が実質文字列じゃないとか勘弁
2019/09/27(金) 08:40:34.43ID:UchHMfCe
sh の "〜" が遥か昔から中の変数等を展開してくれる仕様
代わりに '〜' を使うと変数等の展開をしない
2019/09/27(金) 14:52:54.16ID:3totJIv/
大体の言語には埋め込みと.format呼ぶ2つのやり方があるんだから、簡単に文字列結合したいときと固定フォーマットを定義したいときで使い分けたらいいんじゃないかな?
2019/09/27(金) 17:44:05.63ID:5yEB7nBc
言いたいことは分かるけど、新しいものを受け入れられなくなるってのはこういうことなんだな、と思った
298デフォルトの名無しさん
垢版 |
2019/09/27(金) 17:47:07.30ID:/3CUbuCi
俺はシェルみたいな埋め込みができて素晴らしいと思ったけどね。
楽だし。
2019/09/27(金) 19:04:48.74ID:f2vxlf0q
Ruby の文字列・ヒアドキュメント内の式展開だろ。
"abc = #{ 式 }"

Rubyを真似て、Python, JavaScript(JS), Elixir でも採用された。
JS(ES2015)で言う、テンプレートリテラル
300299
垢版 |
2019/09/27(金) 19:13:15.44ID:f2vxlf0q
ERB(埋め込みRuby)と同じ

最初は、HTML の文字列をつなげて、HTMLを作っていたのが、
発想を逆転させて、HTMLの中に、<% 〜 %> で、Rubyの式を書けるようにした

<p>
Name: <%=h name %>
</p>

h は、HTMLエスケープをする関数
301デフォルトの名無しさん
垢版 |
2019/09/29(日) 16:07:58.39ID:YU+7wDew
名前がアニオタっぽくて嫌
302デフォルトの名無しさん
垢版 |
2019/09/29(日) 17:21:17.15ID:2aSU+D40
琴輪
2019/10/01(火) 13:30:15.16ID:uExhZ2M/
kotlin nativeが成熟するのはいつなんだろ。。。
2019/10/01(火) 13:48:25.74ID:EybpXLwx
try kotlinとかの上に出てくるネコのシルエットって何ですか?
ネコちゃんの名前が知りたい
2019/10/01(火) 14:14:20.72ID:zC4XWk/X
>>304
ギットの猫?
Monalisa モナリサです
306デフォルトの名無しさん
垢版 |
2019/10/01(火) 16:05:31.80ID:PlApYvsP
∧_∧  / ̄ ̄ ̄ ̄ ̄
( ´∀`)<  ・・・
(    )  \_____
| | |
(__)_)
2019/10/01(火) 16:48:17.15ID:YWyL5Bdu
それはモナー
2019/10/01(火) 17:00:30.37ID:EybpXLwx
>>305
ギット?ということで調べて来ました
身体はタコなんですね…w
ありがとうございました
2019/10/01(火) 20:26:22.24ID:icpbu6AK
Octocatが名前と思ってたけど種族名だったのか
2019/10/04(金) 15:39:45.09ID:LDjBJuJJ
ねこび〜ん
311デフォルトの名無しさん
垢版 |
2019/10/05(土) 00:16:58.11ID:rZgh896s
はじめてのandroidプログラミングのサンプルで使われてるライオンの画像がかわいいw
2019/10/05(土) 13:02:24.08ID:5lOJpdP4
おはようからお休みまで監視されるぞ
2019/10/05(土) 22:05:30.67ID:8kkLWvad
べつにされてもどうってことないよ
毎日食ってウンコしてシコって寝てるだけのオッサンのハゲ頭監視して
それ何か得することあんのか? 監視してるやつはバカとしかいいようがない
2019/10/05(土) 22:24:30.86ID:loobBt8E
ウンコ食ってシコ踏んでるだと
2019/10/07(月) 15:34:48.22ID:Sfhnmnfb
kotlinよかJavaの方が汎用性が高いので
androidappもJavaで書きたいんだけど
リファレンスではkotlinfirstだからな!って威張りやがるので
androidapp開発って、いつまでjavaで引っ張れるか、だれかプリーズ!
316デフォルトの名無しさん
垢版 |
2019/10/07(月) 15:39:15.19ID:rds9MmBY
わしはもうkotlinじゃ
317デフォルトの名無しさん
垢版 |
2019/10/07(月) 15:47:14.56ID:lSqRbxbA
そんなもんわからないので俺の主観で直感のみを使ってお答えしよう。

あと・・・3年ぐらいかな?
2019/10/07(月) 15:56:24.16ID:L7z14gMx
それは無意味な心配だよ
Javaがなくなれば自動的にKotlinも消える
319デフォルトの名無しさん
垢版 |
2019/10/07(月) 16:09:43.37ID:lSqRbxbA
Androidのアプリ開発で使われる事は減るのではないかな。
2019/10/07(月) 16:33:25.09ID:L7z14gMx
Android自体がJavaの塊だからサポート外になることはありえないよ
2019/10/07(月) 16:47:53.96ID:lsopFfLk
ありえないとは思わんが、もしJavaサポートをAndroidから排除する日がくるとしたら
それはGoogle端末がAndroidを載せるのを止める日だな
322デフォルトの名無しさん
垢版 |
2019/10/07(月) 16:48:30.06ID:lSqRbxbA
サポート外にはならなくてもアプリを作る時のJava使用率は減るのではないかな。
2019/10/07(月) 17:10:42.95ID:L7z14gMx
どうでもいいでしょ
世の中で圧倒的にKotlin<<Javaなのはこれからもずっと変わらないんだし、
たぶんJavaからKotlinへの移行が進むよりもスマホアプリをJVMモドキで作ること自体が廃れる方が早いよ
324デフォルトの名無しさん
垢版 |
2019/10/07(月) 17:14:52.96ID:lSqRbxbA
そしたら Kotlin native なりなんなりそのプラットフォームに合わせたコンパイラ使えば良い。
2019/10/07(月) 17:18:51.34ID:rds9MmBY
java知ってるならkotlinは楽
androidはkotlin化で立ち止まるよりライブラリの統合で使えないの?!ってなって考えることの方が多い
2019/10/07(月) 17:29:32.36ID:Sfhnmnfb
リファレンス様の顔色を窺ってみますと
android app作るのならkotlinな
サポートもkotlinに絞るぞと言っているような勢いを感じてしまう
2019/10/07(月) 18:11:11.20ID:Cu2dn/vN
googleはもうjavaのサポートレベルあげなさそうだよな。
今はJava8までの言語機能使えるんだっけか?
2019/10/07(月) 19:21:40.08ID:PHxdOQnu
Googleはなぜか言語ではこけまくった
2019/10/07(月) 19:31:23.00ID:L7z14gMx
Go当てただけで十分だろ
MSの打率がおかしいだけ
2019/10/07(月) 23:33:03.63ID:AKFeYH7t
>>327
一生あげなさそう
2019/10/08(火) 00:00:02.76ID:fx3YZ1T9
Googleの言語は理想ばっかりで現実(ライブラリとサポート)が
追いつかなかったからなあ。
332デフォルトの名無しさん
垢版 |
2019/10/08(火) 06:11:11.26ID:BYPsqzOs
google天才レベルばかり集めた結果、大多数の凡人が付いてこられなくなった感じはある、なににつけても
2019/10/08(火) 09:03:13.02ID:7Wk+kjRy
その天才達の叡智を結集した結果がDart()
2019/10/08(火) 09:15:21.58ID:dMLk3GdV
IQ150以上の人が作ったものなんて
大半(IQ90〜120)の人が使っても使いづらいだけ
ギフテッドは汎用ものを手掛けたらだめでしょ
2019/10/08(火) 09:28:08.68ID:2kQq17FH
的外れやな
じゃあ天才ばかりのMicrosoft Researchは?ってなるし
2019/10/08(火) 10:12:04.61ID:vyHOrYa6
全体デザインの天才を入れたかどうかの違いでしょ
337デフォルトの名無しさん
垢版 |
2019/10/08(火) 12:14:54.73ID:xX7RkViq
MS終了のお知らせ
https://www.youtube.com/watch?v=tmkrsMVsCvM
338デフォルトの名無しさん
垢版 |
2019/10/08(火) 13:33:32.41ID:gO+Oxfwr
AndroidのMSスマホだろ?
スマホに関してはWindows諦めたということだな。
2019/10/08(火) 13:39:24.55ID:7Wk+kjRy
Googleはデータドリブンに傾倒しすぎた結果、プログラミング言語自体の面白さが生産性を高めないことを確信してしまったんだろう
MSもJetBrainsもそんなことは昔から重々承知だろうけど、
さすがに長年開発ツールを作ってきただけあって使ってもらうためにはプログラマに心理的に好まれることも大事であると理解してるんだろうね
340デフォルトの名無しさん
垢版 |
2019/10/08(火) 22:47:14.28ID:UZ4l5hHn
>>339
341デフォルトの名無しさん
垢版 |
2019/10/09(水) 21:58:29.86ID:+IXxZ8i9
Swiftのコードを移植しやすくするために、プロトコルを移植する術を用意して欲しいな
2019/10/10(木) 07:03:41.74ID:giyEmNIS
>>334
スマホや、インターネット使ってる癖に?w
343デフォルトの名無しさん
垢版 |
2019/10/10(木) 09:44:34.71ID:f2z6TkRs
>>334
今回ノーベル賞貰った人のIQは150未満だったのか?
電池使いやすいぞ。入れとくだけだし。
344デフォルトの名無しさん
垢版 |
2019/10/10(木) 09:47:43.02ID:f2z6TkRs
ま、しかし、大人のIQって一体何を基準にして出すのか謎だな。子供ならまだわかるんだが。
345デフォルトの名無しさん
垢版 |
2019/10/10(木) 09:58:04.45ID:yMym0WfO
IQ = 偏差値 x 2
2019/10/10(木) 10:06:40.36ID:qMpodnOz
>>341
その前にfunとfuncを統一して欲しかった
いまだにとっさにどちらだか分からなくなる
347デフォルトの名無しさん
垢版 |
2019/10/10(木) 12:54:39.50ID:f2z6TkRs
>>345
そうするって決まってるの?どこで決めた?
2019/10/10(木) 13:15:24.31ID:3FRPhBpT
>>347
そう固い頭だと色々無理ですわ
2019/10/10(木) 13:24:45.83ID:/UOoEr+O
偏差値50でIQ100
50前後だと合ってるが端の方は違うだろうな
350デフォルトの名無しさん
垢版 |
2019/10/10(木) 21:06:55.89ID:f2z6TkRs
>>348
そうか。

とりあえずWikipediaで「知能指数」を見てみることをおすすめする。
16歳ぐらいまでしかちゃんとした測定はできないと考えて良い。
2019/10/10(木) 21:14:30.21ID:Dw9sQNQ5
>>345
俺メンサに入れるかも
2019/10/10(木) 22:10:25.98ID:l19Np2ka
>>346
ぱっと見ただけでどの言語のコードかわかるので、悪い話ばかりではない。
2019/10/23(水) 00:35:02.53ID:VlKG99wH
kotlinがサーバサイドで動く日は来るのだろうか
2019/10/23(水) 02:08:32.92ID:dddyYjX9
とっくに動いてるけど?
2019/10/23(水) 07:52:04.30ID:5Hzic27k
うちの
356デフォルトの名無しさん
垢版 |
2019/10/23(水) 13:23:08.82ID:9StfI0ul
サーバかどうかに関わらず動くと言えば動く
357デフォルトの名無しさん
垢版 |
2019/10/23(水) 13:25:26.53ID:9StfI0ul
ていうかだな、VMのレベルでJavaとの互換性あるんだからJavaでできることはなんでもできるよな。
互換性というかJavaバイトコードそのままなわけだが。
2019/10/24(木) 23:51:39.67ID:RhNVJpHw
何で誰もscalaのライブラリ移植してくれないんだ?
2019/10/25(金) 08:03:33.95ID:h86JIRQS
>>358
JavaからScalaを呼び出せるはずだから、Kotlinからも呼び出せるのでは?
360デフォルトの名無しさん
垢版 |
2019/10/29(火) 19:28:43.34ID:/JOXqSLR
bit演算子がand/orで、conditionalの方が&&/||って紛らわしいな。
2019/10/30(水) 09:41:04.16ID:C/RG5q83
>>360
伝統的に BASIC言語では、and, or が条件分岐(BOOL)用だったので、
混乱しそうですね。
2019/10/30(水) 10:21:31.19ID:boKIoRF+
単語と記号の混在が紛らわしいって話でしょ
VB系がAndとAndAlsoで、C系が&と&&で一貫しているのに対して、Kotlinはandと&&の組み合わせを選んでて言われてみると少し変
andはメソッドで&&は演算子だから差別化したかったというなら理解できるが、andを演算子オーバーロードしなかったのは何でだろうな
notはしてるのに
2019/10/30(水) 10:32:29.86ID:C/RG5q83
VBではAndもAndAlsoも、条件分岐用(BOOL系)で、AndAlsoが、
C での&&相当なんですね。x And y も C のx && yに近いが、
xが偽の場合でもyを評価してしまうところが && と違う。
そこで && と同じ動作を行わせるために導入されたのが AndAlsoと。
364デフォルトの名無しさん
垢版 |
2019/10/30(水) 16:18:46.97ID:1J5CWeWV
Pythonは、kotlinとは反対だな。
and/orはいかにも文章的で、こっちの方がしっくりくる。
2019/10/30(水) 17:38:05.90ID:C/RG5q83
それに、&& や || は長さも & や | より長いので、少し長い and, or と対応し易い。
後やはり、伝統的なBASIC言語との互換性は重要だ。そっちを覚えている人は
世界では沢山入るはず。特にアメリカ。
2019/10/30(水) 17:38:32.15ID:C/RG5q83
>>365
誤:世界では沢山入るはず。特にアメリカ。
正:世界では沢山いるはず。特にアメリカ。
2019/10/30(水) 20:40:57.63ID:6r1QZ6yg
and, orは値によっては計算を評価しないというifの役目もしてるから
ほかの演算子と一緒くたにするのは気分が悪かったのかもしれない

とおもったけど&&使ってもandと評価される項目一緒だっけ
2019/10/31(木) 06:45:28.23ID:GYAqAxt3
Kotlinの言語開発者は、andとorは拡張関数で実装すればKotlinの文法の範囲内で文章的に書けると思ったのかも。
ただ、>>367が指摘するように拡張関数のand, orは短絡評価がないから
&&, ||とは同じ動作にならない上にパフォーマンスも若干落ちるという残念な仕様に。
将来的に短絡評価するアノテーションとかを作れば何とか出来ると思っているのかいないのか。
2019/10/31(木) 07:22:01.32ID:HKEmMyl3
>>368
短絡評価しないから残念というものではなく副作用を考えて使い分けるものだよ
だから多くの言語ではわざわざ2種類用意されてる
前段については同意だがやはりなぜ演算子オーバーロードしなかったのか疑問
2019/10/31(木) 11:07:41.22ID:JXLI+jKB
ビット演算と論理演算の違いって>>360が書いてるやろ
ビット演算を短絡評価のない論理演算と捉えてるやつが多くてオシッコちびるわ
2019/10/31(木) 19:32:54.61ID:ZaVwx2RY
kotlin使ったことないもので
2019/10/31(木) 20:48:39.66ID:rgtTn2y8
ビット演算と論理演算の違いはC C# Javaとかでも同じっすよ
言語仕様を広げたくなかったんじゃね

Kotlinのandとかは言語仕様に無くて単なる標準ライブラリの関数扱いだし
373デフォルトの名無しさん
垢版 |
2019/10/31(木) 20:58:37.80ID:IuiVo8Vq
>>371
ただちに使いなさい。
2019/10/31(木) 22:36:23.90ID:GYAqAxt3
>>369
演算子オーバーロードを許すと、Int, Boolean等以外のLocalDateTimeのようなプリミティブでない
クラスにまでユーザーが論理演算(もしくはビット演算)を定義できてしまうから
好ましくないと思ったのかなと。

>>370
Booleanに限って言えばビット演算と論理演算は(短絡評価を除けば)等価なはず。
Booleanとand, orを組み合わせれば、(短絡評価の問題を除けば) &&, || が不要になる。
2019/11/01(金) 00:09:01.18ID:SSpVj4+E
>>374
notやplusは演算子オーバーロードしてるのにandがしてないのが疑問だと言っているんだよ
2019/11/01(金) 01:05:00.03ID:fA7q3dtP
>>375
何を言っても推測にしかならないけど、一つは&&の短絡評価を演算子オーバーロードで再現できないからではと思う。
a && b が bがBooleanかどうかでbが評価されるかどうかが変わるということを避けたかったのではと。
もう一つは、>>372の言うように言語仕様を最低限にしようとしたのではと思う。
Kotlinはシフト演算を見る限り、ビット演算しようとする人には優しくない気がする。
>>375がandでオーバーロードしたかったのが&か&&かはっきりしないけど、少なくともどちらか一つは答えになっているかと。
2019/11/01(金) 01:21:46.87ID:RfnyKZTx
「演算子オーバーロードしなかった」の意味がよくわからない
&演算子が無いことの話なのか、オーバーロード出来るかどうかの話なのか

後者なら単なる関数なので普通に出来るけど
class A(val s:String) { override fun toString() = s }
infix fun A.and(o:A) = A("${this.s}∩${o.s}")
fun main(args: Array<String>) = println( A("x") and A("y") )
2019/11/01(金) 09:34:45.45ID:zrbJp7o3
演算子がないことを、演算子オーバーロードしてないと言ってるんだろう

https://github.com/Kotlin/KEEP/issues/142
中の人は演算子提供するのに乗り気じゃなさそうだけどそのうち追加されるんじゃないか
shl/shrとかわかりにくいしand/orも他言語から来ると思考ノイズでしかない
379デフォルトの名無しさん
垢版 |
2019/11/02(土) 17:53:52.29ID:QgMrWwpO
ビット演算するとき、|=、&=って激しく便利だし頻出だと思うんだけどなぁ。
2019/11/02(土) 18:52:11.73ID:5tts/hNl
そもそも複数のbooleanで扱うべきフラグをビット演算で1つにしてるAPI設計が良くない説
2019/11/03(日) 06:01:49.39ID:1XdbflyH
>>380
ハードウェアがそうなってるのだから仕方なかろう。
いっぺんに書き換えないと挙動が変わってしまう
382デフォルトの名無しさん
垢版 |
2019/11/08(金) 01:15:52.84ID:cpVwQa3m
しーん
2019/11/16(土) 20:04:36.15ID:IPxvB3iz
javaラーがコトリンに乗り換える勉強するのにどれくらい移行期間かかります?
2019/11/16(土) 20:26:59.99ID:t3f2p1SX
1年働く
2019/11/16(土) 20:43:38.98ID:C0dcrxXu
>>383
君の全角半角のセンスからするとだな
386デフォルトの名無しさん
垢版 |
2019/11/16(土) 22:11:24.92ID:gv6Xc8ej
超天才でスーパーな人なら入門書パラパラめくって眺めて30分ぐらいかな
387デフォルトの名無しさん
垢版 |
2019/11/16(土) 22:13:58.74ID:gv6Xc8ej
1時間後にはもっと凄い新言語に閃いて作りはじめる
2019/11/16(土) 23:33:33.74ID:uUrUP5Ld
java -> kotlin変換しますか?
Y?/N?

Y -> 数秒まて
2019/11/17(日) 00:14:20.35ID:JQ6H4Wt1
それだと !! がたくさん残るしそもそもビルド通らない
2019/11/17(日) 09:48:27.71ID:fq5Zb79J
そっから手直しすればいいんじゃない??
無駄が多いし効率も悪いけど…
2019/11/17(日) 11:45:54.92ID:os2yIBUt
3日で慣れる
392デフォルトの名無しさん
垢版 |
2019/11/17(日) 17:31:59.24ID:8gWobnsK
あれ?forループで変数インクリメントするようなのできねーじゃん。なに?while使ってやれっての?えー!

ってなってから、なーんだ (a..b).forEach { } でやりゃあいいんじゃん。
と、気づくまでに3日以上掛かった。
393デフォルトの名無しさん
垢版 |
2019/11/17(日) 17:34:56.22ID:8gWobnsK
ていうか for (n in a..b) でもいいのだが、a..b が Range になっててあとはコンパイラが自動でうまいことやってくれる事に気づかなかった。
2019/11/17(日) 23:38:24.23ID:moRzMRqx
ひとまず小一時間感覚で書いてみるのは良いとしても
言語リファレンスを一通り流し読みする時間をどこかで確保しないとな
https://kotlinlang.org/docs/reference/idioms.html
2019/11/19(火) 06:21:31.09ID:bEq52YpT
!!ってダメなのか?
むしろ入れて解決してるんだが…w
2019/11/19(火) 09:50:11.74ID:LM0oqXyj
!!は全部消さないとダメ
397デフォルトの名無しさん
垢版 |
2019/11/19(火) 09:55:32.18ID:c65LTQ+s
>>395
ダメじゃないけど沢山あると嫌な感じ
2019/11/19(火) 10:47:58.28ID:DczGG2/f
Kotlin 1.3.60 リリース
https://blog.jetbrains.com/kotlin/2019/11/kotlin-1-3-60-released/
2019/11/19(火) 14:30:37.08ID:trU3CZAC
なぜどうしてもそこに必要なのかを説明できない!!は書いてはならない
あとあと絶対にそこでコード的にまたは仕様的にバグるから、むしろ遠回りになる
2019/11/19(火) 16:25:17.02ID:bEq52YpT
null許容変数がnullになるかもしれないから!!なんじゃないの?
そういう認識なんだが
2019/11/19(火) 16:29:22.93ID:DczGG2/f
val a = ThreadLocal<String>().get()
val b:String = a //暗黙の a!!
2019/11/19(火) 19:32:30.25ID:OgKqA1p2
!!は全部消すべき
2019/11/19(火) 19:39:12.55ID:bMvJvF/Q
>>400
動作の説明としては全くその通り
しかしそれをコードに適用するデメリットが大きいので全世界中からやめと毛と言われている
404デフォルトの名無しさん
垢版 |
2019/11/19(火) 21:21:13.73ID:c65LTQ+s
2019/11/19(火) 23:23:22.22ID:bEq52YpT
>>403
nullになるかも?なだけで実行順を追っていくとならないことが多いからそのままにしている
必要なら対策するけど、ほとんどの場合は実行タイミングに何か値が入ってる
変に怖れて潔癖にならない方がいい
2019/11/20(水) 00:18:44.73ID:Cb5VPrea
!! は、絶対に、null にならない場合だけに使うべし!
notnull

強制キャストと同じ
2019/11/20(水) 00:47:14.79ID:ENHG5n4o
例外が発生するから!!が良くないと考えているならそれはnull安全を履き違えている
重要なのは区別することで、どう処理するかは要件次第

処理のタイミングで非nullであるべき変数なら
ガード節、requireNotNull、!! などによって早期にスマートキャストすべき
そのような箇所で不用意にセーフコール(?.)を使うことはいわゆるエラーの隠蔽に繋がる

nullが正常系の内ならもちろんセーフコールなりエルビスなりで問題無い
2019/11/20(水) 00:51:02.81ID:I+/vz2hc
!!はforce unwrapと呼ぶべし!!
!!演算子に名前を付けない言語は滅ぶべし!!
2019/11/20(水) 00:53:35.65ID:ENHG5n4o
>>408
Kotlin公式では not-null assertion operator とある
Swiftと合わせた方が分かりやすいとは思うけどな
2019/11/20(水) 01:40:06.34ID:We9TyGj3
例えば画像Aを表示する座標x,y
初期値を画面外の-500,-500にしておけば!!は消せるけど
画面外に表示ってリソースの無駄
これを良しとするやつは複数の画像を画面外に常に表示している
逆にメモリ足らなくなって落ちない?
使わない場合はnullでよくね?
読込みに時間かかるなら初期値設定するのもありだけど
あくまで重い画像を複数使用する例なんだけどnullを悪としてとらえず利用しようよ
上記の理由により、!!潔癖症はただ邪魔なだけ
2019/11/20(水) 02:09:26.97ID:6LF6wg+P
!!を使わなくても安全に実装できるのにあえて!!を使うのは頭が悪いですと言っているようなもの
2019/11/20(水) 07:14:57.99ID:U5Gi9XNc
ファイルヘッダとかにマジック定数あるが、これを表現するには
val hoge = arrayOf('a','1').map { it.toByte() }.toByteArray()

みたいな悲しいことしないといけないのでしょうか?

それとkotlinで一般的なバイトバッファを表現するにはByteArrayつかっておけば間違いなないでしょうか?
2019/11/20(水) 07:18:15.00ID:U5Gi9XNc
今はJVM環境で使ってますが、一応コード書くときに、特定のプラットホームに依存しないように書けるとこは書こうと思います

ちょっとつっぱしてByteArrayじゃなくてexperiment なUByteArrayを使おうと思いますが
2019/11/20(水) 07:47:32.01ID:ENHG5n4o
>>411
なぜ使うべきでないのかを説明出来ない限り、議論の出発点にも立っていない

例えば俺は>>407で書いた順の通りガード節、requireNotNullの方が
より明示的かつメッセージ付加可能でなので!!より優先すべきと考えるが
本質的には大差無い

NullObjectパターンは有用ではあるが
セーフコールがあるKotlinでは必ずしも必要としない
そのようなケースはnullが正常系の内であるのと同義
2019/11/20(水) 09:35:14.21ID:kKZK+bE1
>>410
使わない場合はnull、っていうケースは文字通りガード節や?.を使って
nullならなにもしない場合、と同義なのでは
!!を使うべき例としてはピンとこない

!!を使っている関数は引数つまり関数の仕様としては一見null許容型だけど、実装としてはnullを拒絶する不整合がある
何らかの事情で回避が難しいときの苦肉の策で、多用するのは作りが悪いように思う

あとは関数内で既に非nullであることが保証されてるパスの中にいる場合の簡略化で使うか
でもこれを多用するようなら関数が長すぎるという問題を暗に抱えていたり
安全や可読性よりも手抜きを選ぶ悪癖の疑いを感じる
416デフォルトの名無しさん
垢版 |
2019/11/20(水) 11:41:13.79ID:NJaF4OnZ
!! null即エラー演算子。
force unwrapでは全く本質を言ってない。
2019/11/20(水) 12:48:32.17ID:RdkdotSG
>>414
型安全でないnullを使うこと自体が問題。
!!も、使う前に型安全なnullobjectを検討すべき。
2019/11/20(水) 14:43:02.05ID:6LF6wg+P
!!を使うやつとは一緒に仕事したくない
2019/11/20(水) 15:16:56.32ID:zV5Z2B9p
なんだと!!
2019/11/20(水) 15:29:37.98ID:Y9hbFaQz
>>419
ちょっとワロタw
421デフォルトの名無しさん
垢版 |
2019/11/20(水) 17:12:40.65ID:gQNT2Wxf
val なんだと: Int? = null
2019/11/20(水) 22:37:14.64ID:F7b4EQq2
checkNotNull(nullable) { "説明" } がいいんだろうけど、!! で楽したくなる時がある

>>412
byteArrayOf が使いたいって言ってる?
2019/11/20(水) 23:09:14.16ID:V5o6b7gh
絶対nullにならないなら型変えるべき
2019/11/20(水) 23:19:54.39ID:Cb5VPrea
>>410
もし遅延初期化、lateinit が使えるなら、その方がよい
2019/11/21(木) 00:03:38.40ID:OWTu/Eih
java のライブラリの @Nullable とか、json で条件によって null / not null が切り替わるプロパティとか
2019/11/21(木) 02:18:34.58ID:TLoSEVN8
!!使うやつは馬鹿でFA
2019/11/21(木) 03:55:49.74ID:Bt7t64ET
ならなんであるんだろう
428デフォルトの名無しさん
垢版 |
2019/11/21(木) 04:20:54.23ID:UJdhtJJC
あたたたたたたたひでぶ!!
2019/11/21(木) 06:28:21.69ID:87sZA2Me
>>427
nullableな値を返す外部の関数について、文脈上nullが返らないことが保証できる場合にまで
null対応を書くのは、可読性やパフォーマンスの上で無駄が多いからだと思う。
特にJava(あるいはJavascriptやnative)由来の関数とか。
2019/11/21(木) 06:34:18.07ID:87sZA2Me
>>429
誤解されそうなので補足。
1行目の「外部」っていうのは3行目のKotlin外という意味ではなくて、
標準ライブラリを含めて他人が作ったライブラリという意味です。
2019/11/21(木) 06:56:28.51ID:SWfOk2xI
そのkotlinの存在意義ぶち壊す特異性からしても、どーしても仕方なく使うものであるのだけど
エラー消すおまじないみたいなノリで初心者から中級者が使うので戒められている次第
あと、感染するんだコレ
2019/11/21(木) 07:43:43.53ID:rXpcOZh/
>>426 >>431
requireNotNullは?
2019/11/21(木) 08:03:18.32ID:tRt1kz+E
1.3.60出てたから久しぶりにkotlin native試してみたらhello,worldのコンパイル時間が更に伸びてた!
10秒→16秒!
何か早くする方法ないの?
2019/11/21(木) 08:04:59.80ID:SWfOk2xI
>>432
値チェックに使う字面だからいいのでは
2019/11/21(木) 08:06:53.77ID:Bt7t64ET
実行タイミングが来るまで置いておくだけの関数の中で使う変数は、その関数を実行する前までnullでいいよな?
そういう理由で!!のままにしてるんだけど!!潔癖以外の意見が聞きたい、ロジカルな理由を
その会社の規約なら!!使わないけど
使っていけないならそもそもビルド通らんだろ
2019/11/21(木) 08:38:35.83ID:9TFt1oIy
>>435
型安全が破綻するのでnullobject定義して使っとけ。
2019/11/21(木) 08:53:15.49ID:0YdMrNda
>>433
所詮はオモチャなんだからどうでもいいでしょ
JetBrainsとしてもまだコンパイル時間の最適化なんか気にする段階じゃないだろうし
2019/11/21(木) 08:54:35.85ID:Vn+a4ljF
状況が限定されるが、あるクラスがnull相当の状態をとりうるメンバ変数を持っていて
その値がnullのときに呼んだらバグとして例外を出したいメソッドがあるときは
!!を使ってもいいかなと思う

requireNonNullのほうが可読性と保守性でベターだけど本質的には大差ない
残念な!!の使い方ではないんですよと表明している程度(それが重要でもあるわけだが)

NullObjectパターンは必ずしも良い置き換えにはならない
NullObjectかどうか忘れず判定してIllegalStateExcptionを投げなければならない状況になるくらいなら
nullチェックを言語仕様で強制されるほうが手が掛からず安全性も高い
上でも言われていたが例外も何も出ずにバグがしれっと埋もれるほうが危険
2019/11/21(木) 09:05:08.85ID:OWTu/Eih
require と check の使い分けちゃんとしとけよ
2019/11/21(木) 10:47:03.33ID:iVxfes4g
>>438
オモチャだから発売日が気になっちゃう精神やん
441デフォルトの名無しさん
垢版 |
2019/11/21(木) 10:50:30.22ID:PQRrRahX
>>435
ものによる。初期化しないとか by lazy にするとか他の方法があるならそちらを使う方が良いかも知れない。
2019/11/21(木) 11:30:32.58ID:rXpcOZh/
nullのまま素通りさせたくない場合は
!!でなくcheckNotNullやrequireNonNullを使えばOK?

このコードの3つ目のように
https://paiza.io/projects/Ao4mGnYxwoWEuMNRtj_gkg
2019/11/21(木) 13:52:56.76ID:fDxQUKzN
香ばしくなってまいりました
2019/11/21(木) 14:50:53.35ID:TLoSEVN8
!!を使うやつを絶対に許してはいけない
2019/11/21(木) 15:08:48.23ID:t44F/vpr
明日の朝刊載ったゾ テメー!!
2019/11/21(木) 15:30:07.46ID:9TFt1oIy
>>438
nullには型チェックが働かないことを忘れちゃいかん。

nullobjectじゃなくてnullがきたときは型チェックでエラーにできるんだから、nullobjectを使ったほうがいい。
447デフォルトの名無しさん
垢版 |
2019/11/21(木) 16:27:17.17ID:Bt7t64ET
!!潔癖症でもいい
変更方法さえ教えて頂けるなら
それに従い変更します
2019/11/21(木) 16:37:36.16ID:GN1h9TxM
Kotlinプログラマーは未だにforce unwrappingの使いどころを知らない
NullObjectのメリットデメリットも知らない
ということはよ〜くわかった
2019/11/21(木) 18:30:46.10ID:rXpcOZh/
>>444
>432と>>442についても意見が欲しい
2019/11/21(木) 18:59:57.13ID:ikLBAUPH
>>448
nullobjectのデメリットって、null汚染されたクラスの再利用が面倒なことくらいじゃない?
他になんかある?
2019/11/21(木) 19:03:08.50ID:Bs6+HN1r
NullObjectのデメリット?
「オナニーとしては気持ちいいが、実際の開発において便利なシーンがほとんどない」
これに尽きる
2019/11/21(木) 20:29:13.59ID:ikLBAUPH
>>451
オナニーとして気持ちいいなら誰でも使うだろ。
そんなこともわからない無能かぁ……
2019/11/21(木) 22:54:14.17ID:Vn+a4ljF
あるデータが有限の数値をとる場合と
値なしの特殊な状態をとる場合があるとする
その厄介さってのは多くの場合、処理の場合分けが必要ってところにある
ヒトがそういう分岐を書き忘れがちなのはご存じの通り
その結果もあって多くのプログラマはNPE恐怖症になったが、NPEを回避することが目的になっても意味がない
NullObjectの多態性やアルゴリズムの妙で分岐を潰せるならベスト
だがそうでない場合、むしろ分岐を書き忘れたとき、下手なNullObjectはフェイルファストのメリットを失うことがある
2019/11/22(金) 08:14:50.32ID:GTCFu0T7
nullセーフな言語におけるNullable型の素晴らしい点は
そのままではメソッドを呼び出すことができず
特殊値に対し場合分けの判断が必要ではないかとヒトに思い出させてくれること
不適切な!!はこれを台無しにする
不適切なNullObjectも同じで、より厄介なバグ隠蔽をもたらす
2019/11/22(金) 09:18:52.84ID:hf/6/1tn
>>454
requireNotNullやcheckNotNullも同じく台無しにする?
それともこっちは良い?
2019/11/22(金) 10:51:25.32ID:+tlCvVPc
!!のほうが2文字だし、ここでヌルポが上がるかもと分かるので好き
2019/11/22(金) 11:13:57.45ID:hf/6/1tn
念のため書いておくとKotlin標準ライブラリの関数のことね
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/check-not-null.html
2019/11/22(金) 15:35:14.32ID:GTCFu0T7
>>455
何を使うにしても状況に適したものを使えば問題ないと思うよ
2019/11/24(日) 06:37:41.88ID:wyfl3vqB
>>450
NullObjectはどのような場合でも正しく機能するNullObjectを定義できるなら優れているが、「どのような場合でも」を満たすのは難しい。
null発生の状況が複数ある場合は「どのような場合でも」というい条件を満たすNullObjectが定義可能である保証もない。
最初は条件を満たしていても、プログラムを修正していくうちに条件を満たせない場合が出てくる可能性もある。
しかも「気づかないうちに」そうなっている可能性がありたちが悪い。
条件を満たせない場所だけ分岐させるのは、NullObjectがnullチェック分岐消去を目的にしている
ことを考えると本末転倒な解決策。
2019/11/24(日) 12:53:04.20ID:gnIUHiL6
APIレスポンスとかデータ定義はNULLじゃない扱いしておいてビルドエラーもでないけど、
実際に動作させるとNULLが来てクラッシュするとかあるな
461デフォルトの名無しさん
垢版 |
2019/11/25(月) 11:44:00.50ID:8LK1eAYw
すごーく簡略化すれば、
private hoge: Hoge? = null
public Hoge apiX() {
if (hoge == null) hoge = Hoge() //
return hoge!! // ここでnullはあり得ないよと「宣言」
}
実際にHoge()のところは、さらにJavaの他のAPI呼び出しだったりするとしても、
とにかくnullでないことさえはっきりしているならばなんでもいい。
要するにこの場合は、apiXがnullを消費する責任を持つってことだ。
持たないなら、nullableのまま返す(つまりAPIとしてはnullも正常系だと言っている)。
そんだけのことじゃないかな。
2019/11/25(月) 12:58:08.39ID:Yrf4rnTG
>>459
nullobjectは「賢いnull」なんだから、null的な使い方してもいいだろ。
型安全なnullとして受け取ってnull分岐してもいいしな。

あと、null発生の状況が複数あるなら、それぞれ別のnullobjectにしていいんじゃない?。
2019/11/25(月) 16:14:54.66ID:c3GBXbYR
Javaではnullobjectを賢いnullとするのは正しいと思う

でもnull許容/非許容を型で区別出来るようになったKotlinでは
nullobjectはその利点を無くしてしまう

実装持ちobjectとnullobjectを区別する必要が無い場合は何も問題無いけど
もし「nullobjectかどうか」を判定する必要がある場合は
賢いどころか逆になると思う
2019/11/25(月) 17:15:40.69ID:1vTuETYq
NullObjectは"Tell, Don't Ask"なクラス設計ではうまく機能するんだけど、
関数型チックになAskだらけのコードだと使い物にならんね
465デフォルトの名無しさん
垢版 |
2019/11/25(月) 17:22:39.99ID:6yLunbOP
>もし「nullobjectかどうか」を判定する必要がある場合は
これはないだろ。動機そのものだから。
2019/11/25(月) 18:23:52.73ID:c3GBXbYR
>>465
それなら良いけど、ケースによらずnullの代わりに使うみたいな話の流れだったから
ログインユーザーとかも無効ユーザーオブジェクトになるのかなと
2019/11/25(月) 18:24:22.70ID:OXWkeipl
nullの場合の動作を
呼び出す側が決めるのか呼び出される側が決めるのか
どちらが適切なのかを考えるといい

呼び出される側が100%決め打ちできるユースケースならNullObjectは有効
呼び出し側でハンドリングしたくなったら邪魔
2019/11/25(月) 18:27:30.40ID:WgtQU+bP
java脳からkotlin脳へアプデが必要だけど
私の脳はnull
469デフォルトの名無しさん
垢版 |
2019/11/25(月) 18:49:15.70ID:6yLunbOP
Null Objectは単なる先送りで、ある意味!!が目指す方向とは真逆。
エラーが起きないから落ちることはないだろうけど、
使う側はエラーなのか無視されているのかわかりにくくなる。
2019/11/25(月) 19:00:53.76ID:Yrf4rnTG
>>468
>呼び出し側でハンドリングしたくなったら邪魔

型無しのnull使うよりマシだろ。
許容するととんでもないところから紛れ込むnullの方がよっぽど邪魔。
2019/11/25(月) 19:04:09.34ID:OXWkeipl
>>470
Nullableって知ってる?
2019/11/26(火) 08:06:30.50ID:cEMWujE4
>>471
nullableでnon-nullにできたっけ?
2019/11/26(火) 09:17:18.40ID:i6eVGflj
>>472
nullが正常系である場所ではnullabeを使い、nullが紛れ込んだらバグになる場所では非nullを使うって話がもう出てる
適切にゾーニングできているなら紛れ込むことをそう恐れる必要がない
nullという特殊値に対して意識が必要な場所はnullabeという型で言語仕様レベルで明確化でき区別できるからメリットがあり、型無しのnullというほど不便なものでもない
2019/11/26(火) 09:21:30.92ID:i6eVGflj
>>465
それがないならNullObjectがいいと思うよ
そこを否定している人はいないはず
ただ多くの人は経験上避けがたいと思ってるから意見が合わないんだろうね
解放閉鎖原則と単一責任原則とで作ってくと最初の動機だけではなかなか完結しない
全部ビジターパターンでとことんNullObject-ableな型にお伺いをたてるように作れば完璧にできるだろうけど、そこまで作り込むコストを考えたら適材適所でnullableを使い分けるのが現実解ってのが落としどころだと思う
Kotlinが選び提供している価値はnullセーフであってnullフリーではないし
2019/11/26(火) 10:05:06.19ID:XO/gVUyI
NullObjectって非同期呼び出しとかどうすんの
OOの原理主義的にはコールバックの呼び出しもしないのが正しいんだろうけど、
最近は前後で文脈が繋がってて、コールバックが呼ばれないままだとまともに動かないケースがほとんどだよね
かといってコールバックしようにも引数に何渡せばいいのかとか色々無理がある
2019/11/27(水) 12:20:06.50ID:OjEIAAu4
>>473
nullを使っても問題は限定的だと思うけど、あえてnullを使うメリットはあるのかしらん?
実装上の手間が省ける、くらいしかないと思うけど。
2019/11/27(水) 12:55:51.34ID:4s/5SlmV
>>476
>>438,453-454あたりを見てくれ
2019/12/06(金) 11:58:04.47ID:tlCdS/Zs
なぜKotlin/Nativeのメモリモデルが成り立たないか
https://itnext.io/why-the-kotlin-native-memory-model-cannot-hold-ae1631d80cf6
479デフォルトの名無しさん
垢版 |
2019/12/06(金) 14:42:47.13ID:08yg4gJX
三行に要約すると?
2019/12/06(金) 15:14:59.67ID:tlCdS/Zs
>>479
freezeによる制限とAPIはKotlin/Nativeのみ
そのせいでマルチプラットフォーム機能がお通夜状態
だから考え直せ
2019/12/06(金) 16:40:22.09ID:e8Nbwz4h
> This is the work of “top-level objects are frozen by default” and “a frozen datum cannot be mutated”.
Kotlin native試したことないけどこれ糞過ぎやろ
既存の(JVM向けに書かれた)コードがほぼ例外なく実行時にクラッシュすることになるやんけ
こんな互換性の欠片もないもん作るんやったらもう別言語でええやろ
482デフォルトの名無しさん
垢版 |
2019/12/06(金) 22:26:57.61ID:7KbOmiy4
kotlinてクラス変数に型推論使えるの?
Javaで無名クラスに利用できたらいいのにと思ったことがある

class Hello {
public var xyz = new Object (){ int x; int y; int z; };
void setX(int value){ xyz.x = value; }
}
2019/12/06(金) 23:00:45.17ID:tlCdS/Zs
>>482
private varでもいいなら使える
https://paiza.io/projects/qjWZT-Uy91UelIcTFqoKIA
484デフォルトの名無しさん
垢版 |
2019/12/09(月) 00:07:21.07ID:MrA/6cBN
>>483
できるのか! これができるとリフレクションを使ったフレームワークに幅が広がりそうだよねえ
特定の変数名をもつオブジェクトに値を代入するとかさ
2019/12/11(水) 10:04:40.40ID:YSNG9ChM
Kotlin 1.4以降に何を期待するか
https://blog.jetbrains.com/kotlin/2019/12/what-to-expect-in-kotlin-1-4-and-beyond/

品質とパフォーマンスに焦点を当て
大きな機能追加よりエクスペリエンスを向上させること(小さな機能追加はある)

Trailing Commaはありがたい
2019/12/11(水) 10:35:44.03ID:YSNG9ChM
GitHub統計
https://madnight.github.io/githut/

中々上がらない原因になってそうなのは
・スマホアプリでのクロスプラットフォーム性が他より劣る
・Kotlin/NativeやGraalVMのAOTの性能が
 他のGC持ちAOT(Go, C#)に全然追いつけてない
・AltJSとしてはTSに完敗
・Javaが割とモダン化していってる
2019/12/11(水) 17:32:54.10ID:zuvdOeFn
kotlin/jsは可能性がなさすぎるから諦めて他のとこにリソース使ってほしい。。
2019/12/11(水) 18:11:35.13ID:QRMyBX+7
ちょっとオワコン感が漂い始めたよね
2019/12/11(水) 18:44:39.88ID:3C9pU9bg
これから始めようと思ってた
2019/12/11(水) 21:20:44.17ID:cbWhmdF6
クロスプラットフォームは糞に例外なし
2019/12/12(木) 03:31:17.93ID:HDvavFF6
nativeでクロスプラットフォーム狙うならリッチな標準クラスライブラリがないと駄目だろ。言語だけ用意されても。
kotlin/JVMみたく他に寄生するなら寄生先のライブラリ使えるからいいけど。

nativeどうする気なの。

.netやjavaみたいな最低限の標準クラスライブラリないと役立たず。
2019/12/12(木) 10:07:02.43ID:Ijd1d2r8
どうする気もないでしょ
JBが本気でKotlinで天下獲るつもりならGoLandとRiderとResharperを今すぐ廃止すればいい
それをしていないということはその程度の覚悟なんだよ
粛々とチームを解散して開発者を解雇するだけだ
2019/12/13(金) 23:58:30.55ID:++ulbKLC
クロスプラットフォームがこんなに早く普及し始めるとはのぉ。
2019/12/14(土) 00:19:00.68ID:df1+QJt4
JavaでWindowsで開発してlinuxでうごかしとる
バージョンはこないだまで6だった
やっとJavaのかかとの所ぐらいまで世界が追い付いてきたようだ
2019/12/17(火) 06:30:13.16ID:noRj1Nsm
Kotlin/Nativeってバージョン番号が1.0を越えてるけど、
ベータ版を脱したってことでいいの?
2019/12/17(火) 10:45:01.35ID:buNxOUZu
クラスのnullableなインスタンスプロパティが複数(a,b,c)あって、
それらが全部nullじゃないときに実行できるメソッドあり、
fun execute() {
 if (!canExecute)
  return
 val a_ = a!!
 val b_ = b!!
 val c_ = c!!

}
いちいちこういう事やってんだけど、なんとかならんもんか・・
2019/12/17(火) 11:51:21.83ID:CYemexLv
小手先のテクニックよりも設計を見直すべきでは
a, b, cを一つの型に纏められないの?
2019/12/17(火) 18:50:15.12ID:buNxOUZu
MVVMのViewModelつくったことないの?
ViewModelを作るとたいがいこんなことになるんだが。
2019/12/17(火) 19:23:57.27ID:CYemexLv
>>498
いや、なんでa, b, cをわざわざ別個の変数に代入し直す必要があるの?
そこMVVM云々の事情は無関係だよね
HogeModel(a!!, b!!, c!!).execute()とかなら別に違和感ないやろ
2019/12/17(火) 19:27:54.98ID:buNxOUZu
普通のクラスだとこんなことにならんが、複雑に状態が遷移するViewModelだとこんなことになる。

ちょっと前にNullオブジェクトパターンの話題あったけど、NullオブジェクトじゃなくてViewModelの内部でStateパターン使えばたぶんいけると思うがめんどくさそう。
2019/12/17(火) 19:32:07.34ID:buNxOUZu
>>499
ああ、!!排除するために内部でそのために別のクラスに追い出せってことかなるほど。
2019/12/17(火) 20:00:31.90ID:buNxOUZu
つか、そのためだけならクラスを別に用意するんじゃなくてもいいんだよな。
ただ、executeCoreって別のnon-nullableな引数とるメソッド用意してexecuteCore(a!!,b!!,c!!)するだけで

実際のその先の処理もa_.hoge(b_,c_)とかでちゃんと処理委譲してるから毎回10数行レベルで、更に他に分割するって発想なかったわ。
2019/12/17(火) 21:26:42.16ID:sdUma5iy
!! はいかんぞ
2019/12/17(火) 21:41:44.72ID:Ef4LKPDY
みんないろいろなやり方で頑張ってるみたい
https://discuss.kotlinlang.org/t/kotlin-null-check-for-multiple-nullable-vars/1946
https://stackoverflow.com/questions/35513636/
2019/12/18(水) 01:11:24.71ID:Kzz0aLWj
nullチェックのガード節後に、スマートキャストが効けばいいわけだな
2019/12/18(水) 02:07:44.40ID:J0mER5OC
あたたたたたたた!!
2019/12/19(木) 00:36:56.60ID:pvCX0U01
あたたたたたたた?.let {
}
2019/12/19(木) 08:27:47.53ID:0eo+DnKB
みなさん
今日からKotlinを目指す事になった者です
よろしくお願いします
2019/12/19(木) 08:45:53.31ID:xYioGlNJ
kotlinを目指す
java始めたってことか?
2019/12/19(木) 08:55:17.26ID:0eo+DnKB
>>509
え?
Kotlinって言語の事じゃなかったんですか!?
てっきり言語かと
2019/12/19(木) 08:56:43.83ID:0eo+DnKB
やっぱりプログラミング言語で合ってるじゃないですか
初心者をいじめないで下さいよ
2019/12/19(木) 08:57:14.39ID:0eo+DnKB
ID:xYioGlNJをNGにした
2019/12/19(木) 09:10:42.29ID:sBMQ4GMS
kotlin始めましたならわかる
kotlin目指したらhallo world書いたら目標到達じゃないか
2019/12/19(木) 09:11:54.91ID:0eo+DnKB
>>513
Kotlin始めました
2019/12/19(木) 09:14:19.85ID:0eo+DnKB
>>513
でもまだ本が届いてないんです!
かといってプロゲートを調べたらKotlinがないしドットインストールを調べたらクッソ高ぇし
ヨ■■■で
作って楽しむプログラミング Androidアプリ超入門―Android Studio3.3 & Kotlin1.3で学ぶはじめてのスマホアプリ作成
って本をポチりました
2019/12/19(木) 09:15:16.14ID:0eo+DnKB
>>513
こんな状態で僕はKotlinを始めている事になるのでしょうか!?
2019/12/19(木) 11:32:38.18ID:5d66kii1
思い込みが大事
2019/12/19(木) 12:36:14.53ID:DRlK3voY
>>516
なってるよ
だからもう書き込まないでね
519デフォルトの名無しさん
垢版 |
2019/12/19(木) 12:51:05.10ID:0uPukb6z
>>514
そんなこと書いた張り紙がラーメン屋にさりげなく貼られてたらどうしよう
2019/12/19(木) 13:37:11.92ID:0eo+DnKB
>>509
すいませんでした
調べたらKotlinの源がJavaという事が判明しました
NGIDを解除しました
ですから今はまずプロゲートでJavaをやってます
2019/12/19(木) 13:41:10.68ID:0eo+DnKB
オンライン講座やアプリにカネをかけたら負けだと思っているのでJavaの本もポチりました
「Java1年生―体験してわかる!会話でまなべる!プログラミングのしくみ」
まずはこれを読んでから
「作って楽しむプログラミング Androidアプリ超入門―Android Studio3.3 & Kotlin1.3で学ぶはじめてのスマホアプリ作成」
を読む事にしました

アデュー
522デフォルトの名無しさん
垢版 |
2019/12/19(木) 13:48:14.38ID:+cpLTGtZ
逆やろ
本買ったら負け
ほぼオンラインで事足りる
2019/12/19(木) 13:58:35.22ID:0eo+DnKB
>>522
俺たちは理解力ゼロの人間だから
2019/12/19(木) 14:25:11.21ID:dMnFAlGo
各言語のスッキリシリーズを生み出した、伝説の本!
まずこの本で、オブジェクト指向を学ぶ。
スッキリわかる Java入門 第2版、2014

その後に、太郎本をやるのが定番!
Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016
2019/12/19(木) 15:34:22.45ID:Cn4tHGlw
>>515
たぶん開発環境があってないから楽しめないと思う
サンプル系の本は苦しみながら修正して作るものだと覚悟して望んでください
そうすればとてもいい本です
526デフォルトの名無しさん
垢版 |
2019/12/19(木) 16:26:30.93ID:0uPukb6z
>>522
そういや動画はわかりやすいと誰かが書いてたな。俺はわざわざ動画探して見ないけど。
2019/12/19(木) 19:30:40.54ID:lI3TBUYc
手動かしてたら覚える
本も動画もメンターもいらなかった
2019/12/19(木) 21:42:53.35ID:+kCyq/oE
勉強してプログラミングを覚えてからアプリを作るっていう考えがそもそも間違い
まず作りたいものがあるべきでその作りたいものを作るために必要な知識を
都度調べて問題の解決を繰り返すという方法で進むべき
作りたいものがないなら向いてないからプログラミングなんかやめてしまえ時間の無駄
2019/12/19(木) 22:02:46.62ID:rHJ8IYKv
まあ、そう言わんでも
君が数学を学んでいた頃、数学でやりたかったことあったの?
2019/12/19(木) 22:20:55.18ID:57XsBiPj
回転機能とワイヤーフレーム3Dでドヤってたら
あっという間に世間はポリゴンだのテクスチャだのバンプマッピングだの

ほんの数年の間の話
2019/12/19(木) 22:23:45.85ID:WqEVCHn0
大体アプリを作るのに必要な知識って言語の文法だけじゃない
Android SDKの知識も必要だし設計もMVVMとかfluxとかいろいろある
今の主流の外部ライブラリが何かとか非同期処理の実装はどうするか
Firebaseとかも活用した方がいいだろう
必要な知識が広すぎるのに目的もなくただ漠然と必要そうだとつまみ食いしてるだけで
あっという間に時間は終わっていく
大体5年もすればソフトウェアの世界は一変する
結局何も生み出せないまま技術に振り回されて時間が過ぎていくだけ
2019/12/19(木) 23:03:29.10ID:rHJ8IYKv
ふーん、偉いんだね
2019/12/19(木) 23:26:51.07ID:Cn4tHGlw
さっき気がついたんだけど
kotlinってimportしなくなった?不要なの?
Math.sin/cos/tan使ってもimportせずに使えてなんか変な感じです
2019/12/20(金) 06:46:42.42ID:YAC9G70z
>>533
https://kotlinlang.org/docs/reference/packages.html#default-imports

Javaでも java.lang.* (StringやMathなど) はインポート書かずに使える
2019/12/20(金) 10:39:15.14ID:JC7V0cWR
1.4でkotlin/nativeが爆速になってgoが死亡する世界線に行きたい
2019/12/20(金) 19:57:21.77ID:fz/tpFJr
誰かが1000億円の間違いしなかった世界がいい
今更Kotlinとか付け焼刃
537デフォルトの名無しさん
垢版 |
2019/12/20(金) 21:49:59.43ID:BqL6wPJ0
>>528
その通り。

まあしかしそれ言ったら学校教育は完全にダメだね。
538デフォルトの名無しさん
垢版 |
2019/12/21(土) 15:23:12.50ID:z0W1zCos
>>536
何の話?
539デフォルトの名無しさん
垢版 |
2019/12/21(土) 15:26:06.69ID:z0W1zCos
>>533
俺は変な感じがしない。なぜならJavaの頃からそのように使っているからだ。というかむしろそうでない方に違和感がある。
2019/12/22(日) 00:16:19.54ID:tkZGS0uw
>>538
本人ではないが>>536はJavaに最初からnulll(=1000億円の間違い)がなかった世界線に行きたいらしい。
2019/12/22(日) 01:17:50.71ID:lJarWdBZ
Union typeないの?
2019/12/22(日) 02:55:53.04ID:lBW/6Z3k
union って、C言語の union のこと? そういうのはないね。自分で無理矢理 Byte 配列に詰め込むのなら出来るが。
2019/12/22(日) 03:55:07.63ID:buP4BnNs
>>541
sealed class
2019/12/22(日) 07:09:03.62ID:tHQUUh7m
こういうやつでしょ
 var a : (String | List<Int>) = "aaa"
 a = listOf(10)
無いよ
2019/12/22(日) 17:46:16.29ID:buP4BnNs
sealed class Either<L, R>{
class Left<L, R>(val value: L): Either<L, R>()
class Right<L, R>(val value: R): Either<L, R>()
}

var a: Either<String, List<Int>> = Either.Left(“foo”)

https://pl.kotl.in/1oWpsAGCs

KotlinはJavaの足枷が重いから劇的に使いやすくなることはなさそう
2019/12/22(日) 22:24:55.21ID:qcLf379+
Union typeをサポートするとString?型もString | nullの略記でしかなくなるのだろうか
547デフォルトの名無しさん
垢版 |
2019/12/23(月) 13:25:26.95ID:8tSOZ4fL
しかしnullは型の名前ではないな。
2019/12/23(月) 21:19:46.42ID:UCqRJFPo
Unitと同じくオブジェクト宣言にすれば型としても値としても使える

TypeScriptのようにリテラル型という方式もあるけど
function f(): string | null | 10 { return 10; }
2019/12/23(月) 22:41:55.78ID:38BjLmtU
sealed classってinterfaceを持たないfinalなクラスをEither型には出来ないってことであってる?
2019/12/23(月) 22:55:01.39ID:4g9tMDJ4
GraphQL使ってるとunion欲しくなるよな
551デフォルトの名無しさん
垢版 |
2020/01/01(水) 00:07:09.43ID:fUaq4dOi
あけましておめでとうございます。
ことりんもよろしくおねがいします。
2020/01/01(水) 01:20:42.00ID:GmQkVq6D
Kotlin飛躍の年になれば良いな
2020/01/01(水) 16:57:33.69ID:GoZXP4nz
マルチプラットフォームの改善来ないかな
2020/01/03(金) 14:40:28.98ID:cH4r0C2y
>>554
どんな感じで?
2020/01/03(金) 17:40:31.87ID:ekbnoNnk
自分に安価してどうするよ\(^o^)/
2020/01/03(金) 22:30:37.55ID:UvyQWypU
>>556
面目ない
557デフォルトの名無しさん
垢版 |
2020/01/04(土) 10:36:41.93ID:trUJS7QS
自己再帰禁止
2020/01/04(土) 11:20:27.49ID:qTzaefKe
再帰関数見るとスッと入ってこなくてウッて毎回なる
2020/01/05(日) 02:42:41.09ID:Sr2nXWfX
素養がないから死ね
560デフォルトの名無しさん
垢版 |
2020/01/05(日) 19:42:27.74ID:YU7sLweA
そよそよ
2020/01/05(日) 20:51:47.31ID:QM2lp1QM
素養クラスに、拡張プロパティで付け加え!
2020/01/06(月) 15:47:29.78ID:26y+agJu
素養とかいらんやろ。慣れや
2020/01/06(月) 22:45:33.84ID:MYKIKe5Z
大学のC言語の授業で2分木の深さ優先探索と幅優先探索を再帰関数で書かされたなあ
2020/01/07(火) 00:31:39.93ID:hqMcZlsr
言語の名前がかわいいというだけの理由でkotlinを勉強し始めました。
書きやすくていいですね!
2020/01/07(火) 11:18:31.53ID:R7wg2P50
PCの気晴らし2Dゲームやスマホアプリやかんたんゲーム作ろうかなーと思ってKotlin始めたのだけど、
微妙絶妙にメインストリームから外れて手間が合わんのだな
Unity的なゲームじゃないスマホアプリはうまく合ってる気はするが
2020/01/07(火) 12:12:12.94ID:muv+YNpY
C#相手だと言語的なアドバンテージはほとんど無いから勝ち目はないわな
2020/01/07(火) 12:29:43.03ID:QGWNDMvz
サーバー書こうぜ
2020/01/07(火) 12:41:10.88ID:v179ZXJD
要は「めっちゃ書きやすいJava」なので、Javaのときに特段盛り上がってなかった分野はKotlinでも特段盛り上がってはいない
Kotlinで利用者が流入爆増してKotlin独自のライブラリが各分野でじゃんじゃん作られるみたいな未来予想図もあったのだが、まあ、世の中なかなか冷静で頼もしい限りではある
2020/01/07(火) 13:06:26.78ID:muv+YNpY
レベルS プラットフォームを問わずKotlinが広く利用される
レベルA Kotlinを使うためにJavaプラットフォームが採用される
レベルB KotlinによってJavaプラットフォームの採用障壁が下がる
レベルC Kotlinによって既存のJava開発者の満足度が改善する

今のところせいぜいCだな
2020/01/07(火) 20:56:09.81ID:LyNNZa7r
Javaやってたら取っつきやすいみたいな扱いされてるけどC#の方が覚えやすくね?
2020/01/07(火) 21:10:11.11ID:mPccAZYV
kotlinってandroid専用言語という位置づけだと思っていいですか?
Webでも積極的に使われている言語ですか?
2020/01/07(火) 22:30:31.70ID:I2Ol6zE2
現状ではandroid専用。Java代替目指してる言語だからwebで使うポテンシャルはあるけど、その用途で流行ってるとは言い難い。
573デフォルトの名無しさん
垢版 |
2020/01/08(水) 14:29:53.70ID:HfJa1tF4
流行ってないだけで専用というわけでもない。
574デフォルトの名無しさん
垢版 |
2020/01/08(水) 14:36:25.48ID:HfJa1tF4
ま、しかし、みんながやってると自分もやるみたいなのはやはり日本人的な感じがするな。
保守的と言うか開拓精神がないというか。だから悪いということはないけどな。
自分が率先して使って自分を中心に世界中に広めるみたいなこともできるかも知れないのだが、そういう考えが最初から起こらないぐらい頭が固くなってガチガチに保守化していると。
2020/01/08(水) 14:43:05.37ID:266dC9mX
「〇〇を作りたいのでKotlinを使う」の〇〇に入るのは非ゲームAndroidアプリ、ではある
現状これ以外で使うのは趣味とか修行とか苦行とかバカとかなんかそんな感じ
Kotlinは一応だいたいのものは作れるには作れるので、Kotlinで作ってみたいという情熱(または狭窄)で個人でいろんなもの作ること自体は別に止めない
手段が目的と化してるという点以外は問題はないからね
みんなあまりやらないことをやるという点では面白いはずだとは思うよ
どっすかRubyの二の舞
2020/01/08(水) 15:08:09.71ID:NG22H+Rz
>>574
欧米の人って明確な目的があって、それに合う道具なら古いものも新しいものも使う印象
日本列島に生息するアーリーアダプタ猿はたいてい手段と目的が逆転していて、
新しいものを触っても「やってみた」で終わるからそれ以上の発展がない
2020/01/08(水) 20:25:58.31ID:txej2vin
有名人が使ってるから使おう・それが正しいみたいのがあるね
2020/01/08(水) 20:42:10.23ID:UOnWj2Kr
>>577
その後誰も使わなくなるものに手を出して半年で天を仰ぐ事例は事欠かない
だったらちょっとか有名人にも頼りたくなるというものだ
2020/01/08(水) 21:44:46.93ID:IfVHQg0W
その、「失敗したらどうしよう・・失敗しないように安全パイを狙おう」ていう発想が日本人ていう話
580デフォルトの名無しさん
垢版 |
2020/01/08(水) 21:51:52.21ID:SxJLgebM
自分が有名人になろうという発想もない。
2020/01/08(水) 22:07:34.74ID:sWXWn+ML
まぁ結局はjavaなんだから、だったらjavaのままでいいじゃんで終わってそう。
2020/01/08(水) 22:07:56.44ID:l2iB3kWY
webなんかどうでもいい
今やブラウザからよりもアプリからの方がインタネットアクセスしてる人多い
サーバー側処理もこれから firebase的なものが主流になって独自実装はなくなっていく
Android専用とは即ち最強ということ
2020/01/09(木) 13:41:59.25ID:+yIYUPGX
え?
2020/01/09(木) 13:54:17.66ID:+yE1fb2H
サーバーサイドがDB直結で済むようなアプリなんてミニゲームくらいだろ
2020/01/09(木) 17:44:04.75ID:ZcunmaZD
firestoreってrate limitやIP banみたいなこと課金なしにできないの?
セキュリティルールで、他人のデータおもらしや、入力データ検証はできるけど。個人で使うとrate limitみたいのないと課金攻撃食らうのが怖い小心者の俺。
2020/01/09(木) 20:13:01.82ID:kyHcRJMZ
貧乏人のくせにうるせえな
ガキはオフラインでlampでもやってろ
2020/01/09(木) 22:32:03.91ID:yEewS3L2
サーバーエンジニアは時代遅れ
2020/01/09(木) 22:37:38.83ID:Oq4NA2+9
まあ、金払って押しつけるのが正しくはある
自社メールサーバーを運営するのが今や愚かな行為であるのと同じ
2020/01/09(木) 22:47:26.06ID:yEewS3L2
サーバーサイドは原始時代の技術
590デフォルトの名無しさん
垢版 |
2020/01/10(金) 19:52:27.62ID:GhmlZgNK
かといってサーバなしにはできない
2020/01/10(金) 20:48:21.61ID:vzH+znXR
クラウドもサーバだっつの
2020/01/10(金) 21:12:38.40ID:akcZyu4v
flutterきてるからもう色々諦めて、サーバーサイドkotlinに注力して欲しい。。
2020/01/10(金) 22:16:50.90ID:9vGWh78v
結局javaと同じ道筋を辿るのか。
2020/01/10(金) 23:00:11.09ID:i7XOn7b7
クロスプラットフォームは全部糞
そもそもDartが糞
ちょうど今日はてぶでflutterの記事を読んだがやっぱりDartが糞
ttps://hachibeechan.hateblo.jp/entry/flutter-is-great-good-but-dart-is-dirt
結局サンプルアプリみたいな見た目のしょぼいごみアプリしか作れないのがオチ
595デフォルトの名無しさん
垢版 |
2020/01/13(月) 10:33:07.31ID:2cuyt0IW
Dartが糞なのはわかる。でもflutterがきてるのも事実。
もう「どこでもkotlin」とか言ってる場合じゃない。
このままだとandroid->fuchsia移行と共にkotlinは終わる。
なのでjava,goを押しのけて静的サーバーサイド言語の第一候補になるしか道はないと思う
2020/01/13(月) 11:34:02.40ID:tegDOPxe
と思うけど、googleはなぜかKotlin版flutterのJetpack Composeを今年ベータリリース?に向けて作業中。
Jetpack Composeは最初はandroid向けかもしれんが、kotlinはnativeでクロスプラットホームになるし、Jetpack Composeも将来いつの間にかクロスプラットホームになったり?
2020/01/13(月) 11:36:48.21ID:tegDOPxe
まぁ、composeはクロスプラットホームにならなくてもcomposeの存在はかなりflutterへの移行を押し留めることになりそう。
もちろんflutterはクロスプラットホームだけど。
2020/01/13(月) 12:51:17.02ID:E4iJfsMG
K/JVMとK/Nチームがあまり仲良くない感じだったし
K/Nの設計上の戦略ミスもあって先は厳しい
企業リソースが潤沢でないことも大きいんだろうけど
599デフォルトの名無しさん
垢版 |
2020/01/13(月) 13:45:04.59ID:iUioslZh
相変わらず世間で流行るかどうかばかりを気にしている。世間に依存して頼りすぎている。その結果振り回され続けてしまう。
2020/01/13(月) 19:31:48.26ID:m0VL2/Pu
好きなやつ使え
2020/01/14(火) 00:16:09.33ID:d22nWjNN
俺なんて世間の流行なんか無視して我が道をいってるから
メインはDelphiパスカルだぜ!
2020/01/14(火) 14:03:03.86ID:oEvobycm
給料上がるのならなんでもいいわ
2020/01/14(火) 15:44:20.83ID:/0srrHag
趣味なら何でもいいんだろうけど仕事なら需要を考慮しないと糞仕事で薄給とかやってられないでしょ
604デフォルトの名無しさん
垢版 |
2020/01/14(火) 17:03:38.63ID:65PQRowg
流行ってるやつの方が情報多くて学習し易いというのはあるな。

そういえば今はまだJavaが結構使われてるようだがCも増えたんだってな。組み込み関係が増えたせいらしい。
605デフォルトの名無しさん
垢版 |
2020/01/14(火) 17:19:04.63ID:65PQRowg
これこれ。

2019年に成長したプログラミング言語ランキング、第1位は?
https://news.mynavi.jp/article/20200110-952052/
606デフォルトの名無しさん
垢版 |
2020/01/14(火) 17:28:10.81ID:65PQRowg
あ、でも、こんなページもみつけてしまった。

TIOBE Indexはあまり参考にすべきでない
https://qiita.com/kmizu/items/b07f1dcad63f104248c5
2020/01/14(火) 18:56:50.06ID:2qGhUMn5
>>602
給料あげたかったら、プログラマーは卒業しないとね
2020/01/14(火) 20:26:30.45ID:A0w7ZLmM
日本はクソだ
2020/01/14(火) 20:39:05.13ID:exUCncO7
>>601
自分が楽しめるならレガシーシステムのお守役としてニッチ極めるのは全然ありだべ
2020/01/15(水) 19:23:37.93ID:xHaLDFMG
exposedのDAOとDSLってどっち使った方がいいんですか?
611デフォルトの名無しさん
垢版 |
2020/01/16(木) 18:03:07.20ID:zJukF7BC
>>608
いかにも。お前はクソだ。
2020/01/18(土) 20:25:30.67ID:AwYhHf6y
流行るか流行らないなんてどうでもいいんだよ
やりたいことをやれるかどうか
JavaScript界隈の気持ち悪いやつがflutterは流行らないといってるけど
流行ったらどういう態度にでるのか見てみたいものだ
2020/01/18(土) 21:28:55.28ID:uMWc60b6
全部自力で作るわってレベルの奴ならそれでいいけど
流行りはコミュニティ規模、延いてはライブラリや関連技術の発展に繋がるわけでさ

何はともあれIOインターフェースのデファクトスタンダードを早くしろください!

https://github.com/ktorio/ktor/tree/master/ktor-io/common/src/io/ktor/utils/io/core
https://github.com/Kotlin/kotlinx.serialization/tree/master/runtime/commonMain/src/kotlinx/io
https://github.com/Kotlin/kotlinx-io/tree/master/core/commonMain/src/kotlinx/io
2020/01/21(火) 20:20:54.27ID:YewYG19G
KotlinのコンパイラはKotlinで書かれてるの?それともJava?
2020/01/22(水) 13:59:16.59ID:qc9Q1TGx
Javaに決まっているだろ
Kotlinで書かれてたらどうやってコンパイラをコンパイルするのだ
鶏は卵からしか生まれないのだ
2020/01/22(水) 14:59:42.36ID:rj2HkyIb
コンパイラがどの言語で書かれてるかを質問する人よくいるけど
知ったところで何か意味あるの?
617デフォルトの名無しさん
垢版 |
2020/01/22(水) 16:21:05.17ID:3jquT0bn
>>615
最初はJavaで次からはKotlinに変換して自分で自分を記述する状態にしてるかもよ。するとその後はずっとKotlinでKotlinを書く状態になる。

昔はPASCALをPASCALで書いてハンドコンパイルしてから自身をコンパイルさせるなんての本当にあったようだけどな。
618デフォルトの名無しさん
垢版 |
2020/01/22(水) 16:22:45.42ID:3jquT0bn
>>616
コンパイラを作れる言語かどうかがわかる。

ということ以外の意味はないかな。
2020/01/22(水) 16:30:08.45ID:Ho7opIM1
最初は別言語で書かれるが、その後自身の言語で書き直すことはよくある
セルフホスティングと言ってGo,Rustなども達成している

成果物の動作環境で自身も動作可能になるので
Kotlin/JSがセルフホスティングなら
babel/standaloneのようにブラウザ上でコンパイルが可能になったり
Kotlin/NativeのビルドにJVMが不要になったりする

実用上はJVM需要が主だしGradleが便利なので変えないだろうけど
2020/01/22(水) 16:31:19.66ID:Ho7opIM1
>>614
初期コンパイラはJavaで書かれて新規部分は基本Kotlinで書かれてる
置き換えたい気はあるようだけどJavaのコードはかなり残ってる

以下から拡張子の混在が見て取れると思う
https://github.com/JetBrains/kotlin/tree/master/compiler/backend/src/org/jetbrains/kotlin/codegen
2020/01/22(水) 16:48:14.42ID:rj2HkyIb
>>618
KotlinのコンパイラがJavaで作られたとしても
Kotlinがコンパイラを作れない言語ということにはならないと思うんだが
622デフォルトの名無しさん
垢版 |
2020/01/22(水) 17:03:14.84ID:54HMiZ6v
美人のまんこと豚のまんことどっちが良いかって豚の方が名器なら豚を選べば良い
気にすんな
2020/01/22(水) 17:04:15.03ID:uoDMOHZt
>>621が童貞だとしても、
>>621が性的不能ということにはならない
つまりこういうことだ
2020/01/22(水) 21:59:06.37ID:xBq5xtIj
>>620
詳しくありがとうございます!
2020/01/23(木) 18:56:14.34ID:GW8kqb26
kotlin1.4の展望を読んだんだけど、
「kotlin/nativeのコンパイル速度は、まだしばらく改善できません」
って言ってるのかな。。楽しみにしてたのに
2020/01/23(木) 19:18:12.78ID:Zw7yYSY7
まだ使い物になってないのに速度もクソもあるか
627デフォルトの名無しさん
垢版 |
2020/01/23(木) 21:18:33.10ID:G/hRyFJo
>>621
ならないね。実証できてないだけで。
2020/01/25(土) 19:02:48.90ID:tu9lbSH2
いままでバックエンドにIL採用してなかったのは不仲が原因・・・?
2020/01/26(日) 18:55:55.74ID:+mqmWgOA
そろそろ新しい本、出ないかな
待ってる
2020/01/26(日) 20:04:28.42ID:dHmJ8YkC
サーバーサイドの分厚い本出てほしい
2020/01/26(日) 20:35:36.28ID:trXW8RYw
コトリンの薄い本出してほしい
2020/01/26(日) 21:42:21.85ID:GytwJKGV
本来の意味の同人誌だな
633デフォルトの名無しさん
垢版 |
2020/01/26(日) 23:29:22.09ID:k2+mT4PN
自分で作れば良いのではないか?
2020/01/27(月) 00:26:33.19ID:dOEN/Dlw
今日もnull安全だから…プロパティに代入して欲しいの
2020/01/27(月) 10:04:25.03ID:5yIKV7tf
近所の本屋ではkotlinの棚にflutterが侵食してきている
kotlin本は必要だー!出せー!
636デフォルトの名無しさん
垢版 |
2020/01/27(月) 13:13:48.97ID:MAYcFInA
みんなで薄い本を出しまくろう
2020/01/27(月) 13:18:35.57ID:ePx3bfA1
薄い紙の本?
誰が薄い髪やねん!
2020/01/27(月) 22:02:28.60ID:l6kTq6zA
      //
    / ./
    /  ./     パカ
   / ∩彡⌒ ミ 髪のはなし終わった?
   / .|(´・ω・`)_
  // |     ヽ/
  " ̄ ̄ ̄ ̄"∪
2020/01/28(火) 00:20:15.54ID:BrmWR/YB
通話中でもバックグランドで処理するアプリとか、スマートウォッチ向けアプリ作ってみたい
640デフォルトの名無しさん
垢版 |
2020/01/28(火) 04:30:56.90ID:ms/fb6kS
じゃあ厚い紙の本で
641デフォルトの名無しさん
垢版 |
2020/01/28(火) 04:32:09.25ID:ms/fb6kS
>>639
どうぞ。遠慮なく。思う存分作ってよいぞ。どんどん作ってくれたまへ。
2020/01/28(火) 08:26:16.34ID:BrmWR/YB
できぬのだ
だから本出してくれ
643デフォルトの名無しさん
垢版 |
2020/01/28(火) 12:56:22.85ID:Bdltl+Ea
大丈夫。お前ならできる。俺は信じてるぞ。
とりあえずネットで検索しろ。
2020/01/28(火) 16:04:32.98ID:ZibUblYk
よし、待ってろ!
645デフォルトの名無しさん
垢版 |
2020/01/29(水) 09:57:21.18ID:Ji+gdkxY
完成したらその事を本に書いて出せ。
Amazonの電子書籍なら簡単な審査だけで出せる。
2020/02/01(土) 16:27:53.15ID:t4FihBT6
やはりできぬ!
647デフォルトの名無しさん
垢版 |
2020/02/03(月) 02:56:28.79ID:gyzZZyLf
いやできる。絶対に完璧にできる。頑張れ。
2020/02/03(月) 16:12:29.25ID:AhEvcPzj
むーりー
649デフォルトの名無しさん
垢版 |
2020/02/03(月) 16:52:51.88ID:EEPHYlO9
ヤレばデキる
650デフォルトの名無しさん
垢版 |
2020/02/05(水) 17:46:33.75ID:9nK7Yle0
スマートキャストで、これは問題なくできる。

val x: Any = 0.3
if (x is Double) println(x + 0.2)

しかしこれはできなかった。

val x2: List<Any> = listOf(0.3)
if (x2[0] is Double) println(x2[0] + 0.2)

足し算する前に as Double でキャストすると問題なし。

if (x2[0] is Double) println(x2[0] as Double + 0.2)

なんで? val で List だから内容が変更されることはない筈で、スマートキャストできそうに見えるんだけど。
Listの中身まで推論してられっかボケってこと?
651デフォルトの名無しさん
垢版 |
2020/02/05(水) 17:49:43.62ID:9nK7Yle0
Listに色々なクラスのインスタンス入れて返すメソッドを思い付いたのだがKotlinはスマートキャスト使えるから楽に書けるかなと思ったんだよね。
で、試してみてわかったんだけど、これだとJavaと大差ないね。
2020/02/05(水) 17:54:45.88ID:xJPwpbdq
>>650
[0]は.get(0)のシンタックスシュガー
でgetが要素を変更しない保証がない
653デフォルトの名無しさん
垢版 |
2020/02/05(水) 19:35:44.69ID:gUkl9CZ9
covariantの問題だから、将来的にもそこは変わないと思う。
2020/02/05(水) 20:28:21.91ID:sFY5zr3G
.get()がthisを変更しないことを
関数定義時に保証する文法を追加すれば解決可能では?

val y = x[i]で一旦受ければいいから
JBの言語改善にかける意欲の低さを考えれば超期待薄
2020/02/06(木) 00:02:18.36ID:E0QPZagj
> Listに色々なクラスのインスタンス入れて返すメソッド

これのメリットがよく分からんけど List<Any> に対して get(i) + cast する拡張関数作ればいいんじゃね
2020/02/06(木) 01:30:37.85ID:hv8rQXh6
リストにいろいろと聞くとつい、生Listを構造体代わりにする昔ながらのクソコードを思い出す
あのアンチパターンに名前はないのだろうか
静的ならDestructuring Declarationsを使い動的ならSequenceを返してitをスマートキャストすればいいのでは
2020/02/06(木) 01:34:47.55ID:c8/ceEGP
>>650 >>654
メソッドを2回呼んで同じ値を返す保証は結構難しい
言語レベルでのメモ化や参照透過性、所有権システムなどが必要になる

フロー解析で出来たところでコンパイル可否がlistOfの実装に依存して
柔軟性もコンパイル速度も悪化するから
Kotlinディスカッションに投げても多分改悪判定される

valやletで十分だと思うけどな
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) }
}
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"が実行されている可能性が微粒子レベルで存在するのかなと。
2020/02/06(木) 09:49:06.64ID:hv8rQXh6
data classなんかの読み取り専用プロパティへの参照なら同じ書き方でスマートキャストできる
そのプロパティを参照するだけのメソッドやカスタムgetterを経由したら不可
コンパイラ設計上、メソッドの副作用がないことを無制限に推論することは時間的制約の面で不可能で、どこかで線引きするしかない
リフレクションで変数を書き換えてるかもしれない
その合理的な線引きの範囲がval値への参照なんだと思う
661デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:57:34.37ID:/RKPlkxl
>>659
あ、そーか。その可能性あるな。
Listの皮を被ったMutableListね。
2020/02/06(木) 19:48:08.86ID:RMCcx4bu
kotlinはc++みたいな玄人向けのクソ言語になろうとしてるのか?複雑すぎやろ。コルーチンでどうやってエラー伝えればいいんだ
https://qrunch.net/@kyoutoday/entries/64IYC8Ye81WyzA5L
2020/02/06(木) 22:01:06.64ID:cD2QUy+I
Eitherに一票
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") }

}
2020/02/07(金) 03:04:38.78ID:nyDcvFOU
runBlockingって、名前の通りスレッドブロックするん?だったらさすがに実際そんな使わないだろ。launch,asyncなどのコルーチンビルダーで例外キャッチできないと
2020/02/07(金) 03:18:27.55ID:nyDcvFOU
>>662と似た記事https://qiita.com/kencharos/items/6fd0a9e92363b08c0340

c#のasync/awaitレベルで十分なのにやり過ぎkotlin...
2020/02/07(金) 06:43:46.22ID:cvaigXbo
>>665
基礎無しで応用を全部使おうとして混乱してるように見える
Kotlinに関しては道筋のドキュメント不足が原因かもしれない

> launch,asyncなどのコルーチンビルダーで例外キャッチできないと
C#のasyncやJavaScriptのPromiseでも変わらんよ

言語に限らず非同期処理の基礎知識として
コールバック、待機/通知、イベントループをまず学ぶべき
2020/02/07(金) 06:46:22.97ID:cvaigXbo
エラー処理については
まず、正常値/エラー値/多値/例外 はどれも
結果(処理への入力に対する出力)の一形態に過ぎないというところからスタート
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を受けわたせばいいのかな・・
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?) { }
}

とまぁこんな感じになっちまうけどいいか・・
他の言語なら普通に例外を伝搬させられるが・・?
2020/02/07(金) 08:11:00.57ID:lRgw/j43
と、coroutine境界の内外でどうエラーの例外を伝えればいいか悩んでた次第です・・
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コールバック
2020/02/07(金) 09:11:43.28ID:cvaigXbo
>>670
> 他の言語なら普通に例外を伝搬させられる
まずここに勘違いがある
Kotlinに限らず同期メソッドと非同期メソッド間で
待機やコールバック無しに伝搬することは無い

main自体を非同期メソッドにしているか
ブロックする呼び出しをしていることに気付いていないだけ
2020/02/07(金) 09:21:26.29ID:lRgw/j43
>>673
うん。だから、他の言語でmainメソッドを非同期メソッドにして、普通にtry-catchで
例外捕まえれるけど、kotlinだと無理だから他の方法あるのかな??って
話をしてたんですけど・・・
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") }
}
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 を使えば良い
2020/02/09(日) 13:51:35.05ID:nzKzkqWJ
Kotlin 〜地図にない場所〜
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
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
2020/02/12(水) 23:27:40.61ID:KU1jPpQ4
Jupyterとか手広げすぎだろ...
https://kotlinlang.org/docs/reference/data-science-overview.html
2020/02/13(木) 00:51:57.99ID:29zvuXGO
>>680
ビッグデータはJavaが強い分野で、オワScalaの代替としてKotlinを推すのはわりと自然な戦略
まあJupyterを全面に押し出すのはちょっと的外れだが
2020/02/14(金) 22:21:03.52ID:QVXriQlN
リプ大量で草
お前らは当然valも変更される前提でコード書いてるよな?
https://twitter.com/kotlin/status/1227993505332682753
https://twitter.com/5chan_nel (5ch newer account)
2020/02/14(金) 22:57:32.18ID:ZYSFhOo2
>>682
バグかな。1.4リリースまでには抹殺されることを祈る。
valの値がミュータブルオブジェクトだったりするのはありえることだから、常に警戒はしている。
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がオーバーライドされて固定値じゃなくなることに騒いでるのと同じ
2020/02/14(金) 23:34:40.26ID:08nJ6zct
kotlinのvalは「valで定義されたものに=を使われていたら、コンパイル時にエラー出して止める」というご利益しかないよ
動作的にイミュータブルにする機能はないよ
2020/02/15(土) 00:55:36.25ID:/QpUFa9s
valの前にわざわざopenを書いてる以上、こういう拡張への意図があったということだよ
慌てなくても怖いならopenをむやみに書かなければそれでいい
継承がカプセル化を破壊するというのは昔Effective Javaで習ったろ
これはその端的な例で、だからこそKotlinはopenを明示しないと継承できない道を選んでる
2020/02/19(水) 22:25:28.94ID:CCUNbFwX
interface の val も実装を var にできるしな
2020/02/23(日) 23:35:56.01ID:gLwCsTk/
関数の引数をラムダ式にして、それをnullableにしたいんですがどう書いたらいいですか

fun fuck(abc: () -> Unit) {
}

みたいにして、呼び出す方は

fuck({
})

でも

fuck()

でも良いようにしたいんですが
2020/02/23(日) 23:39:09.88ID:gLwCsTk/
fun fuck((abc: () -> Unit)? = null) {
}

でできましたありがとうございました!

呼び出す方は

abc?.invoke()

としたら良いようですね
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アプリ開発のアレコレ
2020/02/27(木) 18:40:34.96ID:SgVrqVkS
>>691
去年に出たのを見ると、超初心者向けのが若干少ない気がするね
2020/02/29(土) 19:31:55.24ID:PZdDBNK2
Kotlin始めました。導入しましたって話聞く機会が減ってきた悲しい。
2020/02/29(土) 20:08:01.92ID:46OW7AmV
結局残るのは考えがしっかりした言語だ
小粋なのははやりすたりが激しい

MSはおかしい
2020/02/29(土) 20:38:11.60ID:JJ549bP/
KotlinてMSが作ったの?
2020/02/29(土) 22:40:18.84ID:ih/BSqRh
まあC#から拝借した機能の多さを考えるとMSが作ったと言えなくもない
2020/03/01(日) 11:08:43.11ID:70xHYE3h
kotlinで関数型を受け付けるメソッドに、特定のクラスのメソッドを渡したいのですがどうすればいいでしょうか??
fun registerHandler(handler: (Int, Int) -> Unit)
にhanlderと同じシグニチャを持つメソッド(例えばhoge)を持つクラス(例えばFoo)を作って
val a = Foo()
registerHandler(a.hoge)
みたいなことをやりたいのですがどうすればいいでしょうか?
要するにコードを再利用したいのです
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
2020/03/01(日) 14:23:26.97ID:70xHYE3h
>>698
ありがとうございます
2020/03/04(水) 05:03:33.71ID:HcJR2/8S
Kotlinで競プロやろうぜ

https://kotlinlang.org/docs/tutorials/competitive-programming.html
701デフォルトの名無しさん
垢版 |
2020/03/04(水) 23:04:30.12ID:G7V9iIFO
日本語に翻訳してくれ。
2020/03/04(水) 23:19:14.25ID:4yioSA0z
Kotlin 1.3.70 Released
品質改善がメイン
2020/03/06(金) 07:06:53.15ID:Z/vcpuAM
smart castってvarに効くっけ
704デフォルトの名無しさん
垢版 |
2020/03/06(金) 09:22:52.49ID:7w4EZP5c
>>703
効いたと思うが、他スレッドから変更される可能性があるならダメなのでは?
2020/03/06(金) 11:32:22.77ID:xJXeOVO9
普通に書いていれば別スレッドから書き換えられるvarにsmartcastはできない
2020/03/06(金) 11:38:02.14ID:VtIZxMve
変数にもローカル変数やらいろいろあるし
ローカルは効きそう、インスタンス変数は無理だろう
2020/03/11(水) 00:08:05.10ID:IcorLBpl
IntellijでKotlinでJavaコード呼び出した時
どんなchecked Exception投げるか簡単に知る方法教えてください。
2020/03/12(木) 13:57:27.22ID:T8doL2Lc
何を言ってんだ?
シグニチャーを見ろ
2020/03/13(金) 19:20:51.87ID:GcLjhKTc
初めて触る言語がコトリンなんだが異端か?
2020/03/13(金) 21:32:38.08ID:YqqN4LBM
(・_・)フツウ
2020/03/14(土) 05:19:54.50ID:qmE7NC86
むしろ異端だったとしてなんかあんの?
2020/03/14(土) 08:26:54.32ID:AOabs0cu
Kotlinって単純にJavaの上位互換と考えていいんですかね?
それとも特定の用途ならJavaの方が優れてることもある?
2020/03/14(土) 08:50:35.96ID:uPAEOS5i
>>712
・とにかく即動ける開発者を大人数集めないといけない場合
・約1MBのアプリサイズ増加が許容出来ない場合
ならJavaかな
2020/03/14(土) 11:17:54.82ID:cJqY8aA1
>>711
俺は特別!
2020/03/14(土) 15:02:17.48ID:SYJjC+91
特別な俺に酔いしれる、アートなプログラミングをするスレ民にふさわしいな
716デフォルトの名無しさん
垢版 |
2020/03/15(日) 01:00:14.34ID:UPbVmx1a
異端だな。
Androidアプリ作ってる場合はまあ普通だが。
2020/03/15(日) 13:40:42.45ID:JeE8EKc6
アンドロイドアプリ作る案件でしか触ったことないけどアンドロイドアプリ以外でもこの言語使うことってどれくらいあるんだ?
フリーでいろんな会社のいろんな案件に携わってきたけどアンドロイドアプリ以外でこの言語選択してるシステムに出会ったことがない
718デフォルトの名無しさん
垢版 |
2020/03/15(日) 13:43:15.79ID:G4jfON4Y
SwiftもRustもそんな感じ
2020/03/15(日) 14:28:52.20ID:JeE8EKc6
アプリ制作専用言語という認識で差し支えないってことね
2020/03/15(日) 14:45:30.20ID:3NnqBxtE
2年前くらいの頃はサーバーサイドJavaも食いそうな勢いだったんだけど、見る影もないね
もうAndroidアプリ制作専用言語以上は何も期待できない
2020/03/15(日) 14:57:29.36ID:+eqDq3h/
何度も言われてるがベターJavaで、近代Java案件の置き換えが可能なのだが、
新規Java案件が今はもうAndroid非ゲームアプリくらいしかないため、結局Android非ゲームアプリくらいしか用途がない
もちろんかつてのJavaのように何を作っても構わないしなんでもだいたい作れるが、そもそもわざわざJavaで作る理由がもうないので…
2020/03/15(日) 15:54:52.18ID:uLtpsypH
う、うん…
2020/03/15(日) 19:04:24.46ID:U0exLU+5
javaの上位互換だからjava出来るならKotlinも直ぐ出来るって勘違いしてる人結構いるけど、
細かいところで書き方とか違うからそれなりに慣れるまで時間かかるよね
2020/03/15(日) 19:05:45.28ID:8Tu8byB5
まぁ何でもそうじゃね
2020/03/15(日) 19:14:18.96ID:AJhRJqKO
( ´゚д゚`)
2020/03/15(日) 19:24:15.07ID:W4rB3Afy
Javaはお固い分野でも新規に使われてるのに
縁がない人は頓珍漢な分析するよね
2020/03/15(日) 19:57:21.56ID:sgfXfD7p
Java<kotlinだけどそもそも新規でのJava需要が下がってきてるから流行らないって事か?
2020/03/15(日) 20:02:19.40ID:g43aymu7
>>726
「新規に使われてる」の解釈が違う
文字通りの意味じゃない
2020/03/15(日) 21:07:47.62ID:Sa9u1DCG
>>727
Java<Kotlinな業界ではサーバーサイドJVMは落ち目だね
世間一般には圧倒的にJava>Kotlin
2020/03/16(月) 00:53:01.45ID:hDAZpInh
>>728
どういうこと?
否定をするなら解説込みで欲しい
2020/03/17(火) 01:35:07.82ID:Aeuh89FK
かつてJavaは凄く人気が有った言語だから、エコシステムが物凄く大きい。
一方、KotlinはAndroid開発で使う人は使うと言う位置づけなのでは。
2020/03/17(火) 07:47:03.83ID:sU5dKoAT
エンタープライズでJavaを採用するような案件や環境は安定と安心が最優先すぎるのが逆風だと思う
Kotlinで生産性が上がると言われても移行の総コスト、安いコーダーが安定供給できるか
この先立ち消えたりJBがやらかしたりでKotlinコードが不良資産化しないかなど不安が大きい
おじさんを説得するには実績が欲しいがまだキャズムを越えない
越えて欲しいなあ
2020/03/17(火) 10:22:24.77ID:aozOj1qc
エンタープライズではテストと比べればコーディングの手間は無視できるし、
一発作り切ったら運用に移管して手を切るのが基本だからコードが冗長で見通しが悪いとかはあまり問題にならない
どう考えてもマイナー言語ロックインのリスクをペイしないよ
2020/03/17(火) 14:06:05.53ID:Aeuh89FK
KotlinはJavaとは宣言の書き方が前後逆になっただけの様な言語のイメージ。
それ以外でも何かは良くなっているかもしれないが、何かは悪くなっているだろうと予想され、敢えてJavaの代わりに使おうとは思えない。
KotlinはAndroidでは使えても、デスクトップでは難しいだろうが、
Javaなら、Swingを使えば、Win/Mac/Linuxで共通アプリが作れる。
昔はさらにここにブラウザ内のアプレットも加わっていたが、今はそれが動かなくなった。
ところが、アプレットをWasmとして復活させる動きも出ているようだから、プラットフォームは広い。
恐らくそのうちSwingもAndroidやiOSで動くようになるのではないか。
2020/03/17(火) 14:21:17.83ID:yigrTQzb
なんで思い込みのイメージだけで語るの
2020/03/17(火) 14:26:37.12ID:Aeuh89FK
>>733
短い簡単なプログラムなら、習いたての新しい言語でも作れるが、長くて複雑なプログラムには、十分に時間をかけて習熟した言語でないと作るのは難しい。
次々に生まれる新しい言語をニワカに学んでもいいプログラムを作るのは難しいのだ。
新しい言語では逆に間違ってしまったり、やりたいことを実現する方法が分からなくてそれを調べるために効率が下がることが多い。
Javaの言語仕様は、人気が有ったことからも分かるように昔から既に優れており、それはそれで一つの完成系をなしている。
根本的に新しい言語は一部だけは優れていても、どこかではむしろ劣っていることが多い。
一方でJavaはJavaで進化し続けている。
2020/03/17(火) 15:01:46.47ID:IQmvYlpF
だからなに?
2020/03/17(火) 15:04:23.46ID:+OGH67Oj
だから勉強したくないでござる
2020/03/17(火) 15:07:56.32ID:IQmvYlpF
そういうことなんだろな。
JAVAだけやっとけば安心なんだ!って自分に言い聞かせてるようにしか見えん
2020/03/17(火) 15:52:42.79ID:Aeuh89FK
言語ばかり学んでいてもな。
2020/03/17(火) 15:56:41.70ID:aozOj1qc
>>739
そういう観点でいえば、学ぶべきはKotlinじゃなくてGoやC#などの非JVM系言語だろう
Kotlinを選んでいる時点で、自分もまたコンフォートゾーンに留まろうとしている平凡な人間の一員であることを自覚したほうがいいぞ
2020/03/17(火) 16:00:09.84ID:Aeuh89FK
どんなに優秀な人でも、あらゆる言語やツールキットを学ぶほどの時間は無いから、学ぶべきものを取捨選択や優先順位付けが重要。
一つの言語だけを学んで、プログラムに必要ななんらかの(専門的な)知識を学ぶのも立派な選択だ。
2020/03/17(火) 16:05:41.43ID:yigrTQzb
令和のstaticおじさん(この方はJavaおじさん)かな
744デフォルトの名無しさん
垢版 |
2020/03/17(火) 16:29:11.06ID:XIub247n
ねぇねぇScalaって息してる?Kotlinとどっちがすごい?
2020/03/17(火) 16:45:02.15ID:yigrTQzb
息はしているがどっちが凄いかは知らん

ScalaのコードをJavaScriptのコードに変換する「Scala.js 1.0」リリース
https://thinkit.co.jp/news/bn/17374
2020/03/17(火) 16:46:06.62ID:Aeuh89FK
>>743
何でも学べばよいと言うわけではない。
優先順位を付けられない人は非効率。
2020/03/17(火) 16:49:51.14ID:Aeuh89FK
>>746
というか、新しい言語を学んで無い人を馬鹿にするのは良くない。
自然法則は昔からずっと変化しないから学んで損は無いが、言語は人工的なため、不変性も無く学ぶ価値の無いものも多数含まれる。
その取捨選択が重要。
2020/03/17(火) 17:07:25.05ID:IQmvYlpF
少なくとも多言語のスレでJAVAだけでいいんだ!って力説されてもね
2020/03/17(火) 17:07:39.27ID:IQmvYlpF
他言語
2020/03/17(火) 17:09:29.69ID:Aeuh89FK
Kotlinが蔓延することで困る人もいるんだから。
2020/03/17(火) 17:13:44.67ID:yigrTQzb
毎日使うものだから。
2020/03/17(火) 17:17:56.69ID:Aeuh89FK
>>748
ネットではKotlinそのものに価値があるようなことを言う人を良く見かけるが、実際はGoogleがOracleとの訴訟に負けて、Javaを使っていることを注意されて、それで使われるようになっただけの言語、と捉えるのが標準見解だ。
753デフォルトの名無しさん
垢版 |
2020/03/17(火) 17:27:30.89ID:4Vk7SyLR
>>734
> Javaなら、Swingを使えば、Win/Mac/Linuxで共通アプリが作れる。

Javaのライブラリ使うならKotlinでもできることになるが?
754デフォルトの名無しさん
垢版 |
2020/03/17(火) 17:31:48.86ID:4Vk7SyLR
>>736
わかった。それじゃあかれこれ30年ぐらい使い続けているPerlと35年ぐらい使い続けているC言語を使うことにするよ。Javaのような新言語に手を出すのは止めておこう。
2020/03/17(火) 18:15:43.46ID:Aeuh89FK
>>754
別にそれでいいんじゃない。
俺はJavaの回し者でもなんでもないからな。
2020/03/17(火) 19:06:22.80ID:+Hw83ygo
>>736
そういう観点なら、better javaのkotlinを学習する費用対効果は大きい。

実際、自分でクラスを設計するのならnull freeにできるkotlinの価値は高い。

……というより、型無しのnullを排除できないjavaの型システムが破綻しているだけだけどな。いいかげん、nullを受け付けないクラス/変数に対応してほしいぜ。
2020/03/17(火) 19:15:03.66ID:Aeuh89FK
>>756
むしろ、null を使うことは美しいと思っている。
引数にnullを渡すかどうかで動作を変えられることは、プログラミングの中でも最もスマートな方法。
2020/03/17(火) 19:30:31.89ID:s3acJuhP
でも、いざnull safetyの言語使ってみると!!演算子使う自分のコードが気になって負けた気になる
2020/03/17(火) 19:33:21.73ID:3WRfeEJw
!!は便利だけど後で見返すと消したくなるわ
見てて綺麗じゃない
2020/03/17(火) 20:14:28.04ID:s3acJuhP
それ
見てて気になるし負の感情がわくw
2020/03/17(火) 23:29:23.16ID:I7Fcdy1u
>>756
JDK25ぐらいでなんとかならんのかな
2020/03/17(火) 23:54:31.16ID:Whb0iFr7
kotlin勉強に有効な書籍はなんだ?
2020/03/18(水) 00:01:29.88ID:rB/x/s49
Javaできるならサンプル見ただけでなんとなく使える
本読まなきゃいけないような奴が手を出す言語ではない
2020/03/18(水) 00:33:22.47ID:LQtyodHE
当然、Kotlin の会長である太郎本!

Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016
2020/03/18(水) 00:35:21.26ID:qIM0w55M
>>763
本読まなきゃいけない奴が手を出す言語ではない(ドヤァ)
キモすぎアホすぎて草
んなこと誰も聞いてねえってのw
質問に答えてやれよカス
そもそも仕事だったら新規言語に手を出す出さないは個人の判断関係なく強いられることもあるだろうw
それともニートか?お前w


>>762
完全初心者なら>>273-275あたりで出てる本がいいんじゃないかな
2020/03/18(水) 00:37:04.70ID:JGfgRlCq
>>763
サンプルコピペして使えた気になってるコピペプログラマーの典型みたいなこと言っててワロタ
2020/03/18(水) 03:25:07.07ID:LQtyodHE
有名な雑食系エンジニア・KENTA も、YouTube で言ってたけど、
Scala が廃れた理由は、初心者にマウント取って、悦に入る人が多いからw

JVM 系は土方だから、土木業と同じ産業構造、多重請負・奴隷構造を持つから、
奴隷は初心者に対して、マウントを取らざるを得ないw

Ruby が、なぜナイスなのか、Cookpad などの自社サービス系だから。
多重請負・奴隷構造じゃないから

JVM 系は高学歴総合職・ノンプログラマーが、
低学歴奴隷・IT 土方を使って、もうける商売だから

だから、勧める人が少ない
2020/03/18(水) 07:13:52.23ID:yDvvdBVq
>>767
言語外の仕様か。いくらか眉唾だが興味深い。
769767
垢版 |
2020/03/18(水) 08:26:52.48ID:LQtyodHE
雑食系エンジニア・KENTA

Scalaが日本で衰退し始めている理由を説明します
https://www.youtube.com/watch?v=kFzLia7YZQU
2020/03/18(水) 08:41:22.06ID:iE2DLaXa
動画で食ってる奴がエンジニアを名乗る不思議な世の中
771デフォルトの名無しさん
垢版 |
2020/03/18(水) 12:35:47.10ID:fwLKdVFo
>>767-769
なるほど
KENTAはクソだけど内容は腑に落ちる部分があるな
772デフォルトの名無しさん
垢版 |
2020/03/18(水) 13:23:33.04ID:B9Jc5Lrr
>>757
Kotlinでそのようにしたければそのように書けば良い。できないわけではない。使い分けできて尚且つコンパイル時のチェックが厳しいだけ。
2020/03/18(水) 14:41:11.55ID:QhEd5Nre
昨日は変なおじさんが暴れてたなあ
2020/03/18(水) 21:03:27.37ID:dhpxSw9T
>>769
3行でまとめろ
2020/03/18(水) 21:05:09.86ID:qIM0w55M
ここの人はjavaを触る前にkotlin触った人いる?
776767
垢版 |
2020/03/19(木) 03:59:43.72ID:JDU05jIv
要するに、複雑なものは習得コストが高いから、暇人しか集まらないようになる。
暇人は、初心者に参入されると食えなくなるから、マウント取って邪魔してくる

防衛省・原発みたいなものと同じ。
誰にも分からないから、チェック体制も構築できなくなる

誰にも何をやっているのか、さっぱり分からないけど、
上層部は高い給料をもらえる体制。
その体制を維持していくことが目的になっている

複雑なものには、真実ではないダマシが入ってくる。
人々を煙に巻く。それがガン

逆に、簡単なRuby には、嘘が付け入る隙がないから、誰もだませない。
これが本当のオープン。
ブロックチェーンみたいなもの。支配者が国民をだませない
2020/03/19(木) 05:48:04.13ID:z/hUxg19
>>776
長くなったのに>>767の最初の2行しか説明できてない。残念。
KENTAがRuby推しということはわかった。
2020/03/19(木) 07:39:11.58ID:urEXhT7g
>>775

>>709
2020/03/19(木) 12:38:32.21ID:3l1mva9i
>>757
型自体の操作(メタプログラミングとか)ならともかく、まずはクラスの中での操作を考えるべき。多態とかnull objectとか。

javaで一番多いトラブルはヌルポだろ。本来なら真っ先に対策すべきだと思うがね。
2020/03/19(木) 12:52:07.67ID:yzbbR7me
kentaってイケダハヤトみたいになってきたな
781デフォルトの名無しさん
垢版 |
2020/03/19(木) 15:15:37.74ID:VRFqiqhe
>>779
C++ で言えばたったこんな程度のこと。
NULLの処理なんて難しくもなんとも無い。

CWnd *MyCreateWindow(const char *pszTitle);  //プロトタイプ宣言

// 使い方の例:
MyCreateWindow(NULL); // タイトル無しでWindow作成
MyCreateWindow("タイトル文字列"); // タイトル有りでWindow作成

// 関数定義:
CWnd *MyCreateWindow(const char *pszTitle)
{
 if ( pszTitle == NULL ) {
  (タイトルが無いとして処理);
 }
 else {
  (タイトルが有るとして処理);
 }
}
2020/03/19(木) 17:10:21.28ID:rBTxc+YZ
なんで頓珍漢な流れになってるんだ
nullを安全に扱える言語なのにKotlin未経験者多すぎだろこのスレ
2020/03/19(木) 17:16:34.26ID:/JEYrZ/n
荒らし目的のJAVAコーダーしかおらんやろ
2020/03/19(木) 18:04:34.63ID:j3UhLeRz
ことりん
2020/03/19(木) 18:22:01.77ID:TkZTFqNu
それnullでやる必要あるの?
2020/03/19(木) 19:39:51.06ID:YRL0u/U8
言語進化の歴史なんてまるで知らんのだろうな
2020/03/19(木) 20:12:45.87ID:jEN69kGO
知る必要あるの?
2020/03/19(木) 20:16:42.34ID:Pzb6grX0
考えてみると、ない
2020/03/19(木) 20:20:50.17ID:XcKebLm1
ネットでドヤ顔したりマウント取ったりするには有用な知識
2020/03/19(木) 21:17:12.88ID:rBTxc+YZ
>>785
特殊な場合があるときにそれを-1とかで表すよりも100億倍まし
特殊な場合がないのにnullableにするのは論外
何も考えず!!演算子を使うのも論外
NullObjectを作るかどうかはメリットデメリットあるのでケースバイケース
脳死で作るのはJavaでenumを使わずにTypesafe enumパターンを手書きするような冗長さになることもあるし
下手に使うと-1と同じ弱点を埋め込む場合もある

nullに忌避感がある人はこのスレをnullで検索すると議論が参考になるかもしれない
2020/03/19(木) 22:46:33.35ID:z/hUxg19
>>757 はKotlinを否定してJavaでnullを扱いたいのか、KotlinのT?型と?.演算子や?:演算子を奨励したいのか
読んでいてよく分からなくなってきた。
2020/03/19(木) 22:48:27.28ID:TkZTFqNu
>>790
少なくとも>>781の内容はnullでやる必要ないよね?って話なんだけど?
あれは特殊な場合なの?
2020/03/20(金) 01:28:48.16ID:405ti7Ej
>>792
少し例が悪かったので変えてみる:

CWnd *MyCreateWindow(CWnd *pParent);  //プロトタイプ宣言

// 使い方の例:
MyCreateWindow(NULL); // 親の無いWindowを作成。自分が最上位Windowとなる。
MyCreateWindow(親Window); // 指定したWindowの子WindowとしてWindowを作成

// 関数定義:
CWnd *MyCreateWindow(CWnd *pParent)
{
 if ( pParent == NULL ) {
  (親が存在しない最上位Windowを新規作成);
 }
 else {
  (pParentの子Windowを新規作成);
 }
}
2020/03/20(金) 01:34:03.99ID:405ti7Ej
>>793
もし、NULLを使いたくないのなら次のようにするしかないことになり、2つの引数に分かれてしまいむしろ危険性が増すばかりでなく、親が存在しない場合にはダミーのWindowのアドレスを指定しなければならなくなる:
CWnd *MyCreateWindow(CWnd *pParent, BOOL bChild);  //プロトタイプ宣言

// 使い方の例:
MyCreateWindow(ダミーのWindow, FALSE); // 親の無いWindowを作成。自分が最上位Windowとなる。
MyCreateWindow(親Window, TRUE); // 指定したWindowの子WindowとしてWindowを作成

// 関数定義:
CWnd *MyCreateWindow(CWnd *pParent, BOOL bChild)
{
 if ( !bChild ) {
  (親が存在しない最上位Windowを新規作成);
 }
 else {
  (pParentの子Windowを新規作成);
 }
}
2020/03/20(金) 01:38:28.40ID:i2c+AgK7
>>794
メソッドを引数なしと親ウィンドウ指定ありの2種類にオーバーロードすればいいね
オーバーロードできない言語でも名前を分かりやすいように分ければいい
この場合はnullは使わない方がベター
2020/03/20(金) 01:41:51.33ID:405ti7Ej
>>794
現実には、「ダミーのWindow(のアドレス)」なんてものは作りえないかもしれない。
だとすれば、NULLを使わずにこれらの事を行いたいなら次のように、関数を2つに分けるしかなくなってしまうかもしれない。
しかしそれは間違いが入り込みやすい良く無いプログラムである:

CWnd *MyCreateTopWindow();        //親の無いWindowを作成する関数。
CWnd *MyCreateChildindow(CWnd *pParent); //pParentの子Windowを作成する関数。

// 使い方の例:
MyCreateTopWindow(); // 親の無いWindowを作成。自分が最上位Windowとなる。
MyCreateChildWindow(親Window); // 指定したWindowの子WindowとしてWindowを作成
2020/03/20(金) 01:45:38.48ID:405ti7Ej
>>795
似たような処理を行う関数は、完全に2つに分けてしまうとバグの原因になる。
理由は、内部で似た処理を行っている箇所を両方とも修正する必要が出て来やすくなり、一方だけ修正して他方は修正し忘れたりすることが多くなるから。
こまごまとした違いが有って、一致している部分もあったりするので、単純な機械比較は出来ないので同一性チェックを人間の目で行わなければならなくなる。
だから、>>793のように書いたほうがずっと安全になる。
2020/03/20(金) 01:48:47.36ID:405ti7Ej
>>797
「親が有るかどうか」
という一つのパラメータだけなら、まだ良いが、
「メニューオブジェクトを渡すか渡さないかでメニューが付くかどうか分ける」
なども付いたりすれば、組み合わせ爆発が起きるため、関数を完全に分けてしまうのは非常に非効率で危険なプログラミングとなる。
2020/03/20(金) 01:52:10.51ID:i2c+AgK7
共通化が必要ならNullObjectの多態でも関数型でも使えばいいよ

C言語時代からアップデートされてない知識でモダン言語でのプラクティスを説こうとしているのが謎だよ
タイムスリップしたお侍が自衛隊に兵法を指南するような冗談だよ
2020/03/20(金) 01:56:11.47ID:i2c+AgK7
組み合わせ爆発についてはデフォルト引数使えばよろし
2020/03/20(金) 01:59:36.15ID:405ti7Ej
>>800
そのデフォルト引数には、NULLかNullObjectを指定するしかないはず。
なんで、NULLで済むのにNullObjectを使うの。
それで安全になるのか?
2020/03/20(金) 02:03:02.63ID:405ti7Ej
>>799
では、>>793の例を NullObjectや多態を使って分かり易くて安全に書き直してみてください。
2020/03/20(金) 02:49:45.65ID:4pMtFWMQ
>>796
すべてのウインドウはRootWindow配下とするみたいなルールを設定して、親のないウインドウは禁止するればいい。

linuxのプロセスが必ずinit配下になるのと同じ感じ。
2020/03/20(金) 02:54:28.27ID:405ti7Ej
>>803
それは可能だけど、グラフィックのFrameBufferの容量が大きいので、
デスクトップに浮いているWindowの場合にChildWindowと同じ処理をしたのでは
メモリーの無駄使いになることがあったり、
デスクトップに浮いているWindowとChildWindowとでは動作がかなり違っていたり
することが多いので初期化段階から if 文で場合分けしないと無理が有る事が多い。

だから、そのような「統一した考え」では結局は、効率が下がるために
実際には駄目プログラムとなる。
2020/03/20(金) 03:01:28.97ID:405ti7Ej
>>804
さらに付け加えるなら、RootWindow のオブジェクトの名前を「覚えるのが面倒」
だったり、打ち込むのが長くなって大変と言う事情もある。
例えば、Windowの場合には、「DesktopWindow」という名前で、
Menuオブジェクトが無い場合には、「MenuNull」みたいな名前となる。
しかし実際にはこんな簡単な名前で無い事が多いので、マニュアルをいちいち調べ
直す手間がいる。
一方、NULLだといろんな場面全てNULLなので、覚えることが少なくて済むし、
打ち込むにも4文字で済むので楽。
関数を呼び出す際も短いので一行で書ける場合が多くなり、見易い。
806デフォルトの名無しさん
垢版 |
2020/03/20(金) 05:05:17.32ID:Edy1QoAW
>>793
Kotlin ならこんな風にすれば良いんじゃないの?

fun myCreateWindow(parent: CWnd? = null): CWnd = if (parent == null) 親なし上位Window作成 else parentの子Window作成

nullable がどうしても嫌ならこうするか。

fun myCreateWindow(parent: CWnd = 親なし上位Window): CWnd = if (parent != 親なし上位Window) parentの子Window作成 else parent
2020/03/20(金) 06:32:14.26ID:Oo7Eeggj
言語やベンチマークの議論一般にいえることだけど、自分の有利な土俵に引っ張りこめば何とでも主張できる。

Kotlinは>>805向けには作られていない。というだけのこと。
2020/03/20(金) 06:53:01.35ID:4pMtFWMQ
>>804
そこはクラス分けてポリモーフィズムで上手くやろうよ

先のウインドウタイトルといい、例が良くないんでは?
2020/03/20(金) 07:53:37.14ID:i2c+AgK7
>>801
書かれてたサンプルコードでは真っ先に分岐が入ってたから「この場合は」オーバーロードかメソッド分割がベターと回答した
後付けされた条件を加味するなら>>806のnullable型がいい
privateな処理内で局所的にnullabeを使うことに異論はない
Kotlinならヌルポが出ないから安全

覚えるのが面倒ということまで気にする公開APIなら親にnullを指定すると親無しになるというルールを覚えさせるよりも
親の引数を省略可能にするかメソッド名を用途別に分けてクラス内で処理を共通化した方が使いやすい

nullは単一なので楽という話は、nullは単一なのでいろんな意味がまぜこぜに使われ区別できないという裏返しでもある
variantは型がないので楽、グローバル変数は楽、staticは楽というのに通じる
2020/03/20(金) 07:58:22.42ID:i2c+AgK7
メソッド引数にnullを与えたときヌルポが出るのかトップレベルウィンドウになるのかドキュメントを読まないと判別できない公開APIは残念
省略時デフォルトとして内部的に使うのとはまた違う
2020/03/20(金) 09:18:27.10ID:CQQp7Y75
Kotlin では、プログラマーが自分で、null を判断したら、ダメ!
null チェックを書かない人がいるから、バグが残る

C++ で言えば、スマートポインターみたいなものを使って、
自動的に判断するのが正しい

どこかで、nullチェックをして、nullじゃなければ、
null許容型を使わないように書く
2020/03/20(金) 10:12:13.96ID:1hj/B9bx
>>811
だったらそもそも静的な型がない上に基本的にプログラマが明示的な型チェックもしないことが普通なRubyは、
Kotlinで常にnull許容でチェックも一切しない以上に遥かにバグが残るってことになる(実際そう)なのだが、
自分で意味分かって言ってんのかなこいつ
2020/03/20(金) 10:31:11.84ID:EaZGEhh2
「真っ先に条件分岐が入ってたから」

はどこいったんだろう
適当やな..
2020/03/20(金) 10:38:58.93ID:EaZGEhh2
それにそもそもオーバーロードかメソッド分割がベターとかいってるが、設定するメソッドじゃなくて現在設定されてる値を取得するメソッドまたはプロパティを追加するときはいったいどんな値返すんだ??

普通に元からnullでいいだろ
2020/03/20(金) 10:47:13.64ID:IqcuAu3D
>>814
nullable使わないなら異なる型を返すんだよ。nullable含め場合分けを型で強制することで不必要なバグが入り込む余地を無くすのがnull safetyな言語の流儀
2020/03/20(金) 11:02:35.25ID:EaZGEhh2
そういう他人をわざと変な方向に導こうとしてもひっかからんしつまらんから..
2020/03/20(金) 13:05:07.29ID:405ti7Ej
>>808
>そこはクラス分けてポリモーフィズムで上手くやろうよ
具体的にポリモーフィオズムでどうやれば分かり易く書き直せるか教えてください。
2020/03/20(金) 13:55:01.27ID:i2c+AgK7
>>813
どこ行ったの意味がわからない
どこに矛盾を感じたの?

>>814
俺はメリットデメリット考慮してnullableも含めて最適なものを選ぶのがいいと言ってるんだよ
前提が変わればnullableが簡潔で具合いいところもあるだろ
>>794のサンプルでnullabeを選ぶ理由ある?
2020/03/20(金) 14:01:35.66ID:i2c+AgK7
>>818
訂正
デフォルト引数の初期値をnullとして使うケースは良かった
理由は上で書いた通り
2020/03/20(金) 14:39:06.40ID:405ti7Ej
そもそも null はそんなに危険ではない。
そのまま使おうとすれば、Windowsの場合だと、Release版ですらほぼ100%一般保護例外が生じるからどこで問題がおきているかも分かるし。
2020/03/20(金) 14:40:27.30ID:405ti7Ej
nullが危険といっている人は、MMUを使ってない化石の様なOSでの経験に基づくものなのかな。
2020/03/20(金) 14:47:03.13ID:405ti7Ej
if で場合分けせずに、オブジェクトのclassの仮想関数で場合分けさせると言う考え方
は時々聞くが、それはすべてをオブジェクト指向に置き換えれば上手く行くと言う根拠
のない浅はかな考え方だ。
経験を積むとその思想は間違いであることが分かってくる。
2020/03/20(金) 15:49:29.05ID:i2c+AgK7
ページ違反が起きて特定に悩まされたのが昭和
一般保護例外なりヌルポなりの発生元ステップをテストで洗い出すのが平成
モダン言語ではコンパイル時に検出するので品質もコストも優位

老人は自らの成功体験に頼るので新しく良いものが現れても知識体系に取り入れることが難しく適材適所の選択ができない
2020/03/20(金) 16:01:15.37ID:5BxgCAjb
祝日になった途端荒れだした
2020/03/20(金) 16:45:35.12ID:3oKoD+ta
能無しJAVAコーダーが暴れてるんだろ
2020/03/20(金) 16:50:44.74ID:405ti7Ej
>>823
むしろ、OOPでやればなんでも上手く行くと思い込んでいる頭の固い馬鹿にしか思えんが。
2020/03/20(金) 17:03:18.75ID:lyFWLrjP
Javaカスイライラで草
プログラマのくせに新しいもの嫌いとか致命的にセンスないだろw
さっさとやめろよこの業界w
2020/03/20(金) 17:08:13.91ID:3oKoD+ta
>>827
ほとんどはコーダーやろ
2020/03/20(金) 17:12:54.71ID:405ti7Ej
新しくても駄目なものは駄目。
新しければいいと思うな。
若ければ年上に勝てると思うな。
2020/03/20(金) 18:03:14.01ID:NjO7svfB
老人とか関係ないな。
愚者は経験に学ぶ
それだけ
831デフォルトの名無しさん
垢版 |
2020/03/20(金) 18:18:29.68ID:405ti7Ej
おまえが愚者だ。
2020/03/20(金) 19:36:44.38ID:lyFWLrjP
>>828
今時厳密にコーダープログラマーをわけてる現場なんかないだろwクソ老害か?w
2020/03/20(金) 19:37:18.52ID:lyFWLrjP
>>829
老害イライラで草
顔真っ赤にしてる暇あったらkotlinの勉強しようなwww
2020/03/20(金) 19:46:41.44ID:405ti7Ej
>>833
Javaはブームとなるほど、当時としてはちょっと革新的な言語だった。
Kotlinは全然違う。
2020/03/20(金) 21:17:36.75ID:3oKoD+ta
>>832
君が派遣されてるドカタ現場ではそうなんだね
2020/03/20(金) 21:21:57.46ID:6BEgHG50
何でお前らすぐに不毛な煽りあい始めるんだ
2020/03/20(金) 21:26:00.38ID:UGdtYAWR
nullセーフもoopも嫌いならgoがオススメですよ
2020/03/20(金) 21:28:58.30ID:lyFWLrjP
>>835
君が派遣されてるクソ現場は下流しかやってないから律儀にフロントとバックでコーダープログラマー分けてるんだねw
普通上流の仕事してたらそんな底辺下流の扱いなんか厳密に分けてないよwwwww
勉強になったねえ w
2020/03/20(金) 21:50:19.69ID:Oo7Eeggj
>>829
年寄りだったのか。
若い頃に苦労して身につけたテクニックが、言語仕様でカバーされて誰でも実践できるようになって、
脅かされている自分のアイデンティティを守るために必死になっている、ってところかな。
2020/03/20(金) 23:35:23.46ID:405ti7Ej
>>839
この板に居るようなパンチカード(?)を語るようなほどの年寄りではない。
NullObjectでNULLを代用することが、
「言語仕様で誰でも実践できるようになって、自分のアイデンティティーが脅かされる」
に該当するとはとても思えない。
2020/03/21(土) 00:05:57.23ID:5V8tQPWW
パンチカード載せてる台車ひっくり返したら大変
2020/03/21(土) 06:24:08.00ID:JAKzE64M
>>840
> この板に居るようなパンチカード(?)を語るようなほどの年寄りではない。
この板にパンチカードなんて単語一度も出てきてないけど誰のこと?
パンチカード世代ではないにしても、NULLを駆使するのが美しいテクニックだった時代の年寄りなんでしょ?
相手の主張を反論しやすいように歪曲するのはやめた方がいいですよ。

>NullObjectでNULLを代用することが、
「NullObjectでNULLを代用すること」はKotlinの言語仕様でないから、
そのように受け取ったのなら、Kotlinのコンセプトを理解していないか、
相手の主張を反論しやすいように歪曲する癖があるかのどちらか。

>>840が対話の成立しない相手であることが証明されたので
>>840の回答には大変満足しております。ありがとうございました。
2020/03/21(土) 09:04:23.03ID:Nklv0DXu
なんだ、親無しWindow を、null にしただけか。
確かに、そういうAPI があるけど、マネしない方がよい

それって、0 でも空文字列でも、何でもよいわけでしょ。
そうい所に、nullを使うのはおかしい

nullは、ヌルポだけに限定すべき!
異なる意味で使ってはならない!

使い方を文章に書いた時にも、
引数がnullなら、親無しWindowになりますというのも、ちょっとおかしい

そういう用途には、デフォルト引数!
2020/03/21(土) 09:36:51.55ID:oUFNTFet
>>820
それどっちかというと Windows 独自の文化だと思う
たまに Windows 系の助っ人に行ってコンソールに例外出まくりなのみてビビるよ
2020/03/21(土) 09:44:12.11ID:JAKzE64M
>>843
nullは存在しないことを意味すると考えれば、あながち間違いでもないと思うし、
デフォルト引数を使うにしてもデフォルト値はNullObjectになるだろうし。

というのは置くとして>>842で述べたように>>840にこれ以上構わないほうがいいと思うんだが。
2020/03/21(土) 09:55:22.84ID:3uF/mjPQ
俺が老人という言葉を使ったのは実年齢のことではなく振る舞いだよ
Kotlinのコンセプトを理解してないどころか学ぶ気すらない
C++でサンプルを提示する辺りJavaを知っているかすら怪しい
自分のアイデンティティーを脅かされるという自覚はなく、わざわざ下らないものの詳細を学ばなくても俺には経験上わかるんだという老人特有の驕りが見える
全貌が見えてないから議論が噛み合わない

このスレにはnullは一切使わずにNullObjectを使うべきと主張する層とnullableは安全とする層と適材適所で使うという層がいて、この老人にとっては全員敵であり区別できないのだろう
NullObjectはJavaでは効果的なプラクティスだったけどKotlinではStateパターンのような役割でないとさほど輝かないと俺は思う
KotlinでNullObjectが常にnull(able)の良き代替になるなんて誰も提示できないはず
この老人がその一点に拘り他を無視する限りやっぱり俺は正しいんだと信じ続けるだろうな
2020/03/21(土) 10:05:31.48ID:SrebAl5K
若い衆はほんと何がいいたいんだかわからん
2020/03/21(土) 10:12:24.90ID:3uF/mjPQ
>>845
あながち間違いでないことと良いAPIであることには隔たりがあると思うよ
参考としてはJavaが提供しているライブラリにおいてnullを指定してくださいというメソッドよりもオーバーロードを提供しているメソッドの方が多い
ウィンドウの例だけでなく一般化して考えると、引数のデフォルト値として空の関数を与えて綺麗に書けるケースも多い
メソッドごとにnullを渡すべきなのか空の関数を渡すべきなのかNullObjectがあるのかを考えず、引数を省略するというシグネチャーで判別可能な一貫した利用ができるのは優れたメソッド設計だと思う
2020/03/21(土) 11:44:22.68ID:oUFNTFet
爺さんが引数に null 渡す例出したのに釣られちゃってるけど
Javaでも戻り値に null かオブジェクト返す API は普通にあるからね
これは NullObject か nullable に修正したい
850デフォルトの名無しさん
垢版 |
2020/03/21(土) 12:37:46.26ID:R4utYKoB
プログラマーの気持ち悪い部分をいい感じに体現してくれてる
ここであれこれ書いてもぬかに釘
noteかブログにでも書いておけ
2020/03/21(土) 14:00:49.01ID:txJMIm7g
なんでも古い古いと言っていれば、どんなに駄目でも新しい言語や若い人が有利になってしまう法則。
2020/03/22(日) 04:45:41.69ID:HvrypJyW
引数の個数や型だけが異なる「関数の多態性」を行うと、プログラムが間違い易くなる。
なぜなら型や引数の個数の書き間違いをコンパイラが報告してくれなくなることがあるから。
C/C++で型が導入されたのもそういう間違いをコンパイラに発見してもらうためも有ったが、それが働きにくくなってしまう。
853デフォルトの名無しさん
垢版 |
2020/03/22(日) 04:50:38.77ID:HvrypJyW
>>852
一つの関数名に引数の型や個数が異なる関数が10種類くらい多重定義されていたとする。
これを使ったプログラムする際には、マニュアルを見、関数名だけでなく引数も非常に正確に書かなくてはならなくなる。
型や引数の順序や個数などが僅かでも間違っていると、自分が思っていたのとは違う定義のものが呼び出されてしまうことになるが、それでも「合法」になってしまうのでコンパイラがエラーを出してくれない。
また、後から動作を調べようと思ってマニュアルを見たときにも、見間違いで間違った定義の部分の説明を読んでしまう現象が生じ易くなる。
2020/03/22(日) 04:56:18.54ID:HvrypJyW
>>853
func(1,2);
と書いたつもりで、タイプミスなどで
func(1,2,0);
と書いたとしよう。
func()が多重定義されていない場合なら、コンパイラがエラーを出してくれる。
ところが、func()が多重定義されてしまっている場合、たまたま、3つの整数引数の定義があった場合、自分の思ったのとはかなり違う動作の関数なのに、コンパイラが何もエラーを出してくれなくなってしまうことが有り得る。

それから、知らず知らずに「引数の自動型変換」機能が働いてしまうことが有り得る。
それと関数の多重定義の両方が組み合わされると、自分が思っていたのとはかなり
違う動作の関数が間違って呼び出されることになっていても、気づくことができない。
本当はどの関数が呼び出されているのかが分からず、どんなにチェックしても原因が分からない難しいバグが入ってしまうことになるかもしれない。
2020/03/22(日) 05:13:54.89ID:TNUWFKUe
あーウゼー
2020/03/22(日) 08:47:08.62ID:sfJQKmPV
技術的な話でスレが進むのは、過疎ってるよりは良いことだよ
ほぼ読んでないから内容は知らんけど
2020/03/22(日) 09:31:29.37ID:nwybfWiz
>>854
その話は、引数爆発は嫌だ、じゃあデフォルト引数使え、で解決してるだろ
さらに付け加えるなら名前付き引数も使え
そのあたりのCやJava時代の弱点をKotlinやC#は克服済みだ
あと多重定義は多態とは呼ばない
2020/03/22(日) 09:32:27.12ID:nwybfWiz
>>854
たまたま同じ型ばかりを引数にとる関数で順番を間違えるヒューマンエラーには配慮できるのに、nullを多用したときに誰かがミスして実行時エラーが多発するリスクに目を向けないのは何故?
2020/03/22(日) 09:58:58.91ID:CQOUf5Rv
>>857
>あと多重定義は多態とは呼ばない

異なる型に対する多重定義は多態の一種だよ
2020/03/22(日) 11:22:24.81ID:nwybfWiz
>>859
すまんアドホック多相だね
861デフォルトの名無しさん
垢版 |
2020/03/22(日) 11:43:59.28ID:F4lre3ad
>>853
ほんそれ
同じように思ってた人が居て良かった
2020/03/22(日) 12:55:36.51ID:q5xwUBc3
>>853
混同するのが危険なほど挙動が違うのなら、そもそも同じ関数名を使うべきじゃない。
関数・クラス設計における命名規則の問題だろ。言語設計(javaのヌルポ)の問題と関係ない。

この主張が、なんで型なしnullのマジックナンバー利用の肯定に繋がると考えているの?
2020/03/22(日) 15:36:31.56ID:HvrypJyW
>>857
「ポリモーフィズムは次のようないくつかの種類に分けられる:

・アドホック多相(Ad hoc polymorphism):ある関数が、異なる型の引数に対してそれぞれ異なる実装を持つ場合。多くのプログラミング言語で関数の多重定義としてサポートされる。
・XXXX
・XXXX
・・・
864デフォルトの名無しさん
垢版 |
2020/03/22(日) 15:39:40.53ID:HvrypJyW
>>858
親Windowのポインタを受け取る引数にNULLとした場合、意味は分かり易い。
「親がない」こと以外に意味を取りようがないから。
同様に、メニューオブジェクトへのポインタをNULLとした場合も、
「メニューがない」こと以外に意味を取りようがないので分かり易い。

それに比べて、関数を多重定義した場合には、ミスによってとんでもない動作をしてしまうことが有り得る。
2020/03/22(日) 20:16:05.50ID:nwybfWiz
>>864
結局、関数の実装者がミスってnull参照エラーを起こすリスクは見えてないのか
2020/03/23(月) 01:38:55.49ID:bf1cRh+B
>>865
この例の場合、NULLにすると、それぞれ親Windowがない場合、Menuがない場合で、どちらも重要なので、さすがにテストしてあるはずなのだ。
この例に限らず、引数にNULLを指定する場合は、そのような「重要な変化」をもたらす事が多いので、必ずテスト済みの場合が多い故に安全なことが圧倒的多い。
2020/03/23(月) 02:26:57.24ID:dalJ4OEg
>>864
何を言いたいのか全然わからん。

NULLの利点は親Windowの指定方法だと言っているのに、
>>854だと全く関係のない関数funcでoverloadに問題があると言っている。
自分の主張に沿うようにいいとこ取りしすぎ。

同じケースでNULL利用の利点とoverloadの欠点を比較しろよ。

>親Windowのポインタを受け取る引数にNULLとした場合、意味は分かり易い。
nullよりも"NoWindow"というNullObjectを定義して使ったほうが意味はわかりやすい。
なんでnullを使わなきゃいけないのかね?
2020/03/23(月) 02:48:11.59ID:bf1cRh+B
>>867
後半、NULLで十分なのに敢えて、NoWindow なんてオブジェクトを定義する必要
を感じない。それでバグが減るわけでもないし。
2020/03/23(月) 03:14:15.98ID:6F6bSuZt
>>866
それは言い換えると、nullを安全に使えるのはテストのパターン漏れがあり得ないような重要な変化があるところに限られ、それ以外で使うと安全とは言えないってことだよな
「安全なことが多い」ってのは危険は残っていると認めてるね
「さすがに〜はず」ってのは希望的観測だし、最後の文だけ「圧倒的」を付け足したのも論拠不足だよな
人は多重定義で引数順を間違えるような凡ミスをすると理解できているんだ
では人が重要ではない甘いところでnullを不用意に使ってしまうミスは当然あるよな
2020/03/23(月) 08:20:48.10ID:E0UAbPRX
>>868
前半の準備できてから議論続けてね。


>「必要を感じない。」

それは個人の感想なので、主張としては弱くて役に立たないですね。

・メソッドを使う時に「NoWindow」であることをより明確化できる。
・間違えて「NoWindow」を指定してもnullより目立つので間違いに気づきやすい。
・名称がより明確なので、第三者がソースコードを読む時に読みやすい。
・それ専用に定義された変数に入っているので、IDEの支援を受けやすい。
・このケースだと必要性は薄いが、nullの意味が複数あるような場合でも(null,undefineなど)別々に定義できる。

くらいの利点はあるけど?
2020/03/23(月) 08:53:23.76ID:7Cqb7CJ8
NullObjectパターン使ったライブラリーとかほとんどみかけないから...
もうここまで言えば後はワカルナ?
2020/03/23(月) 09:58:46.34ID:iyDg9ARV
GetParentやGetMenuでnullチェックを忘れたらヌルポ
それを万が一忘れてもコンパイルエラーにしてくれるのがNullable
2020/03/23(月) 12:12:09.69ID:E0UAbPRX
>>871
c言語の悪癖に冒されているだけだろ。

「マジックナンバーは悪」というのは常識だろうにマジックナンバー的にnullを使う設計者の気が知れんわ。
2020/03/23(月) 13:08:13.26ID:C8qDvQHU
ここの住人って全員Androidアプリの開発者?
2020/03/23(月) 14:27:37.30ID:kwvRFU7H
Springもいるんじゃない?
小規模だけど去年bootで案件やったよ
2020/03/23(月) 23:43:05.45ID:bf1cRh+B
>>873
Keep It Simple.

NULLで現実に全く問題ないのに、NullObjectを導入することで新たな問題をむしろ入り込む余地が生まれる。
Polymorphism というが、「親Windowが無い」「Menuが無い」のような劇的な変化
は、Polymorphismでやるより、その場で if 文で場合分けするほうがプログラミングし易い。

例えば、Polymorphismに向いているのは、動物の種類を分けるようなときで、
「動物そのものが存在しない」時には向いていない。
後者は、if文無しで対処するより、本文の方でif文をちゃんと書いて場合分けした方が間違いが
生じにくくなるし、コード量も少なくなる。
だからNullObjectを使って、NullObject自身に処理を行わせて本文にはif分を使わないより、
ちゃんと本文にif文を書く方が適切なのだ。
仮にNullObjectを使っても結局、本文に if ( pMenu == &NullObject ) などという if 文を
書いてしまっては、Polymorphismにはならないし。
2020/03/23(月) 23:59:37.49ID:Kfc9ZaIq
KotlinはNullObjectよりnull推奨で
そのための前提として構文レベルで区別するための仕組みがある

x,yなのかrow,colなのか順番分からんから名前付き引数使うとか
どのオーバーロードが呼ばれるかとか

そういうのも区別出来るかどうかという似たような話になる
2020/03/24(火) 00:18:55.74ID:T0vrM+QL
>>873
NULLは、「無い」という真空状態のようなものに対応している。
(古典物理学的にはだが原則的に)真空は唯一のものであるから、
親ウィンドウがないことと、Menuがないことで、別の真空が存在する
わけではなく、唯一無二の真空で十分だとも考えられる。
それとマジックナンバーでは全く異なる、
マジックナンバーが問題なのは、後で修正しようとした時に簡単に修正できないことや、
その意味での定数を使っている場所をgrep検索で発見できないことだ。
親ウィンドウやMenuが無い事をgrep検索する必要はないし、「無い」状態を
簡単に修正する必要もない。WindowNullやMenuNullと区別した所で何か便利になる
可能性は低い。
マジックナンバーとは、
int TOMATO_PRICE = xxx;
int NUMBER_OF_TOMATO = xxx;
・・・
int TOTAL_PRICE = TOMATO_PRICE * NUMBER_OF_TOMATO + CAROT_PRICE * NUMBER_OF_CAROT;
みたいにしてから、
func(TOTAL_PRICE);
とするのと、いきなり合計価格を計算してしまった結果だけを使って
func(4032);
などとするのでは大きく分かり易さも訂正し易さも変わってくると言うことだ。
この場合、TOMATOの一個当りの値段を変えたり、個数を変えたりすることが、4032という数値では
簡単に修正できなくなってしまうのだ。
そのような問題点は、NULLにはない。
2020/03/24(火) 00:35:30.02ID:0F/GzGem
Kotlinってnullableを使っても安全だし
NullObjectも書きやすいんだよなあ
sealed classならNullObjectがこの上なく簡単に定義できて
whenで受けたときプログラマーが分岐を漏らさないようにコンパイラが教えてくれる
スマートキャストも安全で便利だ
2020/03/24(火) 00:44:02.15ID:0F/GzGem
古いものが大好きなnull爺にこの話を教えてやろう
Kotlin公式ドキュメントからリンクされてる学習者には有名なエピソードだ
nullポインタを発明したのは、クイックソート等の数々のアルゴリズムを発明し、C言語の源流にもなったALGOLを実装した天才トニー・ホーア氏
彼は近年こう回顧し謝罪している

>それは10億ドルにも相当する私の誤りだ。null参照を発明したのは1965年のことだった。
(中略)
>私は単にそれが容易だというだけで、無効な参照を含める誘惑に抵抗できなかった。これは、後に数え切れない過ち、脆弱性、システムクラッシュを引き起こし、過去40年間で10億ドル相当の苦痛と損害を引き起こしたとみられる。
2020/03/24(火) 01:42:20.76ID:T0vrM+QL
>>880
偉いとされる人が言った、または、有名な団体が作ったようなものを無条件で信じるあなたのような権威主義者が多いだけ。
有名な所が出してきたものは初期の衣の凄くもてはやされる。
使ったこともちゃんと学んだことも無いのに多くの人が褒めちぎる。
それはなぜかというと、そうすることで自分が新しいものに追いついていると
人に錯覚させることが出来ると思い込んでいるからだ。
実際には何も知らないくせに適当に新しいものを褒めているだけ。
2020/03/24(火) 01:45:43.46ID:PY48eDSf
Rustスレも荒らしてるので無視しとけ
2020/03/24(火) 03:32:39.53ID:kBVBs/yt
null自体が問題なんじゃなくて、既存の言語の型システムでnon nullableな参照型がないのが問題なだけ。ごっちゃにしすぎ。
2020/03/24(火) 03:41:54.20ID:kBVBs/yt
だから、null自体はあった方が便利、ただ、型システムの方で値型だろうが参照型だろうがnullable、non-nullableの両方定義できるようにしとけってだけ
2020/03/24(火) 07:51:18.66ID:O58srhK5
もういい加減別スレ作ってそっちでやってくれ
2020/03/24(火) 08:13:59.70ID:PfG4KY3E
>>880
その失敗の本質は、いつでもnullポインタを入れられてしまうことだよ

Nullableの元でもあるHaskellのMaybeモナドやScalaのOptionモナドは
無効を表現出来るが何ら脆弱と見られていない

KotlinのNullableは効率のため単なる参照型変数にコンパイルされるが
プログラム上は以下のようなコンテナと概念的には同じ

sealed class Nullable<T> {
open val isNull:Boolean get() = true
open val value:T get() = throw NullPointerException()
}
class Some<T>(override val value:T): Nullable<T>() {
override val isNull:Boolean get() = false
}
class None<T>: Nullable<T>()
2020/03/24(火) 08:34:24.48ID:nrIfxQG3
>>876
自分勝手な論理展開が多くて議論にならんね。

ここはkotlinスレだし、「javaではヌルポのトラブルが多い」という事実を無視した主張はクソの役にも立たない。
「ヌルポのトラブルを避けるためにはどうしたらいいか」くらい考えたら?じゃなきゃスレ違いだからNGにするわ。

そういや、>>870にヌルポの観点が抜けてるな。追加すると、
・変数の初期化ミスで変数にデフォルト値(null)が入っていても、意図しない(親無しウインドウでの)呼び出しにならない。
2020/03/24(火) 09:26:10.10ID:/F68+jPW
お前らの人生はnullみたいなもんだわ
2020/03/24(火) 12:12:39.00ID:608mB07n
ぬぬるぬるやで
2020/03/24(火) 12:12:56.90ID:608mB07n
ぬ多い
2020/03/24(火) 12:22:26.33ID:cFvopTvT
>>888
お前の人生は違うの?
2020/03/24(火) 12:48:34.07ID:Evm5n4ah
けんかはおやめABC
2020/03/24(火) 14:08:56.84ID:bSQ4VduX
いい加減レス違いですよ
2020/03/24(火) 21:20:41.36ID:PfG4KY3E
Kotlin 1.4-M1 Released
https://blog.jetbrains.com/kotlin/2020/03/kotlin-1-4-m1-released/
2020/03/25(水) 19:58:41.50ID:R+JOhqjs
初めてAndroidアプリ作成の案件に携わってるけどクソOSクソ端末に対応するコスト無駄すぎるな
イライラするわ
896デフォルトの名無しさん
垢版 |
2020/03/25(水) 20:11:20.32ID:i/r3a70w
テスト用に全ての実機用意するとかマジで有り得ん
2020/03/25(水) 22:13:46.30ID:kFDvoIpy
全ての実機ってどんだけ集めたんだ?
2020/03/25(水) 23:23:26.21ID:3tnofAZc
ガラケー時代は中古もかき集めてやってたな
2020/03/25(水) 23:47:54.47ID:TgMiAYI3
>>895
それを判断するのは社長
現場のお前じゃない
2020/03/25(水) 23:51:58.92ID:s5BcMGLd
社長て
2020/03/26(木) 07:47:41.98ID:3JCRH1uw
>>899
働いたことなさそう
2020/03/26(木) 07:52:36.00ID:PXNa4DUz
まぁあれな感じのあれだけど、変に煽るのやめろ、誰も得しない
2020/03/26(木) 09:15:47.51ID:RQaGoEl4
まあ先に煽ってるのは向こうだししょうがない
2020/03/26(木) 11:30:29.60ID:cp63zjH+
>>901
社長したことなさそう
2020/03/26(木) 12:45:41.29ID:V49tRipQ
社長(自営業
2020/03/30(月) 12:29:37.34ID:XS9n9xNo
サーバーサイドkotlinを導入したいんだが、なんて言って上司を説得するのがいいと思う?
上司は昔java1.6やってたくらい。
2020/03/30(月) 12:36:40.55ID:Q7TXlLL8
言語云々を論点にしてはいけない
「技術選定も含めて俺に任せてくれ」だ
お前の全責任においてお前が成果を出せば誰も文句は言わない
それができないんなら黙って前例踏襲してなさい
2020/03/30(月) 15:01:23.30ID:XS9n9xNo
すまん。ちょっと聞き方悪かったわ。
単純にメリデメ教えてくれって言われたらなんて答える?
2020/03/30(月) 16:14:25.46ID:S7P/1C/L
ライブラリが同じなのでフツーのJava経験者なら3日もあれば習得できます
開発環境にJavaのソースをコピペすると自動変換もできます
null参照はコンパイラーが検出してくれる言語仕様なのでnullに関するバグを排除できます
ちなみにA案件でのnull参照バグは全体のxx%でした
Java14で計画されている言語仕様の改善も全て先取りしているので開発効率が上がります
中でもrecord型の先取りにより開発規模がA案件試算でxx%削減できます

ほかに口説き文句あれば俺も知りたい
2020/03/30(月) 18:20:58.26ID:LtUNGbMV
>>907
クッソ頭悪いだろお前
説得する材料くれって言う要件に対してその回答はあまりにも的外れだわ
2020/03/30(月) 18:30:16.30ID:VgShyY/Q
Kotlin採用していただけないのなら辞めますといえば一発や。
2020/03/30(月) 18:40:18.84ID:/1SwYHDd
自分にとってどういうメリットがあるのかと
そのメリットが既存のものを捨てて乗り換えるコストを上回りそうかどうかという
2点をクリアしないと普通の人は新しいものを導入しようって気持ちにはならない

2つとも個々の状況によるものだから
現状の問題点や比較対象無しに聞いてもフワッとしたものしか返ってこないと思う
2020/03/30(月) 19:38:12.89ID:4bRrJB51
上司「小鳥飼いたいのか?」
2020/03/30(月) 19:57:32.43ID:2xrywwd7
ウザっ
2020/03/30(月) 20:58:19.14ID:XS9n9xNo
javaの仕様に追従してる層にならメリットは説明できるけど、そうじゃない層に説明するのは難しい。。
実際、アドバイスくれてる人の説明もjavaの辛みが分かってこその主張だと思う
なんかjava1.6で止まってる人にも分かりやすいメリットないかな。。

ちなみに上司は、人の集めづらさを懸念をしてるだけで、本格的に反対してる訳では無い。純粋にメリット何?って感じ
2020/03/30(月) 21:25:01.20ID:Y9H00XEN
>>906
ここは一つネガキャンで。「KotlinがあるのにJavaをやるのは、JavaがあるのにCをやるようなもの。」
ただ、上司がJava至上主義者なら、「Cなんかと一緒にするな!!」と激怒するおそれあり。
2020/03/30(月) 22:39:22.47ID:cikRGyRQ
そろそろ転職しようと思ってたんだがコロナの影響でエンジニアの求人は減ってるの?まだ待った方が良い?
2020/03/30(月) 23:14:36.65ID:9vU1dCrA
プログラマとエンジニアは別物なので、まずその辺の違いをハッキリさせたほうがいい
2020/03/31(火) 01:21:29.69ID:09jFIsyL
でも、もしJavaならバージョンいくつ使うつもり?
そこどこ新しめJavaならそこまで苦痛にならんぞ
1.6ぐらいと比較して俺のペインポイントだったローカル変数の型推論もあるし、ラムダもあるし、コレクションのストリーム操作もあるし。

大きめの機能でasync/awaitないけど
2020/03/31(火) 01:22:07.78ID:09jFIsyL
そこそこ新しめ*
2020/03/31(火) 01:23:36.87ID:09jFIsyL
あぁもちろんnull safetyもあるが
922デフォルトの名無しさん
垢版 |
2020/03/31(火) 12:30:43.25ID:mNevEI+p
>>911
一発で辞めることができたりして
2020/04/02(木) 00:15:49.69ID:MNI6t01H
Kotlinのdata classがJava14でrecordとして採用されると聞いて感動したのも束の間、まだPreviewなので正式採用はJava16辺りと知り気が遠くなった
誰もが普通に使えるようになるのは2026年頃じゃろか
2020/04/02(木) 01:51:56.87ID:UJkjbKIq
半年毎にアップデートだからJava16は1年後
2020/04/02(木) 02:07:24.43ID:MNI6t01H
誰もが普通にと書いたのはJava11の延長サポートが2026までだから遅い現場だとそこまで待つかなと
でもそれを言うなら8は2030まで延長できるんだった
2020/04/03(金) 06:46:06.71ID:/ReAKvRh
>>919
ラムダ式とOptionalで行けるのではと思っていた時代が、私にもありました。
ただ参照透過なプログラミングをしようとした途端、Listと配列がMutableなことが越えられない壁になる。
Java9から不変リストを作るList.of()があるけど、必要なのは実行時エラーでなくコンパイルエラーで教えてくれる不変リスト。
2020/04/03(金) 09:39:44.79ID:yWt1Tau8
それを言ったらKotlinのListも不変リストではなく読み取り専用のビューなので同じなのでは
2020/04/03(金) 09:41:24.03ID:yWt1Tau8
いや追加や更新機能のないリストインターフェースが欲しいということか
929デフォルトの名無しさん
垢版 |
2020/04/12(日) 01:08:01.34ID:NWUkpCEz
Windows 10 で IntelliJ IDEA を 2020.1 にアップデートしたら起動後にちゃんと動かなかった。
ウインドウは出るがその中が灰色のまま。右下に赤いやつが点滅していてマウスカーソルを
持って行ってクリックすると IDE Internal Error Occurred See Details and Submit Report と
出てくるが、Detail も何も出てこない。ウィンドウの右上の×を押しても終わらず、しょうがない
のでタスクマネージャで終了させた。

Community edition だが、試しに Ultimate の同バージョン方をインストールしたら動いた。
ま、しかし、ライセンスあるわけではないのでとりあえず Community edition の 2019.3.4 に
しておいた。これはちゃんと動く。
2020/04/14(火) 10:52:23.60ID:TtcAIhBY
javaすらやったことない人におすすめのKotlinの参考書ありますでしょうか?
931デフォルトの名無しさん
垢版 |
2020/04/14(火) 11:07:51.69ID:VpWClbHP
Javaやれ
2020/04/14(火) 11:14:48.92ID:TtcAIhBY
今更古いものを勉強するのは嫌です
2020/04/14(火) 11:22:31.52ID:yYd/ONZz
ネットで調べりゃすぐでてくんだろ
2020/04/14(火) 11:31:09.72ID:ARe9d0+J
Kotlinは腐りきったJavaをなんとか少しでも便利に使うための車椅子のようなもの
古いのを勉強したくないならKotlin含めJava系の世界に飛び込むこと自体を考え直してもいいんじゃないかな
2020/04/14(火) 11:35:17.73ID:TtcAIhBY
屁理屈は良いので参考書を教えて下さい。
2020/04/14(火) 11:35:46.91ID:yYd/ONZz
ダメだこいつ
2020/04/14(火) 20:35:17.70ID:W7vR7yPX
だめかなあ
2020/04/14(火) 21:14:44.96ID:CfDohWIc
当然、日本ユーザー会会長の太郎本!
Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016

スッキリわかる Java入門 第2版、2014

超有名なスッキリを読んでないと、オブジェクト指向が分からないのでは?
Ruby をやってれば、オブジェクト指向・メソッドチェーンによる関数型と、両方とも理解できるけど
939デフォルトの名無しさん
垢版 |
2020/05/01(金) 08:16:22.65ID:q8mD6cDI
>>930
C++, C#, Java, Swift, Rubyみたいなモダン言語の経験が無いと、Kotlinは難しいかも。

1. Clousure
2. Generics
3. Type Annotation Estimation
4. Collection
5. protocol

こう言うのが意味不明となる。
OOP自身は難しく無い。
2020/05/01(金) 09:25:47.40ID:MJ8FtJpe
全然関係ないんだけどさ

前々から思ってたんだが
「モダン」って言い方になんか古臭さを感じるんだよな
大正時代的な
他に良い呼び方ってないもんだろうか
941デフォルトの名無しさん
垢版 |
2020/05/01(金) 09:32:44.13ID:k2YlXFh6
ダイナミックレンジですねわかります
2020/05/01(金) 09:41:54.27ID:xXuuls7c
>>939
>3. Type Annotation Estimation

なんのこっちゃ?
943デフォルトの名無しさん
垢版 |
2020/05/01(金) 10:56:25.01ID:q8mD6cDI
>>942
Type inference
944デフォルトの名無しさん
垢版 |
2020/05/01(金) 10:58:18.55ID:q8mD6cDI
>>940
最新新言語、State of Arts computer language、Advanced Language、Recent Language、Up-to-date Language

御好きにすれば!
2020/05/01(金) 11:12:14.62ID:zXgs9Rh4
プロトコルってどういうの?
2020/05/01(金) 11:51:29.93ID:+e/fjpUy
>>945
俺もそれ聞きたいな
2020/05/01(金) 12:19:40.77ID:zJYyytsu
>> 440
意識高い系言語でいいんじゃね
948デフォルトの名無しさん
垢版 |
2020/05/01(金) 12:20:45.98ID:q8mD6cDI
>>946
such like Interface in Java or Abstruct Class in C++
2020/05/01(金) 13:01:44.47ID:zXgs9Rh4
>>948
機能的に違いないのに、名前だけ別のものつけたん?
2020/05/01(金) 13:06:28.96ID:+e/fjpUy
>>948
理解しました
2020/05/01(金) 13:13:27.88ID:578ddPng
>>940
日本人的には大正モダンでハイカラなイメージが強いけど、英単語のmodernにそんなニュアンスはないんだから直訳でモダンでもイイでしょ
アートやインテリアではモダンって普通に使うし
2020/05/01(金) 13:16:50.04ID:+e/fjpUy
モダンExcelなんていう言葉を最近聞いたよ
953デフォルトの名無しさん
垢版 |
2020/05/01(金) 15:33:32.05ID:q8mD6cDI
>>949

1. 違いない
2. 似ている
3. 同じ

これらは、全く異なる意味を持っている。
2020/05/01(金) 16:45:14.68ID:zXgs9Rh4
>>953
ありがとう
知らないなら普通にそう答えてくれればいいのに
2020/05/01(金) 16:54:21.95ID:DyZSnah+
>>948
この業界ではよくあること
956デフォルトの名無しさん
垢版 |
2020/05/01(金) 18:17:15.79ID:m4mY1Cpc
>>940
ナウいヤングな君は和製英語の事は忘れて英語の modern を思い浮かべなさい。
2020/05/02(土) 04:45:48.24ID:HrddHHvE
アマゾンで検索したら7/17発売予定の本が見つかった。表紙デザインもまだ出てこない。

基礎からわかる Kotlin
富田 健二 (著)

単行本: 224ページ
出版社: シーアンドアール研究所 (2020/7/17)
言語: 日本語
ISBN-10: 4863542917
ISBN-13: 978-4863542914
発売日: 2020/7/17

アマゾンのURL書くとここに書き込みできないのでヨドバシのURL書いておく。
https://www.yodobashi.com/product/100000009003256396/
2020/05/02(土) 10:00:39.97ID:aaZCC6Sm
モダンと言えばモダン焼きが思い浮かぶな
2020/05/02(土) 15:59:26.40ID:eL+vj3NV
>>958
大阪人臭い、俺はだんぜん考える人だな
2020/05/02(土) 16:12:54.07ID:HQ5rAU7k
ガチで間違えたのかネタで言ったのか分かりにくい
961デフォルトの名無しさん
垢版 |
2020/05/02(土) 20:00:00.13ID:HrddHHvE
10秒ぐらい考え込んでフリーズした。
2020/05/03(日) 08:14:29.07ID:Myb2oOr3
思考回路はショート寸前
2020/05/03(日) 21:30:39.85ID:+yZ1SVH+
>>962
今すぐ会いたいよ
964デフォルトの名無しさん
垢版 |
2020/05/04(月) 05:41:02.53ID:ZCjfeBBX
>>957
その出版社の本、本のサイズの割に字が小さくて、読みにくいんだよね。
965デフォルトの名無しさん
垢版 |
2020/05/04(月) 20:57:12.28ID:gMqnLc6N
プロトコルってなんなのかよくわからんからググったんだけどさ
Swiftだと主に構造体を使うことになっていて!?構造体にも適用できるインターフェイスがプロトコルってことなのか?
もしそうだとしたら、構造体が主流じゃないKotlinにプロトコルがあろうがなかろうがほとんど変わらん気がするが・・・・
2020/05/04(月) 21:27:04.79ID:au6sJ5VU
プロトコルとインターフェースは呼び名が違うだけ

JavaのインターフェースはObjective-Cのプロトコルを真似して違う名前を付けたもの
SwiftはObjective-Cからプロトコルという名前をそのまま受け継いでる
967デフォルトの名無しさん
垢版 |
2020/05/05(火) 04:39:20.00ID:VadYgeyG
>>966
まじで?>>948は冗談で言ってるんだと思ったぜ・・・・
968デフォルトの名無しさん
垢版 |
2020/05/05(火) 06:35:08.05ID:L2fj2Ukz
Interfaceって機能がなぜ必要?

1. Super1, Super2を多重継承したDerived ClassからSuper1, 2に共にあるfooメンバにアクセスすると、Super1.foo, Super2.fooのどちらが呼ばれる?

2. この問題を回避するには、多重継承を禁止すれば良い(菱形継承問題、Diamond Problem)

3. もう一つの解決方法は、宣言しか実装していないClass(Interface, Prototype, Abstruct Class, Module)を使えば良い。

この理解でOK?
969デフォルトの名無しさん
垢版 |
2020/05/05(火) 06:40:25.13ID:L2fj2Ukz
>>968
具体例

図形 -> 四角形 -> 平行四辺形 -> 長方形
平行四辺形 -> 菱形

こう言うClass Hierarchyがあった時に
長方形 -> 正方形
菱形 -> 正方形

なる正方形を作りたい。

こんな時に、Diamond Problemが発生。
970デフォルトの名無しさん
垢版 |
2020/05/05(火) 06:47:50.54ID:L2fj2Ukz
>>969
[菱形継承問題 - Wikipedia](https://ja.wikipedia.org/wiki/%E8%8F%B1%E5%BD%A2%E7%B6%99%E6%89%BF%E5%95%8F%E9%A1%8C)

俺も昔、C++のvirtual ってなんだ?って日々を過ごした。
e.g.
class B: virtual public A
2020/05/05(火) 06:53:54.99ID:MSVPcbFQ
C++は仕様多すぎて複雑怪奇すぎて意味わからん
C++以外の、高速で、メモリ、OSネイティブAPIを直接いじれて、アセンブリに近い言語って無いんか?
大体ネイティブ機能実装とかだと C++ でやることになるけど
Python とかも結構頑張ってるん?
972デフォルトの名無しさん
垢版 |
2020/05/05(火) 06:54:37.91ID:L2fj2Ukz
>>970
[多重継承(C++) - 超初心者向けプログラミング入門](https://programming.pc-note.net/cpp/inheritance_multiple.html)

C++におけるvirtual の意味!
973デフォルトの名無しさん
垢版 |
2020/05/05(火) 06:57:28.64ID:L2fj2Ukz
>>971
Golangがそれに近いのでは?

Swift, Kotlin Nativeが高速コードを吐く、万能言語を目指してるけど、今のところ達成されていない。

かといってC++が普及しているか?と言われると、初学者を撥ね付ける仕様の複雑さで、そうもなってない。
974デフォルトの名無しさん
垢版 |
2020/05/05(火) 07:22:45.91ID:L2fj2Ukz
学生向けGoogleの社会貢献事業、今年のAnnouncing our Google Summer of Code 2020 students

Swiftやるみたい。
https://forums.swift.org/t/announcing-our-google-summer-of-code-2020-students/36147
2020/05/05(火) 07:56:44.92ID:rwJ86+M0
複数のクラスから継承(is-a)するのは、難しすぎる・柔軟ではないので、
Ruby でも継承は、1つのクラスからしかできない

その代わり、複数の機能・モジュールを、Mixin(has-a, インタフェース)できる

mixinすると継承チェーンに割り込むので、継承チェーンは一直線になる。
同名の関数は、親クラスよりも先に、mixinでみつかる

子 → mixin → 親
2020/05/05(火) 09:55:13.50ID:3EKm8pq3
>>971
Rustでしょ
goはGCだからちょっと違う
2020/05/05(火) 11:54:40.15ID:9hK6pGme
>>975
ほんとどこにでも湧いて出てくるな
978デフォルトの名無しさん
垢版 |
2020/05/05(火) 14:25:41.55ID:L2fj2Ukz
>>975
なるホドォ

mix-inってのは継承チェーンに割込むって意味なのね。
気がつかなかった。

なんで、mix-inって名前なのか今、気がついた。
979デフォルトの名無しさん
垢版 |
2020/05/05(火) 17:57:01.37ID:pxHbBt7R
>>971
> C++以外の、高速で、メモリ、OSネイティブAPIを直接いじれて、アセンブリに近い言語って無いんか?

C言語
2020/05/05(火) 18:21:58.43ID:0KGdisEr
>>979
確かに。

新しいC++の仕様やSTLはとても難しいので、Cを基本として、class などの概念を使いたいなら、C++98などの古いC++の私用の範囲でやることがお勧め。
2020/05/05(火) 23:39:23.20ID:z+IXl+FI
>>971
delphi
982デフォルトの名無しさん
垢版 |
2020/05/06(水) 00:38:39.08ID:izcxg96Z
懐かしい
2020/05/06(水) 01:29:55.10ID:LXTBA+hx
Rubyを覚えるとキチガイになるのか、Rubyがキチガイを集めるのか…
2020/05/06(水) 02:20:12.35ID:FShh0JrM
キチガイじゃないとRubyを続けられない
985デフォルトの名無しさん
垢版 |
2020/05/06(水) 09:52:46.95ID:q6Rk1GB6
基地外がどうこうと言うより
正常な人は Ruby を選ばない
ただそれだけのこと

結果的に基地外濃度が上昇する可能性は否定しない
2020/05/06(水) 11:07:54.39ID:63VCwvU/
Rubyキチは1人じゃない可能性か
嫌な想像だ
2020/05/06(水) 12:12:52.32ID:q8N1X/Ij
オリジナルのルビー男を離れて模倣犯が続出したルビー荒し事件を総括して名付けられたのがスタンドアローン・コンプレックス
プログラミング技術という新たな情報ネットワークにより、独立した個人が、結果的に集団的総意に基づく行動を見せる社会現象を指し、孤立した個人でありながらも全体として集団的な行動を取ることを意味する
2020/05/06(水) 12:53:28.94ID:sf/aHm4k
Rubyキチが1人なのはもちろん
Rubyキチに粘着してるやつも1人だから
2020/05/06(水) 13:08:15.65ID:LXTBA+hx
うん、rubyを擁護したい気持ちは伝わったよ
2020/05/06(水) 14:54:12.65ID:ZzpqVz5O
ちょっと次スレ立ててくる。
2020/05/06(水) 15:01:33.21ID:ZzpqVz5O
と思ったらホストがスレ立て規制だった。スマン。
2020/05/06(水) 16:01:40.29ID:LXTBA+hx
つ Kotlin 7
https://mevius.5ch.net/test/read.cgi/tech/1588748438/
2020/05/06(水) 20:54:05.35ID:ZzpqVz5O
>>992
thx
2020/05/06(水) 23:36:02.80ID:Ah3rIoOF
埋めます
2020/05/06(水) 23:36:56.52ID:Ah3rIoOF
995
2020/05/06(水) 23:37:26.99ID:Ah3rIoOF
996
2020/05/06(水) 23:38:04.35ID:Ah3rIoOF
997
2020/05/06(水) 23:38:46.54ID:Ah3rIoOF
998
2020/05/06(水) 23:39:18.37ID:Ah3rIoOF
999
2020/05/06(水) 23:40:41.80ID:Ah3rIoOF
次スレ
Kotlin 7
https://mevius.5ch.net/test/read.cgi/tech/1588748438/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 319日 7時間 40分 44秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。