[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 04/24 12:50 / Filesize : 249 KB / Number-of Response : 1032
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

次世代言語9[Haskell Rust Kotlin TypeScript Dart]



1 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 10:09:15.60 ID:x/Au45rc.net]
スレタイ以外の言語もok

前スレ
次世代言語Part8[Haskell Rust Kotlin TypeScript]
mevius.5ch.net/test/read.cgi/tech/1512137301/

792 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 00:44:53.47 ID:V9VuwMAu.net]
ここでのクソみたいな議論に時間を使うことが一番コスト高ってことを
goを使ってる人はわかってる。

793 名前:デフォルトの名無しさん [2018/04/08(日) 00:59:11.92 ID:yrhx1H5B.net]
>>764
例外ってか戻値無視してたらコンパイルエラーにする構文がほしい。(すでにgoにあったらスマヌ)
ライブラリやミドルウェア作るとき、ここでエラーならそれ以上処理進めんなってことあるので、アプリ側のエラーハンドリングを強制させたい。
それができないからやむを得ず例外で終了させてる。

794 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 01:06:05.49 ID:+FJwvftX.net]
>>769
例外とコンパイルエラーを同じものと考える神経がわからん。
実行時にまずい処理が来たらgoのプログラムを強制終了させたいならpanicがあるが。

795 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 01:11:44.09 ID:+FJwvftX.net]
つーかgoが気に入らない理由に例外を上げるけど、例外ってそんなに良いもんかね?

例えばこの関数は例外を上げる可能性があるからtryブロック内に書かないとコンパイルエラーになる言語ってある?
それくらいやってくんないと例外を使う意味って、エラーハンドリング問題の先送りでしかないから。

796 名前:デフォルトの名無しさん [2018/04/08(日) 01:12:25.64 ID:DdcJdhQn.net]
>>766
問題って書いたのが誤解を招いてしまったかな…
別に上記の全てが無いとダメって言ってるわけじゃないよ。あったら嬉しいなくらいにしか思ってない
けど、例外なんて邪魔にしかならん機能を欲しがるくらいなら他に欲しいものがいくらでもあるだろと思って…

あと、揚げ足取って悪いけど、100徳ナイフを欲しがってるなら例外も欲しがってるはずだろ…
例外と継承を捨てたのはGoの英断

797 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 01:16:07.05 ID:kOs0IpX+.net]
>>772
いやお前は悪くない。相手が意味ワカラン奴なだけだ

798 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 01:46:25.89 ID:21utqBEE.net]
java
但しランタイム例外は除く

799 名前:デフォルトの名無しさん [2018/04/08(日) 02:00:48.53 ID:DdcJdhQn.net]
>>771
>例えばこの関数は例外を上げる可能性があるからtryブロック内に書かないとコンパイルエラーになる言語ってある?
Javaの検査例外とSwiftの例外はtry必須だよ。
けど、try必須だと書くのが面倒なんだよね。実際、Javaでは非検査例外のほうが主に使われてるし…
検査例外と非検査例外を場合によって書き分けるのがJavaの理想なんだろうけど、現実はそうじゃない…
Swiftの例外はtryの書き方が何種類かあるからJavaより使い易くはなってるんだけど
Rustと同じでタグ付きユニオン(enum型)あるから別に必要なくない?ってなる
Rustはエラー処理にenumのResult型を使うけど、Swiftでは例外を使うのがマナーなのかな?

800 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 02:16:09.65 ID:+FJwvftX.net]
>>775
swiftはそうだったな。
たしか例外周りはswift2で追加実装されてウゲーってなった覚えがあるような。
swiftの言語仕様の変更は凄まじいものがあるよな。もうswift4だっけか?
正直swift信奉者≒apple信者じゃないと説明がつかない。
言語仕様をミニマムに抑えて



801 名前:熟考するgoを見習ってほしいわ。 []
[ここ壊れてます]

802 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 02:26:12.80 ID:+FJwvftX.net]
>>775
つまり結局goのエラーハンドリングの面倒くささと一緒になるってことだよな?

