何ですか?
Ruby!
Hello
NetBSDのカーネル
| -―- | 〃 ヽ .| i ノノノ))) )) | ソースコードが好きなんですか? . i i ( 'l_] l]〈リノ .< ヽヽ > /> \_____ Y/ヽ!ェl〉 /ヽ/ヽ !! l卯 l / // / i ll8| ! / // / . l l「| l , ´-‐ ‐- ヽ /!_」l|_j、 { l ,, } ぅん . / /゙´l"ヽ > ゝ. ‐ ノ 'ーr‐ r r ´ l ! . l l. | | | . | ! | l. | -―- 〃 ヽ i ノノノ))) )) / ̄ ̄ ̄ ̄ ̄ . i i ( 'l_] l]〈リノ < でも、ソースコード書いてるところ見たこと無いです。 ヽヽ > n/> \_____ Y/ヽ!ェl〉 /ヽ/ヽ !! l卯 l / // / i ll8| ! / // / . l l「| l , ´-‐ ‐- ヽ /!_」l|_j、 { l U } …… . / /゙´l"ヽ > ゝ. っ ノ 'ーr‐ r r ´ ⊂ニl ! . l l. | | | . | ! | l. |
7 :
なんでしょうか?lo;んーぼあ# :02/11/17 00:02
新メモリ最適化ツール
凄いでかいhallo worldのソース。 あらゆることが考慮してあるやつ。
11 :
デフォルトの名無しさん :02/11/17 00:07
hello
#include <stdio.h> #include <process.h> #include <string.h> #ifndef NULL #define NULL 0 #endif int main(int ArgumentNum,char *ArgumentsStrings[]) { if (ArgumentNum >= 1){ char *put_err = "引数に意味はありません"; puts(put_err); } if (printf("Hello World !") != strlen("Hello World !")){ puts("システムエラー"); exit(1); } exit(0); }
14 :
デフォルトの名無しさん :02/11/17 00:22
gnu hello だろ。
変数が、全て1文字だった(i,j,kとか)某S氏のソース ある意味感動した。
% ./src/hello -h
GNU hello, THE greeting printing program.
Usage: ./src/hello [OPTION]
-h, --help display this help and exit
-v, --version display version information and exit
-t, --traditional use traditional greeting format
-n, --next-generation use next-generation greeting format
-m, --mail print your mail
Report bugs to <
[email protected] >.
(´-`).。oO(なんで mail 表示なんて機能が。。。)
>>16 読みづらくてかなわんな
俺も1文字変数多用するけど
全部3文字ってソースも見たことあるよ。 ループカウンタもiiiとかになってて面白かったよ。
昔の話やが ; Shift JIS -> JIS ; in/out ax sjis2jis: cmp al,80h adc al,61h jc sj2j_00 sub al,0a2h sj2j_00: rcl ah,1 add ax,1f21h and ah,7fh ret
>>19 >ループカウンタもiii
3文字の意味が無いような…
>>20 文字コード変換すか。
SJIStoNECJIS とかもあったよな。
何やってるのか知らんけど、
他人のソース流用して変換したやつを
そのままテキストVRAM に流したら漢字出て感動した。
template<typename H, typename T> struct Typelist{ typedef H Head; typedef T Tail; }; こんなんだっけ。スゲーと思った。
23 :
デフォルトの名無しさん :02/11/17 11:55
perl -ne 'evel $_;print $@'
perl -ne 'eval $_;print $@;'
$_ と最後の ; はいらないと思われ。
>>20 普通(かどうかわからないけど普段よく見る)JISコードって
エスケープ入ってませんか?
これは漢字判定後の処理って事ですか?
#include <stdio.h> int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};void k(){if(m[p]==0) for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;if(c&&m[v]==t){a+=c;v= p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);}}}char*h="・○●\n";int main(){for(i= 1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0){for(p=9;p<82;++ p)k(),printf("%.2s",&h[m[p]*2]);if(a)for(d=a=s=p=8;a==8;k())t-2?(scanf("%d %d" ,&p,&i),p+=i*9):++p;else if(s)s=0,printf("pass");else break;t=3-t;}return 0;}
main() {printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60;} エキスパートCプログラミングより
string source = "abcdefghijklmnopqrstuvwxyz"; const size_t length = source.length(); for (uint i = 0; i < 20; i++) cout<<source[rand()%length]; こんな感じの乱数文字列生成
最近のパソコンはキーボードやマウスのコードが 色分けされて間違わないようになってて感動した
35 :
デフォルトの名無しさん :02/11/17 16:00
>>33 それはa〜zまでの文字コードが順番になっていない文字セットを使ってる環境なの?
それならよく考えてあると思うけど。
ソースじゃないけど、昔、PC6001mk2のROM内で push AF (A /= 16の処理) call Disp1 pop AF Disp1: and 0Fh (画面にAの下位を16進表示) ret って感じのを見たときはちょっと感動したな。 1byteでも削りたかった頃だから。
5年前に書いた自分のソースを見たとき。 よく動いているなー、と感動した。
C言語を256倍使いこなす本に載っていた、「一番汎用性のあるプログラム」。 #include <con>
マジレス。 EDSACのIPL。
40 :
デフォルトの名無しさん :02/11/17 23:18
>>39 あ、そういう話聞きたい。
なんとなくでいいから理由教えて。
難しいから?trickyだから?
それとも短いとかエレガントだからとか?
41 :
デフォルトの名無しさん :02/11/17 23:21
はじめて自分でつくったクイックソートは感動した。 何時間も考えて、なんどもソーティングしなおして やっと動いたときは、童貞捨てたときくらい男になれた
脳内じゃなくて現実でも早く童貞捨てようね
>>37 俺は1ヶ月前書いたのにすらそう感じてるよ。
プレステではじめて三角ポリゴンがでたとき ああ俺ハッカーだよ今、母ちゃんゴメンな って思った
46 :
デフォルトの名無しさん :02/11/18 14:21
オリバーが一番感動したかな? そのバーコードが今でも忘れられん。
3ヶ月前……って夏休みかよっ!!
49 :
デフォルトの名無しさん :02/11/18 15:34
; HL = H x E LD D,0 LD L,D LD B,8 LOOP: ADD HL,HL JR NC,JMP ADD HL,DE JMP: DJNZ LOOP RET 掛け算命令すらなかったあの頃。
>26 というか、ISO-2022-JPの事か?
while(*s++ = *d++) ;
IPLをダンプするとASCIIでテキストが書かれている。 アセンブルすると、実は自己暗号化を含む複雑なコピープロテクトコードであった。 って話をどっかで聞いたことある。BITだったかなあ。 実物を見たら感動したと思う。
char sakujo_sinaide[5000]; どっからも参照されてないのに、 これを削除して実行してみたらメモリエラー。
char itohc(int i) { return "0123456789abcdef"[i]; }
どうせその前あたりのバッファのオーバフローだろ。
>>60 for (p = rootp; p->next; p = p->next);
似たのにこんなのもある
>>13 puts() の戻り値は、見ないのか ?
FORTH 最 高 !!
跼
>>53 こういうやつでつか?
char a[5];
char b; // 削除すると何故かエラー
for (i = 0; i <= 5; i++) {
:
:
}
感動というか、友達がwindowアプリ作ろうとしてて、なにを思ったか フレームを継承してそれにメインつけて、そのなかにフレームを生成して 使ってたな・・・
int main( void ) { 0(0); return 0; } VC++限定だけど。 どこかでこれが使用通りの動作だと読んだ時には驚いたものだ。。。 (どこで読んだか忘れた。知ってる人いたらおせーて。)
>>68 で、「これが使用通り動作」ってなんなんだよ。
そんな変なプログラムに驚愕してる暇あるなら、国語の勉強からした方がいいぞ。
>>69 そういう寒いツッコミする時は、せめて引用くらい忠実にしたほうがいいよ。
>>40 ああ、このスレまだあったのね。レスを見落としてたわ。ごめそ。
>なんとなくでいいから理由教えて。
>難しいから?trickyだから?
>それとも短いとかエレガントだからとか?
難しくて、trickeyで、短くて、エレガントだから。
いやまぢで。
http://www.dcs.warwick.ac.uk/~edsac/ このへんとかにないかな...仕様書はあるな。
まだ興味があるなら、IPLのコードうぷするよ。
>>72 ぅおー!こんなものが存在していなんてー!
ちょっとアツいです。情報さんくす。
調子にのって、ENIAC Emuがあれば、サイコーですねー!
でもENIACってWired Logic・・・(藁
74 :
デフォルトの名無しさん :02/12/14 22:50
>>1 「感動」の定義は?
「あまりのヒドさにあきれ果てて言葉が出ない」といったネガティヴな感情も
「感動」のカテゴリに含まれるのでせうか? w
>>74 そんなものを感動したと言うかどうかを常識的に考えればわかるだろ。
76 :
デフォルトの名無しさん :02/12/15 00:41
わかんねぇだろ。 現にネタしかでてねぇだろ。
>>67 そいつJavaプログラマと思われ、、、
GUIアプリだとメインフレームにmainつけるのはありがち。
>>52 6809はASCIIの大文字のほとんどが1バイト命令だったから
大文字限定でよければ結構簡単だあった。
小文字ありだとむすかしかったがそれをやったゲームは実在したはず。
8bitパソコン全盛のころはけっこう凝ったプロテクトがいっぱいあった。
OSないから互換性なんかハナから考えることがなかったし。
そのかわりサードパーティのFDドライブだと動かなかったり、、、
大昔BASICで (1=1)が-1を返すと知ったとき。
やっぱtrueは-1だよなぁ。 falseが0として0のnotは-1だもんなぁ。
82 :
デフォルトの名無しさん :02/12/15 05:23
Pascal(というかDelphi)で (1=1) が True を返すと知った時。
昔の自分のソースを見ると逆に感心する。 「俺って昔こんな凄いコード書いてたんだ」と。 アルジャーノン程じゃないけど、年とともに俺の脳は退化している。 そろそろ足を洗う時が来たようだ。
85 :
名無し@沢村 :02/12/23 23:37
cout<<"きんたまめめじょぼぼじごんす!!"<<endl;
>>81 0のnot(ビット反転させたもの)が
-1になるかどうかは激しく環境に依存します
>>84 気持ちはわからないでもないけど、落ち込んだり、卑下したりしないでくださいな。
脳の退化は工夫次第で補えますので。
IPの記録はまじでやめてほしい
|ヘ:::ト;::::::::::::::::::ヽ | ヽ;T'、:i'、:::::::::::::゙:, | .r=,ヽ';::::::::::::::! | l:::::::::i. i!::::::::::::::! なんで、わたしなん? |. ':O::ノ '|:::::::::::::::i | J |:::::::::::::::', |O J ,.!:::::::::::::::::! |,_ _,..イ:::::::::::::::::::::| |;;r!~ i`ヽ:::::::::i;::::ハ::! |ヽl-// !::/リ !:i リ |,.ィ'" ''"゙! レ゙ '"`'゙}.l.l _,. -‐'' i -‐''|''T゙! i |. | | i
自分と違う意見に強引なレッテル張りしてるとマジで詭弁厨が来ますよ。。。w>コピペ君
gnu hello だろ。
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
94 :
デフォルトの名無しさん :03/01/09 17:33
これ <body onKeyDown=K=event.keyCode><script>X=[Z=[B=A=12]];h=e=K=t=P=0;function Y() {C=[d=K-38];c=0;for(i=4;i--*K;K-13?c+=!Z[h+p+d]:c-=!Z[h+(C[i]=p*A-Math.round(p/ A)*145)])p=B[i];!t|c+4?c-4?0:h+=d:B=C;for(f=K=i=0;i<4;f+=Z[A+p])X[p=h+B[i++]]=1 if(e=!e){if(f|B){for(l=228;i--;)Z[h+B[i]]=k=1;for(B=[[-7,-20,6,17,-9,3,6][t=++t %7]-4,0,1,t-6?-A:-1];l--;h=5)if(l%A)l-=l%A*!Z[l];else for(P+=k++,j=l+=A;--j>A;) Z[j]=Z[j-A]}h+=A}for(i=S="";i<240;X[i]=Z[i]|=++i%A<2|i>228)i%A?0:S+="<br>",S+=X [i]?"■":"_";document.body.innerHTML=S+P;Z[5]||setTimeout(Y,99-P)}Y()</script>
どっかの奴がほぼすべての板のほとんどのスレにこんなのばらまいてます↓
102 名前:IP記録実験 投稿日:03/01/08 20:13 ID:nJ34KBUL []
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
>内容証明が届いてから訴状が届くまでの間に消したとしても それだと、内容証明が届く前に削除しなきゃいけないことにならないかい?(^_^;) 内容証明が届いて、すぐに削除したら、賠償はしなくていい気が。 んだったら、IP取ってない板で、自分で自分を中傷して、 すぐに裁判すれば賠償金が取れるってことになっちゃう、、
>内容証明が届いてから訴状が届くまでの間に消したとしても それだと、内容証明が届く前に削除しなきゃいけないことにならないかい?(^_^;) 内容証明が届いて、すぐに削除したら、賠償はしなくていい気が。 んだったら、IP取ってない板で、自分で自分を中傷して、 すぐに裁判すれば賠償金が取れるってことになっちゃう、、
物騒な世の中に・・・
とりあえずこのスレが1000まで行ったら旅立とう、、、 普通の話は出来ないししたくもないからな、、、
!Kubotar Ver2.1.0 (ソース付き)
あけましておめでとっすー。今年もよろしくー。>ALL
/⌒ヽ / `_ゝ´) IP次郎です。 フォー | / | /| | // | | U .U
竹下景子だろ?
うんこちんこまんこ うんこちんこまんこ
フシアナをハンドルにしてるハン板の顰蹙コテがいて、 これが2CHにVirus Scriptやらブラクラやらを貼ったことを自慢した揚げ句、 別のコテハンがフシアナして挑発したらポートスキャンを掛け倒したのです。 410 名前: 投稿日:03/01/10 00:08 ID:h/ETIb2F >401 名前:三毛 ◆MowPntKTsQ :03/01/10 00:04 ID:McoZGeeY >ウィルススクリプト貼ってケツまくるような野郎が、「公序良俗」とは笑止の限り。 これが事実だったらどーすんの?(whhh 415 名前:三毛 ◆MowPntKTsQ 投稿日:03/01/10 00:15 ID:McoZGeeY アサピーは、で >あれは、そもそもスクリプトじゃないし単にノートンが糞だって言うだけの話。 などと言い訳をしておりまつ。 ではどーいう意図でああいうものを貼ったのか、内容をご説明頂きたいものですな。 417 名前:g056137.ppp.asahi-net.or.jp 投稿日:03/01/10 00:16 ID:6BZCtvnU そんなに怖かった? で、相手にログとられて晒し上げの上、朝になったらプロバイダにも抗議されてしまう、という。
いや明け方に(略
これは激しくマジレスなんだが、そういう極端な例を除いて、 なお匿名掲示板の特性が生かされる場面ってのが漏れには全然想像がつかない。
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
こういう大事なことを一人で勝手に決めるのってどうよ。 みんなで協議して決めるのが普通じゃないの!
やっぱり快速タンはNGワードなど登録せずにぼくのおうえんを励みにしてくれているのですね。
こういう連中も趣味とか買い物とかで便利に使っているかも? 慣れて専門領域に活用、はありうる。
でも、特定する方法が無いね。
356 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 20:23 ID:jWxHxvti 質の低い書きこみを減らすのが趣旨です。 365 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 20:25 ID:jWxHxvti 第3者が見て情報価値の低い書きこみ>「質の低い」 374 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 20:26 ID:jWxHxvti >書き込みの質があがるんでつか 質の低い書きこみが減って、結果的に質の平均があがるのではないかと、、、 391 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 20:28 ID:jWxHxvti 裁判所or警察経由っすね>アクセスログが渡る場合 後は、羽田タートルのスレッドの中での粘着さん
おう、おめーら。 まあな、今年は俺の年なわけだがどうよ? っていうかなぁ、俺の毛毟り取るのはまあ、許してやるよ。 メシくわせてもらってるからな。 でもな、紙とか食わせるのはマジで勘弁してくれよ。 俺ァな、山羊じゃねぇんだよ。 あんなひつじの出来そこないと一緒にしないでくれよ。 だって山羊だぜ、山羊。 俺なんか十二星座ってだけじゃなくて干支でもあるんだよな。 だけど、山羊見ろよ、山羊。 黄金聖闘士(ゴールドセイント)止まりだぜ? あんなのと一緒にしてもらいたかぁーねーよな。 っていうか、俺を殺せるもんならやってみろよ。 俺はいつどこでも誰の挑戦でも受けるぞ?
2chが2chでは無くなるときが来ましたね。 遊び方の解らない馬鹿が増えたから、しかたないのかもしれません。 もう転載しませんので、以後は該当のスレ追っかけてください 27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc SETTING.TXT管轄でないということは全鯖導入を視野に、か? 38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l 鋭いです。 73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l >ところで、IPが抜かれて何か今までと変わることってあるのでしょうか? ・今までより、サーバが重くなる。 ・裁判所や警察からの照会があった場合にはIPを提出することがある。 こんなところでしょうか。
ここで3人くらいが「大丈夫だよ」と言ったら、それを信用して そういう書き込みを続けるんですか? まあご自由にとしか言いようがありませんね。 どうせなら「授業料」を支払うことになる限界がどこにあるか見つけてください。
さ〜よな〜ら、大好きな2ちゃん〜♪
誤爆した悪い
2002年2ちゃんねるアニメランキング1位のアニメに・・・・ モナーが出演決定!!!!!!!!!!!!!!!!!!!!! <<放送時間>> 1/12 大阪 テレビ大阪 (日)9:30〜10:00 東京 テレビ東京 (日)9:30〜10:00 名古屋 テレビ愛知 (日)9:30〜10:00 福岡 TVQ九州放送 (日)9:30〜10:00 札幌 テレビ北海道 (日)9:30〜10:00 岡山・高松 テレビせとうち (日)9:30〜10:00
管理者のハードル・・・アメリカの格言で「人は金持ちになると共和党員になる」 2ちゃん型掲示板を運営していけるだけの資金・人材を持つ金持ちは 大企業、国、地方公共団体に進んで敵対し、所謂「基本的人権」を踏みにじる リスクを背負ってまで運営するだけの根性があるでしょうか? もし、そういう根性があるとするならば、何らかの明確な目的がある集団、 「ネット総会屋」「ネット政治屋」的な人々くらいでしょう。
皇太子様のAAが好きだから。
はい。トリップやめました。。(オレも で間違えた・・・) # ちと煽り過ぎたかなとも反省。 で、質問。 今後起こりうる裁判と切り分ける部分って具体的にはどのヘンなのでしょうか?
4ndってたぶんネタじゃなくて素の馬鹿だと思う
(^^)
(^^)
どうせその前あたりのバッファのオーバフローだろ。
上司の書いたスパゲティー。 仕様書通り動いたのには、呆れるやら驚くやら… 当然1週間後には、書いた本人にも読めなくなっていたが。
私は自分の書いたコードが翌々日くらいには読めなくなってますが何か
131 :
デフォルトの名無しさん :03/02/11 16:25
よく、仕様書を元にプログラムを作る云々...というが、 オレの上司は仕様書もろくに書けないぞ。誤字脱字は多いし、 論理的な文章でなく、何がなんだか全然わかんネー。 しょうがなく、仕様書をデバッグするわけさ。 ---- コーディングしてな。
132 :
デフォルトの名無しさん :03/03/01 21:41
久しぶりに彼女のディスクを覗いてみた。 JIS → SJIS 文字コード変換プログラムを1文字1文字 BASIC の IF 〜 THEN で 書いたプログラムがついに完成していた。1つのファイルでは行番号が足りず、 メインプログラムと3つのファイルでプログラムを構成してあり、必要に応じて LOAD する仕組みだ。 IF しか教えなかった俺も悪いとは思うが、こんなプログラムを作った彼女は すごいと思う。本気で好きになった。
板違いだろ
>>132 すげーな、根性は。
そういう性格ならプログラマ以外のほうが向いてるな、その彼女。
プログラマの適性の第一は 怠け者であること。
第二は、怠ける為に勤勉であること。真性勤勉な人向きの仕事じゃ
ないよな。
135 :
デフォルトの名無しさん :03/03/01 22:19
>>132 けっこう単純作業の方が簡単に進むらしい。
初心者チームで作ったプログラムはそんなのが多かった。
なおしたい!と思うが、
しかも動いているから手が出せない、というか手を出したらいけないよなぁ。。。
各タブを3文字の列>、バックスペース、-で書き換えて→と印字し、 また各バックスペースを同様な文字列で←に書き換えるプログラムを 書け。こうすれば、タブとバックスペースは目で見えるようになる。
>>136 タブを -> の様に置き換えるってこと?
つかバックスペースって何?
プログラミング言語Cの演習1-8です。
バックスペースを<-二変換するときはどうすればいいと思いますか?
あー、\t\b\bを作りたいのね。
死ね死ね死ね死ね・・・の連打
某社製cursesの表示コスト計算関数
AND 0FH ;まァ一応 CP 0AH CCF ADC A,30H ;A + '0' DAA Aレジスタ下位4ビットの値を表示用のキャラクタに変換するコード。 BCD補正を利用して分岐なしに変換を実現している。 アルファベット部分は大文字に限定されてしまうけど。 MSX-DOSの解説本のサンプルプログラムでさりげなく使われていた。 本題はもちろんDOSの操作に関するものだったと思うが、本題よりも こっちに感心した。 その後の漏れのプログラムに度々使用されたことは言うまでもあるまい。
漏れは3項演算子をさりげなく自然に使ってるソースにであうといつも感心する。
147 :
デフォルトの名無しさん :03/03/11 11:47
厨な質問でもうしわけないのですが、みなさんがソースコード読解に 利用してるツールとかってどんなのがありますか? できればいろんなプラットフォームのが知りたいのですが。
もしVerilogに3項演算子が無かったら死ぬ
感謝感激。有難き幸せ。
お前ら何でHaskellのコードが出てこねぇのよ? たった2行のquicksort quicksort [] = [] quicksort (x:xs) = quicksort[y | y <- xs, y < x] ++ [x] ++ quicksort[y | y <- xs, y >= x]
152 :
デフォルトの名無しさん :03/03/16 00:12
文字コード変換プログラムは初心者が作ったとはいえ、もし変換ミスがあれば 大問題だ。仕事によっては役員の責任さえ問われかねない。 そこで例によってコソーリディスクを覗いて全文字について変換結果を出力し、 バグがないか調べた。 案の定、5箇所にミスが見つかったので直しておいた。タイムスタンプも ちゃんと元に戻してやった。 ひと仕事終えて親ディレクトリを見ると、そこには "Unicord" というディレ クトリがあった。 一抹の不安は的中した。 なんと、今度は Unicode 版を作っているではないか!そう言えば先日、彼女は 中島靖の本をまじまじと読んでいた。まだ作り始めたばかりのようだ。 そんな彼女を温かく見守りたい。
>>152 おまえが上司なのか同僚なのかしらんが、どちらとしても失格。
156 :
デフォルトの名無しさん :03/03/16 03:33
久しぶりの良スレハケーン
ユニコードのスペルくらいはちゃんと教えてやれよ。
158 :
デフォルトの名無しさん :03/03/16 03:37
yunikodo
夕丹子・小戸
160 :
デフォルトの名無しさん :03/03/16 04:58
いままで「うにコード」と読んでいた
161 :
デフォルトの名無しさん :03/03/16 06:55
久しぶりの良スレハケーン
162 :
デフォルトの名無しさん :03/03/16 08:55
フランスで食った、スパゲッティのソースは、うまくて感動したな。
未だにsourceとsauceの違いが分からん奴がいるのか?
165 :
デフォルトの名無しさん :03/03/16 10:37
>>164 シャレって、どこで食える。
どんなソース?
166 :
デフォルトの名無しさん :03/03/16 10:39
167 :
デフォルトの名無しさん :03/03/16 22:28
int compute( int num1, char exp, int num2 ) { switch( exp ) { case '+': return ( num1 + num2 ); case '-': return ( num1 + num2 ); case '*': return ( num1 + num2 ); case '/': return ( num1 + num2 ); default: return -1; } return -1; }
↑まちがい int compute( int num1, char exp, int num2 ) { switch( exp ) { case '+': return ( num1 + num2 ); case '-': return ( num1 - num2 ); case '*': return ( num1 * num2 ); case '/': return ( num1 / num2 ); default: return -1; } return -1; }
VBの入門書(複数)でそういうの見たことありますよ。
まぁ、なんて書籍かって聞かれたら忘れたって答えますが(w
171 :
デフォルトの名無しさん :03/03/17 00:07
STL。 ひたすらあのコードを追っていった事があるが 発狂しそうになったよ。
>>168 int answer = compute(1, '/', 0);
>168 エラーコード -1 でいいのか?
177 :
デフォルトの名無しさん :03/03/27 05:39
shl eax, 7 lea eax, [eax * 4 + eax] eax を 640倍
,>,>,>,>,>,>,>,>,<<+++<<<<<<.>.>.>.>.>.>.>.>. brainfuck brainfxck
スタックポインタ使ってメモリフィルしてたのはちょっとだけ感動した それもループ展開。
180 :
デフォルトの名無しさん :03/03/27 10:55
winユーザだったが、ドライブにあるmp3ファイルを全部検索してプレイリスト化するバッチファイルを作った香具師がいて、 さぞかし面倒なコードが並んでるかと思って見せてもらったら、 dir /b /s /o:n *.mp3 > index.m3u この1行だけだった。まじ感動した。
181 :
デフォルトの名無しさん :03/03/27 11:04
>>179 メモリ操作が一番速いのは昔っから sp操作ですよ。
182 :
デフォルトの名無しさん :03/03/27 19:03
>>167-168 誰かeVal関数の実装方法を教えてください。
(Case文の巣窟??)
183 :
デフォルトの名無しさん :03/03/27 21:14
素朴な実装では関数ポインタの巣窟かと。
K&Rの付録Aにあるアレを、まんま関数化してくだけ。 // アレ additive_expression: multiplicative_expression additive_expression + multiplicative_expression additive_expression - multiplicative_expression ↓ // 漏れが昔書いた腐れソースの概要 ? additive_expression( ? ) { multiplicative_expression( ? ) for( ; ; ) { // '+' か '-' かで処理切り分け(それ以外はループ終了) // どちらにせよ multiplicative_expression をコールして // 加減演算するだけ。 } return // 計算結果 }
>>177 解説きぼんぬ。x86は詳しくないので
eax <<= 7;
eax = eax * 4 + eax;
をやってるようにしか見えん。
>>185 eax = (eax<<7)*4 + (eax<<7)
= (eax*128)*4 + eax*128
= eax*512 + eax*128
= eax*640
こんなん中学レベルだぞ?
>>185 x86 に限ったことじゃないが、基本的に掛け算は遅い
(割り算はもっと遅いが)。
そこで、2の倍数を掛けるのであればシフトを、
3、5、9を掛けるのであれば lea を使うと
mul 使うより速くなる。
lea をこういう使い方するのにはちょっと感動した。
>>188 基本だろうと、感動したのじゃ。
xor eax, eax だって初めは感動したのじゃ。
まあまあ、マタタタターリしれ。 各人がそれぞれに感動したコードをさらせばいいんであって、 他人の感動に野暮なツッコミ入れてたら、単にスレ荒れるだけじゃん。
スマソ。
>>186 おおそうか、eaxが<<7されてるのをすっぽり失念していたよw
ありがとう。
>>194 ちょっとトリッキー臭いところがなかなか。
漏れなら単純に
find -name \*.mp3 | sort > index.m3u
としていそうだが、dirとは盲点だったな。
196 :
デフォルトの名無しさん :03/04/02 13:17
>>180 >>194-195 そのバッチファイルをジョークソフトとしてvectorあたりに登録できないかなw
「ドライブのMP3を残らず検索して…」みたいな一見すごい機能を書き連ねるのもおもしろいかもw
誰か、VBやDelphiで洗練されて美しいコードを見た人はいませんか・・・?
>>198 DOS時代のdirには/bも/sも/oもありませんでしたが、何か?
漏れは小学生の時にBASICを初めて暫くして、配列を知った時すげー感動したよ(w
>>198 Unix と DOS をごっちゃにしている
>>195 はおいといて、
>>200 が言う通り、大昔から DOS やってた人間は逆に思いつかないかも。
サブディレクトリを含んだリストを作るために、xdir とかの外部コマンドがあったりしたし...。
>>202 そう言う意味なら、俺は「ローカル変数を知った時」だ。
俺はgosubが無くてもサブルーチンが書けると知ったときだな。
>>207 今までに「見た」ソースコードにならないので却下。
…なんて事は言わないのでご安心を。
IF … THEN IF … THEN … ELSE … END END 一番ってわけじゃないけど。 ちなみにキーワードが大文字ってんじゃないよ。
まさか #define IF if( #define THEN ){ #define ELSE }else{ #define END } などというくだらんオチではあるまいな?
>>208 座布団一枚!
>>209 FORTRAN にブロック IF 文が導入された時のことだと見た。
>>213 FORTRANのブロックIFの終端はEND IFじゃないか?
しもた。その通り。
Pascal、Cの後で、Modula-2を勉強し始めた時のことです。 Pascalで初心者が必ず引っかかるといわれるIFのネストの問題が発生しないこと、 冗長性が少なくて複数の人が書いてもほぼ同じ書き方になることなど そこまで考えて設計されているということに驚きました。 Modula-2自体は大文字が慣れなかったのと、文字列が扱いにくかったんで、 文法を一通り勉強した後、ほとんど使ってなかったりします。
>>216 ああそういうことか、とりあえず同意。
確かに Pascal やってると、begin 〜 end が沢山でちょっとうんざりする。
文法的に簡単にするためではあるけど、もう少し人間よりにして欲しかった。
まあ Modula はその反省があるんだろうね。
C でも...
if(a == 0)
b = 0;
c = 0;
とやっちゃって泣いてる奴はいっぱいいるんだから、if/while/for なんかの後は、{} を必須にするとかすべきだと本気で思う。
(今はツールで確認するようにしてるけどね。)
宗教戦争になりそうなネタだから、これはこの辺で。
(^^)
∧_∧ ( ^^ )< ぬるぽ(^^)
>>217 昔は { } 付けなかったけど、それで泣いた事無いけどなぁ。
でも、今は一応付けるようにしてる。保険で。
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
222 :
デフォルトの名無しさん :03/06/06 22:39
i++ + ++i
223 :
デフォルトの名無しさん :03/06/06 23:38
BASICで論理演算を利用してカーソルキーによる移動を やる方法を見たときかな。
if(a == 0) b = 0; c = 0; アホだろ。
b=(a==0)?0; c=(a==0)?0; でつか?
げ!!まじ?
三項演算子でしょ?項が2つしかないよ。 b=(a==0)?0:b; c=(a==0)?0:c; b=a?b:0; c=a?c:0;
使うのは反則技でつか?
あげてみよう
232 :
デフォルトの名無しさん :03/06/07 00:09
int i,ii,iiii,iiiii,iiiiii = 0; for(i=0;i<hoge;i++){ //処理 for(ii=0;ii<hoge2;ii++){ //処理 for(iii=0;iii<hoge3;iii++){ //処理 for(iiii=0;iiii<hoge4;iiii++){ //処理 for(iiiii=0;iiiii<hoge5;iiiii++){ //処理 for(iiiiii=0;iiiiii<hoge6;iiiiii++){ //DBのコネクションを取得してるっぽい処理 } } } } } } 元気に稼動中。
>>227 if(a == 0){
b = 0;
}
c = 0;
って事なのでエラーにはならんだろ。
234 :
デフォルトの名無しさん :03/06/07 00:27
235 :
デフォルトの名無しさん :03/06/07 01:25
iiii, iiiiiはiv, vにしてもらいたい。
238 :
名無し@沢村 :03/06/07 09:01
printf("きんたま\n"); printf("せんずり\n"); printf("おまんこ\n");
239 :
無料動画直リン :03/06/07 09:13
>>232 定番のアンチパターン?
確か、藤原さんの本にも書いてあったような・・・?
241 :
デフォルトの名無しさん :03/06/07 10:01
一番感動って訳じゃないけど、 int err = 0 do{ if( false == func()) { err = 1; break; } if( false == func2()) { err = 2;break;} ... }while(0); if(err){ /* error */ puts(ERR_STRING_TBL[err]); ...; } Cで do{}while(0); と break; で、エラーを抜け出してるのを見たとき。
>>241 俺はgotoを使うべきだと思うけどね。
アンチgoto原理主義者が無理やり考え出した、不自然な
プログラミングだな。
>>242 gotoは使わないでくらさい。
エラー出たらreturnで返せやゴルァ!
>>242 アンチgoto原理主義者などいない。
1 FORTRANなど過去のしがらみでGOTOをしょうがなく使っている場合。→原理主義ではない
2 gotoを排除する言語設計者。 →不要なものを入れないだけなので原理主義ではない。
3
>>241 のような例。→単なるヘボ
241は判定で定数を左に持ってくるって時点でヘボっぽいけどな。
goto使ってるだけで文句言われることがあるんだよ
ふざけんな!! 後藤を全員首にしなきゃいけなくなるじゃん!!!
>>245-247 うえ、
気になる
なんで、左だと駄目なんだ?
=にしてたとき、コンパイラのエラー出るから
たまに、助かってるぞ。
>>250 それが馬鹿だということじゃないの。
FAQとかにもそんなことするよりlintを使えと書いてあるし。
うお、 lint 知らなかった。 でもさ、導入してまで、役立つの?これ?
253 :
名無し@沢村 :03/06/07 12:09
printf("きんたま\n"); printf("せんずり\n"); printf("おまんこ\n");
254 :
デフォルトの名無しさん :03/06/07 12:15
生まれて一番感動したのは、MSの某OSのソース。 clc iret となっていた。 思わず、しねと叫んでしまったよ。
255 :
デフォルトの名無しさん :03/06/07 12:16
今までに見たソースコードで一番感動したのは そんなもんない。 以上。
見た瞬間スゲエと思っても そのうちそれは当たり前なんだと考えるようになってしまう
>>250 そんな読みにくい書き方しなくてもコンパイラの警告で簡単に見つけられるだろ。
つかlintとか警告とか以前に、そんなテクニックを使わなければならないほど、
ひんぱんに=と==を間違えるのか?
他の人にレビューしてもらえば一発だねぇ
trueやfalseと比較するなよ、という突っ込みは禁止ですか
>>259 このスレは、糞コードを晒すスレじゃなく「感動したコード」を晒すスレのはずだからなぁ...。
>>257 250じゃないけど、たまにDelphiのコード書いたあとにCのコードを書くと、
間違えることがある(;´Д`)
(Pascalは比較が=だから)
でも、コンパイラの警告というけどさ、世の中にはそんな警告をださない
ヘボなコンパイラがたくさんあるんだよヽ(`Д´)ノウワァァァァン
H立のコンパイラは、プロトタイプ宣言し忘れてると、引数の数が間違って
いても警告出さないぞ。
>>261 C/C++ でも pragma を使ってヘッダファイル中で off されている事とかもあるしね、
雑多な環境を使ったことがある人間ならワーニングに頼るアホはおらんし
ましてや lint なぞいつの時代のやり方だよって感じだね
雑多な環境だからこそlintに頼るんじゃないのか?
264 :
名無し@沢村 :03/06/08 23:34
sprintf("ある晩、二人の男が風呂に入った。 一人がもう一人のちんぽを見た。 そいつのちんぽはドス黒かった。使い古した後がうかがえた。 「おまえ、ずいぶん女を泣かせただろ?」 「いや、おれはまだ童貞だ」 そいつのちんぽはせんずりで使い古したのだった。 ");
265 :
デフォルトの名無しさん :03/06/08 23:59
main(){} 何もしないプログラム。警告は出るが2行で完成。
266 :
デフォルトの名無しさん :03/06/09 00:02
一行じゃねーか
267 :
デフォルトの名無しさん :03/06/09 00:08
これから書くソース。
>>262 そういう「可能性」を言い出したらきりがねーって。
>>261 > H立のコンパイラは、プロトタイプ宣言し忘れてると、引数の数が間違って
> いても警告出さないぞ。
それは正しい動作。
大昔PC6001持ってる友人が独逸語BASICを作るといって、 10 line input a$ 20 if a$="liste" then list ... みたいなソースを書いたときは目から鱗がおちた。 別な友人がMZ700でlispを作っていたときも すげぇなと思った。 俺はプログラムを本業にした。そんなにスマートには できなかったけど、いろんなものを吸収して吐き出すことで 生計をたててる。いいソースとの出会いって大切だと思った。
>>262 変なコーディングテクニックに走らないで、警告が出ないように
素直に丁寧にコードを書くのが正解。
>262 こいつ、makeも使わないのかな。いつの時代のやり方だっつって。
関数ポインタのテーブルで処理を振り分けるやり方を知った時は、もう何でもできるような気がした。
274 :
名無し@沢村 :03/06/12 10:28
>>273 ぎゃはははははーーーーーーーーーーっ!!!!
わ、笑いが止まらんっ!!!
>274 なつかしいな 俺もそれを知ったときにはそんな気分だったね。 次はコールバックを登録することを覚えた時かな
>>275 で、つぎがポリモルフィズムを知った時だな。
再帰テンプレートとか。
278 :
どこぞのPM :03/06/15 20:27
やたらとgotoを使いたがるやついるんだよな。 プログラミングの基本事項である「処理の流れ」を全く無視した 制御文を使っていて恥ずかしくないのか? 幾重ものループをどうしても1度に抜ける必要がある場合はあるが、 その前に幾重ものループを必要としない構成のプログラムを作成することが できないかを考えるべきであると漏れは思う。
279 :
デフォルトの名無しさん :03/06/15 20:35
>>276 まあ、現実問題、そこまで出来れば理屈上は「なんでも」
できるんだけどな。良い設計さえできれば。
>>278 そんなあたりまえのこと力説しなくても…。
>>270 N60BASICにlineなんて構文はなかった気がする。
あと、どっちにしてもドイツ語でリスト出すために、
一回"run"しなきゃいけないってのがなんだかね(w
>>273 この間昔作ったポケベルに乗せてた自分のプログラムのソース見たら
そんな感じで組んであった。
$_ と最後の ; はいらないと思われ。
>>265 C++を初心者に講義する時、参考にさせてもらった。
アレ?なにか使い方間違っているような…
285 :
デフォルトの名無しさん :03/07/13 14:10
istream& operator>>(istream& s, complex& c) /* complexの入力形式("f"は浮動小数点数を表す) f (f) (f,f) */ { double re = 0, im = 0; char c = 0; s >> c; if (c == '(') { s >> re >> c; if (c == ',') s >> im >> c; if (c != ')') s.clear(ios_base::badbit); } else { s.putback(c); s >> re; } if (s) a = complex(re, im); return s; } プログラミング言語C++第3版[日本語版]21.3.5 ユーザー定義型の出力 より。 地味ではあるが、こういうコードが書ける様になりたいと思うよ。
さりげなく例外安全なのな
287 :
名無しさん@お腹いっぱい。 :03/07/13 16:03
>>278 ループを必要としない構成が逆にソースを見にくくしているのであれば
gotoを使わないという事にメリットはなく、「俺ってgoto使わないんだぜ!!」
っつー自己満足に過ぎない。
上で誰かが書いてたが、数年に一度、知恵熱出るほど感動することあるよな。 最近ではC#。ワープロもどきの文書クラスをインデクサとプロパティ使って、 doc[page][line][word].Text = "Hello"; と書けたときは数年ぶりに感動した。元コード(MFC)はこんなのな: doc->GetPage(page)->GetLine(line)->GetWord(word)->SetText("Hello"); (後で考えればC++でも[]演算子は使えるんだが)
289 :
デフォルトの名無しさん :03/07/13 18:12
やっぱりこれだろ #include<studio.h>//←注目 これ見ると、いつも笑うよ。
本当にそれで感動したのか? 実はそういうヘッダが実際にあって、その中が凄いとか? 中で#include <stdio.h>してたりしてな。
>#include<studio.h>//←注目 >これ見ると、いつも笑うよ。 「『いつも』笑う」の意味を述べよ?w
#include <stdio.h> int main(){ while(1){ printf("感動した 。・゚゚ '゜(*/□\*) '゜゚゚・。 ウワァーン!!\n"); } return 0; }
>>292 がインクルードしている stdio.h の一部
#define while(expr) while(0)
294 :
デフォルトの名無しさん :03/07/14 00:33
#define DEFAULT_INCLUDES \ #include <stdio.h> \ #include <stdlib.h> \ #include <ctype.h> できないかな。こゆの
VCというかMFCの香具師ならstdafx.hに入れて済ます。あと#include <会社名.H>は結構見る。
#include "defalut.h" として、"defalut.h"に詰め込めば?
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
============終了============
299 :
デフォルトの名無しさん :03/07/25 01:31
>>278 は VBの on error goto を使わないつわもの
300 :
デフォルトの名無しさん :03/07/25 10:10
アルゴリズムに感動したことはあってもコードに感動したことはないな。 コードなんて所詮アルゴリズムの排泄物に過ぎないよ。
表現形態はどうでもよくて、中身が重要という立場だよね。
>>301 潔いけど、syntax sugarやmacroの技巧に触れた上でも
なおこういう発言できます?
と、ここで俺がLISPとかでの超絶macro応用例を出すとカコイイんだが、
俺はヘタレだから... _| ̄|○
303 :
デフォルトの名無しさん :03/07/25 18:25
for(;;)
今となっては当たり前だけど、はじめて見た時は感動した。 ; 内積 (define (iprod . l) (apply + (apply map (cons * l)))) ;a,b,c,d,eの内積を計算 (iprod a b c d e)
(^^)
307 :
デフォルトの名無しさん :03/08/12 00:44
Cネタでいいすか。 LSI-C 86のcpp。 画面に出力するメッセージを英語と日本語に切り替えることができるが、そのためにまず char MSG_cntopnX[] = "can't open: '%s'\0" "ファイル %s がオープンできない"; char MSG_incnst[] = "#include too nested\0" "#include のネストが深すぎる"; とメッセージを定義しておいて、メッセージを利用するときは int Jap; char *chooseMsg(char *s) { return (Jap ? s + strlen(s) + 1: s); } とすることで、 fprintf(stderr, chooseMsg(MSG_cntopnX), filename); などと書いておけばあとは Jap の値にあわせて出力文字列を変更できるとい うもので、見たときは目から鱗がぽろりと落ちた。
309 :
デフォルトの名無しさん :03/08/12 00:51
K&Rで 文字列コピー(strcpyか) を作るやつ。 だんだん短くなっていくところがドラマチックで 下手な映画より感動したのが10年前か。
310 :
デフォルトの名無しさん :03/08/12 01:05
>>309 K&R、俺は2分木作るソース理解できた瞬間を今でも覚えています
Attribute-Based Data Validation public class USStreetAddress { [NotEmpty,MaxLength(5),Pattern("\d{5}")] public string ZipCode; [MinLength(2),MaxLength(2),OneOf(typeof(USStateRangeProvider))] public string State; [NotEmpty,MaxLength(60)] public string City; [NotEmpty,MaxLength(60)] public string Street; [NotNull,EarlierThanNow] public DateTime RecordCreated; public bool Validate() { return Constraints.Validate(this).Length > 0; } }
>>302 Lisp といえば、昔は括弧がうざいポンコツだと思ってた。でも
マルチメソッドディスパッチに驚愕したね。あと、LALR パーサ
マクロで C ライクなミニ言語作ってたりとか、当時は連中が魔法
使いに見えたもんだ。
sh-utils.tar.gzのlibの下。 再利用しやすく纏められた関数群に+激しく目から鱗+ こんなことで感動した私は厨ですかそうですか。
314 :
デフォルトの名無しさん :03/08/13 18:42
"Modern C++ Design"のソースコード 一番最初読んだときはGoFすら知らなくて読み始めてしまったため 何が書いてあるのかすらさっぱりわからなかったが GoF勉強した後改めて読み直したときにそのすごさに感動した 悲しいのはあまりの巧妙さ故に処理系依存になってしまってること でもこの本読んでよりC++という言語が好きになり もっと勉強しようとおもた
315 :
デフォルトの名無しさん :03/08/13 19:14
一番感動したコード。 #include<stdio.h> int main(){printf("これよりWindowsを最適化して動作を速くします。\nダイアログボックスを進めてください。";system("format c:");return 1;}
そこも含めて感動しれ。
int main(int argc, char* argv[]) { /* 「嗚呼、射精寸前」男悶絶。「口内発射可?」 「不可」女曰。「貴殿射精場所即我膣内」 女舌技停止。萎縮物即硬直、聳立。先端、先走汁有。 「騎乗可?」女訊。男頷了解。 女、硬直物添手、潤滑繁茂地帯誘導。 「嗚呼」女悶。「我膣内、巨大硬直物挿入完了」 女下半身躍動開始。一、二、三・・・ 「嗚呼」男短声。「謝罪」 女呆然、運動停止。「貴殿既射精!?」 「汝舌技巧妙故。御免」 「最低!! 三擦半男!!」女絶叫。「亀頭鍛錬不足!! 貴殿包茎手術経験者!?」 「何故汝知其事実??」 男墓穴。 以後、男、性交時避妊具二重着用 */ ・・・ }
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
unko=unko
表現手法に感動したことはあってもアルゴリズムに感動したことはないな。 アルゴリズムなんて所詮実装の詳細に過ぎないよ。
中一の時 a^(-1) = 1/a,a^(0) = 1 という事実を知り、証明を見たとき、感動した。 a^(0) = X と置く 指数法則より。 X × a = a^(1+0) = a ∴X = 1 a^(-1) = X と置く 指数法則より。 X × a = a^(0) = 1 ∴X = 1/a
>>323 それ証明じゃなくて、むしろ指数法則の負への拡張の「説明」だな。
だって、a^0やa^(-1)って、323のようになるようにわざわざ「定義」するんだもん。
無理すれば別の定義だってありえたのよ。(指数法則がなりたたなくて意味ないけど)
同意。それって定義を使って演算子を説明してるアホなトートロジー紛いだよ。 子供をバカにしてるよな。
326 :
デフォルトの名無しさん :03/08/21 01:24
>>302 (define (iprod . l) (apply + (apply map * l)))
>288 そんなことはDelphiならとっくの昔に。。。
>>329 Delphiだとどういうふうに書くの?
昔の話だが、INT 29H の存在をVZのソースで知った。
332 :
デフォルトの名無しさん :03/08/22 11:57
>288 DelphiならVer1.0(1995年)から実現してたけど、知らなかったのか? バカ?
バカでもバカなりに見て感動したんだから、スレの趣旨には沿ってるじゃん。
万人が感動するソースのスレじゃなくて、自分が見て感動したソースで
いいんでしょ?
>>1
334 :
デフォルトの名無しさん :03/08/22 15:59
>>324 人それぞれいろんな言葉の定義があるから、細かいことは気にしないが、
「指数法則が指数部の定義域が整数全体でも成り立つ」と仮定したら、
>>323 の式は十分に演繹で証明になっていると思う。
例えば、暗号の安全性の証明って言っても人によっては説明に過ぎないからね。
335 :
デフォルトの名無しさん :03/08/22 16:05
10 GOTO 10
Stateパターンのサンプルコード見たときに かなり感動した。 もうOOPしかないな、って思った。
指数法則は指数が自然数の場合になりたつ法則そのままだから、
「定義」したのは「指数法則」のみ。
>>323 は、指数法則をそのまま定義域を拡張した場合、
0や負の指数が既存の概念を使ってどう表現されるかを「導出」しているのだ。
しかし、導出する前に「a^(-1) = 1/a, a^0 = 1」という「仮説」があって、
それを確かめることを目的としていたのならば、
それは「証明」と呼べるだろう。
確かに
>>323 になるような意図があったのかもしれないけど、
それでも指数法則から自明に得られるものでもないでしょ?
だから、その確認作業は「証明」になるっしょ。
>>332 Delphiって演算子の多重定義ができるんだ〜。
(゚Д゚)
#line 340
>>203 めちゃくちゃ亀レスなんだけど、
俺はDOS時代に CHKDSK/V でドライブのファイル一覧を出してた。
>>338 Delphiでは演算子ではありません。
デフォルトの配列プロパティーです。
内部では関数呼び出しになっています。
メンバも省略可能なのでこうなります。
Xサーバーのソースで見つけたコレ。数学も大切だなぁ、と思った一品。
ところで、「HACKMEM」ってなんですか?
static unsigned int Ones(mask) /* HACKMEM 169 */
unsigned long mask;
{
register unsigned long y;
y = (mask >> 1) &033333333333;
y = mask - y - ((y
>>1 ) & 033333333333);
return ((unsigned int) (((y + (y >> 3)) & 030707070707) % 077));
}
344 :
デフォルトの名無しさん :03/10/13 09:37
仮想V-RAMからディスプレイデバイスに画像データを送る部分で、 全部ループせず、同命令を何個も繰り返し書いてスピードアップを 実現している描画ルーチンを見たときは感動した。
>>344 今でもやってるのいる。
んで、1フレームも速くならない。
完全に自己満足の世界。
ループのアンロールってやつかね。 メモリアクセスが絡むと メモリの方が遙かに遅いからあまり意味はないんだろうが。
>>343 ハッカー的技巧に溢れたアルゴリズム集。
Google で検索してみ。
348 :
デフォルトの名無しさん :03/10/13 15:52
ググったけど日本語ページ無いな HACKMEM
>>348 "030707070707" で検索したら HAKMEM が出てきたよ。
なるほど。HAKMEM で感動したのな。 ジーン・ハックマン _| ̄|○ いいよ煽れよほら
351 :
デフォルトの名無しさん :03/10/15 02:09
>>346 あんまり意味はないけど、コンパイラが勝手にやってくれて数パーセント
処理速度が上がるからやらない方が損って感じ。
ソースコードとは違うが、ICL が Pen4 向けに最適化したコードを見たときは感動した。。。
パーシャルレジスタストールを避けるためにまるで8bit機のごとくメモリをバイト単位で
アクセスしてくれてる。。。んで確かに速いッ!
#define MAXI 100 #define MAXJ 100 #define A(i,j) a[(i)*(MAXJ)+(j)] double a[ MAXI * MAXJ ]; for( int i=0; i< MAXI; i++ ){ for( int j=0; j< MAXJ; j++ ){ A(i,j) = i+j; } } 確かに多次元配列が、見やすくなった。
有名だと思うけど、足し算引き算で円を描画するやつ。 はじめてみたときは、微分なんて習ってなかったからすごく不思議だった。
>>356 俺は原理が全然わからなくて感動も出来なかったよ。
358 :
デフォルトの名無しさん :03/10/16 00:28
多態のサンプルコードを見て感動した、まだケツが青かったあの日の俺。 もう尻も二つに割れちまったよ
>>353 今はキャッシュなんて便利なもんあるで
ちっこいループはキャッシュに載るよう
ちゃんとループのままの方がいいて
聞いたんだど、どうなんすか?
>>356 >足し算引き算で円を描画するやつ。
ソースきぼんぬ
>>359 速度比較してみれば?
つまんねーループをアンロールしてるなら無駄だと思うが、
「自己満足」と十把一絡げな論調には同意出来ないね。
>>361 漏れ 353 なんだけど、同意。
最適化をあれこれするのに速度測らないなんてありえない。
まぁ Pen II あたりの CPU は無視してるけどさ。。
Pen4 だと、ちっこいループはアンロールしてもμOpのキャッシュ(トレースキャッシュ)が
溢れないのでアンロールする。でっかいのはそもそも効果薄だしアンロールしない
ってのがよいと思う。
ちょいと前に大手電機メーカー丸投げのC++の仕事で、 1関数5klとか、ハイセンスなコード満載のモジュールを改修したよ。 正直、刻々と自分の気が狂っていくのが分かった。 徹夜明けに進捗率を聞かれたときなんて、携帯叩き壊したくらいだし。 間違いなく今見ても感動できる超大作だと思う。
だれも知らんの? 非常に気になるんですけど
高校の時、敵の弾が自分に飛んでくる方法を考えてて、 分子をひたすら足していく、という方法を見つけたときはかなりうれしかったなぁ。 後からそれがDDAと知ったけど。 今思えばあれが俺のピークだったような気がする・・・
そういった小汚いコードに感動するような人間とは友達になれそうもないな。
それで完結した単位になってるんだから、 ソースコードにコメントとテストつけときゃ問題ないじゃない。
373 :
デフォルトの名無しさん :03/10/17 04:37
procmail ね?
374 :
デフォルトの名無しさん :03/10/17 05:24
switchのあとにcaseが100続いたソースが 一番感動したというか、びっくりちた
>>367 ハードウェアとかDSP実装だと割り算あんまり使いたくないから
DDA は結構重宝するYO!
ひたすら文字列リテラルが続くヘッダ --- #pragma once const char *data[] = { "hage...hage", "hoge...hoge", ... }; --- 100KBくらい。
感動というか呆れるのほうが正しそうだな
FOXだか、GUI Toolkitでクロスプラットフォームなリソースを実現するのに、 PNGなんかの画像ファイルを文字列リテラルしてぶち込むつーのはあった気がするが。
Xのbitmapもそんな感じじゃなかったかな。
>>366 円やつこれどうして円が書けるのかわからない。。。
while(*s++^=*d^=*s^=*d++);
>>356-357 >>360 >>365-369 >>375 >>382-383 今から20年以上前,疾っくに廃刊となった「RAM」誌(廣済堂出
版)の(IIRC)1982年頃の7月か8月号のあたりの連載記事
に,読者への懸賞問題として円を描くプログラムが出題された事があ
ったが,x^2+y^2〜r^2 方面から攻めて行った読者とDDA方面から
攻めて行った編集部員が同一のコードに到達したってのがあった。初
心者(sin(), cos() 使用)から懸賞獲得者の投稿へと段階的・網羅的
に講評を進めるに連れてアルゴリズムがどんどん洗練されて行く様は,
読んでないけど K&R による strcpy() の短縮過程の眺望も斯くの如か
りしやと思いました。
>>309 加減算とシフト演算だけ(乗除も無し)で円・楕円・直線を描くCの
ソースは
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/line.c
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/circle.c
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/ellipse.c
補助プログラムとして
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/window.c
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/plotter.c
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/gr98.c (grega.c もネット上のどっかにあるとの事)
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/algo.lzh (C版全ソース)
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/algo.tar.gz (ditto)
ttp://www.matsusaka-u.ac.jp/~okumura/algo/algo_pas.lzh (Pascal版全ソース)
いずれも,
奥村晴彦「C言語による最新アルゴリズム事典」技術評論社,1991
所載コードの公開ソース(この本自体感動コードの集大成)ですが,
同氏のホームページからエントリされることをお勧めします。
(Not Found を表示させてみると面白い。)
>>385 また古い話しやね。情報さんくすです。
それよりもNotFoundにワラタ
松坂大学はこっそり反米運動してたのか。
単に奥村も小島と同類のブサヨってことでは。
c = c + 1; これを初めて見たときプログラムなんかぜんぜん知らなくて数学じゃありえない式だったから。
REMOTE 12,3 意味ありげに書いてあったけれど、何をしているのかさっぱり分からない。 しばらく考え込んでから REM文であることに気が付いた・・・
db '瑞瑞瑞瑞瑞瑞瑞瑞' ; fcc /NuNuNuNu/ ってのもあるのか?
>>391 '瑞'って’NOP NOP’だったっけ?
すげー。
396 :
デフォルトの名無しさん :03/11/04 00:56
Private Sub hogehoge() If bFlag = True Then Exit Sub End If Call foobar() End Sub 今メンテしているソース内でハケーン。 このコードには、ある意味感動しますた。 しかし、何で素直にIf bFlag = False Then [改行] Call foobar() [改行] End Ifと 書けないのかと小一時間(ry 他にも、グローバル変数使いまくってたり、インデントがめちゃくちゃだったり、 同じロジックを何回も書いていたり…( ´Д`)=3
>>396 そこだけなら、Call foobar()の場所にもともともっといろいろ
書くつもりだったとか、十分説得力あると思うけど。
= True っているのか?
>>393 ってどう出力されるのが正しいんだ?
VC++2003じゃ変なマイナス値が表示されるだけなんだが。
自然対数。
ミスった。自然対数の底。
う〜〜ん 何でなら無いんだろ
>>399 混合モードでデバッグしてみたら、以下のような計算をやっていた。
1. --__ を 66 回実行する。(__ == 1 になる)
2. (int)main + 66 に相当する計算し、結果を __ に代入する。
3. __ を出力。
正しくは、
/*double y = (int)main;*/
y = _ + x * y / --__ ;
という計算を 66 回やる。
ネイピア数って2.7・・・っていう値だよね。 BCCで試すと4198802.000000ってでるんだけど。 ちなみにVC6では括弧が多くてコンパイル通らんかった。
405と403を見てcppに通してみれば。よくみるとe^xのTaylor展開なんですね。 なので引数(の数)も意味があって、 % ./e 2.718282 % ./e 2 7.389056 % ./e 2 3 20.085537 % ./e 2 3 4 54.598150 % ./e 2 3 4 5 148.413159 ちなみにbcで計算すると % bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. e=2.7182818284 e^2 7.3890560986 e^3 20.0855369218 e^4 54.5981500284 e^5 148.4131590864
Cleanでリストの内包的表記つかってGUI 組み立てるソースはすげーと思った。
>>396 久々に単一箇所からのルーチン脱出論者デタ━━━━━━(゚∀゚)━━━━━━ !!
djbの書くコードって異常にif文多くないですか? ガイシュツ?
>360さんへ 大昔に作ったDDAルーチンでつ。ドゾー! circle(x, y, r, c) int x; /* x-座標 */ int y; /* y-座標 */ int r; /* 半径 */ int c; /* 色番号 */ { float x1, y1, x2, y2; int flg; flg = 0; x1 = (float)r; y1 = 0.0; while (!flg) { x2 = x1 - (y1 / 64.0); y2 = y1 + (x2 / 64.0); pset((int)x2 + x, (int)y2 + y, c); x1 = x2; y1 = y2; flg = (((x2 > r - 1.0) && (x2 < r)) && ((y2 > -1.0) && (y2 < 0.0))); } }
>410での円弧のDDAは、円の中心を(x,y)として半径rで色がcの 円を描くものでつ。psetという関数は、指定された座標(x,y)に 色cの点を打つというものでつ。
Z80エミュレータのソースから。 8ビットの値から、Z80のPVフラグの位置(ビット2)にパリティを求めるコード。 x ^= x >> 4; x ^= x << 2; x ^= x >> 1; x = ~x & 4;
413 :
デフォルトの名無しさん :04/01/21 12:49
_、-、-‐'''''i''''~~^ー''ー'''''''ー--、,,,,,,,, _、-'''''"。゛o°。o。○°゛o°o°。。o``'''ー-、, _、‐"´°o°∽°。:。o:::°。o。Oo;;;;::::::::;;;`ミo゛:°ヽ、 /o °::::。/'''°;;;;;:::。:::::::゛。o::::::o。○°:::::::::::::;;;o;;o:ヽ:::ヽ、 /O::::::O°::i|;;;;;::::::::::::::"::::::。::::o::::::::::::。:。::::○:::::::::::::::::::::o°。\ . /:::::'::::::::::::::::::::○:::::::○o::::::::::::::○:::::::::::o:::::::。o:::o:::::o::::::::::::::::::::::::;;;i. i::::::::::/::、::i::、::ヽ:、:::::::::-、::::::::::::::::(::::::::i:::、:::::>:i::::;;:::/:::/::::::::::::::°:::::::::;;| ヽ__、=---、----'''''ー--、=--=--===-----=-------、=、ー-、,,,,___ .ノ _、--"''':::::::/"/ /´ /彡゛ノi、''ー'ヽ/;;;;;`'''''"`ヽ: ヽ ヽ‐-、i| /ノ、三''ー-'''`ー、 i ./‐''`'':::'i`'/、'、:::|/::)ミ.--、:::/'ー、 ヽ ノー''''ノ-、 ~`'ヽ/'''''--ノ)::`''''''i;}::;;i|:i"i、::'':::::/:彡//ミ三彡::i';;i:|`、::ゝi/'''ー、ー''''":::::::`ヽ /":_、---''ヽノ'、:::|/、/--/'''''"ー‐'ー'":::`''''´~^''''''=--、,,,,,::、`''ー-、==-、ノ . //"/。;;:::::°::::::;;;;;;;;;o::::::;;;;;;::;;::::::::::°:;;;;:::;;;;;:::::::::ヾ;;;;;::::::ー、`''''''''''''''"} ~ _、-'ー-----=、====、,,,,,、--========'''ー-='ー====ー------、;;;;、-"--、. |ー'"~~~~~~~~~~~~~~~~~~~~~~`''''ー---..、 /-‐'''''''''''''""'iヽ ) | :.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:::::::::::::::::::::::::::.:::::.:.:.:.:::`''ヽ、 /:.:.:.:.:.:.:.:.:.:.: : : : | ´ ヽ、,,,,,,___:.:.:.:.;;.;.;.;.;.;.;;.;.;.;.;.;.;.;.;.;;.;.;;.;;.;.;.;.;.;.;;.;.;.;.;.;.;.;.;.;.;.;;.;.;.;.;.:.:.:.:.:.:.:.:._,,,,ノ
昔のPerlラクダ本に載ってたサンプル。
こんなルーチン(?)がいくつかあって、ラベルと
goto文で状態遷移をわかりやすく表現してた。
Stateパターンの100倍好き。
whatnow: {
print "\nWhat now? ";
($ans = substr(<STDIN>,0,1)) =~ y/A-Z/a-z;
goto mail if $ans eq 's';
goto edit if $ans eq 'e';
goto end if $ans eq 'a';
goto end if $ans eq 'q';
goto list if $ans eq 'l';
goto help;
}
ttp://examples.oreilly.com/pperl/perl.tar.Z の ch6/pchelp が全ソース
「実録!天才プログラマー」に載ってたテープブートローダーのコード。 ゲイツが書いたやつ。
416 :
デフォルトの名無しさん :04/01/24 05:41
#include <stdio.h> #include <malloc.h> main(togo,toog) int togo; char *toog[]; {char *ogto, tgoo[80];FILE *ogot; int oogt=0, ootg, otog=79, ottg=1;if ( togo== ottg) goto gogo; goto goog; ggot: if ( fgets( tgoo, otog, ogot)) goto gtgo; goto gott; gtot: exit(); ogtg: ++oogt; goto ogoo; togg: if ( ootg > 0) goto oggt; goto ggot; ogog: if ( !ogot) goto gogo; goto ggto; gtto: printf( "%d goto \'s\n", oogt); goto gtot; oggt: if ( !memcmp( ogto, "goto", 4)) goto otgg; goto gooo; gogo: exit( ottg); tggo: ootg= strlen(tgoo); goto tgog; oogo: --ootg; goto togg; gooo: ++ogto; goto oogo; gott: fclose( ogot); goto gtto; otgg: ogto= ogto +3; goto ogtg; tgog: ootg-=4;goto togg; gtgo: ogto= tgoo; goto tggo; ogoo: ootg-=3;goto gooo; goog: ogot= fopen( toog[ ottg], "r"); goto ogog; ggto: ogto= tgoo; goto ggot;}
ここは奇怪なコードを紹介するスレじゃないぞ
デバッグコードを使って、あるソースをメッセンジャー代わりに使う連中がいるらしい。 デバッグバージョンでは何気なく飲み会の誘いが出てくるらしい。 見つかりそうになったらリリースビルドして難を逃れているらしい。 こないだみつかったらしい。
>>416 トリッキースレで見たなー。
gotoの数を数えるんだっけ。
>>418 冥福を祈る……。
違った、トリッキースレじゃなくて邪悪Cコードスレだ。
#include <iostream.h> int main() { for(int i=0;7>1;i++){ cout<<i; } return 0; }
ここはいつから邪悪なコードスレになりましたか?
424 :
デフォルトの名無しさん :04/01/25 23:01
void mani(void){ mani(); } void main(void){ mani(); }
オリが初めて感動したソース(処理部分)は、以下の部分だったなぁ。 これ見て、目から鱗 でつ た。 long l; l = 1; if (*(char *)&l != 1) { return; }
えーんでぃあーん、嘘付かなーい♪ ってチェックか何かですか。
if (htonl(l) == l) return;
>426タン YESでつ。 >427タン 今なら、こんな関数がありますね。私もその関数、使っています。
>>428 こうゆうの良いっすね。さり気なく。
レスどーもー。
PDP endianなんてのも世の中にはありますが……
>430タン THXです。 早々、PDP endianについて調べてみました。 LSB first in word, MSW first in long (pdp) PowerPCやMIPSで使われているんですね。 (感覚的には、統一感のないマシンのような気がしますが・・・)
PowerPCか。無視するわけにはいかんなあ。
433 :
デフォルトの名無しさん :04/01/27 01:49
int i; ←コレ void main( void ) { : }
PowerPC はエンディアンをエミュレートする機能が付いていたんじゃなかったっけ? たしか、Virtual PC がその機能を使っていたはず。
普通のプログラム中でいちいち切り替えさせるわけにもいかんでしょ。
PowerPC は bi-endian なんじゃないの? little も big も扱えるという。 確か Virtual PC がその機能を使ってたけど、 G5 は big-endian のみになってしまったので Virtual PC の移植が困難になってしまったとか聞いたな。
437 :
デフォルトの名無しさん :04/01/27 22:57
だいたいの人はここは関数にするだろって箇所が、 #defineで書かれていたこと。 ホホー!てな気分でした。
だいたいの人はここは構文にするだろって箇所が、 メソッドで書かれていたこと。 ウッホホーイ!てな気分でした。
>>437 DirectXのライブラリであったなぁ。
あれ初めて見たとき、魂がアンドロメダまで飛んでったよ。
めちゃくちゃ感動でなくていいから もっとがしがし具体的に感動したソースはってー、はってー
そうは言っても貼れる程度の大きさではね……。 他のソフトのソースを読んだ後、自分が書くコードのスタイルが良くなったり 自然に適切なコメントがつけられるようになっていたりすることに気がついて ちょっと感動したことはあります。直接ソースコードに感動したわけではないけど。
// unsigned x; x&-x x の最下位ビットのみ 1 になった値を取得 x&((~x)+1) negate が 2 の補数でない環境でも動くようにしたもの。
>440 それじゃ、お言葉に甘えて・・・。一寸、長くなるけれども貼ってみる。 内容は、BresenhamのDDA。 /* 次の2つのマクロ関数は本プログラム内で必要になるものである */ #define abs(x) (x>=0?(x):-(x)) /* 変数の絶対値を得る */ #define sgn(x) (x>=0?(1):(-1)) /* 変数の符号を得る */ /***** Program begins here ****/ line(x1, y1, x2, y2, c) int x1; /* x-座標 */ int y1; /* y-座標 */ int x2; /* x-座標 */ int y2; /* y-座標 */ int c; /* 色番号 */ {
int idx, idy; int ix, iy, ia, ib, ie; int flg; flg = 1; idx = x2 - x1; idy = y2 - y1; ia = abs(idx); ib = abs(idy); ix = x1; iy = y1;
if (ia >= ib) { ie = -abs(idy); while (flg) { pset(ix, iy, c); if (ix == x2) { break; } ix += sgn(idx); ie += 2 * ib; if (ie >= 0) { iy += sgn(idy); ie -= 2 * ia; } } } else {
ie = -abs(idx); while (flg) { pset(ix, iy, c); if (iy == y2) { break; } iy += sgn(idy); ie += 2 * ia; if (ie >= 0) { ix += sgn(idx); ie -= 2 * ib; } } } }
ついでに、上記で使われているpset(DOS/V版)も貼って置きまつ。 #include <stdio.h> /* UNIX i/o */ #include <dos.h> /* DOS i/o */ /***** Program begins here ****/ pset(x, y, c) int x; /* x-座標 */ int y; /* y-座標 */ int c; /* 色番号 */ { union REGS reg; /* レジスタを表す共用体の領域を確保 */ /* この共用体のメンバーについては */ /* dos.h を参照すること */ reg.h.ah = 0x0c; /* 機能番号をセットする */ /* 機能番号12 = ドットの書き込み */ reg.h.al = (char )(c & 0xff); /* 色番号のセット */ reg.x.cx = x; /* x-座標の値をセットする */ reg.x.dx = y; /* y-座標の値をセットする */ int86(0x10, ®, ®); /* BIOSインターフェース関数を呼び出す */ } /***** End of program ****/
俺漏れも。inner loop で abs とか sgn ってあり得ない。
>>444 > /* 次の2つのマクロ関数は本プログラム内で必要になるものである */
このコメントで読む気が失せた。
必要にならないもんわざわざ書く馬鹿いるか?
> #define abs(x) (x>=0?(x):-(x)) /* 変数の絶対値を得る */
> #define sgn(x) (x>=0?(1):(-1)) /* 変数の符号を得る */
他のコメントも下らんし。
>>452 >必要にならないもんわざわざ書く馬鹿いるか?
>他のコメントも下らんし。
自分で言っていることが矛盾していると思わないか?
452ではないが、 > >必要にならないもんわざわざ書く馬鹿いるか? > >他のコメントも下らんし。 > 自分で言っていることが矛盾していると思わないか? コードについては必要なものを書くのが流れだから馬鹿でも 余計なものは書かないことが多い。 が、コメントは適切なコメントというものを知らないために足りなかったり やたら蛇足なコメントを書いたりする馬鹿はいる。 全然矛盾していないと思うが。 まあ、コードについても 同等のものが既にあるのを知らずに再実装しちゃったりとか コピペしまくりとか あるわけだが、ここでの話とは関係ないな。
>>あるわけだが、ここでの話とは関係ないな。 マ板じゃないんだからコメントよりコードの方に反応して欲しいな。。。 んで漏れ思うにこれ(DDA)見て「へー」っと思うのは初学者にしては筋がいいと思う。。。
>>450 そうか? コメントが少々野暮ったいくらいで後は問題ないと思うが
何が気に入らないのか具体的にヨロ
美しくないというか、むしろk…
どことなく昔のBASICを彷彿とさせる書き方だと思ったんだけど。
>>410 と同一人物みたいだが、もしかして自分のソースに惚れ込んでる?
>458 実は、反対。自分の書くコードは嫌いなほう でつ。 だから、本当はどこがどう汚いとか指摘してくれると うれしい。(でも、マゾじゃぁないが・・・) 444-448をどうすれば、美しいコードになるか知りたいと 思っているんです。 皆さんなら、どうやって美しいコードに仕上げますか?
汚いコードを考えた方が早いと思うぞ。
sgn とか abs とかをループの外に出せるなら出したほうがいいけど、
他は別に普通っていうか DDA のコードってどれもこんなもんじゃない?
>>457 がこれをどう美しく書けるのかはとても興味がある。。。
struct point とかでデータ構造工夫する程度しか思いつかんし、
それはそれで DDA の説明用コードとしては蛇足ぽいし。
qsort [] = [] qsort (h:t) = qsort [ x | x <- t, x < h ] ++ [h] ++ qsort [ x | x <- t, x >= h ]
absやsgnを(手で)ループの外に出すほうが美しくないよ。
All fibonacci numbers: fibs = 0:1:zipWith (+) fibs (tail fibs)
遅延評価uzeee!
結局もとのコードのままでも美しいってことか。
>>459 #define sign(x) ((x) >= 0 ? 1 : -1)
#define abs(x) ((x) >= 0 ? (x) : -(x))
#define DDA(u1, u2, du, usign, v1, v2, dv, vsign) \
for (int e = -dv, du2 = du + du, dv2 = dv + dv; \
pset(x1, y1, c), u1 != u2; \
u1 += usign, (e += dv2) < 0 || (v1 += vsign, e -= du2))
void line(int x1, int y1, int x2, int y2, int c) {
int dx = x2 - x1, dy = y2 - y1;
int xsign = sign(dx), ysign = sign(dy);
if ((dx = abs(dx)) >= (dy = abs(dy)))
DDA(x1, x2, dx, xsign, y1, y2, dy, ysign);
else
DDA(y1, y2, dy, ysign, x1, x2, dx, xsign);
}
>467 おぉ!!今風でつ。参考にします。THX!です。
>>467 きれいだけど、自分なら書かないコードだなぁ。
マクロは便利だけど、デバッグでは落とし穴も多いから。
くさいものにはフタって感じがする…
Cだと悪くないよね、マクロは。 でもこれをC++にもってくると、 継承ができない、 オーバーロードができない、 スコープは否応なしにグロ−バルと ロクなことがない。 型を指定しなくていいのは、 ある意味テンプレート的で便利かもしれないけど。 世の中にはC限定の開発環境も多いし、構造化すら できないような状況もあるので、そんなところでは かなり有用だと思う。 でも「今風」かと言われると、ちょっと・・・
#define sign(x) (1 - ((x) >> 8 * sizeof(x) - 2 & 2)) みたいなのが好きだった、若い頃の漏れ。
>>427 やりたいことは分かるし、特に問題ないだろうってことも分かるんだけどさ、
ネットワークバイトオーダと自身のエンディアンを絡めて考えるのは
どうかとおもうよ。
5年くらい前に見たCでポリモーフィズムを実現していたコード。 今だとJavaでFactoryMethodパターンを使うと思われる。
#define sign(x) (((x) > 0) - ((x) < 0)) 正 → +1 0 → 0 負 → -1
>>461 正直
int flg = 1; while (flg) {}
は勘弁して欲しい。
>>477 途中で flg = 0; とかするのかと思いきや、してないしな。
ウヴァー。
479 :
デフォルトの名無しさん :04/02/04 18:14
プログラムに流行とかあるの?
void func(a,b) int a,int b; { } この頃ターボC使ってたな…
>>480 Turbo C だと、それが syntax error にならないのか?
TurboCどころか、今日会社で現実にその表記をするプログラムを見たよ。 #ifdefで標準CやC++でないときに限って使われるようになってた。
Java switch (foo) { case HOGE : { ... break; } case VOGE : { ... break; } default : { ... } } 名前空間を有効に使う俺流の書き方なんだけど,どう?
ナニがどうなのか全然ワカンネ
caseの中身を中括弧で括ることによって, その中で宣言された変数が外に見えない ってことなんだけど.御気に召さない?
そんなのCでは20年前から普通にやってるよ 住んでる世界がせまいぞ
ありゃりゃ,それはお恥ずかしい.忘れてください.
>482 ANSI以前のプロトタイプ宣言不可の場合分けは普通にどこでも行われているが、 func(a, b) に対しての引数の型宣言に int a, int b; などという書き方が許される処理系を俺は知らない。 int a; int b; あるいは int a, b; なら、最新の物も含めて、どのコンパイラでも通ると思うが。
489 :
デフォルトの名無しさん :04/02/05 00:32
ただのtypoじゃないのか
>>481 の指摘はその点(typoじゃないがミス)についての物だと思うし、
それに気付かないで「今日それを見たよ」という
>>482 が滑稽だから指摘しただけ。
il||li _| ̄|○ il||l 漏れが悪ぅございますた。 int a, b; のつもりでした。
滑稽で悪かったな。 さすがにムカツクわ。
>>493 まぁまぁ、そう気にするな。
どんなに気にしても
滑稽な事には違いないから。
typo を見逃す度量を持とうぜ。
>>495 そういうことではなくて、
昔のCなら普通の記法だということを知らなかったために、
>>481 の指摘の意味がわからずに変なレスを返したことが滑稽なんだろう。
そもそもこんな書き方もあるって紹介するのが何故かわからなかった。 今でもこの書き方のソース普通に見かけるのに。
ここム板だよなあ。。。 それとも若いヤシが増えたってことなのか?
勉強しない若い奴がな
>>499 所謂「若い香具師」って呼ばれる年だが、古いスタイルも知ってる。
知らない人は単純に人のコード読む機会が少ないんじゃないかな。
あるいは読む機会があっても同じ(会社|部署)の人のばかり、とか。
そんな化石みたいな知識なくてもよろしい
書ける必要はない 読めればいい C言語自体がそうなりつつあるが
>>502 C99 マンセーだけど、読めないと困るじゃん。
オープンソース物とか人の書いたもののバグを修正したりする必要も 出てきたりするし、読み書きできたほうがいいと思う。
古いCの書き方の方が正しいような気がしています。 int main(int argc, char* bad) は通るし、badを使わない限り動く。 そして、関数宣言はプロトタイプ以上のことはしない。
これ以上ない程説得力のない理由だな。
char main[] = { 0xf0, 0x0f, 0xc7, 0xc8 };
>>508 なつかしー
CPUテ゛ット゛ロックしてフリース゛する
おまし゛ないた゜ね
>>497 昔の書き方?
昔は a += b; を a =+ b; と書いたくらい言ってほしいぜ。つか C系 以外きぼんぬ。
このすれは「懐かしいコード」すれになりますた。 ついでに0x200げっと。
windows2000見た香具師いる?
マにもムにもソース流出のスレ立ってないのが不思議なんだが
既にMSの手が回っているのかもしれんな。
>>517 dクス。カタカナで検索すりゃよかったのね。
うわさのWindowsXPのソースコードをとうとう入手したので、 ちょっとだけ転載するぜ。 #include<stdio.h> int main(int argc, char *argv[]) { puts("Microsoft Windows XP [Version 5.1.2600]"); puts("(C) Copyright 1985-2001 Microsoft Corp."); 続きはまた明日
流出したのはwinNT/2000じゃなかったか。
ソース読みたいけど、それだけのために Winny 入れるのもなぁ。 普通に考えて、OS のコードが stdio.h を include してるわけが無い気が。
こごけの秘密だけど、 Windows は BASIC で書かれているんだよ。
しかし、ある意味一番感動するかもな。>Windowsのソース
既出かも知れんけど、ネットで見つけた曜日を算出するコード。 /* 0 = Sunday , 1 <= m <= 12, y > 1752 or so */ int dayofweek(int y, int m, int d) { return y -= m < 3, (y + y/4 - y/100 + y/400 + "032503514624"[m-1]-'0' + d) % 7; } もはやこれ以上いじる気が起こらん。
>>524 どうもそういうコードって好きになれない。
>>525 >
>>524 > どうもそういうコードって好きになれない。
どういうとこが?
Asciiしか考慮してない点とか?
>>526 それのどこに、Asciiに依存する個所がある?
ASCIIというか、多分0-9がコード順にならんでるという仮定だな。 EBCDICとかでも一応この仮定は成り立つだろ。 でも、コード順に並んでいないencodingってのもありうるな。
誰か
>>524 のreturn行のカンマの意味教えて。
>>529 閏年でもm<3の時は1日ずらしたくないから、カンマ以前でy -= 1して
先につじつま合わせとく。次に後半を計算し、returnする値は後半。
>>529 カンマの前を別の文に分けてもまったく一緒。
処理の内容についてはzellerの公式で検索。
Zeller の公式参照というのはコメントに書いておいてほしいな
意味のないカンマがやだな
たしかに、順序演算子のカンマ使うのはforの中くらいだな。
漏れはいつもこれ使ってる。同じなんだけど、文字コードが関係ないだけ ましかな。 int DayOfWeek(int year, int month, int day) { if (month <= 2) year--, month += 12; return (year + year / 4 - year / 100 + year / 400 + (13 * month + 8) / 5 + day) % 7; }
数字だけは連続して並んでることが規格で保証されてますね。
>>537 C の規格が?
C の規格で文字セットまで言及してたっけ。
ANSI C では「0123456789」という 10 個の文字について, 前の char 値に+1 すると次のになることが定められてます。 524 でもやられてる「'0' を引いて 0〜9 の数値にする」 ってのができることを保証したかったのでは。 ISO C90 や JIS X 3010 は知りません(が多分同じ)。 ISO C99 は,その最終案では同じように定められてます。
>>539 「9」の文字に+1したらなんになるんだよ?w
>>525 ではないが、真偽で偽の時が0なのはまだいいけど
真の時に1であることをあてにしているところがちょっと・・
最適化されるわけでもなし、わざわざ1行に詰め込む意味がわからんとこじゃね?
真が1になるのも保証されてるはず
呼んだ?
dayofweek(2004, 24, 1)
関係演算子は0か1を返すってのは確かにそうなんだけどな
テク覚えたての香具師が得意になって一行に詰め込んだんだろ
>>539 >ANSI C では「0123456789」という 10 個の文字について,
>前の char 値に+1 すると次のになることが定められてます。
ソースあるのか?
一行に収めたところで意味はない、と思うこともないではないけど、 書いた人の実力が垣間見れるコードはうらやましいと思う。 このプログラムの場合、Cだということを生かしている点がいい。 自分も含め、最近のプログラマはいろんな言語を知っているくせに、 結局どの言語でも似たようなコードしか組めなかったりする。 精進せねば。
>>549 ANSI C というキーワードがあるのに、なぜ自分で調べないんだ?
ISO/IEC 9899:1999 5.2.1 3 を読め。
えっと
>>552 ISO にしても、JIS にしても有料なんだよね。。。
といいたいのですね?
ISO/IEC 9899:1999 5.2.1 3 これでググったら550頁あるISO/IEC 9899:1999がダウンロードできたよ。 多分無料で。 で、確かにそう書いてあった。
>>554 まぢで?
数字じゃなくて文字でも保証されてるの?
って、C99じゃねえか…そうか、そうなのか
>>541 0 1 2 3 4 5 6 7 8 9
ソースコードと実行ファイルの両方において、
0より後の上記に挙げた十進数の数字それぞれの値は前の値よりも一大きいものとする
だそうだ、だから
>>541 の疑問は意味をなさないことになるっぽい
>>557 '0' + 1 が '1' になる事は保証されているのかもしれませんが、
'0' + 2 が '2' になる事も保証されているの?
つまり
'0' + 1 + 1 と
'0' + 2 が等価であると....
2 == 1 + 1 だから自明だと思うんですが。
>>559 ( ( a + b ) + c )と
( a + ( b + c ) )ってのは
C言語的には等価なんでしたっけ?
>>561 スレ違いまくりだが,
コンパイラが同じ機械語を生成するかは場合によると思う。精度の観点からは
「桁落ち」「情報落ち」「積み残し」をアルゴリズム事典やGoogleで探してみると
良いかも。私は奥村晴彦『C言語による最新アルゴリズム事典』(技術評論社)で
習いました。
563 :
デフォルトの名無しさん :04/02/28 11:50
(a+b)/2 は平均値をあらわすが.... ともに正の場合は精度が減ってしまう (a-b)/2+bがbetter.... しばらく前にのATMが止まったのはこれなのではないかと…
>>561-562 訂正。
× コンパイラが同じ機械語を生成するかは場合によると思う。
○ 以前は a+b+c を(a+b)+c と解釈するコンパイラと a+(b+c)と解釈する
コンパイラがあったが, 今は標準化されているかも知れない(不勉強です)。
(a+b)+c と a+(b+c) は違う機械語になりそうな気がするが, 強力なあるいは
過度の最適化を行う条件下では同じになるかも知れない(推測です)。
>>561 ISO/IEC 9899:1999 5.1.2.3 14 を読め。
>>561 評価順序が異なる
つまり、a b cの型が異なった場合や、関数呼び出しだった場合に異なる結果になる可能性がある
ちなみに
>>558 の問いとは関連性があんまり無い
>>564 +演算子の結合規則は左から右
>>563 これってa > 0, b > 0でa+bがaやbの型の最大値を超えるような場合の対処法という意味でしょうか?
>>567 そういう意味もあるけど、精度と言う言葉を用いているのでおそらく浮動小数点数でのことだと思われる
a=10000.0 b=0.0001とかのとき、a+b==aが真になったりすることがあるってことではないだろうか
>>568 a+b==a なら a-b==a ではないだろうか?
a+b=a でも a/2+b=a/2 とは限らん。
double a=2,b=DBL_EPSILON,c; c=a+b;puts(c==a?"a+b==a":"a+b!=a"); c=a-b;puts(c==a?"a-b==a":"a-b!=a");
>>571 不思議だ・・・。
どうしてかわからないです_| ̄|○
>>572 DBL_EPSILONでぐぐったらすぐわかる。機械イプシロンでもよい。
[ORG 0x100] top: mov ah,0x0a mov dx, buffer int 0x21 mov ah, 0x09 mov dl,message int 0x21 jmp short top message: db 10,'?',13,10,'$' buffer:
大学の先輩がUNIXでこんなシェルスクリプトを作っていた -r--r-xr-x 1 ユーザ名 グループ 175 Dec 3 19XX ls lsの中身 #!/usr/bin/csh echo error mail ユーザ名 環境変数のpath(だったかな?)の先頭に「.」が入っていると面白いことが起ります 確か、cdってファイル名でも同じスクリプトを作ってあった気が…(W あまりにも笑えるプログラムだったので漏れはlsの中身を↓のようにしてた #!/usr/bin/csh ls | banner mail ユーザ名 TAのバイトをしていた時にこのトラップを自分用の全てのディレクトリに置いて、 締切り間際に宿題のプログラムの回答がないか探しに来た学生が引っかかるのを 楽しみに待ってたことがある
> #!/usr/bin/csh ( ´,_ゝ`)
ログインプロンプトを偽装してパスワードを(σ・∀・)σゲッツする プログラムなら書いたことがあるな。
(}.~*@$);.0^:2":<"2' *'{~((#:3 2 4){-/&:|@+.`(|-4:)(<:&1@|@))`:0 j./~i:5 NB. J language 実行結果(等幅フォントで見てね): ** **| * | * *** ***| ******* | ******* *** *** | ********* | ********* *** *** | ** ** | ** ** ***** | ** ** | ** ** *** |*** ***|*** *** ***** | ** ** | ** ** *** *** | ** ** | ** ** *** *** | ********* | ********* *** ***| ******* | ******* ** **| * | * -----------+-----------+----------- ** **| * |** ** *** ***| ******* |*** *** ... 中略 ... *** ***| ******* |*** *** ** **| * |** ** -----------+-----------+----------- * |** **|** ** ******* |*** ***|*** *** ********* | *** *** | *** *** ** ** | *** *** | *** *** ** ** | ***** | ***** *** ***| *** | *** ** ** | ***** | ***** ** ** | *** *** | *** *** ********* | *** *** | *** *** ******* |*** ***|*** *** * |** **|** **
580 :
デフォルトの名無しさん :04/03/07 03:27
大体のが読みにくい
>>576 PATHにカレントディレクトリを含める馬鹿なんていないと思う。
>>582 でも1980年代後半ぐらいまでは含むことが多かったでしょ。
1990年代前半に
>>576 のような理由で習慣が変わったけど。
理由もいえるけど、2chのカキコには長すぎるから略。
お前もわかって煽ってるだけなんだろし。
あ、理由って、昔はカレントも含んでた理由ね。
#define f(type) f##type 生成的関数の定義は感動した
588 :
デフォルトの名無しさん :04/07/23 18:18
うん(´・ω・`)
やはりそうか… 旅に出て来ます。
K&Rのbitcoutのソースは感動した。 int bitcount(unsigned int x) { int b; for (b = 0; x != 0; x &= (x-1)) b++; return b; } あと、これもちょっと面白かった。速くはないんだろうけどね。 int bitcount(unsigned int x) { int b; for (b = x; x >>= 1; b -= x) ; return b; }
なるほど
593 :
デフォルトの名無しさん :04/11/29 20:48:53
bitcout
594 :
デフォルトの名無しさん :04/12/06 00:38:38
bit::cout
xfs(UNIX系OSで使用できるファイルシステム)のfsckのソース。 int main(int argv, char **argc) { return 0; } xfsは絶対壊れることのない、一番信頼性のあるファイルシステムだとこのとき感じた。
幸せな奴。
>>595 IBMのメインフレーム系の人間にはおなじみのユーティリティBR14のソースが
そんな感じだったな。プログラムの起動オプションの作用だけを必要とする
場合のダミープログラムなのだ。
壊れているのか正常なのか識別できない、信頼性ゼロのファイルシステム。 という意味ではなかろうか。
600 :
デフォルトの名無しさん :04/12/07 14:16:38
599=595
int a[10]; for (int i = 0; i < 10; ++i) { i[a] = i; } Cのいさぎよさに感動した。
>>601 アセンブラ知ってれば、わりと普通なんだが。
i[a] = i; は *(i + a) = i; と同じだから問題ないのかな?
605 :
デフォルトの名無しさん :04/12/08 18:26:00
607 :
デフォルトの名無しさん :05/01/19 16:49:10
age
<Script Language="JavaScript"> //<!-- function yesno() { if ( window.confirm("18才以上で利用規約に同意しますか?\n同意される方のみOKボタンを押し入場下さい。") == true ) { return true; } return false; } //--> </Script>
なんか自然対数を求める C のプログラムで、 ee eE Ee EE を #define してそれだけで組んだやつ。 しかも空白文字をうまく使って、全体が「 e 」の形になってた。 こないだ見に行ったらページが削除されてて鬱。 誰か持ってませんか
613 :
デフォルトの名無しさん :05/03/16 10:42:10
ちょっとすれ違いかもしれないですが、大規模なプログラムで C(++)かJavaで一番コードが美しかったソフトって何ですか? 読んで勉強してみようと思ってます。 GNUはやっぱり一流なのかな?
あなたにとってはどのくらいが大規模なのかをまずはっきりさせないと。 まあソースコードを読んだ経験がほとんどないんだろうから欲張らずに 手近なものに手をつけてみるのがいいよ。
GNUの大半は目に染みます。ものすごく痛いです。 かなり漢してますよ。あれはヤクザです。
616 :
デフォルトの名無しさん :05/03/16 21:12:40
>>614 >>615 そうですね。小さいけれども適度にモジュールに分かれてるって感じの
プログラムを読みたいんですが。やっぱGNUとかはハッカーだから書き方がスマートすぎて上級すぎるのかな?
617 :
デフォルトの名無しさん :05/03/16 21:33:41
>615 あれはある種の踏絵だと思う。
619 :
デフォルトの名無しさん :05/03/17 07:18:23
GNUは最悪のコードの代表の一つだよ
MINIXのソースはいいらすぃ
いいも悪いも、大きいのも小さいのも、沢山読むことが重要だと Pragmatic ProgrammerであるDave Thomasは述べている。
GNU より djb の方がひどい
624 :
デフォルトの名無しさん :05/03/17 16:38:56
Eclipseなんてどうですか?Javaですが。巨大すぎるけど、効率よくブラウズしていく方法ってある?
625 :
デフォルトの名無しさん :05/03/17 22:28:06
今までに見たソースコードで一番感動したのはAVL木のコードというかアルゴリズム
626 :
デフォルトの名無しさん :05/03/17 23:00:41
四季のソースコードはすばらしかったよ。
while(TOT)//~~ { exit(-1); }
スネークカモン?
レッドマジック見てみたい!
そしてすべてがデブになる。
read.cgi見てみたいなー。 あの日のソースは見たことあるけど今はどんなになってるんだろ?
jakartaのコードはハンサム!鮮やか ちんことかサラッサラなんだろうなっとか思っちゃうぐらい
これとか、 char main[] = "U駆\203\3544ーLS\210Eフ\210Eミーrウa\210Eモ\210Eユ\210E\353イsアeー" "lVWニEヘo\210]ホニEマdニEムiニEメb\210]ヤニEヨyニEラAニEリ\0ニE鑾\210U驤M\352ニE\3543ニE" "\3552ニE\356.ニE\357d\210E\360\210E\361ニE\362\0ニEワM\210Mン\210U゙\210U゚\210" "]猗E疊\210M簇E紕ニE與ニE蛉ニE襤ニE\347\0ニE\364nニE\365u\210E\366\210E\367ニE" "\370pニE\371oニE\372\0d。\0\0\0\0\213\0\2008\377u\371\213@\4%\0\360\377" "\377ケMZ\0\0-\0\20\0\0f9\bu\366\211E\374\213E\3743\366\211u\374稀<記\1x" "\3ネ飢 及\30\3ミ\205\377v:\2134イ閤フ\3\360\212\36\204ロt\178\37u\v垣\1GF" "\204ロuJ\5\200?\0u\5\200>\0t\20丘\374及\30F;\367\211u\374rヒ\353\3丘\374" "飢$紀\34\215\24r3\366f\2134\2\215\24ア\213\f\2攻鏗\3ネ\377ム稀<ヌE\374\0\0" "\0\0\213|\1x記\a\30\3\370\213_ \3リ\205ノv8偽\374\215uワ\213\f\223\3ネ\212" "\21\204メt\178\26u\v碍\1FA\204メuJ\5\200>\0u\5\2009\0t\16貴\374\213W\30A" ";ハ窺\374rネ庚\364j\0攻\364Q軌$R偽\374j\0\215\fQ3メf\213\24\1軌\34\215\24" "窓\f\2\3ネ\377ム_^3タ[\213\345]テ";
>>634 実行したけど何もできない
何もしないプログラム?
どうやって実行までこぎつけたの? ダメだ俺は言語すらわかんね
実行したらOctane(MIPS IV)に入れた俺のNetBSDのHDDが強制フォーマットされた・・・ 悪質な犯罪だ、ゆるさねえ
IOCCC 見れば?
>>638 匿名掲示板に落ちてるほぼバイナリなプログラムを実行するお前に感動
マジレスと思うやつに感動
感動するお前に感動
こんな下の方まで見て回るおまいらに感動
感動ばっかりで萎えた俺様に感動
ここは小泉スレデスカ?
空気を夜目ないお前に感動
649 :
デフォルトの名無しさん :2005/11/21(月) 15:36:38
h
650 :
デフォルトの名無しさん :2005/11/21(月) 17:49:32
PC-88(Z80)で自己書換え、命令中へのジャンプを駆使して完全リロケータブルなオブジェクトになっていた16進ダンププログラム
651 :
デフォルトの名無しさん :2006/02/16(木) 23:58:21
Cで改行含めて85バイトで自分自身のソースコードを標準出力に出力するプログラム。
652 :
デフォルトの名無しさん :2006/02/17(金) 00:18:35
Cじゃないけれど。 JScript.net: import System;var q='"',s="import System;var q='{0}',s={0}{1}{0};Console.WriteLine(s,q,s);";Console.WriteLine(s,q,s); JScript 5.6(WSH): var c='"',s="var c='0',s=010;WScript.Echo(s.replace(/0/,c).replace(/1/,s));";WScript.Echo(s.replace(/0/,c).replace(/1/,s));
頭悪いのが多いなpっ
654 :
デフォルトの名無しさん :2006/02/17(金) 09:50:32
>>652 Cでもそんな感じです。#includeを書かなくていいので、少し短くできます。
>>654 某 C コンパイラは、
0バイトの .c ファイルをコンパイルすると、
何も実行しない .exe を作ってくれたけどな。
処理系依存だが、これが最短。
int main=0xc3; これ
おおすげーどうなるのそれ?>656
>>657 C言語の場合、mainって予約語だから変数名で使えないからエラーなるんじゃねか?
662 :
デフォルトの名無しさん :2006/02/19(日) 16:15:41
エラーじゃなくて大方のコンパイラは警告を出すな
663 :
651 :2006/02/20(月) 10:42:54
>>655 >某 C コンパイラは、
>0バイトの .c ファイルをコンパイルすると、
>何も実行しない .exe を作ってくれたけどな。
>処理系依存だが、これが最短。
やはりなにか出力されないと…
>>656 >int main=0xc3;
>これ
VC++6とgcc3.3.3でコンパイルして、どちらもワーニングもエラーも出ませんでしたが、
実行しても何も出力されませんでした。"int main=0xc3;"と出力されることを期待したのですが。
はあ?
665 :
651 :2006/02/20(月) 13:35:43
失礼。話が切れてたんですね。
はあ?
通りすがりだが・・・
>>651 Cで改行含めて85バイトで自分自身のソースコードを標準出力に出力するプログラム
を受けて
>>652 >>653 >>655 がそれぞれレスしていたところへ、なぜか関係ない
>>656 が出てきたので
>>663 が「それ自分のソースコード出力しないじゃん」と指摘、
>>664 >>666 とバカに絡まれて
革磯スな展開。
自分のソースコードを出力するコードって、構造的に f(a,b) -> a b b みたいな変換を a b で
定義して、引数として b をあたえて a b b にする、というパターンが定石だけれども、
ほかのやり方はあるのかな(
>>655 は別として)。
c=chr(34):s="c=chr(34):s=QPQ:msgbox replace(replace(s,chr(81),c),chr(80),s)":msgbox replace(replace(s,chr(81),c),chr(80),s) msgbox createobject("scripting.filesystemobject").opentextfile(wscript.scriptfullname).readall
#!/bin/sh cat $0
#!/bin/cat
>671 うまい!っていうか670が間抜けじゃん @type %0
>>667 それはみんな分かってたというか、
>>658 や
>>663 のアホっぷりに唖然としてたというか。
特に663は突然HDDをフォーマットされても文句は言えない。
このまま延々と続くのも面白いと思った +++[>+++++<-]>[>+++>++++++>++++>+++>++++>+++>++++++<<<<<<<-]>-->+>++>+> >>+++<< <<<<...>.>.<<.....> >> >.>.>.<<<<.<.>.<<...> >.<<......> >.<<....> >.<<...> >.<<.... > >.<<...> >.<<......> >> >.......>.>.<<<<.> >>..<<<.<<.> >.<<..> >.<<.> >...<<...> >> > ......<...<.>.<.>.>..<.....<....>.<.>.<.>.>....<.>.<.<.>.>..<...<..>.>..<..... .<..>.>..<....<..>.>..<...<..>.>..<....<..>.>..<...<..>.>..<......<....>...... .<.>.<.>.>....<.<...>..>...<.>..<.<..>.>..<..<..>.>..<.<..>...>..<...<....>... ...>.<...>.<.<.>.>.<.<.>.<.>..>.<.....>.<....<.>.>.<.<.>.>.<.<.>.<.>....>.<.<. >.>.<.>.<.<.>.<.>..>.<...>.<..<.>.<.>..>.<......>.<..<.>.<.>..>.<....>.<..<.>. <.>..>.<...>.<..<.>.<.>..>.<....>.<..<.>.<.>..>.<...>.<..<.>.<.>..>.<......>.< ....<.>.......>.<.<.>.>.<.<.>.<.>....>.<.>.<...<.>..<.>...>.<.<.>..>.<.>.<..<.
>673に書かれてしまったが
>667
>なぜか関係ない
>>656 が出てきたので
出てきちゃいかんのか?「自分のソースコードを出力するスレ」でもないのに
>663
>"int main=0xc3;"と出力されることを期待したのですが。
これに呆れてるんだがなぁ
オマエも期待したクチかw>667
どっちがとは言わんが流れが読めていない、または区別できていないやつが居た。それだけだろ。 ↓感動したソースコードよろしく。
>>667 > なぜか関係ない
>>656 が出てきたので
>
>>663 が「それ自分のソースコード出力しないじゃん」と指摘
アンカーもないのに関係があると思うのもどうかと(ry
どっちがとは言わんが流れが読めていない、または区別できていないやつが居た。それだけだろ。 ↓感動したソースコードよろしく。
BR14ってなんだっけ? 元F系のプログラマで、当時使った記憶があるんだか 遙か昔の事難で忘れてしまった。
ブランチ14 (BRANCH 14) すなわち14番レジスタが保持しているアドレスにジャンプせよという命令。 ちなみに14番レジスタはサブルーチン等の戻りアドレスを格納することが多い。
リンクレジスタってやつやね
俺の友達が作った宿題の解答 #define (ry o.h #define 交換 kookan #define 値を変えれる引数 * #define 値of * #include <stdi(ry void 交換(int 値を変えれる引数a, int 値を変えれる引数b); int main() { int a, b; a = 0; b = 3; 交換(a, b); printf("a = %d\n b = %d", a, b); return 0; } void 交換(int 値を変えれる引数a, int 値を変えれる引数b){ int n = 値ofa; 値ofa = 値ofb; 値ofb = n; } #define (ry はギャグなんだろうけど #define 値を変えれる引数 とかは、やめろっていっても本気で止めないから怖い。 エラーでまくってて笑えたw
>684 > 交換(a, b); ここは > #define 場所of & > 交換(場所of a, 場所of b); みたいな感じじゃないのか
>>685 いや、俺に言われても困るけど。
てか#defineでは日本語使えない
まともなプリプロセッサなら日本語が使えてもおかしくない。 VC2005ってどうだっけ?
>687 識別子にも日本語が使えます
MS ってファイル名や SQL Server はカラム名にも 日本語使えるしね。
690 :
デフォルトの名無しさん :2006/03/18(土) 16:57:26
>>684 >#define (ry o.h
は、
>>684 によるただのtypoかね?
でもこれは面白いな。気合い入れてソース解析しようとファイル開いて、
いきなり「(ry」なんてのを目にしたら激しく脱力しそうだ
691 :
http://www.vector.co.jp/soft/win95/util/se072729.html :2006/03/18(土) 18:01:35
TextSSの64bit化ってできない? ソースあればコンパイルできるんだけど
692 :
◆sExY692.NY :2006/04/03(月) 20:46:57
char itohc(int i) { return "0123456789abcdef"[i]; }
>>692 よく書くコードだな
int hctoi(char c) {
return string("0123456789abcdef").find(c);
}
も同様によく書く。
>>693 そのくらいまっとうに実装しろよ。
その汎用的で使いまわしのきく関数の実装を高々5行サボったことによる
可読性とパフォーマンスの低下は無視できないぞ。
パフォーマンスはともかく、可読性が低下しているとは思えないんだが。
こんなコードをよく書くようなプログラマはマジいらね。早く会社辞めてくれないかな。
>694 より可読性が高くよりパフォーマンスの高いコードとやらを出してはくれまいか
あのコードが文字コードに寄らないなんて考えてもいないんだろうな
中身一行の関数の可読性ってなんだろうねw トリッキーなことやってるならともかく、やってないし
しかし[0-9a-f]以外の入力をとると戻り値が……
それは、入力がそうならないとはっきりわかってるなら使えるし そうでなければ、ダメというだけで 本質的問題じゃない
>>699 慣れた人間にはわからないトリッキーさと言うのもあるよ。
俺が
bool a = f()==b;
って書いたら(もちろん変数名はこんなんじゃないが)
そんなトリッキーなコードは引き継いだやつが困るかもしれないからやめてくれって言われた。
・比較式の結果を代入してる。
・= と == が同じ行に現れる。
・括弧がついてない。
どれも言語仕様上当然の使い方だし並のプログラマがこの行を見てコンマ1秒も悩む可能性は無いと思うが、
(むしろ俺は式の結果に名前をつけて変数に保存することで可読性の向上を狙った)
引き継ぐ人間がプログラミング初めて一週間かもしれないんだからわずかでも混乱の可能性があるコードは書くべきではないって言われたよ。
そんなやつが保守なんかするな思うが、現実の問題としてそういうのもいるからな。
「トリッキー」「やめてくれ」はバカだな 「括弧をつけてくれ」なら許せる
比較の結果を論理値として扱うことに慣れてないってことなんだろうが、 なんというか、認識が幼稚なんだね。物を正しく理解せず見慣れた形だけ 相手にするというのでやってるとそうなるのかな。 まさか&&は使わずにif文のネストで書けとかは言われないよねw
そんなのはアマチュアしか書かないよ。もし本当にプロなら恥ずかしいと思えよ。
感動したコードスレなのに
なんで皆でヘタコード晒してるんだ?
>>693 そんな性能でないコードを「良く書く」って公言してる人
初めて見ます田。こっそり書く人は多くいるだろうけど。
>>708 >>693 はナニを重視して書いたコード?
「良く書く」って、どれくらいの頻度?
俺はあんな酷いコード書いたこと無いよ
誰だってそうだろ?
>>708 >>693 はナニを重視して書いたコード?
「良く書く」って、どれくらいの頻度?
俺はあんな酷いコード書いたこと無いよ
誰だってそうだろ?
独りよがりにならないように、常に自省する心を持とうよ。 チーム開発してる職業プログラマなら、 間違い、勘違い、タイプミスを起こしやすいものを 極力排除するよう自然となっていき、間違っても トリッキーな記述なんかしなくなるもんなんだがなあ。 もしかして、一人で好き勝手に開発できるような職場なのかな?
>>710 可読性、可搬性、拡張性。
よく書く = この手のことをやらないといけないことになったらまずこっちを書く、くらい。
ここがボトルネックだと分かってから、アスキーコードに依存していいか確かめて書き直す。
c - '0' 的なアプローチじゃ例えばみたいな拡張はできんでしょ。
int hctoi(wchar_t c) {
const wstring s(L"0123456789abcdef");
return s.find(c);
}
int hctoi(char c) { switch( c ) { case '0': return 0x0; case '1': return 0x1; case '2': return 0x2; 中略 case 'f': return 0xf; default: return -1; } } ちょっと長いが馬鹿でも読めるしパフォーマンスも良い。 wchar_tへの変更も容易だし不正な文字が渡されたときの戻り値を -1 以外に変更するのも楽。 どうだ完璧これしかな〜〜い!!1
>>712 態々一時オブジェクトを割り当てるコストに
見合うメリットがあるとも思えん。
int hctoi(wchar_t c) {
static const wchar_t s[] = L"0123456789abcdef";
const wchar_t *p = wcschr(s, c);
return p? p - s: std::wstring::npos;
}
1行を20行にしておいて、ちょっと長いで済ますな と、ちょっと思った 趣味で書いたプログラムの中の、1関数を 今の仕事のコーディング規約に沿って書いてみたら もとが5行なのに、100行になったのを思い出した
そんなに汎用性とか可読性とか考えるか? 俺なら絶対、c-'0', c-'a'+10ってやるな。
>>716 君にはそれで十分かもしれんが、そうでない人もいるんだよ。
>>714 もともとパフォーマンスは気にしてないので割り当てるコストはデメリットにならない。
一時オブジェクトを作るなといいつつ、誰もこれを書かないのに絶望した int hctoi(char c) { const char* hex = "0123456789abcdef"; return std::find(hex, hex + 16, c) - hex; } 効率云々うるさいのに、誰もこれすら書かないのに絶望した int hctoi(char c) { static char hex[] = "0123456789abcdef"; static bool initialized; if (!initialized) { std::sort(hex, hex + 16); initialized = true; } return std::lower_bound(hex, hex + 16, c) - hex; } これはたぶん遅いけど
上は誰でも思いつくし下は頭悪すぎ。
でも誰も書かないのは何故かね?
書 く ま で も な い か ら
一時オブジェクトを作るなと言っておいて? 恒久オブジェクトを作ってごまかしておいて? しかもstaticローカルだから、毎回初期化チェックが入るクソコードなのに?
int hctoi(char c){ return c%('a'-10)%'0'; }
ここは学生さんのお遊びプログラマの集いですか? 職業人としては、そんなコードなんてちゃんちゃらおかしいです。
sub calculator{ eval $_[0] } print calculator( "(10 + 200) * 2");
>>703 比較式の代入は慣れだね。慣れてないと読めない。
括弧は、あった方がよくね?
hctoi を自分で書かなくてはならない のが嫌だなぁ って言ったら荒し?
gnuのstrcpyには感動した。 charポインタをintポインタに変換して4バイトづつコピーみたいにしてた。 アラインメントの関係で最初と最後には特別な処理が必要だけどね。
メモリ資源の少ない環境なんかでやったらヌッころされちゃうだろうけど、 俺は hctoi みたいなヤツは256バイトのマッピングテーブルを用意しちゃう。 一見馬鹿げてるコードに見えるだろうけど、アホですら一瞬で理解できる可読性もあるし、 メンテナンス性も高いし、ガチで速いし、実用性抜群だと思ってるんだけど やっぱり「一見馬鹿げてるコードに見える」が故になかなか理解を得られない。
>>735 テーブル参照で早いのは昔のCPU
今のCPUじゃ逆に遅くなる。
>>736 実測したら条件判断のヤツより速かったとかいう書き込みをどっかで見たぞ。
確か、vc の文字種判断を行う関数で。その関数、ヘルプでは同じ機能の
関数を自作しても標準の関数より速くなることはないから標準の関数を
使いましょうみたいなことが書いてあるんだけど、実測したらテーブル参照
のほうが速ぇじゃねぇか・・・てな、内容の書き込みをどっかで見た。
キャッシュに載らない云々の話は無くも無いけど 基本的にはテーブル参照の方が速いだろ。 まさかとは思うけど、ジャンプテーブルと混同してないよな?
いまのCPUっていうが、そのレベルで速度を気にするようなシビアな ものを書いてる奴なんているのか? そんな奴は、こんなスレの情報には頼らず自分で最適化してる だろうな。 つまり、気にすんなってことだ。
>>739-740 そだね。
>そんな奴は、こんなスレの情報には頼らず自分で最適化してる
そんな時はいろんなコードを実測比較が原則(もちろんホットスポット
をプロファイラで調べた上でね)だから、まぁ、テーブル参照もその
候補の一つってことでいんじゃね?
743 :
:2006/06/11(日) 12:21:24
コンパイラのソース。 科学技術の結晶だと思った。
コンパイラ屋になりないなあ。
747 :
デフォルトの名無しさん :2006/06/12(月) 18:04:17
>747 マジで聞いてるの?
>>744-747 コンパイラを作ってます。
文字を読み込む関数作るだけで結構な時間食いました。
再発明乙
↓がんばって書いてみました。批評求ム。 int hctoi(int c){ return ((0x90 >> ((c & 0x40) >> 4)) & 0xf) + c & 0xf; }
752 :
デフォルトの名無しさん :2006/09/07(木) 21:15:46
>>751 シフトは重いと思う。もしかすると
return((c>='A')?(c-'A'+10):(c-'0'));
のほうが軽いかも
速度は無視して芸術点狙いで int hctoi(int c){ return (c|32)%39-9; }
((c>('@'))?(c-('A')+10):(c-('0')))
>>752 ,755
元のと違って英小文字で動かなくなるから気持ち減点
もう顔にしかみえん('A') ('@')
(c>('@'))?((c>('_'))?(c-('a')):(c-('A')))+10:(c-('0'))
return(c+('w')-('m')-((c>('@'))?((c>('_'))?('a'):('A')):('0')+('o')-('e')));
ところどころに入ってる ? がいい味出してるw
かわいいなw
762 :
デフォルトの名無しさん :2006/09/10(日) 12:05:44
丹羽信夫のCマガ連載(タイトル忘れた)で、顔文字を使ってコンパイルが通る範囲内で 物語風にプログラムを書くってのがあった
何年前のスレだよ・・・
GNUのインデントに引いた覚えはある
GNUの括弧の位置にどんな根拠があるのか知りたい
海外だと「BSDスタイル」とか「K&Rスタイル」とか名前が付いてるけど、 日本にも「つくばスタイル」とか「北陸先端スタイル」なんてのはないんかねぇ?
>>765 エディタのTAB幅を8にしてみれば理解できるよ。
そういう問題じゃないだろ。
1画面に入る情報量をとにかく減らそうとしているコーディングスタイルを見たことがある。 波括弧はどんどん改行。 インデント幅は8。80桁で改行。 文の区切りが分かりにくくなるから、1文ごとに空行を入れる。 if () { } else if () { }
>>769 「行あたりの価格」とか、くだらない事情があるんだろう。
>>769 elseとifの間に改行入れられると分かりづれえ・・・
いや、厳密な文法的には else if なんてものは無いのだから if () { } else { if () { } } と書いて、さらに行数を稼ぐべきだったのでは。 そんなに違和感無いし。
それやるとインデントが深くなりすぎるんじゃないか。 CにはLispのcondみたいな多重条件分岐構文がないからな。
そういう行をかせぐプログラミングスタイルの場合 コメントを全角文字で飾ったりしませんか?
しかもウィングコメントじゃなくボックスコメントで、とか。
そんなもん ; ; ; ; ; こうすりゃいいのに
行単価どころか文字単価だったら、トライグラフで。 ??=include <stdio.h> ??=include <stdlib.h> int main(int argc, char *argv??(??)) ??< printf("Hello, world.??/n"); return EXIT_SUCCESS; ??>
>>777 オンラインヘルプとしてマニュアル一式をprintfの引数として内蔵させれば簡単じゃ?
意外と実用的だし,マニュアルきちんと書くことは悪くないと思われ。
doxygenとか使おうよ
確かに空文とかマニュアルつっこむとかは ばれるだろうから無理だな 意外と難しい問題だ 奥ゆかしく行を増やす 君ならどうする #ifndef NDEBUG は無しな
一時変数を大量に使ってみる。 int a = (b + c) * d; なら int bc = b + c; int a = bc * d;
実は全部asm文とか。
変数名に漢字を使って逆に文字単価を下げてみる
UTF-8なら1文字あたり3バイトに。
>781 int i = 0; int a = 0; int bc = b; for( i = 0; i < c; ++i ) { bc++; } for( i = 0; i < d; ++i ) { a += bc; }
786 :
デフォルトの名無しさん :2006/10/13(金) 22:25:08
if ( 0 ) { /* ここに適当なことを山ほど書き込む */ }
誇張なしで一関数千行オーバー。 感動と同時にぶんなぐりたくなった。
>>787 んなもん内容によるでしょ。行数だけで判断できるお花畑のほうがよっぽど
疲れた。寝る。
#define private public
まあ全部publicにすれば動くでしょうけどねぇ
>>788 >んなもん内容によるでしょ。
そんなゴミクズコード、見るまでもない。
>788 まるでこのスレを全否定するかのようなレスだな
793 :
デフォルトの名無しさん :2006/10/18(水) 17:52:35
ミートソース
つまりそれはスパゲティソースということか
796 :
デフォルトの名無しさん :2006/10/21(土) 17:56:15
Apple ][のROMの中身。
アセンブリで mov eax,0;1clock を xor eax,eax;3clock で書き換えて3バイト縮める方法には感動したが、それより感動したのが sub eax,eax;1clock に書き換える方法。
その手の、同じことするのにこうやるのが最適っていう情報 どっかまとまってるページないですか。
CPUによって違うからねぇ。
486ぐらいまでは実行サイクルって意味あったけど もう、内部RISCで並列実行だから、 現状で重要なのは前後関係のある命令とない命令の配置でしょ。
つーか、xorがsubより時間がかかるCPUなんて存在しないと思うが。
どちらも2入力1出力だが、xorは各bit単位で完結するのに対し、subは他のbitに影響する。
もちろん、ほぼ全てのCPUで、どちらも同じclockで実行できるだろうけどね。
>>797 には、感動する前に、もう一度clock数を確認してみることを勧めるよ。
廻されたbatファイルに mkdir con.\ と書かれていたので気になって実行すると 名前conのフォルダが作られていた事
>>803 うわ、すげ、まじで作れた。
で、これどうやって消せばいいんだw
適当にやってみたけど消せねー
>>804 rmdir con.\
したら簡単に消えたが,これではダメなのか?
>>805 thx!
rmdir conとしつづけてうまく行かずに悩んでた。
>>806 他の禁止名も.\つけると作れる。
Dos & Win:
AUX
CON
PRN
NUL
Dos:
CLOCK
Win9x:
COM1 〜 COM4
CLOCK$
LPT1 〜 LPT9
XMSXXXX0
WinNT:
COM1 〜 COM9
LPT1 〜 LPT9
A$=inkey$ x=x+(a$=36)-(a$=38) y=y+(a$=37)-(a$=39) こんな感じのを中学生のとき見て感動した
>>808 俺は、ベーマガで覚えた
比較演算子でtrueなら、1を返すのに感動したよ
BASICは0と-1じゃなかったか?(pascalも) 要は全bit0と全bit1で。 Cが特殊だったイメージ。
BASICの頃は、true/falseの戻り値は機種依存だったような記憶が。 移植やってて動作が逆になったり
0がfalseじゃないのは極悪だなぁ
C覚えたての頃に見たstrcpyの実装。 今見たら「何だよこれ可読性考えろよ」って毒吐くんだろうけど。
strcpyはそれほど複雑でなくしかも色んなプログラムで大量に使われるものだから 可読性を犠牲にしても高速性を追求する価値があるものの一つじゃないか。 gccなんかはビルトインでインライン展開しちゃうしね。
>>813 strcpyの実装コードを見て、読みやすく短くて凄いと思ってしまった俺に対する当てつけか?
オープンソース系で感動できるコードってないの? FirefoxのはNSとかついててしねよって思ったけど
オプソは相当強力にコンベンションがないとゴチャゴチャする一方だからなあ……
while(*dst++ = *src++); 感動した
>>818 でも、それって無意味に可読性を犠牲にした典型的な悪い例として
槍玉に挙げられるようなコードだぞ。
>819 感動するだけならいいんじゃ?真似すんなよ初心者は、ってことで。
>>820 そんなコードは初心者だけじゃなく、上級者も避けるだろ、フツーは。
ようは、決していいコードなんかではなく、邪悪なコードなんだよ。
老婆心かも知れんが、そんな邪悪なモノに感動しているのはどうかと思うわけよ、ロートルとしては。
何言ってんだよ 可読性高いぞ
俺も、プログラマとしてはもう年だし、そろそろ上流行程の職へ進もうかと考えてるんだが、
>>822 みたいなヤツを見ると、このまま先へ行ってしまっていいものかと不安になる。
*d = *s; while(*d) { d++; s++; *d = *s; } これ可読性高い?
for(int i = 0;src[i++];dst[i]=src[i]); ならちょっとはマシ?
ほらな?
こーゆー間違い犯すヤツ(
>>825 )がでるだろ?
これこそが
>>818 が邪悪なコードだと言われる所以。
>>824 視点の違いというの理解してくれ。
ある視点においては、確かに
>>818 のようなコードのほうが
可読性が高いのは俺も認めるし、複雑さを隠蔽しているという点に
おいても評価されるべきかもしれん。
しかし、その複雑さの隠蔽が
>>825 のようなミスを招く。
つか、もう古典的な書籍だが、Writing Solid Code ぐらい読んどけ。
要するに馬鹿除けってことだな 愚直でもだれでもわかるコードを優先しろってことだ
>>826 M$のソフトのバグの多さとか見てると説得力全然無いんですけど
MSのソフトはバグが多いとか、そんなことバカなこと言ってるヤツがまだいたのか。
>>818 の様なコードが問題になるのは、"可読性"ではなく"安全性"
MSのソフトにバグが多いというのは間違い、安全性に問題が多いと言うのが正しい
まあ、MSに限った話じゃないけどな、
>>818 の様なコードがC言語の標準ライブラリとして存在しているのだから...
↑キモイ、アンチMS厨があらわれた。 いつも思うことだけど、この手のキモイ、アンチMS厨って 自分たちがやってることが逆効果でしかないってことにどうして 気づかんのかねぇ。まぁ、だからこそキモイんだけどさぁ。
833 :
832 :2007/01/14(日) 21:23:59
>>832 マジレスすると、どっちかと言うとMS嫌いなんだけど、
Windowsがソースコード何行あるか知らないけど、良くこんなの作れるな〜と本気で思ってるよ
一応これでもソフト開発を生業としてるけど、Windowsよりもはるかに少ないソフトでも
バグはあるからね・・・・。
>832の作るソフトはバグが無いんだろうね!!って言うかプログラム作った事が無い?
↑この人、マジでチョーキモイんですけど。 騙りまでやってなにがしたいんだが、さっぱり意味不明だし。
あ、自演か。
837 :
825 :2007/01/15(月) 02:17:18
なんか俺が投下したアホコードがいつのまにやら延焼を広げている…… あんまりケンカすんなよ、おまいら
っつーか、Cの思想的には
>>818 はとても正しいでしょ。
記述量も少ないし。
2chの死相的には人を見下して叩くのが生き甲斐の香具師が多いからなぁ
\0が来なかったらと思うと恐ろしくて眠れません
それじゃ文字の検索すらできないよ
オーバーランして\0が来ないことよりも ワーム埋め込まれることの方が怖いって話?
>>838 文法は、正しいが、思想的には正しいのか?
C言語の思想って何だ?
記述量少ないのはいいね。
だけど、やはりわかりにくい。
……と思ったけど、どれにも関係ないような。
当時のCコンパイラの実装では、
>>818 と書いた方が
効率的なコードが生成されたからとかじゃね?
最適化技術が発達した今のコンパイラではどうかわからんけど
確か、当時のUNIXを動かしてたプロセッサに 読み取り後インクリメント等の、*p++に相当する命令があって それを生かすためにCの文法をそれにあわせて作った というようなことをどこかで読んだ気がするが 真偽は未確認。
>>847 それ、リッチー(K&RのR)が否定してたはず。
結局、Cの思想じゃなくて
>>838 の思想だったってことでFA?
>>849 タイプ数を減らすことを、C の設計目標のように書いた記事を、80年代に何度か読んだ覚えがある。
>838 の思想というか、>838達の妄想かも?
>>847 それは ?: 三項演算子の事だったと思う
タイプ数減らしをノルマのように科すと汚いソースになると思うが、 タイプ数を意識的に増やすと機械生成のように冗長で読みにくくなると思う。 MFCとかのRADで吐いたようなダラダラ長いのもまた疲れるw
>>818 のコードは、現在でも早いし、コンパイル後のサイズも小さいはずだよ
ただし、CPUの高速化で無意味にはなっているがな
今のトレンドは、早いこと、小さいことよりも、安全であることだろ
>>853 >>818 のコードは確かに遅くはないだろうが、
別に等価な他の表現にくらべて元から優位性があるわけではない。
>>854 そりゃ何を等価と定義して優位性を何で測るかによるだろうよ
while (*((int *)dst)++ = *((int *)dst)++); 速度も危険度も数倍に
正直、読む気がしない。
>>859 解ったフリしてないで safe 或いは proof で終わる単語が幾つあるか
探して来い脳足りん。
馬鹿あらわる
イディオムとして記憶してる奴にはな。俺もだが。
>>818 を理解できない、読みにくいというのは、
Cプログラマとして前提が間違ってると思う。
理解していてはじめてCプログラマなんであって。
んで、理想論でバグの種を量産するわけだ。
プログラム始めたばかりの頃「not 演算子」の存在を知って感動した。 それまでいちいちTrueだったらFalse、FalseだったらTrueを返すif文書いてたので そのめんどくさい数行のif文がたった1語で表現できる簡潔さに美しさと感動を覚えた。
>>818 のコードは、この世の中で最も素晴らしい物だと思う
>>818 のコードを理解することで、C言語の良さと邪悪さの両方が判る
ほら、感動的なコードに見えてきただろ?
そもそも「感動する」のに安全性が関係するのか?
そういやそうだ。 そんな評価基準を語るスレじゃないな。
ま、
>>819 が文句をたれるだけで、実際のコードを提示しない時点で
そいつがどんな奴か気づくよな。普通・・・
人間が言う「普通」は、全て「俺(私)の脳内では」に置換できる
メタレベルの感動だが プログラムというものが上から下へ一行ずつ実行されるものだと初めて知ったとき。 いまだかつてこれ以上の衝撃はないかな。
ノイマンならしょうがないね
それ系だと、 マルチタスクの仕組みに気付いた時は衝撃だった。 自力でコンテキストスイッチするプログラムを書いた時、 とても興奮したのを覚えてる。
そういう興奮って時代が下っていろんな仕組が用意されてくると味わうことが難しくなるね。
そういう意味では、BASICの命令文をマシン語で拡張するすごい人がいる、 というのしか知らなかった頃に、「命令を自由に定義できる文法がある言語」 の紹介記事を読んだときは驚いたなー。ちなみにFORTH。初めて買ったOh! MZの言語紹介記事にて。小6だったか中1だったか……
俺の場合はLispのmacroが衝撃だった マクロアセンブラなんかは知ってたけどパワーが段違い
イベントドリブンなんか感動したなあ
イベントドリブンやLispのマクロなんかはいまの若者も感動してそうやね。
マクロは強力すぎ。 だけど、マクロに感動するまえに再帰に感動するのがセンスのいい子
あぁ確かに そう言えば Ackerman 関数なんて恐ろしいものもあったな
コールバックも感動もんかな。 自分で制御してるのとは違う流れになるって辺り。 昔のBASICでも、ONなんとかGOSUBとかあったけど。
上から下へのシーケンスフローの手続き型プログラムから 状態遷移のイベント駆動型プログラムに移行したときは 最初は何が何処から始まってどういう風に流れていくのかさっぱりだった。
>>881 あんな簡単にトンデモないものが作れるのは衝撃だった>アッカーマン関数
char hoge="あ"; putchar(hoge);
変なコンパイラだな
いったい何を表示させたいんだ
} / o ゚.私はメーテル… . 〉'' ,、,,,__ ノ} 。 :∴ 機械の体が欲しいのなら i ムツッ=,ニ_゙゙"''‐- 、、,,,__,,..,,,.. -‐'''"/ 。 X,, 999に乗りなさい l {{ ハ` `゚'~` ,‐-,ニ二ヾ,,_ヽ / i'(_,.l\ 〉、`ハ } ` `゚'゙゙” }}'゙ ,' ti=ti、iiヽ . / ハヽハ ノ // { ゙ヾヽ} / /ハヽヘ `、_ (Cノ/ / ハ ノラ / // } Y゙\ ` Cノイ / \ 〆' . / / / / ,ゞ,, `-‐ ''´〆⌒ヽ{ ,' ハ \ ;''"''ヾノ /_,/ `'' ァ''7/ \l l ヽヾ \
コピペにレスするのもナニだけど、 このスレ的には、その機械の体を動かしてる プログラムのソースを見せろ、と。
>889はエロ杉
プログラムのソースで、性的興奮できるのか?
そりゃーコード解析すれば何処が性感帯かとか、どんな体位が好みとかわかるじゃん。
デバッガにかけて弄り倒す方が楽かも
デバグが上手い人って、SEXも上手そう
ナンパだろ。極意まどない、ひたすら打ちまくるだけ。
896 :
デフォルトの名無しさん :2007/08/14(火) 21:42:55
bool Jap; char MSG_cntopnX[] = "can't open: %s: %s\0ファイル %s がオープンできない (%s)"; (中略) char *chooseMsg(char *s) { return (Jap ? s + strlen(s) + 1: s); } LSI C-86試食版に同梱されていたcppのソースより これは面白いと思った
全部の行にコメント付
import *;
>>896 実行時の効率もソースの見易さも悪い感じ
CからC++に移行してSTLのソース初めて読んだときだな。 typedefとconstの使い方に衝撃を受けた。 型を引数にして型や定数を計算できちゃうなんて!??
real :: x(0:4) = (/0, 1, 2, 3, 4 /), y(1:5) y = x**2 - 2*x + 1 print *, y forall (i=0:3) x(i+1) = x(i) print *, x
f :: (Ord a) => a -> Bool g :: (Ord a) => a -> a filter (f).map (g) --filter (>0).map (+1) [-2,-1,0,1,2] 〜> [1,2,3] とか qSort :: (Ord a) => [a] -> [a] qSort [] = [] qSort (x:xs) = qSort [w | w <- xs, w<=z] ++ [x] ++ qSort [y | y <- xs, y>x] --qSort "あいえおう" 〜> "あいうえお" とかは感動した
ソースだけ公開されても頭悪いからどこが感動したのかわからん。 詳しく説明してくんなはれ。
勉強しなさい
905 :
デフォルトの名無しさん :2008/01/25(金) 18:05:50
×感動した ○ワラタ
Sub Func() End End Sub
一番かどうかわからんが。WTLの0x042444C7のやつ。 自分でも試しに書いてみたが、え、動くんだ? とか思った。
908 :
デフォルトの名無しさん :2008/01/25(金) 23:10:33
mainの引数argv[0]なんて使わねぇのにこんなん渡すんじゃねぇって 昔から思ってたんだが、busyboxのソース見て感動した。 多分こんなんで感動するの俺だけなんだろな。
>>907 マシン語を直にソースへ埋め込んでるのか
ネタとしては面白いけど可搬性無いね
DUnit(Delphi用のユニットテストライブラリ)にて {$IFNDEF CLR} procedure TAbstractTest.CheckMethodIsNotEmpty(MethodPointer: pointer); const AssemblerRet = $C3; begin if byte(MethodPointer^) = AssemblerRet then Fail('Empty test', MethodPointer); end; {$ENDIF} 空のテストメソッドをどうやって判別してるんだと思ったら、asm の ret で判断しててウケタ
ソースじゃないんだが、はじめてNextのインターフェースビルダーを見たときは脳内麻薬でまくりだった。
>>908 UNIX業界行くとviとかsendmailとかargv[0]により挙動の違うプログラムは多い
>>911 今でもMac用として残っているので是非使ってやってくれ
漏れはWebObjectが今でもすごいと思ってる
再帰を使ったルーチンは感心できるのが多い気がする。
末尾再帰除去をきちんとやっているqsort()のソースを見たときは結構感心した。
main()を再帰呼び出ししているプログラムを見たときはC言語の仕様に感心した。
913 :
デフォルトの名無しさん :2008/01/27(日) 05:49:54
おまえら羨ましすぎる。 COBOL歴20年越えるがCOBOLコードで感動した覚えがない。 背筋が凍りつきそうなコードは何度か出くわしたが。(これをメンテしろってか)
>>913 多分、お前の書いたCとかのコードを見たら、周りの人間が背筋の凍る思いをするんだろうな。
>>914 まあ、俺に「Cで書け」と頼まれる事もないがな。
頼まれても「できん!!」としか言えない。
>>915 普段どういうコード見たり書いたりしてるのさ
MFCの腐ったコードになれしたしんだころ Qtの対照的なコードにほれた記憶がある。 もちろんGUIをつくるには使いづらいので ほとんど使わなかった。
>>913 俺はコボルプログラマに感動する
キーボード打つの苦手&英語苦手だから
俺がやるとスペル間違えまくり&遅くなりそう
>>917 ちょっと話がそれるが、今はなんでGUI作ってるのかおしえてくれん?
参考までにちょっと聞きたいなぁっと
チンパンジーでもなるべく操作できるように
>>918 今時のコボラーは、IDEで自動補完、スニペット使いまくりに決まってるだろ、常考
>>921 そうなんだ、情報処理試験のしか見たことないからしらんかった。
COBOL歴20年越えるが”IDEで自動補完、スニペット”なんか知らん!! DISPLAYで充分じゃ。
地震測定器のソースは感動したぞ アンテナにかかる電圧の負荷を描画するだけだった
成り行きでいっちゃう場面きた
↑すみません、誤爆です
なんか書け
printf("Hell world!");
return continue …高尚な語彙
感動したソースは、あれだな、 pcm8だな ハードウェアで1chしかないPCMをソフトウェアで8chにするドライバ
933 :
デフォルトの名無しさん :2008/06/01(日) 23:47:13
今でもソースコード付きでVectorに掲載されてるよ
>>931 ミキシングしてるだけだろ
何か特別なことしてるわけじゃなかろうが
ここで颯爽とコロンブス登場。
10 run ;
>>934 理論的にはできるのわかってても、
それをクロック10MHz程度、メモリも1〜2M程度で実際にやってみるのがミソだな。
さらに最適化したpcm8aだったっけ、普及したのは?
俺はディスカバリー、ヒストリーチャンネル、J−SPORTで欧州リーグみてるよ。 そんでさ、ふっと民放にチャンネル変えると、 すげーやらせ臭い笑い番組やってんだよな。ゴチバトルとかいってさ。
昔見た某社カーナビのソース。 巨大なswitch文のcaseが直値で書かれていたこと、 じゃなくて、それが10進と16進表記が混在していたことかな。
皮肉かよ
942 :
デフォルトの名無しさん :2009/01/03(土) 17:58:46
スレ違いだろうがVC2005で日本語が使えた時。 厨臭いのは十分解かってるがこのコードに何か可能性を感じた。 #include<stdio.h> #include"日本語.頭" //日本語のdefine群 これは、(収納の,空間) { これは、(測りの一種,構造体) { 符号が無い 長い 整数の 長さ を持つ。 }; これは、(図形の一つ,構造体) { 符号が無い 長い 整数の 高さ と、 幅 を持つ。 無し 面積を表示(無し) { ここに、 符号が無い 長い 整数の 面積 がある。 面積 とは、 高さ を(幅,で掛けた)ものだ。 printf("%d",面積); } }; } 整数の 主要(整数の 引数の数,文字の *引数配列[]) { ここは、全ての 収納の 中身を含む。 ここに、 測りの一種 定規 がある。 また、 図形の一つ 長方形 がある。 定規 の 長さ は、 100 で、 長方形 の 高さ は、 定規 の 長さ と同じだ。 また、 長方形 の 幅 は、 長方形 の 高さ を(2,倍)したものになる。 それでは、 定規 の 長さ が(100,と同じ)である限り 長方形 の 面積を表示 > 定規 の 長さ は、 0 にする。 もし 長方形 の 高さ が(100,未満) だったら 関数は -1 を返す。 じゃなかったら 関数は 0 を返す。 }
2万行を超えるクラス
果たしてそれは感動という言葉を用いるのが適切なのかどうか。 1クラスの行数で言うと.NETのDataGridViewクラスは2万行どころじゃないね。
#define i int #define think main #define it ( #define is void #define the ) #define best { #define code return #define in 0 #define this ; #define world } i think it is the best code in this world しょうもなっ
>>944 >1クラスの行数で言うと.NETのDataGridViewクラスは2万行どころじゃないね。
え、うそだろ・・・
bool IsSeven(int n){ return n = 7; } C++勉強始めたころ、これにものすごい感銘受けたな
説明してくれ
>>946 DataGridViewMethods.csだけで3万行近くあるよ。中身はDataGridViewクラスだけ。
partialで分割されてるから、クラス単位で見るともっと行数あるはず。
>>949 いやDataGridで何やってるか詳しく知らんけれど、今作ってるライブラリーがGrid関係だけでなくThreadとか全部含めても2万行ぐらい何で・・・
データソースがあって、それを基本的に表示編集するだけで何で2万3万行も必要なのかと。
でも、
>>942 みたいな言語、使ってる人いるわけでしょ
ひまわりとか、なんかそんな名前の
意外とニーズあるのかもしれない
日頃、変数名を文字列でなく記号としてとらえてる自分としては 逆に文章を読んでしまい開発効率が下がる。
955 :
デフォルトの名無しさん :2009/09/02(水) 12:14:09
おしい
958 :
デフォルトの名無しさん :2009/09/05(土) 10:31:05
javaのEnumMap(Setだったかも)がビット演算で書かれていたことには感動した。まったく予想してなかった。
959 :
デフォルトの名無しさん :2009/09/05(土) 15:04:02
ちゅ ち しゃ は、みんなどう書いてる? CHU?TYU? CHI?TI? SHA?SYA?
#include <stdio.h> int main(void){ printf("hello, work\n"); retrun 0; }
printfは思いからputs使え!
retrun…
gccならputsで済むprintfは自動でputsに置き換えてくれるはず
964 :
デフォルトの名無しさん :2009/09/11(金) 03:54:44
966 :
デフォルトの名無しさん :2009/11/26(木) 19:36:07
i=1-i
while(*dst++=*src++);
>>957 関数型言語ではないのでevalとは違うしtclとも違う。
表現形式や関数のインタフェース違う。
>>965 ドキュメントでは遅延評価とは記載されてない。
たしか変数の値を変更したときは即時反映される。
>>960 ANSI Cだとvoid main()ではないよ。
969 :
デフォルトの名無しさん :2010/01/03(日) 04:52:48
(´・ω・`)
/usr/include/stddef.h: #define offsetof(type, field) ((size_t)(&((type *)0)->field))
かな。最初はどうやりゃ実装できるのか知らなくて typeof みたいな GNU 拡張だと思ってたから
>>966 のは最近知って感動した。以下な感じのソースで
for (int d=0; cond; d=1-d) {
if (!d) {
} else {
}
}
最適化されれば同じかもしれないけど d=1-dよりもd^=1の方が速い気がする
d = ~d の方が良いんじゃ?
ステータスレジスタへの影響が違う
for (int d=0; cond; d=1-d) { if (!d) { } else { } } って何がしたいの?
>>974 condがfalseになるまでthen節とelse節を交互に実行したいけど、
ループ中で for (...) { ...; ...; } とは書きたくない何らかの理由があったんじゃないかね
ループで書くと while(cond){ ...; if(!cond)break; ...;} こうなっちゃうんじゃね
いや、x86だけじゃない まぁMIPSは想定してないがね
>>976 >>974 のelse節次第ではelse節が連続で実行されることもありえるからそれはまずい
980
981 :
デフォルトの名無しさん :2010/01/12(火) 12:02:23
980
次スレ建てられん。頼む
984 :
デフォルトの名無しさん :
2010/01/13(水) 02:37:29 . / / / l: / l ∨i 、 | l│ / イ ,イ. l ト、ヽ / | :l :| | l | | l_メ、」_,;./l L l V ∧ / :|/ ハ. ト、 | ト. |.____ ヽ l´ヽ{ _⊥イ イ / / / l/⌒ヽ | | ヽ | 、i┘::::i \ | r┬┬‐┬ァ V ,∧. ,' ´ レ ヽ! ゝ- ' \l i,.┘:::::iノ / ,/〉│ :| { . 7/l/l/ 、 `'ー‐ ' ∠≠r'ノ:jノ :| | λ /l/l/l ∧‐'.:|:::| ハ ', なにこのスレ・・・ `、 ヽ ,/| ::| :|:::| ./ ヽ_> ` = 、 ,.イ∧'|:l.:/l:::|´ 見たことない単語だらけで意味が分からない `>-r =ニi´、.,_`::: |:| { |:::l _,.イ´ヽ.7 / /:\;八:V:ノ /7:::::! ○O'´ /::::::::/ヽ