スレタイ以外の言語もok
前スレ
次世代言語Part8[Haskell Rust Kotlin TypeScript]
http://mevius.5ch.net/test/read.cgi/tech/1512137301/
次世代言語9[Haskell Rust Kotlin TypeScript Dart]
■ このスレッドは過去ログ倉庫に格納されています
2018/03/06(火) 10:09:15.60ID:x/Au45rc
784デフォルトの名無しさん
2018/04/08(日) 09:00:51.10ID:RUgiqDA/ Cのprintfの戻り値を毎回欠かさずチェックしてる人だけが例外に石を投げなさい
785デフォルトの名無しさん
2018/04/08(日) 10:19:07.88ID:xmyFoIZI 戻り値の握り潰しは局所的・静的に判断できるけど例外はそうじゃないからなぁ。
それこそ例外を起こしてみないと見つけるのが困難だったりして。
それこそ例外を起こしてみないと見つけるのが困難だったりして。
786デフォルトの名無しさん
2018/04/08(日) 10:23:53.74ID:+rfxRhvD 例外は継続的な改良に対応しやすいのがメリットなんだよな
取りあえず最初は例外安全だけ意識して例外は上の方でまとめて処理しておいて、
あとでより丁寧な取扱いが必要になったときは問題なく対応できる
もちろん、検査例外とかいうビチグソは無い前提だが
取りあえず最初は例外安全だけ意識して例外は上の方でまとめて処理しておいて、
あとでより丁寧な取扱いが必要になったときは問題なく対応できる
もちろん、検査例外とかいうビチグソは無い前提だが
787デフォルトの名無しさん
2018/04/08(日) 11:36:37.63ID:Bf+GYw8s 最初はexit
exitの握り潰しが必要になったら例外で
exitの握り潰しが必要になったら例外で
788デフォルトの名無しさん
2018/04/08(日) 11:42:04.86ID:YK+KPtHu789デフォルトの名無しさん
2018/04/08(日) 13:08:16.40ID:mQRLIlYG このスレも例外が理解できない幼稚園児ばっかかよ
Goみたいな言語が流行るわけだ
Goみたいな言語が流行るわけだ
790デフォルトの名無しさん
2018/04/08(日) 13:22:55.27ID:Bf+GYw8s 自分で選んだ言語がそれだったらそれでもいいよ
より良い言語を後で見つけたら自分が馬鹿だっただけで済む
しかしそれを選んだのが会社や国家だったら馬鹿にしても炎上するし擁護しても炎上する
より良い言語を後で見つけたら自分が馬鹿だっただけで済む
しかしそれを選んだのが会社や国家だったら馬鹿にしても炎上するし擁護しても炎上する
791デフォルトの名無しさん
2018/04/08(日) 13:39:52.93ID:T4sPcvM1 このスレの議論はほんとレベルが低いな
間違った使い方をしたときどちらがマシかでしか優劣をつけられないのか
間違った使い方をしたときどちらがマシかでしか優劣をつけられないのか
792デフォルトの名無しさん
2018/04/08(日) 13:50:33.26ID:DdcJdhQn >>782
なんか会話が噛み合わないなと思ってたがやっと理由が分かった気がする。
>>782の言う"どこ"はGoのエラー(戻り値)は握りつぶしがしやすいから
誰が"どこ"でエラーを握りつぶすコードを書くか分からないって意味の"どこ"だよね。
俺の言う"どこ"は例外がスローされた場所に対して
キャッチされる場所が"どこ"か分からないって意味の"どこ"なんだよ。
キャッチされる場所が分からないとデバッグ時に探すのが面倒なんだよ。
Goみたいに戻り値としてエラーが返されるとエラーの発生場所と
握り潰した場所は必ず一致するからデバッグしやすい。
結局、従来の例外はgoto文と同じでフローが飛ぶから気持ち悪いってのが俺の意見。
なんか会話が噛み合わないなと思ってたがやっと理由が分かった気がする。
>>782の言う"どこ"はGoのエラー(戻り値)は握りつぶしがしやすいから
誰が"どこ"でエラーを握りつぶすコードを書くか分からないって意味の"どこ"だよね。
俺の言う"どこ"は例外がスローされた場所に対して
キャッチされる場所が"どこ"か分からないって意味の"どこ"なんだよ。
キャッチされる場所が分からないとデバッグ時に探すのが面倒なんだよ。
Goみたいに戻り値としてエラーが返されるとエラーの発生場所と
握り潰した場所は必ず一致するからデバッグしやすい。
結局、従来の例外はgoto文と同じでフローが飛ぶから気持ち悪いってのが俺の意見。
793デフォルトの名無しさん
2018/04/08(日) 14:09:14.32ID:Bf+GYw8s 従来の言語にはexitがあるから例外がない
SmalltalkやJavaScriptにはexitがないから例外があるんだろう
SmalltalkやJavaScriptにはexitがないから例外があるんだろう
794デフォルトの名無しさん
2018/04/08(日) 14:12:58.97ID:DdcJdhQn >>791
でも、次世代言語って間違った使い方(プログラマによるミス)をさせないように
制限をかける意味合いが強くない?Null安全とかその典型だと思うんだけど。
オレは絶対に使い方を間違えないって言うんならC++, C#とかを使ってろよってなるし…
でも、次世代言語って間違った使い方(プログラマによるミス)をさせないように
制限をかける意味合いが強くない?Null安全とかその典型だと思うんだけど。
オレは絶対に使い方を間違えないって言うんならC++, C#とかを使ってろよってなるし…
795デフォルトの名無しさん
2018/04/08(日) 14:13:54.54ID:aL28Ce5R >>792
戻り値のエラーを握りつぶされると、不適切な状態で動き続けるから、デバッグが困難になると思うんだが。
例外の握りつぶしでも同じ事だけど、構文としては、例外の握りつぶしの方が見つけやすいと思うけどね。catchブロックでしか細工できないから。
goだと正常な返り値の隣に,_つけるだけで握りつぶせちゃうから、見つけづらいんじゃないかな。
戻り値のエラーを握りつぶされると、不適切な状態で動き続けるから、デバッグが困難になると思うんだが。
例外の握りつぶしでも同じ事だけど、構文としては、例外の握りつぶしの方が見つけやすいと思うけどね。catchブロックでしか細工できないから。
goだと正常な返り値の隣に,_つけるだけで握りつぶせちゃうから、見つけづらいんじゃないかな。
796デフォルトの名無しさん
2018/04/08(日) 14:15:23.81ID:V9VuwMAu 間違えを考慮しないシステムの恐ろしさを全くわかってない奴はそもそも話にならん。
プログラミングを語る資格がない。
プログラミングを語る資格がない。
797デフォルトの名無しさん
2018/04/08(日) 14:23:41.21ID:DdcJdhQn >>795
すまん。よく考えると確かにデバッグはどっちも面倒なことに変わりないわ。
ただ、個人的にはtry-catchも,_もどっちも見つけづらさは大して変わらないと思ってる。
デバッグ時じゃなくて、普通にコードを読むときに戻り値でやったほうがフローを把握しやすいってことが言いたかった。
すまん。よく考えると確かにデバッグはどっちも面倒なことに変わりないわ。
ただ、個人的にはtry-catchも,_もどっちも見つけづらさは大して変わらないと思ってる。
デバッグ時じゃなくて、普通にコードを読むときに戻り値でやったほうがフローを把握しやすいってことが言いたかった。
798デフォルトの名無しさん
2018/04/08(日) 14:26:14.02ID:aL28Ce5R 返り値でエラーを判別するコードだと、本来やりたいことの次にほぼ必ず、エラー判定処理が入るから、可読性が低いんだよね。
昔、C使ってた頃は、そういうところが嫌でたまんなかったし、ひどいのになると主要な処理が全部、条件部分で行われてて、if文の連なりしかないコードとかみたし。
正常系をリーダブルに書くには、例外の方が気持ちいいなと思うよ。
昔、C使ってた頃は、そういうところが嫌でたまんなかったし、ひどいのになると主要な処理が全部、条件部分で行われてて、if文の連なりしかないコードとかみたし。
正常系をリーダブルに書くには、例外の方が気持ちいいなと思うよ。
799デフォルトの名無しさん
2018/04/08(日) 14:32:30.43ID:kugCg6kv そのあたりはEitherが良いと思うんだな
800デフォルトの名無しさん
2018/04/08(日) 14:35:54.54ID:aL28Ce5R 後、最近のIDE使ってると、todoをコメントに入れとけば、あとでそれを、まとめて見直せるから、取り敢えず、try-catchして、catchのところはtodoにしといて、まず正常系を一通り買いてから、あとで異常系に対処するっていうワークフローにできるのが、例外の利点かなと思う。
801デフォルトの名無しさん
2018/04/08(日) 14:37:10.66ID:N7to3hps802デフォルトの名無しさん
2018/04/08(日) 14:37:23.36ID:DdcJdhQn >>799
タグ付きユニオンがある言語ならそれが一番だと思う。
前にも言ったけど、エラーハンドリングに関してはRustのResult型が一番筋がいいと思ってる
でも、Goにはタグ付きユニオンがないからなあ…
タグ付きユニオンがある言語ならそれが一番だと思う。
前にも言ったけど、エラーハンドリングに関してはRustのResult型が一番筋がいいと思ってる
でも、Goにはタグ付きユニオンがないからなあ…
803デフォルトの名無しさん
2018/04/08(日) 14:51:49.81ID:aL28Ce5R goは本格的には使ったことないけど、無視はできないんで、いろんなコードを見てるんだけど、今のところの感想としては、goって、書き手の思考を遮らないというところに重きを置いてる印象。
deferなんか、なんか開いたらあとで閉めるけど、忘れない内にその処理を予約しとこうみたいな発想かな。
自分は書くことより読むことを重視するタイプなんで、あまりgoには向いてないなあと思ってる。
deferなんか、なんか開いたらあとで閉めるけど、忘れない内にその処理を予約しとこうみたいな発想かな。
自分は書くことより読むことを重視するタイプなんで、あまりgoには向いてないなあと思ってる。
804デフォルトの名無しさん
2018/04/08(日) 14:51:50.04ID:Bf+GYw8s 副作用禁止ならexitも例外も禁止だからEitherがある
805デフォルトの名無しさん
2018/04/08(日) 15:22:23.64ID:gQU7xBEC stack traceもしらんのか
806デフォルトの名無しさん
2018/04/08(日) 15:29:06.45ID:drN9+cfC 握りつぶしてるところでスタックトレース出力するんだよ!
('、3_ヽ)_??
('、3_ヽ)_??
807デフォルトの名無しさん
2018/04/08(日) 15:51:49.24ID:4BboKQKO maybe, eitherがある言語やった後に無い言語はしんどい
808デフォルトの名無しさん
2018/04/08(日) 17:20:17.22ID:kOs0IpX+ Maybe, Eitherは強い。ほぼ必須な体になってしまった
809デフォルトの名無しさん
2018/04/08(日) 17:47:41.66ID:iGi236dt Eitherは初見だとそれがエラー処理用によく使うっていうことが
名前から全然伝わってこないところだけが嫌い
名前から全然伝わってこないところだけが嫌い
810デフォルトの名無しさん
2018/04/08(日) 17:58:42.79ID:+FJwvftX811デフォルトの名無しさん
2018/04/08(日) 17:58:46.39ID:AFrzJyvZ たし蟹
812デフォルトの名無しさん
2018/04/08(日) 18:04:30.90ID:ikNNlzZg リューナイト
813デフォルトの名無しさん
2018/04/08(日) 18:14:07.95ID:V9VuwMAu defer はスコープの終わりで暗黙的に動くクラスのデストラクタより
コード部分で明示した方がわかりやすくね?って発想じゃないかね。
こういうのは好みだったり書いてるアプリの種類で分かれそうな気はする。
コード部分で明示した方がわかりやすくね?って発想じゃないかね。
こういうのは好みだったり書いてるアプリの種類で分かれそうな気はする。
814デフォルトの名無しさん
2018/04/08(日) 18:50:09.38ID:BxgydgxS c++17の [discard]はどうかね?
815デフォルトの名無しさん
2018/04/08(日) 18:52:29.42ID:BxgydgxS 間違えた nodiscard
816769,815
2018/04/08(日) 23:39:43.80ID:yrhx1H5B >>792
> Goみたいに戻り値としてエラーが返されるとエラーの発生場所と
> 握り潰した場所は必ず一致するからデバッグしやすい。
俺もそれには同意で、更に一歩すすんでc++17の nodiscard属性みたいな指定ができるてほしいんだよ。デフォルトはコンパイルエラーで。
> Goみたいに戻り値としてエラーが返されるとエラーの発生場所と
> 握り潰した場所は必ず一致するからデバッグしやすい。
俺もそれには同意で、更に一歩すすんでc++17の nodiscard属性みたいな指定ができるてほしいんだよ。デフォルトはコンパイルエラーで。
817デフォルトの名無しさん
2018/04/09(月) 00:41:14.72ID:R+tVusAV Fortran のIO関係のエラー処理は優れてると思うわ。
Open文にoptionalのerr引数を渡して置けば、エラーが出てもerrに値を入れて続行。err引数を渡してなかったらエラーが出たら異常終了
Open文にoptionalのerr引数を渡して置けば、エラーが出てもerrに値を入れて続行。err引数を渡してなかったらエラーが出たら異常終了
818デフォルトの名無しさん
2018/04/09(月) 00:59:36.33ID:1PTa96/6 goのdeferは、その中で起こったエラーを外に通知する(簡単な)方法がないってんで
槍玉に上げられてなかったっけ?うろ覚えだけど
槍玉に上げられてなかったっけ?うろ覚えだけど
819デフォルトの名無しさん
2018/04/09(月) 01:32:15.01ID:l0nazyXh820デフォルトの名無しさん
2018/04/09(月) 06:40:40.00ID:ON56dtQ5821デフォルトの名無しさん
2018/04/09(月) 07:57:09.29ID:1PTa96/6822デフォルトの名無しさん
2018/04/09(月) 07:59:50.20ID:R+tVusAV >>820
いやそのためにerr引数があるのよ……
いやそのためにerr引数があるのよ……
823デフォルトの名無しさん
2018/04/09(月) 08:27:01.39ID:D454qjGx >>816
MSはかなり昔からそういうの力を入れていて独自仕様で実現してるな。(SAL注釈)
SDKのヘッダなんかで見かける _Check_return_ とかとかいうやつ。VSの「コード分析」でチェックしてくれる。
MSはかなり昔からそういうの力を入れていて独自仕様で実現してるな。(SAL注釈)
SDKのヘッダなんかで見かける _Check_return_ とかとかいうやつ。VSの「コード分析」でチェックしてくれる。
824デフォルトの名無しさん
2018/04/09(月) 08:42:34.03ID:mPPENYW6 理想はエラーハンドリングを書いてなかったらコンパイルエラー。
(エラーハンドリングでエラー握り潰すやつは流石にそこまで面倒見きれない)
次点は強制終了。その際にエラーがどこで何故起きたのかって情報を出せること。
一番悪いのはそのまま処理進んでサイレントクラッシュ。
こんな感じ。
(エラーハンドリングでエラー握り潰すやつは流石にそこまで面倒見きれない)
次点は強制終了。その際にエラーがどこで何故起きたのかって情報を出せること。
一番悪いのはそのまま処理進んでサイレントクラッシュ。
こんな感じ。
825デフォルトの名無しさん
2018/04/09(月) 08:51:45.67ID:2cUxs1pv コンパイルエラーは、そこまで強烈にエラー対応必須にしたらスクリプトみたいな「まずはとりあえず動くコードを書いて様子を見る」っていう使い方は出来なくなるな
826デフォルトの名無しさん
2018/04/09(月) 09:45:04.94ID:9pBeshvD となるとrustやな
827デフォルトの名無しさん
2018/04/09(月) 09:59:14.65ID:RBhArkXv そういやClojureってどうなったん?
828デフォルトの名無しさん
2018/04/09(月) 10:18:17.46ID:aahOEQux Goの名前付きreturn使うとアセンブリまで落としたとき、コードが少しきれいになるぞ。
俺は好き。
俺は好き。
829デフォルトの名無しさん
2018/04/09(月) 10:48:34.89ID:1PTa96/6830デフォルトの名無しさん
2018/04/09(月) 11:33:31.90ID:ON56dtQ5 デバッグは自分との戦い
だが最適化は自分が速くならなくても相手が遅くなれば勝てる
他人の足を引っ張る要素があるからカオスになる
だが最適化は自分が速くならなくても相手が遅くなれば勝てる
他人の足を引っ張る要素があるからカオスになる
831デフォルトの名無しさん
2018/04/09(月) 12:00:22.27ID:aahOEQux >>829
だけが目的と言うか、優劣をつけたりGoを使う理由にはあんまりしてないが。
例外は俺も好きじゃないな。
ただのちょっと見た目のきれいなgotoであって、フローとしては全然きれいじゃないし、
finallyで複数のリソースの開放しようとしたらどこまで進んだか管理するしかなくなるし、
各エラーで細かい処理が必要だったら結局スコープの狭いtry-catch書くことになるし、
毎行errチェックしたり、いっそ無視したりするのとレベルが変わらん。
deferは、実際に使えた直後に開放を予約できるから価値がある。
良くできてると思うけどな。
だけが目的と言うか、優劣をつけたりGoを使う理由にはあんまりしてないが。
例外は俺も好きじゃないな。
ただのちょっと見た目のきれいなgotoであって、フローとしては全然きれいじゃないし、
finallyで複数のリソースの開放しようとしたらどこまで進んだか管理するしかなくなるし、
各エラーで細かい処理が必要だったら結局スコープの狭いtry-catch書くことになるし、
毎行errチェックしたり、いっそ無視したりするのとレベルが変わらん。
deferは、実際に使えた直後に開放を予約できるから価値がある。
良くできてると思うけどな。
832デフォルトの名無しさん
2018/04/09(月) 12:16:00.98ID:Wtc2x12J >>825
そこは、エラー戻値無視するな構文を用意してれば良い
そこは、エラー戻値無視するな構文を用意してれば良い
833デフォルトの名無しさん
2018/04/09(月) 12:16:21.64ID:ebJj02XJ >>829
え、すまん。よく知らないんだけど、Fortran って関数で配列を返してもサブルーチン的ないい感じに最適化してくれるの?
え、すまん。よく知らないんだけど、Fortran って関数で配列を返してもサブルーチン的ないい感じに最適化してくれるの?
834デフォルトの名無しさん
2018/04/09(月) 13:04:43.93ID:1PTa96/6835デフォルトの名無しさん
2018/04/09(月) 14:38:02.08ID:50KKUeFL 何でここの人たちエラーをその場で処理するのが当然だと思ってるの?
普通は上に投げるよね?
普通は上に投げるよね?
836デフォルトの名無しさん
2018/04/09(月) 14:47:49.87ID:iBEYls0Z >>835
その「上」の関数ではどうすんの?また上に投げるの?
その「上」の関数ではどうすんの?また上に投げるの?
837デフォルトの名無しさん
2018/04/09(月) 15:03:10.07ID:FuUgA4s9 一番上のハンドラでまとめて受け取る
838デフォルトの名無しさん
2018/04/09(月) 15:18:43.79ID:ml5ntbUH 結局人類にgotoは必要だったんだ!
839デフォルトの名無しさん
2018/04/09(月) 16:05:31.09ID:O1tgNFRh なんで2ちゃんでこういう議論をすると最期は必ずアホアホ展開になるの?
840デフォルトの名無しさん
2018/04/09(月) 16:19:21.64ID:mPPENYW6 >>835
俺は、その上側でのエラーハンドリングを必須にすることができて欲しいという意見。c++17の nodiscardみたいなの。
rustのResult型や他言語のEither勉強不足でわからない。スマヌ
俺は、その上側でのエラーハンドリングを必須にすることができて欲しいという意見。c++17の nodiscardみたいなの。
rustのResult型や他言語のEither勉強不足でわからない。スマヌ
841デフォルトの名無しさん
2018/04/09(月) 16:26:17.23ID:ON56dtQ5842デフォルトの名無しさん
2018/04/09(月) 16:39:51.89ID:wyYx8QLn rustのResultは検査しないとコンパイラにワーンされるよ
843デフォルトの名無しさん
2018/04/09(月) 18:13:02.99ID:aahOEQux >>835
上に投げるとしても、戻り値で明示的に戻せば良いだろう。
とりあえず手に負えないからだれか呼んだ人処理して、って言って、だれの手にも負えない可能性がある、ってのは良くないと思うよ。
普通とか言い始めると誰の普通かはっきりしないから、それはおいといて。
goでも、ホントに戻り値なしで呼ぶとき以外(何かしらの値とともにエラーが帰ってくる時)は、_で明示的に握りつぶさない限り受けた変数に触らないとコンパイル通らないし。
何一つ受けずに呼び出したり、触った結果握りつぶしたらコンパイルは通っちゃうけど。
上に投げるとしても、戻り値で明示的に戻せば良いだろう。
とりあえず手に負えないからだれか呼んだ人処理して、って言って、だれの手にも負えない可能性がある、ってのは良くないと思うよ。
普通とか言い始めると誰の普通かはっきりしないから、それはおいといて。
goでも、ホントに戻り値なしで呼ぶとき以外(何かしらの値とともにエラーが帰ってくる時)は、_で明示的に握りつぶさない限り受けた変数に触らないとコンパイル通らないし。
何一つ受けずに呼び出したり、触った結果握りつぶしたらコンパイルは通っちゃうけど。
844デフォルトの名無しさん
2018/04/09(月) 18:20:13.54ID:2gnvm26g 例外安全を徹底してればどこでキャッチしようが手に負えない例外なんか無いだろ
それを不安に感じるのは、個別の事情にばかり気を取られて全体の一貫性を疎かにする典型的な日本人の思考パターンだ
(メモリ不足など、どこでキャッチしても対処のしようがないものは除く)
それを不安に感じるのは、個別の事情にばかり気を取られて全体の一貫性を疎かにする典型的な日本人の思考パターンだ
(メモリ不足など、どこでキャッチしても対処のしようがないものは除く)
845デフォルトの名無しさん
2018/04/09(月) 18:26:58.77ID:aahOEQux >>844
徹底する、というルールベースな時点で「手に負えない例外は存在しない」という事を言い切るのは不可能でしょ。
メインロジックではアプリケーションの総合ハンドラでメッセージ出してリトライさせれば手に負えるはずの例外だったが、
なんの因果かそいつがバッチプログラムに使われる事になった時とかなんて、前提条件や処理フロー自体が変わる典型だと思うが。
最初からエラーとして返しとけば、なんの問題もなく流用できるでしょ。
常に呼び出す親が(さらに親へ丸投げするかの選択も含め)処理することが義務付けられてるほうが明示的だよねって言ってるんだが。
徹底する、というルールベースな時点で「手に負えない例外は存在しない」という事を言い切るのは不可能でしょ。
メインロジックではアプリケーションの総合ハンドラでメッセージ出してリトライさせれば手に負えるはずの例外だったが、
なんの因果かそいつがバッチプログラムに使われる事になった時とかなんて、前提条件や処理フロー自体が変わる典型だと思うが。
最初からエラーとして返しとけば、なんの問題もなく流用できるでしょ。
常に呼び出す親が(さらに親へ丸投げするかの選択も含め)処理することが義務付けられてるほうが明示的だよねって言ってるんだが。
846デフォルトの名無しさん
2018/04/09(月) 18:38:57.68ID:2gnvm26g847デフォルトの名無しさん
2018/04/09(月) 18:44:44.78ID:ml5ntbUH チョンが何か言ってらぁww
848デフォルトの名無しさん
2018/04/09(月) 18:45:14.09ID:2gnvm26g あと、例外機構を持つ言語には例外安全を維持するための仕組みが組み込まれているのが普通だから、
それを「運用ルールに頼っている」と切り捨てておきながら戻り値は言語の補助があるから安全だと主張するのはダブスタの詭弁だ
それを「運用ルールに頼っている」と切り捨てておきながら戻り値は言語の補助があるから安全だと主張するのはダブスタの詭弁だ
849デフォルトの名無しさん
2018/04/09(月) 18:45:52.21ID:w9Q1JF4q >>846
書いてるだろ。
明示的に処理するからだよ。
すっぽぬけて何処か別の定義されている「はず」のハンドラに任せない所。
全関数にtry-catchを書いてて、親にもtry-catchが漏れなくあって、明示的に再throwしてたり、異常な場合はちゃんと死ぬ事が保証できてるなら、それでもいいけど。
この関数では呼び出し先がthrowすることもあるけど、親にハンドラがあるから大丈夫、が一箇所でもあったら認めないが。
何か、戻り値でエラーを返せる言語使ったことある?
パターンマッチングでエラーか結果か判定できたり、複数結果を返せたり、引数でエラーをどう処理するから指定できる言語。
使ったらわかると思うけど。
書いてるだろ。
明示的に処理するからだよ。
すっぽぬけて何処か別の定義されている「はず」のハンドラに任せない所。
全関数にtry-catchを書いてて、親にもtry-catchが漏れなくあって、明示的に再throwしてたり、異常な場合はちゃんと死ぬ事が保証できてるなら、それでもいいけど。
この関数では呼び出し先がthrowすることもあるけど、親にハンドラがあるから大丈夫、が一箇所でもあったら認めないが。
何か、戻り値でエラーを返せる言語使ったことある?
パターンマッチングでエラーか結果か判定できたり、複数結果を返せたり、引数でエラーをどう処理するから指定できる言語。
使ったらわかると思うけど。
850デフォルトの名無しさん
2018/04/09(月) 18:50:39.85ID:w9Q1JF4q >>848
ダブルスタンダードでもないよ。
維持するための仕組みがあったって、維持していると保証がない限り維持は出来てないのと同じでしょ。
recoverがあるから、catchできるのと同じだからエラーハンドラここに書くって言う奴と同類に見える。
ダブルスタンダードでもないよ。
維持するための仕組みがあったって、維持していると保証がない限り維持は出来てないのと同じでしょ。
recoverがあるから、catchできるのと同じだからエラーハンドラここに書くって言う奴と同類に見える。
851デフォルトの名無しさん
2018/04/09(月) 18:53:07.60ID:w9Q1JF4q 暗黙的に握りつぶす/無視する、か、明示的に握りつぶす/無視する、だけの違いなんだが。
なんでわかんないんだろう。
なんでわかんないんだろう。
852デフォルトの名無しさん
2018/04/09(月) 18:53:14.64ID:2gnvm26g853デフォルトの名無しさん
2018/04/09(月) 18:55:18.76ID:w9Q1JF4q >>852
「そもそも例外があるから、こういう失敗するんだ」を「例外無くして明示的にやろう」
と言語仕様で厳しくやってるだけで、
トレースしているどころか、トレースしないように別ルート取ってるだろ。
どこがトレースしてるの?
「そもそも例外があるから、こういう失敗するんだ」を「例外無くして明示的にやろう」
と言語仕様で厳しくやってるだけで、
トレースしているどころか、トレースしないように別ルート取ってるだろ。
どこがトレースしてるの?
854デフォルトの名無しさん
2018/04/09(月) 18:58:04.38ID:mElBwjLW855デフォルトの名無しさん
2018/04/09(月) 18:58:52.48ID:w9Q1JF4q 日本人的だとか、ロジカルでない事をグダグダ言う前に、いろんな言語の言語仕様みてくりゃいいのに。
Fortranが話題に出てるけど、知ってんのかって疑問。
Fortranが話題に出てるけど、知ってんのかって疑問。
856デフォルトの名無しさん
2018/04/09(月) 19:03:27.06ID:w9Q1JF4q >>854
知ってるよ。
非検査例外と検査例外のどちらも発生させうるメソッドはどうハンドリングするの?運用のルール?
結局全部検査例外なら良いって話になっちゃうし、throws書いたらガバガバになるだけじゃん。
知ってるよ。
非検査例外と検査例外のどちらも発生させうるメソッドはどうハンドリングするの?運用のルール?
結局全部検査例外なら良いって話になっちゃうし、throws書いたらガバガバになるだけじゃん。
857デフォルトの名無しさん
2018/04/09(月) 19:58:52.42ID:rsHYF1DS jsでasync await使おうとするとエラー系は例外扱いになるから辛い。
858デフォルトの名無しさん
2018/04/09(月) 20:15:00.84ID:ebJj02XJ >>855
Fortranを話題に出してるのは俺で、俺はFortranユーザーだ。なんか用か?
Fortranを話題に出してるのは俺で、俺はFortranユーザーだ。なんか用か?
859デフォルトの名無しさん
2018/04/09(月) 20:15:41.91ID:ebJj02XJ まあ返り値の最適化はわかってなかったけどなw
860デフォルトの名無しさん
2018/04/09(月) 20:24:45.38ID:25u/0YJa 次世代語る前に現世代を勉強した方が良いねこれは。
861デフォルトの名無しさん
2018/04/09(月) 20:25:58.04ID:w9Q1JF4q >>858
いやいや、そういう意味じゃない、誤解させてすまん。
引数でerrの取り扱いしたり、名前付き引数があったり、そういう言語を触ったことがあるのか?
皆はそれぞれ使ってて、メリットを分かって話してるが、自分(ID:2gnvm26g)は戻り値でそういう処理をする言語は触った事があるのか?
話題についてこれてるか?Javaかなんかの狭い世界の話ししてるんじゃないのか?
って事を言いたかったんよ。
いやいや、そういう意味じゃない、誤解させてすまん。
引数でerrの取り扱いしたり、名前付き引数があったり、そういう言語を触ったことがあるのか?
皆はそれぞれ使ってて、メリットを分かって話してるが、自分(ID:2gnvm26g)は戻り値でそういう処理をする言語は触った事があるのか?
話題についてこれてるか?Javaかなんかの狭い世界の話ししてるんじゃないのか?
って事を言いたかったんよ。
862デフォルトの名無しさん
2018/04/09(月) 20:31:26.77ID:ebJj02XJ >>861
ああそういうことか。誤解してたわすまん
ああそういうことか。誤解してたわすまん
863デフォルトの名無しさん
2018/04/09(月) 20:39:58.68ID:2gnvm26g864デフォルトの名無しさん
2018/04/09(月) 20:40:46.31ID:w9Q1JF4q865デフォルトの名無しさん
2018/04/09(月) 20:40:53.09ID:FJyngZbb866デフォルトの名無しさん
2018/04/09(月) 20:45:47.57ID:w9Q1JF4q >>863
解決していないんじゃなくて、結果として検査例外の書き方がまずかった、検査例外以外の存在も実は「これ検査例外にすべきじゃないの?」とか色々物言いもつく、
そもそも論として全部明示的にハンドリングする事をデフォルトにして、検査例外どころか例外を無くそう、って話なんだが。
失敗したも何も、クソめんどくさかったりして、throwsを全部につければ問題無いとか変なルールで回避するからややこしくなるだけなって、収拾がつかなくなったんでしょ。
ジェネリクスがない頃からJavaは触ってるし、歴史を知らんわけでもない。
問題を整理し直して解決したんじゃなくて、捨てたんだよ。柔軟さを。
解決していないんじゃなくて、結果として検査例外の書き方がまずかった、検査例外以外の存在も実は「これ検査例外にすべきじゃないの?」とか色々物言いもつく、
そもそも論として全部明示的にハンドリングする事をデフォルトにして、検査例外どころか例外を無くそう、って話なんだが。
失敗したも何も、クソめんどくさかったりして、throwsを全部につければ問題無いとか変なルールで回避するからややこしくなるだけなって、収拾がつかなくなったんでしょ。
ジェネリクスがない頃からJavaは触ってるし、歴史を知らんわけでもない。
問題を整理し直して解決したんじゃなくて、捨てたんだよ。柔軟さを。
867デフォルトの名無しさん
2018/04/09(月) 20:56:14.35ID:ebJj02XJ ID:2gnvm26gの主張って、エラー関係に文句言ってる奴に「別にthrow-catchでもそんなに困らなくね?」って言ってるの?
868デフォルトの名無しさん
2018/04/09(月) 20:56:27.27ID:1PTa96/6 俺には二人ともが「Javaの検査例外は失敗だった」と主張しているように読める……
なんで喧嘩してるんだろうこの人たち
なんで喧嘩してるんだろうこの人たち
869デフォルトの名無しさん
2018/04/09(月) 20:58:19.15ID:w9Q1JF4q >>868
その上で例外廃止を是とするか、「ちゃんとしてれば「手に負えない例外」なんてない」って夢物語を語ってるかが違うと思う。
その上で例外廃止を是とするか、「ちゃんとしてれば「手に負えない例外」なんてない」って夢物語を語ってるかが違うと思う。
870デフォルトの名無しさん
2018/04/09(月) 21:00:24.61ID:w9Q1JF4q なんとなく手抜きっぽいからじゃなくて、本気で手抜きだと思ってんだよなぁ。
871デフォルトの名無しさん
2018/04/09(月) 21:00:41.98ID:25u/0YJa なんかどっちでも大して変わらんというか、
結局実装者がどれだけ丁寧に作るかどうか以上の話にならん気がする。
結局実装者がどれだけ丁寧に作るかどうか以上の話にならん気がする。
872デフォルトの名無しさん
2018/04/09(月) 21:04:04.26ID:mElBwjLW まあthrows Exceptionやるような奴なら、戻り値によるエラー処理を強制したとしても
全メソッド呼び出しでErrorを盲目的に再returnするか全部握り潰してOptionalだらけにするだけだろうな
全メソッド呼び出しでErrorを盲目的に再returnするか全部握り潰してOptionalだらけにするだけだろうな
873デフォルトの名無しさん
2018/04/09(月) 21:06:17.30ID:w9Q1JF4q 丁寧に作ると、大域ジャンプなんかそうそう使わん。
>>872
それでも、どこか遙か上でcatchしてることを期待してthrowされるより、直上がエラーを見てる事が保証できてるほうがマシかと。
握りつぶすのは論外として。
>>872
それでも、どこか遙か上でcatchしてることを期待してthrowされるより、直上がエラーを見てる事が保証できてるほうがマシかと。
握りつぶすのは論外として。
874デフォルトの名無しさん
2018/04/09(月) 21:09:28.00ID:ON56dtQ5 Javaは継承はあるがジェネリクスがない時代の遺物
タプルやEitherを使わないのもジェネリクスがなかったことが影響している
タプルやEitherを使わないのもジェネリクスがなかったことが影響している
875デフォルトの名無しさん
2018/04/09(月) 21:11:10.68ID:O1tgNFRh Javaの検査例外が失敗したのは
パッと見で非検査例外と区別がつかなかったことと
try-catch文を毎回書くもがあまりにも冗長で面倒臭かったから
だからSwiftでは非検査例外の方をなくして
更にtry-catch文の改良することで検査例外を復活させてる
ID:2gnvm26gは検査例外という考え方そのものが失敗作だと思ってない?
そうじゃないよ。
パッと見で非検査例外と区別がつかなかったことと
try-catch文を毎回書くもがあまりにも冗長で面倒臭かったから
だからSwiftでは非検査例外の方をなくして
更にtry-catch文の改良することで検査例外を復活させてる
ID:2gnvm26gは検査例外という考え方そのものが失敗作だと思ってない?
そうじゃないよ。
876デフォルトの名無しさん
2018/04/09(月) 21:16:16.06ID:D454qjGx ところで検査例外って「失敗」したの?たしかにJava以降採用する言語はないけどさ。
877デフォルトの名無しさん
2018/04/09(月) 21:19:48.19ID:mElBwjLW 検査例外は多態との相性が最悪なんだよ
Java自身ですら、Lambdaで詰んでとうとう検査例外やめちゃった
Java自身ですら、Lambdaで詰んでとうとう検査例外やめちゃった
878デフォルトの名無しさん
2018/04/09(月) 21:36:54.73ID:1PTa96/6879デフォルトの名無しさん
2018/04/09(月) 21:48:04.19ID:1PTa96/6 あー、Javaの場合はクロージャを独立したinterfaceとして型を付けないといけないんで無理だな
すまん忘れてくれ
すまん忘れてくれ
880デフォルトの名無しさん
2018/04/09(月) 21:49:57.80ID:8jS3HAgs 例外をGenericsパラメータにして大体同じような事は出来る。
単に標準ライブラリが採用しなかっただけでは。
単に標準ライブラリが採用しなかっただけでは。
881デフォルトの名無しさん
2018/04/09(月) 22:01:05.72ID:ON56dtQ5 動的型は平和でいいよな
検査例外やジェネリクスの無理難題を
追っぱらうため *だけ* だったとしても、それ自体、動的型を使う強力な理由になりうる
検査例外やジェネリクスの無理難題を
追っぱらうため *だけ* だったとしても、それ自体、動的型を使う強力な理由になりうる
882デフォルトの名無しさん
2018/04/09(月) 22:29:22.04ID:mPPENYW6 >>872
明示的に無視するように書いてる場合は議論から除いたほうがよくない?
明示的に無視するように書いてる場合は議論から除いたほうがよくない?
883デフォルトの名無しさん
2018/04/09(月) 23:37:00.39ID:zonfm2OA Goはマスコットがきもい!!
884デフォルトの名無しさん
2018/04/09(月) 23:41:10.06ID:O1tgNFRh >>883
世間一般ではあれをキモカワイイと呼ぶ……はずだ…
世間一般ではあれをキモカワイイと呼ぶ……はずだ…
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】中国、水産物輸入停止と通達 日本政府に [おっさん友の会★]
- 中国側が首相答弁の撤回要求、日本側拒否★6 [夜のけいちゃん★]
- 「厚かましい挑発的発言だ」中国国連大使が高市首相発言に強く反発 日本の常任理事国入りに明確に反対 [ぐれ★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 ★3 [蚤の市★]
- 【漫画】『週刊少年サンデー』連載中の漫画家、前編集者に怒り! 入稿遅れ、無断のセリフ変更など暴露 「心の糸が切れて」 [冬月記者★]
- 【悲報】安倍晋三と高市早苗、どちらがより日本を破壊したのか🤔 [616817505]
- 【速報】中国、水産物輸入停止 [527893826]
- 高市総理はもっと暴れて自民党を分裂、もしくは解体して欲しい [633746646]
- 【緊急】高市早苗 月内辞任か [695089791]
- 高い国産米はいらない😤主食用輸入米(無関税)が最速で完売※1kg556円 [993451824]
- 【悲報】高市早苗さん、たった一人で日本を崩壊へ導く [714769305]