goのエラーはただの値だから
構造体のメンバ変数に格納先を用意してやれば、
後で纏めてチェックしたり、
一回でもエラーが発生したら処理を中断する
みたいな書き方は全然できる。

そのへんはgo blogに記事があった。

803 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 03:04:32.63 ID:N7to3hps.net]
>>771
goの例外不在についてはerrorの握りつぶしが書きやすい上に気づきにくいのが不満
握りつぶしに比べたら先送りのほうがまだ良い
>>769が戻値無視してたらコンパイルエラーって言ってるのはそこが理由でしょ

804 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 03:14:34.94 ID:+FJwvftX.net]
>>778
あー。なるほどと思ったけど例外処理は先送りしたあげく、結局とこでも処理せず終わるパターンあるよね。
握りつぶしが簡単にできるのはどっちも一緒では?

805 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 03:17:34.48 ID:N7to3hps.net]
>>779
ハンドルされない例外は処理の中断になるけど、
握りつぶしは処理の続行になる
中断のほうが良い、と思う

806 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 03:49:10.38 ID:DdcJdhQn.net]
>>780
例外の一番の問題は予想外の場所で例外が不必要にキャッチされて、その上で
握りつぶされてしまった場合、握りつぶされた場所を特定するのがかなり面倒臭いこと。
そんなコード書くヤツが悪いと言いたいが実際にいるんだからしょうがない…
どこで握りつぶされるか分からんリスクを背負うくらいならその場で握りつぶされた方がまだいい

因みに、エラーハンドリングに関してはRustのResult型が最も筋が良いと思ってる
Result型なら故意に握りつぶそうとでもしない限りは簡単には握りつぶせない

807 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 04:07:01.05 ID:N7to3hps.net]
>>781
goのほうが握りつぶしが書きやすいからこそ、どこで握りつぶされるか分からんリスクはgoのほうが大きい、と思うんだよなあ

808 名前:デフォルトの名無しさん [2018/04/08(日) 08:46:33.77 ID:Dxb/j7Bg.net]
>>781
トラブルシューティングの為に、キャッチした時点でロギングしないの?

809 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 09:00:51.10 ID:RUgiqDA/.net]
Cのprintfの戻り値を毎回欠かさずチェックしてる人だけが例外に石を投げなさい

810 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 10:19:07.88 ID:xmyFoIZI.net]
戻り値の握り潰しは局所的・静的に判断できるけど例外はそうじゃないからなぁ。
それこそ例外を起こしてみないと見つけるのが困難だったりして。



811 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 10:23:53.74 ID:+rfxRhvD.net]
例外は継続的な改良に対応しやすいのがメリットなんだよな
取りあえず最初は例外安全だけ意識して例外は上の方でまとめて処理しておいて、
あとでより丁寧な取扱いが必要になったときは問題なく対応できる
もちろん、検査例外とかいうビチグソは無い前提だが

812 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 11:36:37.63 ID:Bf+GYw8s.net]
最初はexit
exitの握り潰しが必要になったら例外で

813 名前:デフォルトの名無しさん [2018/04/08(日) 11:42:04.86 ID:YK+KPtHu.net]
>>758
1から10までの整数を足すのに
ループで順番に足す方法を教える様なのが
今の日本のプログラミング学習(教育)だからな
そんなんじゃだめ

814 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 13:08:16.40 ID:mQRLIlYG.net]
このスレも例外が理解できない幼稚園児ばっかかよ
Goみたいな言語が流行るわけだ

815 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 13:22:55.27 ID:Bf+GYw8s.net]
自分で選んだ言語がそれだったらそれでもいいよ
より良い言語を後で見つけたら自分が馬鹿だっただけで済む
しかしそれを選んだのが会社や国家だったら馬鹿にしても炎上するし擁護しても炎上する

816 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 13:39:52.93 ID:T4sPcvM1.net]
このスレの議論はほんとレベルが低いな
間違った使い方をしたときどちらがマシかでしか優劣をつけられないのか

