TOP > IT・テクノロジー > Qiita > 「例外」がないか...

「例外」がないからGo言語はイケてないとかって言ってるヤツが本当にイケてない件 - Qiita

73コメント 登録日時:2018-12-08 05:06 | Qiitaキャッシュ

 この記事は、[Go3 Advent Calendar 2018](https://qiita.com/advent-calendar/2018/go3) の8日目の記事です。 7日目は @codehex さんによる「[Go でアプ......

Twitterのコメント(73)

Goは例外処理がないんじゃなくて、こういうことなんだよ。
これは読み応えがあって良い記事 |
例外ないのビックリだけどコレ読むと理解が進む(なお私の理解度)
さてここでschemeを見てみよう
面白かった
Go言語。
おれも例外のない世界とやらを見てみたくなった。
“"正常な状態" へと戻すことが期待されないような状態におちいったときには panic を使うべき という約束の上に、Goの例外処理は成り立っている。” / “「例外」がないからGo言語はイケてないとかって言ってるヤツが本当にイ…”
ふむぅ。 /
マサカリがマサカリを生み、そして知見が生まれる(小並感
NowBrowsing: - Qiita:
後半がjavaの検査例外を語る記事になってる。
こういう記事かけるのすげーなって思う
ぅゎ継続っょぃ
Golangを私がダメだと思ってるのは
```Go
err, val := awesomeFnc()
if (err != nil) {
panic(err)
}
```
をコピーして100箇所に貼り付ければ動くでしょって理論が超ダサくてコピペをやめさせてくれと感じることだと思ってるんだけど
その辺の言及なくてないてる
ずっと大域脱出の話してるからずっとうずうずしてたら、やっぱりオチがSchemeだったw
記事の書き方も面白かったw
脚注に書いてるように、個人的には多値返却をエラーの返却に使うのはあんまり筋が良くないと思うんだよなぁ…
Go言語がイケてなければ僕の職業柄目線、案件たくさんあることなんてない。
errorの実装を強制するの好きだし(僕がよくエラーハンドリング忘れるから)、ジェネリクスある方が抽象的過ぎて後からなんだっけこれってなったり闇を見やすい。
そういう落ちですかw
goはちゃんと書いたことは無いけど同意。しかしmap/reduceがないのはシンプルにめんどい。慣れの問題とわかるが
既存言語の機能を全部実装しなきゃいけないなら新しい言語を出す意味がないので思想大切。それ故にGoが流行ったのってやっぱりGoogleだったからってのはありそうだよねーとは思う。iPhoneみたいなタッチパネルのおばけ出せたのジョブズだからだよねに近い話だが。
こういう対話型芸風はなかなか面白いと思った。が、「結論あせんなし。」とか「決めつけんなし。」ってのはどういう日本語なのだろう。
おもしろかった!
オチがおもしろい!
この記事のよくないところはJavaを引き合いに出してるところ。Javaは殴られる方だもん。よそを殴らないよ。どうせC。そっちを殴ってよ。
panicによる大域脱出がまあそこまで筋悪な設計じゃないと確認できて良かった (^_^;)
そういや、エラー機構について向き合ったことないな
チャンネルも例外も言語実装しなくて良いんだよ派。Rustのmpsc::channel()はライブラリだし、Haskell、Scalaの継続モナドもライブラリで例外的なことは出来るし / “「例外」がないからGo言語はイケてないと…”
さらっと書かれてるけど自分的にはコレが一番でかいなー > “それから、並行処理を書くにはthrow-try-catchは適さないって話 もある。” / “「例外」がないからGo言語はイケてないとかって言ってるヤツが本当にイケてな…”
まぁ例外を期待したコード書いちゃいけない罠。^^;
基本的には例外の発生しないコードを書かなきゃね!
ーーー
プログラム言語って、仕様だけ見てるとわからない設計思想みたいなもの、あるよね。「なぜこの機能を入れたか」よりも「なぜその機能を入れてない(ように見える)か」の方が特徴が出る……
タイトルは煽りだけど、内容はすごい勉強になった・・・!
Goのエラーハンドルの解説としてはとてもわかりやすいし読みやすいんだけど、Java の dis っぽくなってしまっているのが少し残念。。。 /
例外処理と絡めた時の「継続」についてイマイチ理解出来てないのだけど
継続が第1級の計算対象ってどういう意味なんだろう?
Scheme 雰囲気でしか読めないからモヤが晴れん
例外ってC++ではじめて出てきてJavaで一般的になった印象。確かにエラーチェックくらいで例外は大げさすぎるというのは同感。
めちゃ為になった /
面白かった。なんか例外まわりのもやもやと理解してたことがまとまっていて、腹落ちした。
例外、普通は例外を専用の例外に翻訳してthrowしなおしでしょ。causeのフィールドに元の例外入れておけばいい。 / 検査例外はラムダとかああいうのでね… / “「例外」がないからGo言語はイケてないとかって言ってるヤツが本当…”
こりゃすごい力作だ /
「例外」で一括りにせず大域脱出と多値返却のそれぞれの効能を分かりやすく考察してて良い。 >
これにどこら辺まで突っ込めるかで知識と経験が出ると思う。逆にこれをすんなり受け入れるような人ならgoでいいんじゃないかな。
Javaを仕事で使い始めて2年間経つけど、検査例外や静的型付けなどの各種制約事項が逆に初心者として勉強になるということに加えて、こういう記事の引き合いに出されて理解しやすいというメリットがあるのである
ちょうどpythonでthrow使って「俺が考えた最強の大域脱出」みたいなクソコード書き散らしてたから、もっと調べなあかんと思った。。おもろかった。/
www
"そ、そんな Exception を catch するだけして無視しちゃうような乱暴なコード、誰も書かないし・・・"
"でも、もしウソだと思うんなら、GitHubを見てから 語り合おうや。"
人の営みって感じがする。 /
throws 書かないで済むようにRuntimeException でラップしてスローするのではなく、この場合はメソッド宣言に認証例外を投げることを明示しておき (throws AuthenticateException)、それにラップしてスローする気がする。
なんでもキャッチしないと!はただの設計ミスでは…。
おもしろい
折角のアドベントカレンダーで喧嘩売るなよ
僕のことだと思う...(知らなかったし)
goの多値とhaskellのタプルを同列に語らないで欲しい。
これは、例外についてよく調べられた記事。
@kutonai 〜しの例
「ちょっ!待てって。そんな結論あせんなし。」
引用元
どんなもんかと覗いたら、だいぶディープだった /
これ読んでいて思い出したのだが、「例外」がプログラミング言語的な機能過ぎて忘れがちだけど、C/C++は言語に例外があろがなかろうがsetjmp/longjmpのような手段を使っているんだよな。 / “「例外」がないからGo言語は…”
良い読み物だった。 /
面白い奴だな、気に入った
Koroすのは最後にしてやる
多値返却のところで納得出来た。 /
最近寒いから親切にも燃料投下してくれたようです
牧さんノリノリーだなと思ったら牧さん違いだった
Javaの検査例外のところで出てくるinterfaceに例外型がぼこぼこ出てくるやつは本来ならinterface内部でそれが吐く例外型もassociateしてインスタンス宣言時に決めさせるのが良いのだと思う(がこのためだけにassociated typeとかいう面倒なものを入れたくないのはわかる)
なるほど
大域脱出って名前初めて知ったけど、個人的にはあんまし使ってないなぁ
Goの、呼び出し元が責任を持つってやり方イイ
ネタ記事って書いてるのに突っ込むのもアレだけど,GoogleのC++のコーディング規約については,「特に新しいプロジェクトの場合は、例外を扱うコストよりも、その恩恵が上回るでしょう。」って例外のページに書いてるので,デメリット云々はちとミスリードですね >
俺、基本、Javaでこのgoの考え方でやる。異常は実行時例外で落とす。対処すべきものは、呼び出し元にステータスなんかの情報を戻り値として返す。
正常値とエラーの直和が返ってくるべきところで直積が返ってくるのは俺には永久に納得できさうにないし、Go 設計者は論理といふものを理解してないとしか思へない / “「例外」がないからGo言語はイケてないとかって言ってるヤツが本当に…”
後でゆっくり読む
以上

記事本文: 「例外」がないからGo言語はイケてないとかって言ってるヤツが本当にイケてない件 - Qiita

関連記事