【プログラム言語】グーグル、C/C++に代わる新言語「Go」をOSSで公開
後藤
>>901 ifやfor、break、gotoがcallに落ちることってあるのか?
構造化が言われて久しいってのに、いまだに「有害なgoto有害論者」って居るんだなあw
goto使わなかったらエラー処理どうすんの?
ある関数の中でたくさんnewしたりなにかをcreateしたりopenしたりする度に
エラーに出会ったらロールバックしないといけないだろ?
そのロールバック処理をエラーチェックがある度に書くのか?
普通はgotoで関数の最後に飛ばしてそこでロールバックさせる。だろ?
なんで?
newなりの成功処理ブロックの最後で一回だけすりゃいいんでは?
なんで成功したときにdeleteすんだよw
わかってないなぁ。
if((a=new hoge)==null){return;}
if((b=new hoge)==null){delete a;return;}
if((c=new hoge)==null){delete a;delete b;return;}
って書くのか?って話だ。
910 :
名無しさん@十周年:2009/11/16(月) 01:19:15 ID:zTDiORvp0
>>908 それやるとnewやopenするポインタ毎にフラグが必要にならんか?
処理に入る前にすべてnewしてしまえば別だが・・・。
913 :
名無しさん@十周年:2009/11/16(月) 01:40:38 ID:nZUgKZLoO
結局、gotoを使ってはいけない理由を誰も提示できていない時点で、結論は明らかなんだよな。
gotoの有害性を完全に自明の前提として、思考停止しちゃってる。
>>909 その2,3行目はaの取得に成功した場合に実行する処理だろ?
delete aはその後にやれば1回で済む。無理に途中でreturnしようと
するからdelete aが複数回必要になるんでは?
916 :
名無しさん@十周年:2009/11/16(月) 01:57:35 ID:af/D90/S0
goto をなぜ使ってはいけないのかを理解できない人がいるから、
goto は一切駄目と教えている。
もちろん分かる人は、使っていい場面では使っていい。
917 :
名無しさん@十周年:2009/11/16(月) 02:01:01 ID:qdwMYBwJ0
見ずれーから使うなって言ってんだよ
経験の少ない奴は頭でっかちで使えないバカばっかり
しねよ
918 :
名無しさん@十周年:2009/11/16(月) 03:05:05 ID:/DQJhPPY0
結局、x86アセンブリ、C、C++、VC++が最強なんでしょ。
終了。
プログラムスレに紛れ込んだのかと思った
WindowsはWin32APIの互換が次期バージョンでヤヴァいから互換性の高い.NETフレームワークが最強
新macにも対応してるしな
>>920 それはない、Windowsは過去の資産のお陰で生きながらえてるようなものだからね
>>909 newの戻り値nullで見るなんてどんだけ新米だ
C++のやってはいけないコーディングベスト10に絶対入ってんぞw
高級言語が生まれてからいったい何十年経ってると思ってるんだ。
ヴィルトの『アルゴリズム+データ構造=プログラム』を読んでから出直してくれ。
Pascal代入ほんと勘弁してください
ビルドが早いってのはいいね。動的リンクしかないなんてオチだったら笑えるが
926 :
名無しさん@十周年:2009/11/16(月) 12:32:07 ID:nHOYaZVQ0
>>922 組み込み系だと例外使えないC++コンパイラが普通にある
新しく作られた処理系が実用的なのか広く使われるかなどは別として
現状、処理系を作る敷居が物凄く低くなっている
だからポコポコ新言語が生まれるのと違う?
>>927 単に投資先になってるだけだろ。新言語→新製品 それだけのことだと思うぞ。
MSがOS作るのやめないようなもんだ。
バージョンアップだけじゃユーザが「今のままで間に合ってます」になるから
「新しいの作りました」で興味引くだけだわ。
"n"
931 :
名無しさん@十周年:2009/11/16(月) 18:14:42 ID:NU/oKUfsO
「本物のプログラマは一生に一度はLispインタプリタを書く」
>>926 C++標準から外れてるコンパイラのことを言われてモナ
933 :
名無しさん@十周年:2009/11/16(月) 19:23:24 ID:Ci5FRLvX0
おもしろ半分に言語を増やすな
934 :
名無しさん@十周年:2009/11/16(月) 19:58:28 ID:t3OEs6I/0
ひろみGo
935 :
名無しさん@十周年:2009/11/16(月) 20:06:07 ID:nHOYaZVQ0
>>932 綺麗な環境だけで開発できりゃ天国だぜ
WindowsCE 用のMSのC++コンパイラとか
ちょっと前のBREW用のARMコンパイラとか実装してなかった
他にも色々あるが、某社の日本製C++コンパイラは特に酷い
テンプレートもまともにコンパイルできねえ
936 :
名無しさん@十周年:2009/11/16(月) 20:06:26 ID:3LcqiHbz0
937 :
名無しさん@十周年:2009/11/16(月) 20:14:29 ID:nHOYaZVQ0
並列処理用の型じゃないの?
今はマルチコアとか活用するには自分でゴリゴリ並列処理書くか、Cを特殊な拡張してやってるけど、
それを標準で持ってるって事でしょ
>>914 何を言ってるのか良く分からんのだが。
> delete aはその後にやれば1回で済む。無理に途中でreturnしようと
「なにかあったら、それまでに確保・作成したリソースを全部破棄してすぐに戻る」
事を要求される処理や場合なんか山ほどある事ぐらい想像できないか。
>>938 まさか、これだと「すぐ戻る」ことができないから途中でreturnしなければ
ならないと思ってるとかw
if (a成功) {
if (b成功) {
if (c成功) {
処理本体
c後始末
}
b後始末
}
a後始末
}
>>939 まあお前の突っ込みは
・条件が2つや3つですむ
・aやbやcの間に、処理が何もない
・「後始末」以外にやることがない。
・elseでやることがない
・・・などなら正しい可能性があるね。
何の言語でもそうなんだけど、みんなどうやって覚えてるの?
88についてたBASIC位なら単純な命令覚えて組み合わせればいいけど、
最近の言語は命令も細分化されて、さらにその対象物(ウィンドウとかテキストエリアとか)も
細かく分かれてるんでしょ?リファレンスと首っ引きでゼロから探していくの?
は?
命令は分かれてないぞ
対象物は引数で指定だろ
>>941 何でもそうだが、作者と同じ立場ならどうするか考えながら覚える。
なぜgotoが有害か結局言及できないのが+の限界
なにか変わるんだろうか
if (a成功) {
なにか処理
if (b成功) {
なにか処理
if (c成功) {
処理本体
c後始末
}else{
c失敗時の処理
}
処理
b後始末
}else{
b失敗時の処理
}
処理
a後始末
}
>>946 お前のコードと下のコードを比較しようか。
a確保
if(a==失敗) goto finish;
なにか処理
b確保
if(b==失敗){
b失敗時の処理
goto finish;
}
なにか処理
c確保
if(c==失敗){
c失敗時の処理
goto finish;
};
何か処理
finish:
if(a有効) free(a);
if(b有効) unlink(b);
if(c有効) delete(c);
どっちが「間違いにくく」「読みやすく」「保守しやすい」ソースだと思うね?
>>946 そもそもなんで一つの関数のなかでリソースの確保とそのリソースを使った処理とリソースの解放があるって前提にしか立てない?
リソースの確保だけをする関数の話だろ?そして一つでもリソースの確保に失敗したら全部戻してエラーを返すような関数の話だ。
>>945 gotoを使うのが自分だと思ってるか他人だと思ってるかの違いだよ。
バカにハサミを持たせなくない人間とハサミ持って喜んでる人間の違いだ。
goto の使い方を教えればいいんじゃない?
MISRA-C++ みたいにさ
もっと客観的に論じてよ。
ダイクストラにすら言及されてないし構造化プログラムがなぜ支持されたのかも論じられてない
>>949 > gotoを使うのが自分だと思ってるか他人だと思ってるかの違いだよ。
> バカにハサミを持たせなくない人間とハサミ持って喜んでる人間の違いだ。
少なくともgotoを使うなgotoは死ね派の論理はそんな話をしているようには全く見えないがな。
「gotoはこの世の最大の悪!抹殺すべし!使う奴を許すな!
gotoがあるほうが便利なことがあるとすればそれ自体が悪だ!」
みたいな。
「読みづらくなりやすいからgoto使うな」という論理だったのが、
「このロジックは簡単そうに見えるが実は読みづらいんだよ。goto使ってるのがその証拠」
みたいな論理になるような人がたまにいる。
>>948 まあ、ひとつの関数の中でリソースを開放するような話もあるし、そうでないのもどちらもあるね。
>>947 「なにかあったら、それまでに確保・作成したリソースを全部破棄してすぐに戻る」って話はどうなったの?