817 名前:デフォルトの名無しさん [2018/04/08(日) 13:50:33.26 ID:DdcJdhQn.net]
>>782
なんか会話が噛み合わないなと思ってたがやっと理由が分かった気がする。
>>782の言う"どこ"はGoのエラー(戻り値)は握りつぶしがしやすいから
誰が"どこ"でエラーを握りつぶすコードを書くか分からないって意味の"どこ"だよね。
俺の言う"どこ"は例外がスローされた場所に対して
キャッチされる場所が"どこ"か分からないって意味の"どこ"なんだよ。
キャッチされる場所が分からないとデバッグ時に探すのが面倒なんだよ。
Goみたいに戻り値としてエラーが返されるとエラーの発生場所と
握り潰した場所は必ず一致するからデバッグしやすい。
結局、従来の例外はgoto文と同じでフローが飛ぶから気持ち悪いってのが俺の意見。 []
[ここ壊れてます]

819 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:09:14.32 ID:Bf+GYw8s.net]
従来の言語にはexitがあるから例外がない
SmalltalkやJavaScriptにはexitがないから例外があるんだろう

820 名前:デフォルトの名無しさん [2018/04/08(日) 14:12:58.97 ID:DdcJdhQn.net]
>>791
でも、次世代言語って間違った使い方(プログラマによるミス)をさせないように
制限をかける意味合いが強くない?Null安全とかその典型だと思うんだけど。
オレは絶対に使い方を間違えないって言うんならC++, C#とかを使ってろよってなるし…



821 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:13:54.54 ID:aL28Ce5R.net]
>>792
戻り値のエラーを握りつぶされると、不適切な状態で動き続けるから、デバッグが困難になると思うんだが。
例外の握りつぶしでも同じ事だけど、構文としては、例外の握りつぶしの方が見つけやすいと思うけどね。catchブロックでしか細工できないから。
goだと正常な返り値の隣に,_つけるだけで握りつぶせちゃうから、見つけづらいんじゃないかな。

822 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:15:23.81 ID:V9VuwMAu.net]
間違えを考慮しないシステムの恐ろしさを全くわかってない奴はそもそも話にならん。
プログラミングを語る資格がない。

823 名前:デフォルトの名無しさん [2018/04/08(日) 14:23:41.21 ID:DdcJdhQn.net]
>>795
すまん。よく考えると確かにデバッグはどっちも面倒なことに変わりないわ。
ただ、個人的にはtry-catchも,_もどっちも見つけづらさは大して変わらないと思ってる。
デバッグ時じゃなくて、普通にコードを読むときに戻り値でやったほうがフローを把握しやすいってことが言いたかった。

824 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:26:14.02 ID:aL28Ce5R.net]
返り値でエラーを判別するコードだと、本来やりたいことの次にほぼ必ず、エラー判定処理が入るから、可読性が低いんだよね。
昔、C使ってた頃は、そういうところが嫌でたまんなかったし、ひどいのになると主要な処理が全部、条件部分で行われてて、if文の連なりしかないコードとかみたし。
正常系をリーダブルに書くには、例外の方が気持ちいいなと思うよ。

825 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:32:30.43 ID:kugCg6kv.net]
そのあたりはEitherが良いと思うんだな

826 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:35:54.54 ID:aL28Ce5R.net]
後、最近のIDE使ってると、todoをコメントに入れとけば、あとでそれを、まとめて見直せるから、取り敢えず、try-catchして、catchのところはtodoにしといて、まず正常系を一通り買いてから、あとで異常系に対処するっていうワークフローにできるのが、例外の利点かなと思う。

827 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:37:10.66 ID:N7to3hps.net]
>>792
デバッグ時に、どこかでエラーが握りつぶされてるかもしれない、というパターンを考えないといけない、という意味で「どこ」
しかもそういう状況は>>795の言うように不適切な状況で動き続けるから
握りつぶした箇所と不具合の発生箇所がかけ離れることも多い
だから、goに限ったことではないが、エラーや例外の握りつぶしはデバッグしづらい
例外がどこでcatchされてるか探すのは、握りつぶし探しに比べたらまだ簡単

