文字数制限きついので改題
スレタイ以外の言語もok
前スレ
次世代言語議論スレ[Rust Kotlin Haskell]第6世代
http://mevius.5ch.net/test/read.cgi/tech/1503924817/
探検
次世代言語Part7[Go Rust Swift Kotlin TypeScript]
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/10/19(木) 17:51:38.66ID:EPSDvC75228デフォルトの名無しさん
2017/10/27(金) 23:45:39.75ID:BmYygdVN >>211
ちゃんと具体的にコードを書いてくれて議論しやすくしてくれたのはありがたい。
tree を rust で実装しろって言われたら 10 人中 9 人は Box と Option を
使ったそういう構造体作ると思う。
ちゃんと具体的にコードを書いてくれて議論しやすくしてくれたのはありがたい。
tree を rust で実装しろって言われたら 10 人中 9 人は Box と Option を
使ったそういう構造体作ると思う。
229デフォルトの名無しさん
2017/10/27(金) 23:47:59.22ID:O21aknvD >>214
Pointの例に限って言えば同意できないな
大量の小さなベクトルを扱うような場合、構造体を使うより各成分をそれぞれスカラー配列で持った方が効率いいよ
キャッシュに乗りやすくなる
C++系の言語で行持ちの方が好まれるのは、一番の理由は言語の性質上そのほうが扱いやすいからに過ぎない
最近は列指向DBなんかも普通に使われるようになって、データの列持ちが見直されつつある今、
列持ちのデータ構造をスマートに扱える言語があってもいいと思うわ
Pointの例に限って言えば同意できないな
大量の小さなベクトルを扱うような場合、構造体を使うより各成分をそれぞれスカラー配列で持った方が効率いいよ
キャッシュに乗りやすくなる
C++系の言語で行持ちの方が好まれるのは、一番の理由は言語の性質上そのほうが扱いやすいからに過ぎない
最近は列指向DBなんかも普通に使われるようになって、データの列持ちが見直されつつある今、
列持ちのデータ構造をスマートに扱える言語があってもいいと思うわ
230デフォルトの名無しさん
2017/10/28(土) 00:01:16.09ID:rPyPw2Q2 >>229
Fortran, Juliaのことか?
Fortran, Juliaのことか?
231デフォルトの名無しさん
2017/10/28(土) 00:03:34.74ID:1i6fvk7+232デフォルトの名無しさん
2017/10/28(土) 00:24:09.93ID:rPyPw2Q2233デフォルトの名無しさん
2017/10/28(土) 00:46:39.85ID:pDpr3v8b Rustアンチくんはペチパー
はっきりわかんだね
はっきりわかんだね
234あ
2017/10/28(土) 00:51:22.50ID:Nq0Bzlbk235デフォルトの名無しさん
2017/10/28(土) 00:58:11.14ID:Ng05dLeH236デフォルトの名無しさん
2017/10/28(土) 01:07:07.63ID:rPyPw2Q2237デフォルトの名無しさん
2017/10/28(土) 01:09:54.95ID:Ng05dLeH そういう状況でもない限りそもそもボトルネックにならないからな
238デフォルトの名無しさん
2017/10/28(土) 01:16:42.42ID:FXSZ1oP/ >>211
試行錯誤の過程でアルゴリズムぶっこわれるってのはよくあるが、そうならないためにテストコードがあるっちゃそうだから、
明確な欠点とは言えないかもな
まさかスレに貼るサンプルコードにまでテストコードつけろなんて言えねえし。
試行錯誤の過程でアルゴリズムぶっこわれるってのはよくあるが、そうならないためにテストコードがあるっちゃそうだから、
明確な欠点とは言えないかもな
まさかスレに貼るサンプルコードにまでテストコードつけろなんて言えねえし。
239デフォルトの名無しさん
2017/10/28(土) 04:09:54.80ID:62CU1Qsk240デフォルトの名無しさん
2017/10/28(土) 09:04:44.68ID:C9milqrp コード出すという行動ではなく
コードが正義っていう知見への承認とか共感が欲しかったんじゃないか
だから行動だけでは駄目
コードが正義っていう知見への承認とか共感が欲しかったんじゃないか
だから行動だけでは駄目
242デフォルトの名無しさん
2017/10/28(土) 10:25:15.53ID:CAnYo5YI なぜ私達は Python から Go に移行したのか
https://frasco.io/why-we-switched-from-python-to-go-19581e27de7c
https://frasco.io/why-we-switched-from-python-to-go-19581e27de7c
243デフォルトの名無しさん
2017/10/28(土) 10:45:03.08ID:rPyPw2Q2 よくあんな無様な知ったかぶりしといて人のこと無様とか言えるな
244デフォルトの名無しさん
2017/10/28(土) 11:06:53.69ID:pDpr3v8b これだからペチプァは
245あ
2017/10/28(土) 11:20:03.53ID:McmdGm+1 >>243
自分が無様だと思ってる奴に無様だと言われるのはさぞ辛かろうが、
俺が無様なのとHaskell書いたやつが無様なのは別の事象で、
同時に無様でありえるんだから、その指摘はナンセンスだろ。
その理解力でHaskell最高!と思ってるのも面白いな。Maybeの真髄だろ。事象を整理するのは。
自分が無様だと思ってる奴に無様だと言われるのはさぞ辛かろうが、
俺が無様なのとHaskell書いたやつが無様なのは別の事象で、
同時に無様でありえるんだから、その指摘はナンセンスだろ。
その理解力でHaskell最高!と思ってるのも面白いな。Maybeの真髄だろ。事象を整理するのは。
246デフォルトの名無しさん
2017/10/28(土) 11:28:14.87ID:rPyPw2Q2 なんだこいつなんで俺がHaskell 信者みたいな前提で煽って来てんだ
247デフォルトの名無しさん
2017/10/28(土) 11:36:54.21ID:c+qfWZBO もう最新規格のFortranで良いよ
248デフォルトの名無しさん
2017/10/28(土) 12:01:24.16ID:1i6fvk7+ Fortranに第一級関数がついてimplicit noneがデフォルトになってinterface文をもうちょっと短く書けるようになって引数の型指定をCみたいに書けるようになって
配列の大きさ指定の関数に組み込みでない関数を使えるようになってgfortranのbind(C)周りのバグを解消してくれたらFortranでいいよ
配列の大きさ指定の関数に組み込みでない関数を使えるようになってgfortranのbind(C)周りのバグを解消してくれたらFortranでいいよ
249デフォルトの名無しさん
2017/10/28(土) 12:13:39.86ID:pDpr3v8b 西京言語PHPを使えばいいじゃん(いいじゃん)
250デフォルトの名無しさん
2017/10/28(土) 12:20:24.44ID:aTcnbQEE PHPが、前世紀末に流行したPerlでCGIという極悪システムを撲滅した功績は大きい
251デフォルトの名無しさん
2017/10/28(土) 12:31:15.99ID:MXV4el39 mod_perlとだったら大して変わらん気がする
252デフォルトの名無しさん
2017/10/28(土) 12:33:46.88ID:pDpr3v8b >PHPが、前世紀末に流行したPerlでCGIという極悪システムを撲滅した功績は大きい
キリッ
www
キリッ
www
253デフォルトの名無しさん
2017/10/28(土) 17:09:33.99ID:GkEAGE6K 皆がCGIという共通ルールを守る中
汎用性のない独自実装をしたphp
汎用性のない独自実装をしたphp
254デフォルトの名無しさん
2017/10/28(土) 17:24:26.31ID:6pjbn+cV まあ今更Perlとかって選択肢はないからね
255デフォルトの名無しさん
2017/10/28(土) 17:31:59.24ID:Hah9JG+z FacebookはなんでPHP推しなの?
256デフォルトの名無しさん
2017/10/28(土) 18:04:40.73ID:D4ynCBSM PHPをC++に変換するんだっけ
むしろJavaをC++に変換するのを誰もやらない理由を知りたい
むしろJavaをC++に変換するのを誰もやらない理由を知りたい
257デフォルトの名無しさん
2017/10/28(土) 18:12:54.21ID:z3Njt94H258デフォルトの名無しさん
2017/10/28(土) 18:27:47.92ID:GkEAGE6K phpのがサーバでしか使われてない印象
どっかで使ってる?
どっかで使ってる?
259デフォルトの名無しさん
2017/10/28(土) 18:32:36.63ID:GkEAGE6K260デフォルトの名無しさん
2017/10/28(土) 19:01:45.06ID:0vLNpJP2 PHPの特徴ってインスタンスの生存時間が極端に短い。ってこと。
request受けてからresponse返すまで。
だからGCが貧弱でも何の問題もないし。糞汚いコードでもメモリリークが問題にならない。
request受けてからresponse返すまで。
だからGCが貧弱でも何の問題もないし。糞汚いコードでもメモリリークが問題にならない。
261デフォルトの名無しさん
2017/10/28(土) 19:13:14.28ID:PFwR8W+K >>256
GCC
http://news.mynavi.jp/news/2016/09/08/290/
あと、AndroidはJavaじゃないからノーカンなのかもしれないが、
以前はネイティブに全部変換していたのをやめた
GCC
http://news.mynavi.jp/news/2016/09/08/290/
あと、AndroidはJavaじゃないからノーカンなのかもしれないが、
以前はネイティブに全部変換していたのをやめた
262デフォルトの名無しさん
2017/10/28(土) 19:51:46.92ID:SOIebb5r263デフォルトの名無しさん
2017/10/28(土) 20:44:53.33ID:VLfN62TL264デフォルトの名無しさん
2017/10/28(土) 21:07:01.93ID:ruX3/fgh それ以上ペチパーの心のより所を叩くのはやめてやれw
彼ら、憤死してしまうでwww
彼ら、憤死してしまうでwww
265デフォルトの名無しさん
2017/10/28(土) 21:37:38.45ID:GkEAGE6K >>260
言ってること滅茶苦茶だな
言ってること滅茶苦茶だな
266デフォルトの名無しさん
2017/10/28(土) 21:57:38.28ID:D4ynCBSM 伝えようとすれば滅茶苦茶
隠そうとすればバレバレ
だから型情報とか一生懸命伝えようとする言語が報われない
隠そうとすればバレバレ
だから型情報とか一生懸命伝えようとする言語が報われない
267デフォルトの名無しさん
2017/10/29(日) 03:03:23.28ID:7slaGsXS >>242
go 好きな人ってまともすぎてつまらんな。
go 好きな人ってまともすぎてつまらんな。
268デフォルトの名無しさん
2017/10/29(日) 05:05:09.88ID:ZPHcoPj2269デフォルトの名無しさん
2017/10/29(日) 05:05:25.10ID:ZPHcoPj2 >>267
きんも
きんも
270デフォルトの名無しさん
2017/10/29(日) 17:16:13.61ID:sv965ldD >>268
http://gihyo.jp/lifestyle/clip/01/awt/201603/24
>しかし,AOT方式をいざ導入してみると,サイズの大きなアプリのインストールや,
>一度に複数のアプリをアップデートするような場合にコンパイルに時間がかかり,
>場合によっては20分程度かかるケースが存在していたようです。
>このインストール時間を問題と捉えて,Android NのARTでは,JIT方式をもう一度使うことになりました。
http://gihyo.jp/lifestyle/clip/01/awt/201603/24
>しかし,AOT方式をいざ導入してみると,サイズの大きなアプリのインストールや,
>一度に複数のアプリをアップデートするような場合にコンパイルに時間がかかり,
>場合によっては20分程度かかるケースが存在していたようです。
>このインストール時間を問題と捉えて,Android NのARTでは,JIT方式をもう一度使うことになりました。
271デフォルトの名無しさん
2017/10/30(月) 08:01:20.39ID:BetGXhC9 >>242
GOいいな
GOいいな
272デフォルトの名無しさん
2017/10/30(月) 10:22:57.04ID:sonZMQS5273デフォルトの名無しさん
2017/10/30(月) 11:06:54.77ID:ywxMmK0+ Rubyの教訓は、「Perlよりマシ」に全振りしたけどPythonと比べると大したことなかった
274デフォルトの名無しさん
2017/10/30(月) 17:27:48.73ID:ExtYgMew Goのどこに生産性があるんだよ
275あ
2017/10/30(月) 18:12:26.17ID:53AKimFl >>274
そりゃ、ひたすら書ける部分だろ。
迷わんぞ。書く量が多いだけで。
生産性と言うと表現力ばっかり取り上げられるが、単位時間あたりのアウトプットも見ないといかん。
その点、信じられないレベルで楽。
そりゃ、ひたすら書ける部分だろ。
迷わんぞ。書く量が多いだけで。
生産性と言うと表現力ばっかり取り上げられるが、単位時間あたりのアウトプットも見ないといかん。
その点、信じられないレベルで楽。
276デフォルトの名無しさん
2017/10/30(月) 19:01:45.29ID:ExtYgMew >>275
行数多くなるから生産性が高いように見えるだけだろ
行数多くなるから生産性が高いように見えるだけだろ
277デフォルトの名無しさん
2017/10/30(月) 19:15:05.61ID:LhEsAIcv そいつは関数型しったか野郎なので話すだけ無駄
無知が無知なりの常識で頑張って答えてくれるかも知れないけど参考にはならないだろう
無知が無知なりの常識で頑張って答えてくれるかも知れないけど参考にはならないだろう
278デフォルトの名無しさん
2017/10/30(月) 20:23:14.16ID:1YWjfXwW 迷わずひたすらに書かれたF77のコード読みづらすぎ
279デフォルトの名無しさん
2017/10/30(月) 20:45:20.95ID:uihdCXQ7 Goは構造体へのタグ埋め込みや、codegenまわりのツールが充実してるお陰で
ボイラープレートコードを書かんでいいのがでかい
それだけならLLでもできるが、テスト作ってから設置して実行するまでの作法が簡潔に固まってるのが更に強い
少なくとも時間当たりのテスト含めた成果物は他の言語と比べ物にならん
ボイラープレートコードを書かんでいいのがでかい
それだけならLLでもできるが、テスト作ってから設置して実行するまでの作法が簡潔に固まってるのが更に強い
少なくとも時間当たりのテスト含めた成果物は他の言語と比べ物にならん
280デフォルトの名無しさん
2017/10/30(月) 21:31:16.17ID:d6rNWUAL 逆に、汎用ライブラリ書こうとするととたんにinterface地獄になってボイラープレート増えるんだがな
だから、目の前の仕事の案件片付けるのに特化した言語だと思ってる
だから、目の前の仕事の案件片付けるのに特化した言語だと思ってる
281デフォルトの名無しさん
2017/10/30(月) 22:18:12.05ID:1mVUn5ql >>221
ちょっといまさらだがRust版平衡木(AA木)をリファクタリングしたぞ。
まあ、だれも書いてくれそうになかったし、数日たったらまたやる気も出たから自分でやり直したわけだが。
基本的にはAだが、すべて当てはまるな。
RustはNull安全なのでOption型のチェックが必須、コンパイラに所有権を伝えるためas_ref等が必要、
デフォルトはイミュターブルのためミュータブルを扱うためにmutキーワードが必要などが主な理由。
そこら辺の安全性と引き換えに多少は目をつぶってくれという感じはある。
Bに関しては副作用もあるが、それよりもどちらかというと木構造の回転操作みたいな
変数の所有者が次々に代わるようなコードはRustでは所有権システムがあるため書きづらい。
とはいえ、前のコードに比べれば大分マシにはなったかと。
まあコードが綺麗か汚いかなんて個人の主観によるところが大きいから、まだ文句を言うやつもいると思うけど。。。
特に>>217なんかには「どんなアルゴリズムだろうが言語によって最適な書き方は違う」
ということをきちんと理解してもらいたい。
あと、コードのリンクを貼るという手段があることを知った。
比較できるように全て載せておく。
C版
https://wandbox.org/permlink/fc1xI7dDCdOMgysC
Rust版 before
https://wandbox.org/permlink/cbzzpLw97K2Tydk1
Rust版 after
https://wandbox.org/permlink/ppQOQREnDlpccpJV
ちょっといまさらだがRust版平衡木(AA木)をリファクタリングしたぞ。
まあ、だれも書いてくれそうになかったし、数日たったらまたやる気も出たから自分でやり直したわけだが。
基本的にはAだが、すべて当てはまるな。
RustはNull安全なのでOption型のチェックが必須、コンパイラに所有権を伝えるためas_ref等が必要、
デフォルトはイミュターブルのためミュータブルを扱うためにmutキーワードが必要などが主な理由。
そこら辺の安全性と引き換えに多少は目をつぶってくれという感じはある。
Bに関しては副作用もあるが、それよりもどちらかというと木構造の回転操作みたいな
変数の所有者が次々に代わるようなコードはRustでは所有権システムがあるため書きづらい。
とはいえ、前のコードに比べれば大分マシにはなったかと。
まあコードが綺麗か汚いかなんて個人の主観によるところが大きいから、まだ文句を言うやつもいると思うけど。。。
特に>>217なんかには「どんなアルゴリズムだろうが言語によって最適な書き方は違う」
ということをきちんと理解してもらいたい。
あと、コードのリンクを貼るという手段があることを知った。
比較できるように全て載せておく。
C版
https://wandbox.org/permlink/fc1xI7dDCdOMgysC
Rust版 before
https://wandbox.org/permlink/cbzzpLw97K2Tydk1
Rust版 after
https://wandbox.org/permlink/ppQOQREnDlpccpJV
282デフォルトの名無しさん
2017/10/30(月) 22:28:38.00ID:LhEsAIcv ほう
283あ
2017/10/31(火) 00:08:53.17ID:VssU1hfB284デフォルトの名無しさん
2017/10/31(火) 00:13:46.41ID:AszsXbkO 関数型以外シッタカ←根拠なしのただのディス
からの
人をディスるんじゃなくて自分を高めれば?
自戒かな?
からの
人をディスるんじゃなくて自分を高めれば?
自戒かな?
285デフォルトの名無しさん
2017/10/31(火) 00:16:52.10ID:xO8W0Vv5 そいつの相手しても得るもん無いってことくらいはそろそろ分かって欲しい
286あ
2017/10/31(火) 00:17:14.17ID:VssU1hfB 言い返されてそれはみっともないリアクションだな。
よほど、関数型言語が好きなんだね(笑)
専スレ立ててやれよ。次世代言語でもないわ。
よほど、関数型言語が好きなんだね(笑)
専スレ立ててやれよ。次世代言語でもないわ。
287あ
2017/10/31(火) 00:19:38.37ID:VssU1hfB 好きなら好きで良いのに、なぜ固執するかわからん。
ナイフで整備できるようにネジを全部マイナスネジにしたロシア(?)の戦車みたいな間抜けな話と同じように、目的に対して使う道具なんか考えりゃ良いのに。
ナイフで整備できるようにネジを全部マイナスネジにしたロシア(?)の戦車みたいな間抜けな話と同じように、目的に対して使う道具なんか考えりゃ良いのに。
288デフォルトの名無しさん
2017/10/31(火) 00:26:46.01ID:AszsXbkO よほど関数型言語が好きなんだね←誰もそんなことは言っていない
なぜ固執するかわからん←固執していない
誰と闘っているんだコイツは。少なくとも俺じゃねえな
なぜ固執するかわからん←固執していない
誰と闘っているんだコイツは。少なくとも俺じゃねえな
289デフォルトの名無しさん
2017/10/31(火) 00:39:43.26ID:H/nTnETZ おまえら旧世代猿人類どもはウンコブラシのプェチピィのゲリクソピィでもプリプリしてろ
290デフォルトの名無しさん
2017/10/31(火) 01:21:58.60ID:nWIRKYZE291デフォルトの名無しさん
2017/10/31(火) 07:32:43.21ID:nUaOreAB292デフォルトの名無しさん
2017/10/31(火) 07:35:28.96ID:u9ib2mEN293デフォルトの名無しさん
2017/10/31(火) 09:37:19.94ID:EcpjGxny294デフォルトの名無しさん
2017/10/31(火) 09:56:03.51ID:nWIRKYZE unwrapはNoneだった場合にランタイムクラッシュする関数だから本来使ったらアカン関数
この辺はnil安全うたってる言語はおおむねそう
この辺はnil安全うたってる言語はおおむねそう
295デフォルトの名無しさん
2017/10/31(火) 10:23:24.56ID:2R0mp116 Goは最初期Javaかっていう後退レベルだし、Rustは木構造すら数日かかりで必要な難解言語だしでどっちもクソ言語
はいこれで仲直り
はいこれで仲直り
296デフォルトの名無しさん
2017/10/31(火) 10:43:17.86ID:gJSMspm+ パラダイムシフトを強いる言語は地雷が多いな。
俺はリアクティブプログラミングで懲りた。
俺はリアクティブプログラミングで懲りた。
297デフォルトの名無しさん
2017/10/31(火) 10:44:19.94ID:Bl0tBU4z 数日がかりというが兎と亀みたいにRust以外の言語は寝てたから
Rustが一番早い
Rustが一番早い
298デフォルトの名無しさん
2017/10/31(火) 11:07:20.83ID:AszsXbkO その理屈だとCが一番じゃん?
299デフォルトの名無しさん
2017/10/31(火) 11:21:14.97ID:f3HKFkZK 結局当面はC#系(TypeScript/Kotlin)の天下ということでよろしいか
300デフォルトの名無しさん
2017/10/31(火) 11:40:23.38ID:YHJiaIXY >>294
そういうこと。だからRust版 afterではunwrapはほとんど使用していない。
通常、Optionの中身を取り出すときはunwrap_or, unwrap_or_else, unwrap_or_default
のどれかを使用してNoneだったときはどうするのか指定する。
unwrapを使用するときはアルゴリズム的に中身が存在しないこと自体がありえなくて、
Noneならバグと判断してむしろそのタイミングで落ちてバグを知らせてほしい時のみ使用する。
この仕組みによってNullが存在しない(いわゆるNull安全な)言語を実現している。
多少書くのは面倒だが「10億ドルの損失」に比べればこのくらいカワイイもんだろってこと。
ちなみにC#なんかでも導入が検討されているらしいが、既存コードとの互換性が保てないので難儀しているようだ。
Type scriptみたいにコンパイルオプション付ければいいのにとか俺は思うんだが、なんか理由があるのかな?
そういうこと。だからRust版 afterではunwrapはほとんど使用していない。
通常、Optionの中身を取り出すときはunwrap_or, unwrap_or_else, unwrap_or_default
のどれかを使用してNoneだったときはどうするのか指定する。
unwrapを使用するときはアルゴリズム的に中身が存在しないこと自体がありえなくて、
Noneならバグと判断してむしろそのタイミングで落ちてバグを知らせてほしい時のみ使用する。
この仕組みによってNullが存在しない(いわゆるNull安全な)言語を実現している。
多少書くのは面倒だが「10億ドルの損失」に比べればこのくらいカワイイもんだろってこと。
ちなみにC#なんかでも導入が検討されているらしいが、既存コードとの互換性が保てないので難儀しているようだ。
Type scriptみたいにコンパイルオプション付ければいいのにとか俺は思うんだが、なんか理由があるのかな?
301デフォルトの名無しさん
2017/10/31(火) 11:47:33.10ID:f3HKFkZK コンパイルオプションだと既存コードを一緒にビルドできなくなるだろ
互換性を絶対神とするC#に導入するなら、#pragmaでソースファイルごとにオプトインするか、
asyncみたいに修飾子で特定のスコープだけ解釈を変えるか、
デフォルトをnull非許容にするのは諦めてstring!にするかのいずれかだよ
互換性を絶対神とするC#に導入するなら、#pragmaでソースファイルごとにオプトインするか、
asyncみたいに修飾子で特定のスコープだけ解釈を変えるか、
デフォルトをnull非許容にするのは諦めてstring!にするかのいずれかだよ
302デフォルトの名無しさん
2017/10/31(火) 12:45:40.51ID:JU1cd7E4 Goが優れてる点はcode生成に最適化されてる点だと思う。
Goはメソッド定義が同じディレクトリ内なら何処でもできる。
つまりコード生成によってメソッドを追加できる。
ファイルでコード生成の箇所と自作の箇所をわけれる。
Goはメソッド定義が同じディレクトリ内なら何処でもできる。
つまりコード生成によってメソッドを追加できる。
ファイルでコード生成の箇所と自作の箇所をわけれる。
303デフォルトの名無しさん
2017/10/31(火) 12:48:35.27ID:JU1cd7E4 >>296
Rxはもっとシンプルな定義にできないのかなーって思う。
「全てはストリーム」という考え方はシンプルなのにいざ使おうとすると
ライブラリは複雑すぎる。
もしかしたら言語まるごとRxの考え方で作ったら簡単になるんかな。
Rubyの作者がStreamって言語をつくってるけど、、、、完成しそうもないし
Rxはもっとシンプルな定義にできないのかなーって思う。
「全てはストリーム」という考え方はシンプルなのにいざ使おうとすると
ライブラリは複雑すぎる。
もしかしたら言語まるごとRxの考え方で作ったら簡単になるんかな。
Rubyの作者がStreamって言語をつくってるけど、、、、完成しそうもないし
304デフォルトの名無しさん
2017/10/31(火) 15:40:47.27ID:ivXWtcCM rust で
if root.is_none() {
return 0;
}
root.as_ref().unwrap().level
を
match root {
Some(node) => node.level,
None => 0
}
と書かないのは何故?所有権とかの問題?
if root.is_none() {
return 0;
}
root.as_ref().unwrap().level
を
match root {
Some(node) => node.level,
None => 0
}
と書かないのは何故?所有権とかの問題?
305デフォルトの名無しさん
2017/10/31(火) 16:19:26.73ID:YHJiaIXY >>304
え?どっちでもいいよ?
リファクタリング後のコードでは使用してないはずだけど。。。
それでもいいし
root.as_ref()
.map(|node| node.level)
.unwrap_or_default()
でもいいし
if let Some(ref node) = *root {
node.level
} else {
0
}
でもいい。どれを使うかは好みの問題。
ただし、>>304のmatch文は正確にはこうなると思う。
match *root {
Some(ref node) => node.level,
None => 0,
}
rootはたぶん型が &T (借用) だから*で参照外しないといけないし、
ref は所有権を「移動」じゃなくて「借用」するために必要。
え?どっちでもいいよ?
リファクタリング後のコードでは使用してないはずだけど。。。
それでもいいし
root.as_ref()
.map(|node| node.level)
.unwrap_or_default()
でもいいし
if let Some(ref node) = *root {
node.level
} else {
0
}
でもいい。どれを使うかは好みの問題。
ただし、>>304のmatch文は正確にはこうなると思う。
match *root {
Some(ref node) => node.level,
None => 0,
}
rootはたぶん型が &T (借用) だから*で参照外しないといけないし、
ref は所有権を「移動」じゃなくて「借用」するために必要。
306デフォルトの名無しさん
2017/10/31(火) 17:24:30.09ID:YHJiaIXY >>304
>> リファクタリング後のコードでは使用してないはずだけど。。。
誤解を招くかもだな。すまぬ。
if root.is_none() {
return 0;
}
root.as_ref().unwrap().level
のほうはリファクタリング後のコードでは使用してないはずだけど。。。だな
>> リファクタリング後のコードでは使用してないはずだけど。。。
誤解を招くかもだな。すまぬ。
if root.is_none() {
return 0;
}
root.as_ref().unwrap().level
のほうはリファクタリング後のコードでは使用してないはずだけど。。。だな
307デフォルトの名無しさん
2017/11/01(水) 08:38:18.68ID:R9aAc8x6 なるほど。ありがとう。
308デフォルトの名無しさん
2017/11/02(木) 00:38:25.36ID:0kOiRsC5 いいってことよ
309デフォルトの名無しさん
2017/11/02(木) 08:54:18.64ID:N8nuZaLN if not is_none 判定時に実行される、
コンパイラさんにも非noneと分かるコードパスでは
unwrap省略できれば読み書きする際にもPanic起こさないと分かりやすいしシンプルになるな。
実際にも最適化でチェックのコードも吐かれてないだろうし。
コンパイラさんにも非noneと分かるコードパスでは
unwrap省略できれば読み書きする際にもPanic起こさないと分かりやすいしシンプルになるな。
実際にも最適化でチェックのコードも吐かれてないだろうし。
310デフォルトの名無しさん
2017/11/02(木) 12:08:13.82ID:jpQjT5m9311デフォルトの名無しさん
2017/11/02(木) 12:58:12.12ID:jpQjT5m9 >>309
そのやり方は所有権システムの関係で難しいかもしれないな。
非noneが分かっていたとしても中身を取り出す時に所有権を移動する借用するのか決める必要がある。
そして、移動するにせよ借用するにせよ、取り出した時点から所有権システムの制約により
その親にあたるOption型の変数がスコープを抜けるまでは参照不可になる。
移動する場合は、スコープが抜ければOption変数ごと一緒に消費されるはずなので問題ないと思うが、
借用の場合は、スコープを抜けるまでOption変数が参照不可のままじゃ困る場合も多いだろう。
結局は、if let や match 等のスコープを使って借用が終わるタイミングを
コンパイラに知らせるための表現が必要になるんじゃないかと思う。
自分も所有権システムを完全に把握してるわけではないので、間違ってたら指摘してくれ。
そのやり方は所有権システムの関係で難しいかもしれないな。
非noneが分かっていたとしても中身を取り出す時に所有権を移動する借用するのか決める必要がある。
そして、移動するにせよ借用するにせよ、取り出した時点から所有権システムの制約により
その親にあたるOption型の変数がスコープを抜けるまでは参照不可になる。
移動する場合は、スコープが抜ければOption変数ごと一緒に消費されるはずなので問題ないと思うが、
借用の場合は、スコープを抜けるまでOption変数が参照不可のままじゃ困る場合も多いだろう。
結局は、if let や match 等のスコープを使って借用が終わるタイミングを
コンパイラに知らせるための表現が必要になるんじゃないかと思う。
自分も所有権システムを完全に把握してるわけではないので、間違ってたら指摘してくれ。
312デフォルトの名無しさん
2017/11/02(木) 16:01:49.17ID:24MXnSEE panic の代わりに未定義動作を行うことで、最適化時にNone時の経路が取り除かれる unchecked_unwrap() とかある。
外部クレートだけど。
外部クレートだけど。
313デフォルトの名無しさん
2017/11/02(木) 18:20:00.53ID:hBgfRlI6 FFIと静的型は相性悪いなあ
314デフォルトの名無しさん
2017/11/02(木) 21:04:39.70ID:aCC/XP/X 嫌われているプログラミング言語ランキング - Stack Overflow
http://news.mynavi.jp/news/2017/11/02/073/
http://news.mynavi.jp/news/2017/11/02/073/
315デフォルトの名無しさん
2017/11/02(木) 21:06:15.09ID:aCC/XP/X 最も嫌われているプログラミング言語は?--Stack Overflowが調査結果を発表
https://japan.zdnet.com/article/35109803/
https://japan.zdnet.com/article/35109803/
316デフォルトの名無しさん
2017/11/03(金) 01:51:06.45ID:8/ecCbDm だから何度も言ってるだろ
型なし能なし未来なしの糞言語が
使ってる連中は今すぐ首吊ってなるべく苦しんで無様に血糞尿にまみれて死ねよ
型なし能なし未来なしの糞言語が
使ってる連中は今すぐ首吊ってなるべく苦しんで無様に血糞尿にまみれて死ねよ
317デフォルトの名無しさん
2017/11/03(金) 01:55:11.36ID:KPeHygtG318デフォルトの名無しさん
2017/11/03(金) 09:09:40.17ID:8/ecCbDm319デフォルトの名無しさん
2017/11/03(金) 09:10:55.64ID:FED00RZ3 その政策の予算をいくらまでなら払えるか考えよう
予算なしは能なし未来なし
予算なしは能なし未来なし
320デフォルトの名無しさん
2017/11/03(金) 10:56:17.26ID:Z9aKc5RB すまんが型なし言語って何ンゴ?
321デフォルトの名無しさん
2017/11/03(金) 11:18:42.35ID:4GoOMjot 機械語のことかな?
322デフォルトの名無しさん
2017/11/03(金) 11:44:21.79ID:TD8MDvzA 変数に型の無い言語か
323デフォルトの名無しさん
2017/11/03(金) 14:34:55.34ID:5BCFVkq4 Go言語で
var 変数名 = 値
の表記の時は型を省略できるそうですが
値が数値で、値から型が確定できない場合はどうなるのでしょうか?
値から型を確定できるのは文字列型と真偽値くらいだと思いますが
var 変数名 = 値
の表記の時は型を省略できるそうですが
値が数値で、値から型が確定できない場合はどうなるのでしょうか?
値から型を確定できるのは文字列型と真偽値くらいだと思いますが
324デフォルトの名無しさん
2017/11/03(金) 14:43:12.88ID:tw8puOLs >>323
値に応じたデフォルトの型か決まっている
値に応じたデフォルトの型か決まっている
325デフォルトの名無しさん
2017/11/03(金) 14:58:26.87ID:5BCFVkq4326デフォルトの名無しさん
2017/11/03(金) 15:00:00.55ID:fYVptX6H327デフォルトの名無しさん
2017/11/03(金) 15:50:26.42ID:Tuvr4QS2 VBA は explicit 付ければ堅く書くこともできるんやで〜。
そんな書き方するやつあんまいないけど。。
そんな書き方するやつあんまいないけど。。
■ このスレッドは過去ログ倉庫に格納されています
