関数呼出しはgoto文である
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/01/24(土) 07:30:08gを読んでみたら関数hがあった。
これはgoto文だと思った。
しかし、関数に切り出すのは構造化プログラミングだと言われている。
gotoがダメだから構造化プログラミングにパラダイムシフトしたのに
所詮はgotoなのである。
0002デフォルトの名無しさん
2009/01/24(土) 08:12:470003デフォルトの名無しさん
2009/01/24(土) 08:20:340004デフォルトの名無しさん
2009/01/24(土) 08:24:580005デフォルトの名無しさん
2009/01/24(土) 08:47:36これはどう見てもおかしいだろ。 まず、主語が2。で動詞がget。
2が単数形だとしたら、getsにしないとおかしい上に、目的語がない。
直訳すると「2が得る」 何を得るんだよ!!!いいかげんにしろ。
それを言うなら
I get 2. だろ。しかも現在形だし。 過去形、いや現在完了形ぐらいまともに使ってくれよ。
I've got 2. 少しはましになって来たが、まだ気に入らない。その2だ。
いったいお前は何を手に入れたんだ?2という数字か? 違うだろ、手に入れたのは2番目のレスだろ。
どうも日本人は数詞と序数詞の区別がよく分かっていない節がある。
これらを踏まえて、正しくは
I've got the second responce of this thread.
ここでtheにも注目してもらいたい。このスレの2ってのは 特定の、このレスだけなんだから。だからaでも無冠詞でも なく、the second responceなんだ。
もう一度おさらいしてやる。
I've got the second responce of this thread.
0006デフォルトの名無しさん
2009/01/24(土) 08:50:240007デフォルトの名無しさん
2009/01/24(土) 08:53:470008デフォルトの名無しさん
2009/01/24(土) 09:04:410009デフォルトの名無しさん
2009/01/24(土) 09:08:56responce じゃなくて post だろう。普通は。
0010デフォルトの名無しさん
2009/01/24(土) 09:50:41ところで、構造化プログラミングってのは、
選択(ifブロック)とか繰り返しとか、gotoで行う制御を抽象化することであって、
サブルーチンに切り出すってのは構造化と違うと思うんだが...
0011あぼーん
NGNG0012デフォルトの名無しさん
2009/01/24(土) 12:00:110013デフォルトの名無しさん
2009/01/24(土) 12:28:180014デフォルトの名無しさん
2009/01/24(土) 13:35:17itoは大丈夫なんだろうな?
0015デフォルトの名無しさん
2009/01/24(土) 13:43:57言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0016デフォルトの名無しさん
2009/01/24(土) 15:59:41goto文を使うと、スパゲッティ・プログラムになる。だから先人はgotoを禁止した。
でも、goto文を 使わずに スパゲッティ・プログラムを書く方法はいくらでもあるぜ。
構造化スパゲッティ、オブジョクト指向スパゲッティ!
そゆことだろ?
0017デフォルトの名無しさん
2009/01/24(土) 18:25:15その場合のプログラムの読み方としてはh,g,fの順番で読めばいいんじゃないでしょうか
0018デフォルトの名無しさん
2009/01/24(土) 18:34:03またお前だ
0019デフォルトの名無しさん
2009/01/24(土) 18:42:230020デフォルトの名無しさん
2009/01/24(土) 22:27:16それ以外の実行順序を制御する仕組みは全部ifgotoのシンタックスシュガーに過ぎない
0021デフォルトの名無しさん
2009/01/24(土) 22:41:16後藤さんはそのためにいるんじゃないんだけど、やってくれるからってやらせていいというわけではないんだよ。
ちょっとした例外処理にまわってもらうんだよ。
多重ネストから抜けるのは、邪道過ぎる。そもそもその構造をどうにかして使わずに済ませろ。
0022デフォルトの名無しさん
2009/01/24(土) 23:37:450023デフォルトの名無しさん
2009/01/25(日) 00:35:410024デフォルトの名無しさん
2009/01/25(日) 01:27:36http://catb.org/jargon/html/C/COME-FROM.html
http://en.wikipedia.org/wiki/COMEFROM
http://www.fortran.com/come_from.html
0025デフォルトの名無しさん
2009/01/25(日) 07:22:100026デフォルトの名無しさん
2009/01/25(日) 11:40:38for(;;)
{
for(;;)
{
〜〜〜
if(〜){break};
}
〜〜〜
if(〜){break);
}
のようにif文を2回も書かないとダメじゃん。
for(;;)
{
for(;;)
{
〜〜〜
if(〜){goto A};
}
〜〜〜
}
A:
のほうがきれいじゃん
0027デフォルトの名無しさん
2009/01/25(日) 14:04:03>>26のような妥当なgotoの使い方じゃなくて、
普通は関数化するところもgotoでやろうって話だよな?
0028デフォルトの名無しさん
2009/01/25(日) 14:45:23>>1が読んだコードが、関数へのくくりだしがきれいな抽象化になっていなかったか、の
どちらかだと思われる。
0029デフォルトの名無しさん
2009/01/25(日) 18:01:360030デフォルトの名無しさん
2009/01/25(日) 18:18:38int main(void)
{
int add_caller;
int add_ret;
int add_a;
int add_b;
goto BEGIN;
ADD:
add_ret = add_a + add_b;
switch (add_caller) {
case 0: goto ADD_COLLER0;
default: goto ERROR;
}
BEGIN:
add_a = 1;
add_b = 2;
add_caller = 0;
goto ADD;
ADD_COLLER0:
printf("%d+%d=%d\n", add_a, add_b, add_ret);
return 0;
ERROR:
return 1;
}
0031デフォルトの名無しさん
2009/01/25(日) 18:50:080032デフォルトの名無しさん
2009/01/25(日) 18:54:14呼び出されている人 = callee
0033デフォルトの名無しさん
2009/01/25(日) 19:21:24コンパイル後は関数呼び出しもgotoもほとんど同じようなもんだろバーローww
0034デフォルトの名無しさん
2009/01/25(日) 19:22:540035デフォルトの名無しさん
2009/01/25(日) 20:32:370036デフォルトの名無しさん
2009/01/25(日) 21:13:41あなたのメイド♪
あとわすれた
0037デフォルトの名無しさん
2009/01/25(日) 21:32:53今だにそんなソース見掛けるから怖いよ
0038デフォルトの名無しさん
2009/01/25(日) 21:36:43曲名なんだっけ
0039デフォルトの名無しさん
2009/01/25(日) 21:43:21そういう言う意味だと ret も同じだよね。ぶっちゃっけ jmp だけあればいいw
ということは「関数から戻ることはgoto文である」ということにもなり...
あれ、普通の言語のgotoって、関数の外に飛べるっけ?
さいきんアセンブラしかつかってないからわかんないやw
0040デフォルトの名無しさん
2009/01/25(日) 21:55:08Cは大域ジャンプしない限りは関数内だけだったと思う。
0041デフォルトの名無しさん
2009/01/25(日) 21:57:10メイドさんロックンロール
0042デフォルトの名無しさん
2009/01/25(日) 21:58:150043デフォルトの名無しさん
2009/01/25(日) 22:06:300044デフォルトの名無しさん
2009/01/26(月) 00:15:30switch (i) {
case 0:
うんこ
break;
case 1:
しっこ
break;
case 2:
まんこ
break;
case 3:
ちんこ
break;
以下省略
}
}
0045デフォルトの名無しさん
2009/01/26(月) 01:00:51関数コールとgotoの代りをさせるCの方言を作ってたな
0046,,・´∀`・,,)っ-●◎○ ◆NotanpeTw6
2009/01/26(月) 01:26:37http://www.ie.u-ryukyu.ac.jp/~kono/papers/kono/2008/akira-vld.pdf
0047デフォルトの名無しさん
2009/01/26(月) 03:19:370048自作自演 ◆Jz9y3GJYBc
2009/01/26(月) 09:52:32このスレを立てたのは僕で、>>17も僕なんですが。
あともうひとつの僕の立てたスレでも自作自演がばれてます。
http://pc11.2ch.net/test/read.cgi/tech/1232851820/l50
の>>8-9です。
またお前だと2回も言われていることからあきらかです。
よろしくお願いいたします。
0049自作自演 ◆Jz9y3GJYBc
2009/01/26(月) 10:10:22ちなみに自作自演は表現の自由として憲法で認められた権利であると
解釈しております。
0050デフォルトの名無しさん
2009/01/26(月) 11:14:06Cは関数ごとにスタックフレームの構造が違うかもしれないから、
一般には飛べない。
GCCのlavel as valueという言語拡張を使ってラベルをポインタにすると飛べるけど、
何が起こるかわからないw
0051デフォルトの名無しさん
2009/01/26(月) 15:07:470052デフォルトの名無しさん
2009/01/26(月) 20:09:08っていう動作だから、スタックも保存するかもしれない。
0053デフォルトの名無しさん
2009/01/26(月) 20:48:59スタックフレームに関わらず飛ぶ仕様でいいんじゃないか?
goto, gosubしかない時代のbasicでもサブルーチンから別のサブルーチンにジャンプすると言うトリックは存在してたんだし。
# 勿論、ジャンプ先を間違えてメイン側からサブルーチンに飛び込むと大変なことになるわけで。
0054デフォルトの名無しさん
2009/01/26(月) 21:00:18スタックが無いプロセッサも存在した。
サブルーチンなど行って戻ってくる必要のある場合
CALL unko,R1
みたいに、呼び出し元のアドレスをレジスタ(この例の場合は R1)
に保存してからジャンプする。
戻るときは単にレジスタR1をプログラムカウンタに代入するだけ。
スタックとサブルーチンコールは、カレーと福神漬けのように
相性が良いってだけで、カレー・イコール・福神漬け、では無いよ。
0055デフォルトの名無しさん
2009/01/26(月) 22:28:37>CALL unko,R1
ってゆうかこれってアセンブラレベルの話では。
>スタックとサブルーチンコールは、カレーと福神漬けのように
>相性が良いってだけで、カレー・イコール・福神漬け、では無いよ。
そのプラットフォームでは高級言語の呼び出し規約はどうなっていたんでしょうか。
その話によるとスタック的なデータ構造は使っていないということですね?
0056デフォルトの名無しさん
2009/01/27(火) 02:18:250057デフォルトの名無しさん
2009/01/27(火) 06:45:18ずーーと、アセンブラレベルの話のようだが。
0058デフォルトの名無しさん
2009/01/27(火) 10:12:05行って戻ってくるみたいな。
0059デフォルトの名無しさん
2009/01/27(火) 10:34:26行きは、現在の場所を記憶しておく。
帰りは、行きに記憶しておいた場所に戻る。
それ以外は、只のジャンプと同等。
但し、関数にローカルなオブジェクトがある場合はスタックフレーム形成などの処理も入る。
0060デフォルトの名無しさん
2009/01/27(火) 11:10:54>行きは、現在の場所を記憶しておく。
>帰りは、行きに記憶しておいた場所に戻る。
>それ以外は、只のジャンプと同等。
どうやって「現在の場所」を記憶しておくかは気にしないのか?
0061デフォルトの名無しさん
2009/01/27(火) 11:16:27別にどうやって記憶してもいいよ。一般的にはスタックを使うだろうけどね。
世の中にはスタックを使わずにレジスタウィンドウだけで済ませる場合もあるし。
0062デフォルトの名無しさん
2009/01/27(火) 13:11:41昔、存在したしね。どこぞのシステム360とか言うマシンだが。
0063デフォルトの名無しさん
2009/01/27(火) 13:33:46マイクロコンピュータ以後のアーキテクチャ。
それ以前のマシンでは、リターンアドレスやレジスタの保存とか、
ローカル変数のワークエリアとかは、ソフトウェアで管理しなきゃ
いけなかった。
0064デフォルトの名無しさん
2009/01/27(火) 16:00:31DECやバロースのマシンも思い出してあげてください。
0065デフォルトの名無しさん
2009/01/27(火) 18:18:56何の論議してるん?
0066デフォルトの名無しさん
2009/01/27(火) 19:31:18>何の論議してる
のか理解してから口を挟んだ方が
恥をかかなくて済みますよ。
0067デフォルトの名無しさん
2009/01/27(火) 19:52:28>別にどうやって記憶してもいいよ。
記憶方法はどうでもいいんだけど、要は関数呼び出しの場合は
呼び出しの履歴を記憶しておくのが重要なわけでしょう。
その点を考慮すると、関数呼び出しと只のジャンプをほとんど同じと言うのは
どうなのかと。
その他ローカル変数やら各種レジスタの処理やら...
と思ったけど、逆に関数呼び出しはgoto文であるという話を貫くのも悪くないかもw
その場合、次スレには「スレッドはgoto文である」とかが見えてきます。
さらに続編で「プロセスはgoto文である」「OSはgoto文である」などもよろしければ...
0068デフォルトの名無しさん
2009/01/28(水) 09:05:28・ファイバーは goto 文である
0069デフォルトの名無しさん
2009/01/28(水) 10:19:17(パラレルアーキテクチャのゼミの先生は違うこと言ってたな)
0070デフォルトの名無しさん
2009/01/28(水) 11:22:00int unko;
unko=3;
これだって一行目から二行目にgotoしてるじゃん
0071デフォルトの名無しさん
2009/01/28(水) 11:32:56おまいは小学生か!
0072デフォルトの名無しさん
2009/01/28(水) 16:25:18不満なら下から上に解釈していく言語でも作ってくれ。
0073デフォルトの名無しさん
2009/01/28(水) 16:37:52逐次処理系言語はポピュラーではありますが
それがすべてではないですよ。
0074デフォルトの名無しさん
2009/01/28(水) 18:07:290075デフォルトの名無しさん
2009/01/29(木) 01:25:35フェッチすると pc が書き換わる。
故にフェッチはgotoである。
0076デフォルトの名無しさん
2009/01/29(木) 03:06:23Aから見ればBを呼び出しているのかもしれないが
第三者のCから見ればBはAにgotoしてるように見えるかもしれない。
Dから見ればAがBにgotoしているのかもしれない。
Bから見ればAがこっちに向かってきてるように見えるかもしれない。
世の中って相対的なんだよね。
絶対的なものは光速だけでしょ。
プログラミングの世界ではまだニュートン力学から抜け出せないの?(笑
0077デフォルトの名無しさん
2009/01/29(木) 03:10:290078デフォルトの名無しさん
2009/01/29(木) 03:15:21初項までgotoで進んで、それからgotoで戻ってくればいいんじゃないのかな。
0079デフォルトの名無しさん
2009/01/29(木) 08:33:10これをgotoにばらすと
main: rin = 5; goto fact; // routに結果
fact: n = rin; if n < 1 then goto L0 else goto L1;
L0: rout = 1; goto L2;
L1: rin = n - 1; goto fact; rout = rout * n;
L2: goto XXX;
それで(1)XXXをどうやって正しい行き先にするの?(2)変数nを
どうやって覚えておくの?自分で全部スタック管理する?
continuation passiong styleに書き直す?
0080デフォルトの名無しさん
2009/01/29(木) 09:40:50つ[末尾再帰]
0081デフォルトの名無しさん
2009/01/29(木) 10:08:19末尾再帰をしらなくて cps という言葉を知ってるというのは何かおかしい
0082デフォルトの名無しさん
2009/01/29(木) 10:42:12大昔から大抵のCPUに機械語(マシン語)レベルで
CALL(サブルーチン呼び出し)命令があります。
しかしハードウェアでスタック・ポインターを持っているとは限らない、
異なる方法で実現している場合もある(有った)と言う事です。
サブルーチン・コールや関数呼び出しをハードウェアの支援なしに
全部ソフトウェア(goto命令等)で実現したとしたら効率悪い上に
アセンブリ語レベルでものすごく読み難くなるでしょう。
008382
2009/01/29(木) 11:15:24機械語に(普通)goto命令なんて有りませんね。
失敬失敬!
0084デフォルトの名無しさん
2009/01/29(木) 11:17:36その人から見ればってことだから。
客観的に見れば、呼ぶも行くも「近づいていってくっつく」
という言葉に置き換えることが出来るよね。
0085デフォルトの名無しさん
2009/01/29(木) 11:28:39「あらゆる再帰呼び出しはすべて末尾再帰に書き直せるんですか?」
と小一時間問いつめたいw。
多重再帰なんかはどうするの?
そんなもの使うなと言うのは無しねw。
0086デフォルトの名無しさん
2009/01/29(木) 11:39:23>「あらゆる再帰呼び出しはすべて末尾再帰に書き直せるんですか?」
末尾再帰の意味を知ってたら、そんな間抜けなことイワンの馬鹿。
0087デフォルトの名無しさん
2009/01/29(木) 11:48:01それで、出来るの?出来ないの?
0088デフォルトの名無しさん
2009/01/29(木) 12:27:22Shiro Kawaiさんの書いている
「なんでも継続」でも読んで良く考えてみてね。
再帰呼び出しをするのはScheme等の
関数型言語だけじゃないよ。
C言語でも普通に行われている。
0089デフォルトの名無しさん
2009/01/29(木) 12:30:32???
なんでそんな当たり前の話を得意げにしてんの???
0090デフォルトの名無しさん
2009/01/29(木) 12:36:52人によっては当たり前の事じゃなさそうだから。
0091デフォルトの名無しさん
2009/01/29(木) 13:12:36>>1 を100回読め
0092デフォルトの名無しさん
2009/01/29(木) 20:27:36つ 継続渡し
0093デフォルトの名無しさん
2009/01/31(土) 13:13:46だけでは済まないということを意味していると思えるけどね。
0094デフォルトの名無しさん
2009/02/01(日) 13:17:24jmp sub
hoge:
0095デフォルトの名無しさん
2009/02/01(日) 17:19:04jump unko
:
:
unko:
move reg1,pc
0096デフォルトの名無しさん
2009/02/01(日) 23:02:09関数は順次を抽象化する意味だと思うのでgotoとは意味が違うとおもう。
0097デフォルトの名無しさん
2009/02/02(月) 05:47:550098デフォルトの名無しさん
2009/02/02(月) 13:28:58サブルーチンとして繰り返し呼び出される機能を切り出してまとめるのは
構造化プログラミングの重要な要素だと思うけどね。
>10やあなたの言う「関数」は純粋関数型で言う「関数」じゃなくて
むしろ副作用に主要な目的がある事が多いC言語などで言う「関数」
の事だよね? つまりはサブルーチン。
私には、むしろ >10がネタ振ってるように思える。
0099デフォルトの名無しさん
2009/02/02(月) 13:56:08てのは構造化以前からあるイディオムだけどな。
0100デフォルトの名無しさん
2009/02/02(月) 14:11:50構造化以前からあったとしても(実際あるけど)「構造化プログラミング」の
重要な要素としてダイクストラが唱導してるんだからそれで良いじゃん。
0101デフォルトの名無しさん
2009/02/02(月) 20:16:14> 「構造化プログラミング」の重要な要素としてダイクストラが唱導してる
ソース
0102デフォルトの名無しさん
2009/02/03(火) 00:29:510103デフォルトの名無しさん
2009/02/03(火) 12:26:200104デフォルトの名無しさん
2009/05/13(水) 09:11:39三つ編み眼鏡っ娘の先生というのが気になってしかたないのですが…
どこかに画像ありますか?
0105デフォルトの名無しさん
2009/05/14(木) 12:49:530106デフォルトの名無しさん
2009/09/09(水) 23:03:25関数の中に関数を定義できるのか?
少なくともCではないな。
0107デフォルトの名無しさん
2009/09/10(木) 02:09:160108デフォルトの名無しさん
2009/09/11(金) 15:50:33頭の暖かい連中が gcc に実装してる。
0109,,・´∀`・,,)っ-○○○
2009/09/11(金) 22:29:21int main(void) {
class Hoge {
void operator () (int n) { /* ほげほげ */}
};
...
}
Cでも配列の中にマシンコード直打ちすればあるいは・・・
0110デフォルトの名無しさん
2009/09/26(土) 21:26:230111111
2009/09/26(土) 23:25:22もう書けないので、新しいスレッドを立ててくださいです。。。
0112デフォルトの名無しさん
2009/09/26(土) 23:59:33そんな狭いスコープの関数で何がうれしいのか俺にはよくわからんが。
0113デフォルトの名無しさん
2009/09/27(日) 09:48:38おかわいさうに
0114デフォルトの名無しさん
2009/09/28(月) 09:13:060115デフォルトの名無しさん
2009/09/28(月) 15:04:42いちいち関数の名前を考えるのがメンドウやろ
0116デフォルトの名無しさん
2009/09/28(月) 15:25:060117デフォルトの名無しさん
2009/09/28(月) 20:24:15俺にはよくわからんが。
0118デフォルトの名無しさん
2009/09/28(月) 23:36:06それを使い捨てするという用途なら有り得るな。
0119デフォルトの名無しさん
2009/09/29(火) 02:20:08使うものだということがわかる。
0120デフォルトの名無しさん
2009/09/29(火) 11:40:42喩えは悪いけど、関数を無名で作りたいってのはforループに一一名前をつけるのが面倒ってのと同じようなレベル?
0121デフォルトの名無しさん
2009/09/29(火) 12:04:010122デフォルトの名無しさん
2009/09/29(火) 19:08:010123デフォルトの名無しさん
2009/09/29(火) 19:38:22例えば長さを返す関数が複数あったとして
len1() {}
len2() {}
len3() {}
len4() {}
みたいな。
0124デフォルトの名無しさん
2009/09/29(火) 20:49:53もっとも、コピペコーディングの温床になる両刃の剣だが
0125デフォルトの名無しさん
2010/12/05(日) 19:23:220126デフォルトの名無しさん
2010/12/05(日) 19:41:440127デフォルトの名無しさん
2010/12/05(日) 21:59:53その考え方だと関数呼び出しはgoto文かもしれないけど
関数呼び出しが終わった後に自動的にもとの場所まで戻ってくれるでしょ
これってgoto文でまたもとのところに戻ってるってことだよね
関数呼び出し1回書くだけでgoto文を2回自動的に呼び出してくれるということだから
親切だと思う
単なるgoto文とは違う
すげえ遅レスだしスレも読んでないけど
0128デフォルトの名無しさん
2010/12/05(日) 22:02:31名前のない関数というと局所関数?
ローカル変数のスコープを小さくできるとい面でメリットがあるんじゃないの
forループ中で変数を宣言できるのと同じメリットがあるのでは?
0129デフォルトの名無しさん
2010/12/16(木) 23:44:39を参照した子関数を書きたいこ
とがあるでしょう。
例えば、qsortを使って、そえじ配列i
がx[i[1]]<=x[i[2]]<=...となるように整列
したいとき、比較関数をどう書けばよいか
を考えると、内部関数の必要性がわかるはず。
0130デフォルトの名無しさん
2010/12/17(金) 01:14:090131デフォルトの名無しさん
2010/12/29(水) 18:21:33これからはcomefrom文を使うべき
0132デフォルトの名無しさん
2010/12/29(水) 23:01:03ふぅ。
0133デフォルトの名無しさん
2010/12/31(金) 01:56:28> goto文なんてもう古い
> これからはcomefrom文を使うべき
恐ろしく古いネタだな
0134デフォルトの名無しさん
2011/01/04(火) 17:48:42for ( ; ; ) {
for ( ; ; ) {
for ( ; ; ) {
for ( ; ; ) {
for ( ; ; ) {
何かの処理
if (何かの条件) break LABEL1;
何かの処理
}
}
}
}
}
0135デフォルトの名無しさん
2011/03/13(日) 20:15:08.260136デフォルトの名無しさん
2011/03/27(日) 23:22:10.07お前が言っているのは、包丁も人を殺せるから作っちゃいかんと同程度。
goto以外の制御構文は、入り口と出口が決まっている。例えば、returnは、
必ず関数の呼び出し元に戻る。continueはループブロックの末尾に落ちる。
gotoはネストを完全に無視して出入り口の概念が無いジャンプを書けてしまう。
goto label1:
label2:
goto label3
label1:
goto: label2
label3:
こんなどっから入ってどこに出るか解らんコードが
散らばってたら読んでられるかっ。
>>126
pointLambda = Line(0,0,10,10);
point[0] = pointLambda(0);
point[1] = pointLambda(1);
point[2] = pointLambda(2);
point[3] = pointLambda(3);
はたしてこれがただの手続きと言えるか?
0137デフォルトの名無しさん
2011/03/28(月) 09:02:52.78ついてけないならプログラマに向いてないだけだから
0138デフォルトの名無しさん
2011/04/29(金) 17:24:11.25で、君は継続をバリバリ使ってるプログラムを日常的に書いてるのかな?
0139デフォルトの名無しさん
2011/05/05(木) 01:13:40.10別に継続だろうが、gotoだろうが、出口がはっきりしてりゃいいんだよ解る?
お前は継続で>>136のようなコードを意図的に書くのかよ。deleteしたポインタを
コンパイルエラーにならないからってさらにdeleteするぐらいアホだな。
0140デフォルトの名無しさん
2011/05/05(木) 18:04:55.37入り口と出口をはっきりしろってのが要点。誰もがgotoを使って入り口と出口がはっきり
したコードを書くのなら別に、breakやreturnじゃなくgotoでもいい。
熟練したプログラマが書いたアセンブリコードだって構造化されてる。
問題とされるのは、入り口と出口がはっきりせず、あるルーチンの中に飛び込んで、
また別のルーチンにとんでいって返ってこない>>136のようなコード。
0141デフォルトの名無しさん
2011/05/05(木) 18:32:58.53プログラムを格納する領域にすら困る時代にはそういうのも実用になることがあったが
今はコードを削るほどメモリに困ることはあまり無いからね
…って、組み込み機器の分野ではどうなんだろう?
今もスパゲティが散見されたりするんだろうか
それともむしろ、止まったら困るから昔から意外ときちんと書いてた?
0142デフォルトの名無しさん
2011/05/05(木) 19:19:49.74「クラス使うな。スパゲッティコードになるだろ!」
っていうレベル低いプログラマに囲まれて欝。
自分が抽象化されたコードを読み解けないのを、「スパゲッティコード」だと
こちらに押し付けてきやがる。
ラムダとか継続以前に継承も多態もわかんねえ奴らはほんと消えて欲しい。
0143デフォルトの名無しさん
2011/05/05(木) 19:24:43.06メソッドの引数追加するはめになったときは特に悲惨。
0144デフォルトの名無しさん
2011/05/05(木) 19:41:49.15やったことありますねJavaで
0145デフォルトの名無しさん
2011/05/06(金) 16:50:31.720146uy
2011/05/17(火) 12:23:44.94ライブラリの継承や、全体設計者の何らかの法則にしたがって継承していくのはあり
Aクラスでも使う、Bクラスでも使う、関数を、
「自分でかいたCクラス」に定義して、AとBに継承とかはスパゲティだと思ってる 読む気を無くす
0147uy
2011/05/17(火) 12:27:25.87自分でかいたクラスを自分でかいたクラスに継承する。なんていう例外的な継承は必要なくなるはず
0148デフォルトの名無しさん
2011/05/18(水) 22:15:25.98「スパゲッティだと思ってる(キリッ」
ってヤツが多いから欝なんだよ…
0149デフォルトの名無しさん
2011/05/19(木) 15:11:14.47書いた本人が自分にわかりやすいように書いただけであり
他人には理解不能。
0150デフォルトの名無しさん
2011/05/23(月) 22:27:00.30http://stat001.ameba.jp/user_images/20110425/05/happy-smile-nanchan/ac/84/j/o0800045011186165095.jpg
0151デフォルトの名無しさん
2011/05/24(火) 22:11:40.94親クラスの増築版として子クラス書くなよバカ。
増築するくらいなら、親に当たるクラスのオブジェクトを内包させて、
Getter,Setterで操作できるようにした方が実装が固定されなくて遥かにまし。
親クラスを利用(参照)しているクラスを子で利用するために書くんだろうが。
0152天使 ◆uL5esZLBSE
2011/07/02(土) 22:02:44.61そんな言語使ってる奴ってどうみてもゴミだと思うんだけど
もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ
ほんっとに自覚のないゴミだな
0153デフォルトの名無しさん
2011/07/02(土) 23:24:19.210154デフォルトの名無しさん
2011/09/15(木) 16:32:52.410155デフォルトの名無しさん
2011/09/15(木) 21:38:15.7320 GOSUB *F
30 END
40 RETURN
100 *F
110 GOSUB *G
120 GOTO *R
200 *G
210 GOSUB *H
220 GOTO *R
300 *H
310 GOTO *R
0156デフォルトの名無しさん
2011/09/30(金) 12:37:08.82# 関数定義部分
func_wrapper:
c = a + b #引数として指定されたa と b を足してcを構築
func:
# ここから関数の本体
# c を利用して複雑な演算を行う
c = ....
return
#関数利用部分その1
a = 1
b = 2
gosub func_wrapper
#関数利用部分その2
c = 10
gosub func
何を言いたいかと言うと、サブルーチンの入り口がfunc と func_wrapperの2つあり、
引数の加工前、加工後のどちらでも共通して同じ関数が利用できるという事。
上記の例の場合、aとbを初期化してfunc_wrapperを呼ぶことができるが、計算過程で
必要なcがすでに完成しているなら、funcを呼んでも良い。という事になる。
これで、出口どころか入口さえ決まっていない関数(サブルーチン)が出来上がるわけだ。
当時は便利だと思ってたんだけどね。
0157デフォルトの名無しさん
2011/09/30(金) 22:24:05.76放射能にやられた?
0158デフォルトの名無しさん
2011/10/01(土) 14:34:29.090159デフォルトの名無しさん
2011/11/22(火) 01:37:35.150160デフォルトの名無しさん
2011/12/04(日) 13:06:07.620161デフォルトの名無しさん
2011/12/04(日) 19:02:43.08それを勘違いして教条的に扱った奴がアホ
■ このスレッドは過去ログ倉庫に格納されています