828 名前:デフォルトの名無しさん [2018/04/08(日) 14:37:23.36 ID:DdcJdhQn.net]
>>799
タグ付きユニオンがある言語ならそれが一番だと思う。
前にも言ったけど、エラーハンドリングに関してはRustのResult型が一番筋がいいと思ってる
でも、Goにはタグ付きユニオンがないからなあ…

829 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:51:49.81 ID:aL28Ce5R.net]
goは本格的には使ったことないけど、無視はできないんで、いろんなコードを見てるんだけど、今のところの感想としては、goって、書き手の思考を遮らないというところに重きを置いてる印象。
deferなんか、なんか開いたらあとで閉めるけど、忘れない内にその処理を予約しとこうみたいな発想かな。
自分は書くことより読むことを重視するタイプなんで、あまりgoには向いてないなあと思ってる。

830 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:51:50.04 ID:Bf+GYw8s.net]
副作用禁止ならexitも例外も禁止だからEitherがある



831 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 15:22:23.64 ID:gQU7xBEC.net]
stack traceもしらんのか

832 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 15:29:06.45 ID:drN9+cfC.net]
握りつぶしてるところでスタックトレース出力するんだよ!

('、3_ヽ)_??

833 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 15:51:49.24 ID:4BboKQKO.net]
maybe, eitherがある言語やった後に無い言語はしんどい

834 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 17:20:17.22 ID:kOs0IpX+.net]
Maybe, Eitherは強い。ほぼ必須な体になってしまった

835 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 17:47:41.66 ID:iGi236dt.net]
Eitherは初見だとそれがエラー処理用によく使うっていうことが
名前から全然伝わってこないところだけが嫌い

836 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 17:58:42.79 ID:+FJwvftX.net]
>>803
書きやすさと読みやすさは同一だと思ったが。特にdeferとか大体close処理では?
open直後はdeferにclose処理書いてあったほうが読みやすくないかな?

837 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 17:58:46.39 ID:AFrzJyvZ.net]
たし蟹

838 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 18:04:30.90 ID:ikNNlzZg.net]
リューナイト

839 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 18:14:07.95 ID:V9VuwMAu.net]
defer はスコープの終わりで暗黙的に動くクラスのデストラクタより
コード部分で明示した方がわかりやすくね?って発想じゃないかね。
こういうのは好みだったり書いてるアプリの種類で分かれそうな気はする。

840 名前:デフォルトの名無しさん [2018/04/08(日) 18:50:09.38 ID:BxgydgxS.net]
c++17の [discard]はどうかね?



841 名前:デフォルトの名無しさん [2018/04/08(日) 18:52:29.42 ID:BxgydgxS.net]
間違えた nodiscard

842 名前:769,815 [2018/04/08(日) 23:39:43.80 ID:yrhx1H5B.net]
>>792
> Goみたいに戻り値としてエラーが返されるとエラーの発生場所と
> 握り潰した場所は必ず一致するからデバッグしやすい。

俺もそれには同意で、更に一歩すすんでc++17の nodiscard属性みたいな指定ができるてほしいんだよ。デフォルトはコンパイルエラーで。

843 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 00:41:14.72 ID:R+tVusAV.net]
Fortran のIO関係のエラー処理は優れてると思うわ。
Open文にoptionalのerr引数を渡して置けば、エラーが出てもerrに値を入れて続行。err引数を渡してなかったらエラーが出たら異常終了

844 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 00:59:36.33 ID:1PTa96/6.net]
goのdeferは、その中で起こったエラーを外に通知する(簡単な)方法がないってんで
槍玉に上げられてなかったっけ?うろ覚えだけど

845 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 01:32:15.01 ID:l0nazyXh.net]
>>818
一番簡単な方法は名前つきreturn変数を使うことだから簡単ちゃ簡単
だが正直名前つきreturn変数がそもそもクソ構文

846 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 06:40:40.00 ID:ON56dtQ5.net]
>>817
異常終了してはならないUIもある
UIが言語に影響を与える

847 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 07:57:09.29 ID:1PTa96/6.net]
>>819
はー、名前付きreturn変数なんてあったんだ
しかし本来の流れによるerrがある場合は握りつぶさないようにしないといけないし、真面目にやると分岐が入り組みそうだな

848 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 07:59:50.20 ID:R+tVusAV.net]
>>820
いやそのためにerr引数があるのよ……

849 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 08:27:01.39 ID:D454qjGx.net]
>>816
MSはかなり昔からそういうの力を入れていて独自仕様で実現してるな。(SAL注釈)
SDKのヘッダなんかで見かける _Check_return_ とかとかいうやつ。VSの「コード分析」でチェックしてくれる。

850 名前:デフォルトの名無しさん [2018/04/09(月) 08:42:34.03 ID:mPPENYW6.net]
理想はエラーハンドリングを書いてなかったら



851 名前:Rンパイルエラー。
(エラーハンドリングでエラー握り潰すやつは流石にそこまで面倒見きれない)
次点は強制終了。その際にエラーがどこで何故起きたのかって情報を出せること。
一番悪いのはそのまま処理進んでサイレントクラッシュ。

こんな感じ。
[]
[ここ壊れてます]

852 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 08:51:45.67 ID:2cUxs1pv.net]
コンパイルエラーは、そこまで強烈にエラー対応必須にしたらスクリプトみたいな「まずはとりあえず動くコードを書いて様子を見る」っていう使い方は出来なくなるな

853 名前:デフォルトの名無しさん [2018/04/09(月) 09:45:04.94 ID:9pBeshvD.net]
となるとrustやな

854 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 09:59:14.65 ID:RBhArkXv.net]
そういやClojureってどうなったん?

855 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 10:18:17.46 ID:aahOEQux.net]
Goの名前付きreturn使うとアセンブリまで落としたとき、コードが少しきれいになるぞ。
俺は好き。

856 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 10:48:34.89 ID:1PTa96/6.net]
>>828
返値の最適化だけが目的なら初めからresult変数方式のやつ使えば
Pascal、Eiffel、あとFortranもそうだぞ

857 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 11:33:31.90 ID:ON56dtQ5.net]
デバッグは自分との戦い
だが最適化は自分が速くならなくても相手が遅くなれば勝てる
他人の足を引っ張る要素があるからカオスになる

858 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 12:00:22.27 ID:aahOEQux.net]
>>829
だけが目的と言うか、優劣をつけたりGoを使う理由にはあんまりしてないが。

例外は俺も好きじゃないな。
ただのちょっと見た目のきれいなgotoであって、フローとしては全然きれいじゃないし、
finallyで複数のリソースの開放しようとしたらどこまで進んだか管理するしかなくなるし、
各エラーで細かい処理が必要だったら結局スコープの狭いtry-catch書くことになるし、
毎行errチェックしたり、いっそ無視したりするのとレベルが変わらん。

deferは、実際に使えた直後に開放を予約できるから価値がある。

良くできてると思うけどな。

859 名前:デフォルトの名無しさん [2018/04/09(月) 12:16:00.98 ID:Wtc2x12J.net]
>>825
そこは、エラー戻値無視するな構文を用意してれば良い

860 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 12:16:21.64 ID:ebJj02XJ.net]
>>829
え、すまん。よく知らないんだけど、Fortran って関数で配列を返してもサブルーチン的ないい感じに最適化してくれるの?



861 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 13:04:43.93 ID:1PTa96/6.net]
>>833
されるよ。全部の実装でそうとは断言できないけど
要するに>>697のretvalが直接返り値用の変数として見えるってだけ

862 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 14:38:02.08 ID:50KKUeFL.net]
何でここの人たちエラーをその場で処理するのが当然だと思ってるの?
普通は上に投げるよね?

863 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 14:47:49.87 ID:iBEYls0Z.net]
>>835
その「上」の関数ではどうすんの?また上に投げるの?

864 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 15:03:10.07 ID:FuUgA4s9.net]
一番上のハンドラでまとめて受け取る

865 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 15:18:43.79 ID:ml5ntbUH.net]
結局人類にgotoは必要だったんだ!

866 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 16:05:31.09 ID:O1tgNFRh.net]
なんで2ちゃんでこういう議論をすると最期は必ずアホアホ展開になるの?

867 名前:デフォルトの名無しさん [2018/04/09(月) 16:19:21.64 ID:mPPENYW6.net]
>>835
俺は、その上側でのエラーハンドリングを必須にすることができて欲しいという意見。c++17の nodiscardみたいなの。
rustのResult型や他言語のEither勉強不足でわからない。スマヌ

868 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 16:26:17.23 ID:ON56dtQ5.net]
>>835
マルチスレッドが普通になったから
上に投げるよりスレッドの外に投げる

869 名前:デフォルトの名無しさん [2018/04/09(月) 16:39:51.89 ID:wyYx8QLn.net]
rustのResultは検査しないとコンパイラにワーンされるよ

870 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:13:02.99 ID:aahOEQux.net]
>>835
上に投げるとしても、戻り値で明示的に戻せば良いだろう。
とりあえず手に負えないからだれか呼んだ人処理して、って言って、だれの手にも負えない可能性がある、ってのは良くないと思うよ。
普通とか言い始めると誰の普通かはっきりしないから、それはおいといて。

goでも、ホントに戻り値なしで呼ぶとき以外(何かしらの値とともにエラーが帰ってくる時)は、_で明示的に握りつぶさない限り受けた変数に触らないとコンパイル通らないし。
何一つ受けずに呼び出したり、触った結果握りつぶしたらコンパイルは通っちゃうけど。



871 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:20:13.54 ID:2gnvm26g.net]
例外安全を徹底してればどこでキャッチしようが手に負えない例外なんか無いだろ
それを不安に感じるのは、個別の事情にばかり気を取られて全体の一貫性を疎かにする典型的な日本人の思考パターンだ
(メモリ不足など、どこでキャッチしても対処のしようがないものは除く)

872 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:26:58.77 ID:aahOEQux.net]
>>844
徹底する、というルールベースな時点で「手に負えない例外は存在しない」という事を言い切るのは不可能でしょ。
メインロジックではアプリケーションの総合ハンドラでメッセージ出してリトライさせれば手に負えるはずの例外だったが、
なんの因果かそいつがバッチプログラムに使われる事になった時とかなんて、前提条件や処理フロー自体が変わる典型だと思うが。

最初からエラーとして返しとけば、なんの問題もなく流用できるでしょ。
常に呼び出す親が(さらに親へ丸投げするかの選択も含め)処理することが義務付けられてるほうが明示的だよねって言ってるんだが。

873 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:38:57.68 ID:2gnvm26g.net]
>>845
戻り値なら流用しやすいという根拠は?
なんとなく手抜きっぽい、で批判する典型的な日本人的思考だね

874 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:44:44.78 ID:ml5ntbUH.net]
チョンが何か言ってらぁww

875 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:45:14.09 ID:2gnvm26g.net]
あと、例外機構を持つ言語には例外安全を維持するための仕組みが組み込まれているのが普通だから、
それを「運用ルールに頼っている」と切り捨てておきながら戻り値は言語の補助があるから安全だと主張するのはダブスタの詭弁だ

876 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:45:52.21 ID:w9Q1JF4q.net]
>>846
書いてるだろ。
明示的に処理するからだよ。
すっぽぬけて何処か別の定義されている「はず」のハンドラに任せない所。

全関数にtry-catchを書いてて、親にもtry-catchが漏れなくあって、明示的に再throwしてたり、異常な場合はちゃんと死ぬ事が保証できてるなら、それでもいいけど。
この関数では呼び出し先がthrowすることもあるけど、親にハンドラがあるから大丈夫、が一箇所でもあったら認めないが。

何か、戻り値でエラーを返せる言語使ったことある?
パターンマッチングでエラーか結果か判定できたり、複数結果を返せたり、引数でエラーをどう処理するから指定できる言語。
使ったらわかると思うけど。

877 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:50:39.85 ID:w9Q1JF4q.net]
>>848
ダブルスタンダードでもないよ。

維持するための仕組みがあったって、維持していると保証がない限り維持は出来てないのと同じでしょ。

recoverがあるから、catchできるのと同じだからエラーハンドラここに書くって言う奴と同類に見える。

878 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:53:07.60 ID:w9Q1JF4q.net]
暗黙的に握りつぶす/無視する、か、明示的に握りつぶす/無視する、だけの違いなんだが。
なんでわかんないんだろう。

879 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:53:14.64 ID:2gnvm26g.net]
>>849
そんなことはプログラミングのメインストリームがとっくの昔に通った道なんだよ
Javaの失敗をトレースしてるようにしか見えない
Javaの検査例外がなぜ失敗したかを調べてみたら?

880 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:55:18.76 ID:w9Q1JF4q.net]
>>852
「そもそも例外があるから、こういう失敗するんだ」を「例外無くして明示的にやろう」
と言語仕様で厳しくやってるだけで、
トレースしているどころか、トレースしないように別ルート取ってるだろ。
どこがトレースしてるの?



881 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:58:04.38 ID:mElBwjLW.net]
>>853
まさか検査例外を知らないのか?
あれは戻り値によるエラー処理を強制してるのと等価だよ
まずは勉強しよう

882 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:58:52.48 ID:w9Q1JF4q.net]
日本人的だとか、ロジカルでない事をグダグダ言う前に、いろんな言語の言語仕様みてくりゃいいのに。
Fortranが話題に出てるけど、知ってんのかって疑問。

883 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 19:03:27.06 ID:w9Q1JF4q.net]
>>854
知ってるよ。
非検査例外と検査例外のどちらも発生させうるメソッドはどうハンドリングするの?運用のルール?
結局全部検査例外なら良いって話になっちゃうし、throws書いたらガバガバになるだけじゃん。

884 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 19:58:52.42 ID:rsHYF1DS.net]
jsでasync await使おうとするとエラー系は例外扱いになるから辛い。

885 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:15:00.84 ID:ebJj02XJ.net]
>>855
Fortranを話題に出してるのは俺で、俺はFortranユーザーだ。なんか用か?

886 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:15:41.91 ID:ebJj02XJ.net]
まあ返り値の最適化はわかってなかったけどなw

887 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:24:45.38 ID:25u/0YJa.net]
次世代語る前に現世代を勉強した方が良いねこれは。

888 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:25:58.04 ID:w9Q1JF4q.net]
>>858
いやいや、そういう意味じゃない、誤解させてすまん。
引数でerrの取り扱いしたり、名前付き引数があったり、そういう言語を触ったことがあるのか?
皆はそれぞれ使ってて、メリットを分かって話してるが、自分(ID:2gnvm26g)は戻り値でそういう処理をする言語は触った事があるのか?
話題についてこれてるか?Javaかなんかの狭い世界の話ししてるんじゃないのか?
って事を言いたかったんよ。

889 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:31:26.77 ID:ebJj02XJ.net]
>>861
ああそういうことか。誤解してたわすまん

890 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:39:58.68 ID:2gnvm26g.net]
>>861
俺は普通に使ったことあるし、戻り値をエラーに使うことを否定したつもりはないぞ?
ただ、あんたの主張はJavaの検査例外が失敗した理由を解決していない、と言ってるんだよ



891 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:40:46.31 ID:w9Q1JF4q.net]
>>862
いやいや、俺の方こそすまん。
慌てて説明したから名前付き戻り値を名前付き引数とか言ってるし。
重ね重ね面目ない。

892 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:40:53.09 ID:FJyngZbb.net]
例外設計に関してはrustが現状ベストだと思うけどな

>>857
unhandled promiss rejection出た時の絶望感半端ない






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef