今までに見たソースコードで一番感動したのは

このエントリーをはてなブックマークに追加
1七誌
何ですか?

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のソース。
あらゆることが考慮してあるやつ。
>>9
詳細キボン
11デフォルトの名無しさん:02/11/17 00:07
hello
>>8
ソースコード見たんだ?
本人?
#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コードって
エスケープ入ってませんか?
これは漢字判定後の処理って事ですか?
>>12
ソース公開されたんだよ。
http://gochagocha.ribbon.to/tensaku.zip
>>27
基のコード書いたやつはずぶの素人なの?
>>28
詐欺師
>>29
ありがとう。話には聞いてたが…酷いな
#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プログラミングより
33初心者:02/11/17 15:40
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ヶ月前書いたのにすらそう感じてるよ。
プレステではじめて三角ポリゴンがでたとき
ああ俺ハッカーだよ今、母ちゃんゴメンな
って思った
45勉強厨:02/11/18 14:21
>>43
俺も。
46デフォルトの名無しさん:02/11/18 14:21
オリバーが一番感動したかな?
そのバーコードが今でも忘れられん。
3ヶ月前……って夏休みかよっ!!
>>26
esc入るのは7bitJIS。
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];
}
>>53
ワロタ
>>54
感動した
>>53
なんでそうなるか追究しないの?
どうせその前あたりのバッファのオーバフローだろ。
>>58
禿同。厨がよくやるバグ。
>>51ってどうなるの?
>>60文字列コピーしてるだけかと
>>60
for (p = rootp; p->next; p = p->next);
似たのにこんなのもある
>>13
puts() の戻り値は、見ないのか ?
FORTH 最 高 !!
65PC98専用ソースコード:02/12/02 13:50
>>53
こういうやつでつか?

char a[5];
char b; // 削除すると何故かエラー
for (i = 0; i <= 5; i++) {
 :
 :
}
感動というか、友達がwindowアプリ作ろうとしてて、なにを思ったか
フレームを継承してそれにメインつけて、そのなかにフレームを生成して
使ってたな・・・
int main( void )
{
 0(0);
 return 0;
}
VC++限定だけど。
どこかでこれが使用通りの動作だと読んだ時には驚いたものだ。。。
(どこで読んだか忘れた。知ってる人いたらおせーて。)
>>68
で、「これが使用通り動作」ってなんなんだよ。

そんな変なプログラムに驚愕してる暇あるなら、国語の勉強からした方がいいぞ。
>>69
そういう寒いツッコミする時は、せめて引用くらい忠実にしたほうがいいよ。
>>31
これに負けた・・・打つ出し脳・・・
7239:02/12/04 23:05
>>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つけるのはありがち。
IOCCCのプログラム
ttp://www.ioccc.org/
>>52
6809はASCIIの大文字のほとんどが1バイト命令だったから
大文字限定でよければ結構簡単だあった。
小文字ありだとむすかしかったがそれをやったゲームは実在したはず。

8bitパソコン全盛のころはけっこう凝ったプロテクトがいっぱいあった。
OSないから互換性なんかハナから考えることがなかったし。
そのかわりサードパーティのFDドライブだと動かなかったり、、、
80D:02/12/15 02:15
大昔BASICで
(1=1)が-1を返すと知ったとき。
やっぱtrueは-1だよなぁ。
falseが0として0のnotは-1だもんなぁ。
82デフォルトの名無しさん:02/12/15 05:23
>>81
ブール代数(?)のスレはないのかな?
Pascal(というかDelphi)で (1=1) が True を返すと知った時。
昔の自分のソースを見ると逆に感心する。
「俺って昔こんな凄いコード書いてたんだ」と。
アルジャーノン程じゃないけど、年とともに俺の脳は退化している。
そろそろ足を洗う時が来たようだ。
85名無し@沢村:02/12/23 23:37
cout<<"きんたまめめじょぼぼじごんす!!"<<endl;
>>84
おお、同士よ。俺もまったく同じ状況だ。
>>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を提出することがある。
yahooのtopにキタ━━━━━━(゚∀゚)━━━━━━!!

http://www.yahoo.co.jp/
>内容証明が届いてから訴状が届くまでの間に消したとしても
それだと、内容証明が届く前に削除しなきゃいけないことにならないかい?(^_^;)
内容証明が届いて、すぐに削除したら、賠償はしなくていい気が。

んだったら、IP取ってない板で、自分で自分を中傷して、
すぐに裁判すれば賠償金が取れるってことになっちゃう、、
>内容証明が届いてから訴状が届くまでの間に消したとしても
それだと、内容証明が届く前に削除しなきゃいけないことにならないかい?(^_^;)
内容証明が届いて、すぐに削除したら、賠償はしなくていい気が。

んだったら、IP取ってない板で、自分で自分を中傷して、
すぐに裁判すれば賠償金が取れるってことになっちゃう、、
>>99
構って君だろ 時間つぶしの燃料だよ
物騒な世の中に・・・
とりあえずこのスレが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ってたぶんネタじゃなくて素の馬鹿だと思う
126山崎渉:03/01/15 18:11
(^^)
127山崎渉:03/01/23 22:13
(^^)
どうせその前あたりのバッファのオーバフローだろ。
上司の書いたスパゲティー。
仕様書通り動いたのには、呆れるやら驚くやら…

当然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文字の列>、バックスペース、-で書き換えて→と印字し、
また各バックスペースを同様な文字列で←に書き換えるプログラムを
書け。こうすれば、タブとバックスペースは目で見えるようになる。
>>1
Decoratorパターン
>>136
タブを -> の様に置き換えるってこと?
つかバックスペースって何?
139136:03/03/01 23:43
プログラミング言語Cの演習1-8です。
140136:03/03/02 00:35
バックスペースを<-二変換するときはどうすればいいと思いますか?
>>138
> つかバックスペースって何?
\b
あー、\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項演算子が無かったら死ぬ
150147:03/03/11 12:10
感謝感激。有難き幸せ。
お前ら何で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
おまえが上司なのか同僚なのかしらんが、どちらとしても失格。
>>153
ストーカーかなんかじゃないのか ?
>>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の違いが分からん奴がいるのか?
>>163
いや、シャレなんだろう、きっと…。
165デフォルトの名無しさん:03/03/16 10:37
>>164
シャレって、どこで食える。
どんなソース?
166デフォルトの名無しさん:03/03/16 10:39
こちらと、姉妹スレ関係を、結びました。
http://food3.2ch.net/test/read.cgi/gurume/1045989510/
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の入門書(複数)でそういうの見たことありますよ。
170169:03/03/16 22:49
まぁ、なんて書籍かって聞かれたら忘れたって答えますが(w
171デフォルトの名無しさん:03/03/17 00:07
STL。
ひたすらあのコードを追っていった事があるが
発狂しそうになったよ。
>>167-168
逆ポーランド法で簡単な計算機を作る時にたまに使うがな。
BF(BrainFuck)のコード(と、その処理系)には、ワロタ。
ttp://www.muppetlabs.com/~breadbox/bf/

>>167
激しくワラタ
>>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
素朴な実装では関数ポインタの巣窟かと。
184例えばCなら:03/03/28 01:10
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;
をやってるようにしか見えん。
186177ではないが:03/03/29 18:29
>>185
eax = (eax<<7)*4 + (eax<<7)
   = (eax*128)*4 + eax*128
   = eax*512 + eax*128
   = eax*640

こんなん中学レベルだぞ?
187177:03/03/29 19:00
>>185
x86 に限ったことじゃないが、基本的に掛け算は遅い
(割り算はもっと遅いが)。
そこで、2の倍数を掛けるのであればシフトを、
3、5、9を掛けるのであれば lea を使うと
mul 使うより速くなる。
lea をこういう使い方するのにはちょっと感動した。
>>187
基本だと思うが…
189177:03/03/29 20:39
>>188
基本だろうと、感動したのじゃ。
xor eax, eax だって初めは感動したのじゃ。
まあまあ、マタタタターリしれ。

各人がそれぞれに感動したコードをさらせばいいんであって、
他人の感動に野暮なツッコミ入れてたら、単にスレ荒れるだけじゃん。
191188:03/03/29 23:16
スマソ。
>>187-188
RADツールしか使わない人には無縁な話かと・・・。
>>186
おおそうか、eaxが<<7されてるのをすっぽり失念していたよw
ありがとう。
>>180を自分で試してみた。
感動した。
>>194
ちょっとトリッキー臭いところがなかなか。
漏れなら単純に
find -name \*.mp3 | sort > index.m3u
としていそうだが、dirとは盲点だったな。
196デフォルトの名無しさん:03/04/02 13:17
>>180 >>194-195
そのバッチファイルをジョークソフトとしてvectorあたりに登録できないかなw
「ドライブのMP3を残らず検索して…」みたいな一見すごい機能を書き連ねるのもおもしろいかもw
誰か、VBやDelphiで洗練されて美しいコードを見た人はいませんか・・・?
>>180 >>195
DOS時代を生きてきた人間なら当然なのだが

>>197
漏れも見てみたい
>>198
DOS時代のdirには/bも/sも/oもありませんでしたが、何か?
>>200
別に何も
漏れは小学生の時にBASICを初めて暫くして、配列を知った時すげー感動したよ(w
>>198
Unix と DOS をごっちゃにしている >>195 はおいといて、>>200 が言う通り、大昔から DOS やってた人間は逆に思いつかないかも。
サブディレクトリを含んだリストを作るために、xdir とかの外部コマンドがあったりしたし...。

>>202
そう言う意味なら、俺は「ローカル変数を知った時」だ。
>>203
>>195はまぁネタだが、Windows機でもcygwin使ってるんでね。
俺はgosubが無くてもサブルーチンが書けると知ったときだな。
>>204
>>195はまぁネタだが、Windows機でもcygwin使ってるんでね。

>>203 のメアド見てみ。
207205:03/04/11 06:00
こういうのはアリ?
http://compsoc.dur.ac.uk/whitespace/count.ws
>>207
今までに「見た」ソースコードにならないので却下。









…なんて事は言わないのでご安心を。
IF … THEN
  IF … THEN
    …
  ELSE
    …
  END
END

一番ってわけじゃないけど。
ちなみにキーワードが大文字ってんじゃないよ。
>>209
Modula?
>>209
どこに感動したんだ ?
まさか
#define IF if(
#define THEN ){
#define ELSE }else{
#define END }
などというくだらんオチではあるまいな?
>>208
座布団一枚!

>>209
FORTRAN にブロック IF 文が導入された時のことだと見た。
>>213
FORTRANのブロックIFの終端はEND IFじゃないか?
215213:03/04/13 03:03
しもた。その通り。
216209:03/04/13 17:55
Pascal、Cの後で、Modula-2を勉強し始めた時のことです。
Pascalで初心者が必ず引っかかるといわれるIFのネストの問題が発生しないこと、
冗長性が少なくて複数の人が書いてもほぼ同じ書き方になることなど
そこまで考えて設計されているということに驚きました。

Modula-2自体は大文字が慣れなかったのと、文字列が扱いにくかったんで、
文法を一通り勉強した後、ほとんど使ってなかったりします。
>>216
ああそういうことか、とりあえず同意。
確かに Pascal やってると、begin 〜 end が沢山でちょっとうんざりする。
文法的に簡単にするためではあるけど、もう少し人間よりにして欲しかった。
まあ Modula はその反省があるんだろうね。
C でも...

if(a == 0)
 b = 0;
 c = 0;

とやっちゃって泣いてる奴はいっぱいいるんだから、if/while/for なんかの後は、{} を必須にするとかすべきだと本気で思う。
(今はツールで確認するようにしてるけどね。)

宗教戦争になりそうなネタだから、これはこの辺で。
218山崎渉:03/04/17 15:46
(^^)
219山崎渉:03/04/20 04:20
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
>>217
昔は { } 付けなかったけど、それで泣いた事無いけどなぁ。
でも、今は一応付けるようにしてる。保険で。
221山崎渉:03/05/28 13:24
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
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;
でつか?
>>224
感動したのか?
>>225
Cなら文法エラーのはず。
げ!!まじ?               
三項演算子でしょ?項が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
>>232
泣いた(w
235デフォルトの名無しさん:03/06/07 01:25
>>233
gccでパースエラーになったぞ。
iiii, iiiiiはiv, vにしてもらいたい。
>>232
イイヨイイヨー
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原理主義者が無理やり考え出した、不自然な
プログラミングだな。
243 :03/06/07 10:09
>>242
gotoは使わないでくらさい。
エラー出たらreturnで返せやゴルァ!
>>242
アンチgoto原理主義者などいない。

1 FORTRANなど過去のしがらみでGOTOをしょうがなく使っている場合。→原理主義ではない
2 gotoを排除する言語設計者。 →不要なものを入れないだけなので原理主義ではない。
3 >>241のような例。→単なるヘボ
241は判定で定数を左に持ってくるって時点でヘボっぽいけどな。
>>245
アホ発見
>>246
むしろお前がアホ
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立のコンパイラは、プロトタイプ宣言し忘れてると、引数の数が間違って
> いても警告出さないぞ。

それは正しい動作。
270:03/06/09 00:18
大昔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"に詰め込めば?
297山崎 渉:03/07/15 09:48

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
============終了============
299デフォルトの名無しさん:03/07/25 01:31
>>278 は VBの on error goto を使わないつわもの
300デフォルトの名無しさん:03/07/25 10:10
UNIX V6
"You are not expected to understand this."

ttp://cm.bell-labs.com/cm/cs/who/dmr/odd.html
アルゴリズムに感動したことはあってもコードに感動したことはないな。
コードなんて所詮アルゴリズムの排泄物に過ぎないよ。
表現形態はどうでもよくて、中身が重要という立場だよね。>>301
潔いけど、syntax sugarやmacroの技巧に触れた上でも
なおこういう発言できます?

と、ここで俺がLISPとかでの超絶macro応用例を出すとカコイイんだが、
俺はヘタレだから... _| ̄|○
303デフォルトの名無しさん:03/07/25 18:25
304無職 ◆jIL7Zh6bTU :03/07/25 18:28
for(;;)
今となっては当たり前だけど、はじめて見た時は感動した。
; 内積
(define (iprod . l) (apply + (apply map (cons * l))))
;a,b,c,d,eの内積を計算
(iprod a b c d e)
306山崎 渉:03/08/02 02:19
(^^)
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 の値にあわせて出力文字列を変更できるとい
うもので、見たときは目から鱗がぽろりと落ちた。
308_:03/08/12 00:48
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;}
>>315
閉じ括弧がない罠。
そこも含めて感動しれ。
>>315
感動した
int main(int argc, char* argv[])
{
 /*
 「嗚呼、射精寸前」男悶絶。「口内発射可?」
 「不可」女曰。「貴殿射精場所即我膣内」
  女舌技停止。萎縮物即硬直、聳立。先端、先走汁有。
 「騎乗可?」女訊。男頷了解。
  女、硬直物添手、潤滑繁茂地帯誘導。
 「嗚呼」女悶。「我膣内、巨大硬直物挿入完了」
  女下半身躍動開始。一、二、三・・・
 「嗚呼」男短声。「謝罪」
  女呆然、運動停止。「貴殿既射精!?」
 「汝舌技巧妙故。御免」
 「最低!! 三擦半男!!」女絶叫。「亀頭鍛錬不足!!
  貴殿包茎手術経験者!?」
 「何故汝知其事実??」 男墓穴。
  以後、男、性交時避妊具二重着用
 */

 ・・・
}
320山崎 渉:03/08/15 15:31
    (⌒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
>>323 i^(i) を求めよ
>>302
(define (iprod . l) (apply + (apply map * l)))
328名無し:03/08/21 02:23
>>326
e^(-π/2)
>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
アスキーから1999年08月31日に創刊されたWindowsPowerVol.1の
!Kubotarのソースには感動しました。
久保田壮一さん、ありがとう。
http://www.ascii-store.com/catalog.cgi?id=37386
>>349
ワラタ
>>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;
}
}

確かに多次元配列が、見やすくなった。
>>354
そうか?
有名だと思うけど、足し算引き算で円を描画するやつ。
はじめてみたときは、微分なんて習ってなかったからすごく不思議だった。
>>356
俺は原理が全然わからなくて感動も出来なかったよ。
358デフォルトの名無しさん:03/10/16 00:28
多態のサンプルコードを見て感動した、まだケツが青かったあの日の俺。
もう尻も二つに割れちまったよ
>>353
今はキャッシュなんて便利なもんあるで
ちっこいループはキャッシュに載るよう
ちゃんとループのままの方がいいて
聞いたんだど、どうなんすか?
>>356
>足し算引き算で円を描画するやつ。
ソースきぼんぬ
>>359
速度比較してみれば?

つまんねーループをアンロールしてるなら無駄だと思うが、
「自己満足」と十把一絡げな論調には同意出来ないね。
>>361
漏れ 353 なんだけど、同意。
最適化をあれこれするのに速度測らないなんてありえない。
まぁ Pen II あたりの CPU は無視してるけどさ。。

Pen4 だと、ちっこいループはアンロールしてもμOpのキャッシュ(トレースキャッシュ)が
溢れないのでアンロールする。でっかいのはそもそも効果薄だしアンロールしない
ってのがよいと思う。
ちょいと前に大手電機メーカー丸投げのC++の仕事で、
1関数5klとか、ハイセンスなコード満載のモジュールを改修したよ。

正直、刻々と自分の気が狂っていくのが分かった。
徹夜明けに進捗率を聞かれたときなんて、携帯叩き壊したくらいだし。
間違いなく今見ても感動できる超大作だと思う。
364361:03/10/16 23:56
>>362
なんか近い感覚の人がいてヨカタw

>>363
偉くハイセンスなコードだな_| ̄|○
365360:03/10/17 00:57
だれも知らんの?
非常に気になるんですけど
DDAっていま流行らないからか、あんまりヒットしないね。。
コンピュータっぽくていいんだけどなぁ。

http://www.google.co.jp/search?q=DDA+%E5%86%86%E3%80%80%E6%95%B4%E6%95%B0&ie=UTF-8&oe=UTF-8&hl=ja&lr=
368360:03/10/17 01:26
>>366-367
サンクス
少しはぐぐったんだけどよぅ
高校の時、敵の弾が自分に飛んでくる方法を考えてて、
分子をひたすら足していく、という方法を見つけたときはかなりうれしかったなぁ。
後からそれがDDAと知ったけど。
今思えばあれが俺のピークだったような気がする・・・
ソースというよりアルゴリズムに近いけど
立っているビットの数え方
http://www.st.rim.or.jp/~phinloda/cqa/cqa15.html#Q2
この手のテクニックがたくさん載ってる文献ってないかな?
そういった小汚いコードに感動するような人間とは友達になれそうもないな。
それで完結した単位になってるんだから、
ソースコードにコメントとテストつけときゃ問題ないじゃない。
373デフォルトの名無しさん:03/10/17 04:37
procmail
ね?
374デフォルトの名無しさん:03/10/17 05:24
switchのあとにcaseが100続いたソースが
一番感動したというか、びっくりちた
>>367
ハードウェアとかDSP実装だと割り算あんまり使いたくないから
DDA は結構重宝するYO!
>>369
あなたはわたしですか?(w
>>369 376
あたま禿げかかってません?
ひたすら文字列リテラルが続くヘッダ

---
#pragma once
const char *data[] = {
"hage...hage",
"hoge...hoge",
...
};
---

100KBくらい。
感動というか呆れるのほうが正しそうだな
FOXだか、GUI Toolkitでクロスプラットフォームなリソースを実現するのに、
PNGなんかの画像ファイルを文字列リテラルしてぶち込むつーのはあった気がするが。
Xのbitmapもそんな感じじゃなかったかな。
>>366
円やつこれどうして円が書けるのかわからない。。。
>>382
ミッチェナー アルゴリズムでぐぐれ。
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文であることに気が付いた・・・
>>389
ちょとワロタ
db '瑞瑞瑞瑞瑞瑞瑞瑞' ; fcc /NuNuNuNu/ ってのもあるのか?
>>391
'瑞'って’NOP NOP’だったっけ?
すげー。
グッジョブ >>393
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 回やる。
>>401
Napier(ネイピア)数とも言う。
ネイピア数って2.7・・・っていう値だよね。
BCCで試すと4198802.000000ってでるんだけど。
ちなみにVC6では括弧が多くてコンパイル通らんかった。
406400=401:03/11/08 03:45
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文多くないですか? ガイシュツ?
410(^v^)-666:04/01/21 11:27
>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)));
}
}
411(^v^)-666:04/01/21 11:31
>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
一瞬で読む気が萎えるな。
>>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();
}
425(^v^)-666:04/01/26 01:33
オリが初めて感動したソース(処理部分)は、以下の部分だったなぁ。
これ見て、目から鱗 でつ た。
long l;

l = 1;
if (*(char *)&l != 1) {
return;
}
えーんでぃあーん、嘘付かなーい♪
ってチェックか何かですか。
if (htonl(l) == l)
 return;
428(^v^)-666:04/01/26 04:22
>426タン YESでつ。
>427タン 今なら、こんな関数がありますね。私もその関数、使っています。
429426:04/01/26 06:19
>>428
こうゆうの良いっすね。さり気なく。
レスどーもー。
PDP endianなんてのも世の中にはありますが……
431(^v^)-666:04/01/26 18:10
>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 の補数でない環境でも動くようにしたもの。
>>433
えらいさりげないけど、これは・・・
444(^v^)-666:04/01/30 00:58
>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; /* 色番号 */
{
445(^v^)-666:04/01/30 00:59
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;
446(^v^)-666:04/01/30 00:59
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 {
447(^v^)-666:04/01/30 01:00
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;
}
}
}
}
448(^v^)-666:04/01/30 01:01
ついでに、上記で使われている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 ****/
>>442
ttp://www.amazon.co.jp/exec/obidos/ASIN/0201914654/
この本にそう言うのが沢山載ってるよ。
>>444-448
俺、こーいうソースは感動しない。殺気すら覚えるなぁ。
俺漏れも。inner loop で abs とか sgn ってあり得ない。
>>444
> /* 次の2つのマクロ関数は本プログラム内で必要になるものである */
このコメントで読む気が失せた。
必要にならないもんわざわざ書く馬鹿いるか?

> #define abs(x) (x>=0?(x):-(x)) /* 変数の絶対値を得る */
> #define sgn(x) (x>=0?(1):(-1)) /* 変数の符号を得る */
他のコメントも下らんし。
>>452

>必要にならないもんわざわざ書く馬鹿いるか?

>他のコメントも下らんし。

自分で言っていることが矛盾していると思わないか?
452ではないが、

> >必要にならないもんわざわざ書く馬鹿いるか?
> >他のコメントも下らんし。
> 自分で言っていることが矛盾していると思わないか?

コードについては必要なものを書くのが流れだから馬鹿でも
余計なものは書かないことが多い。
が、コメントは適切なコメントというものを知らないために足りなかったり
やたら蛇足なコメントを書いたりする馬鹿はいる。
全然矛盾していないと思うが。

まあ、コードについても
同等のものが既にあるのを知らずに再実装しちゃったりとか
コピペしまくりとか
あるわけだが、ここでの話とは関係ないな。

>>あるわけだが、ここでの話とは関係ないな。
マ板じゃないんだからコメントよりコードの方に反応して欲しいな。。。
んで漏れ思うにこれ(DDA)見て「へー」っと思うのは初学者にしては筋がいいと思う。。。
>>450
そうか? コメントが少々野暮ったいくらいで後は問題ないと思うが
何が気に入らないのか具体的にヨロ
>>455
コード見ても同じだよ。美しくない。
美しくないというか、むしろk…
どことなく昔のBASICを彷彿とさせる書き方だと思ったんだけど。
>>410 と同一人物みたいだが、もしかして自分のソースに惚れ込んでる?
459(^v^)-666:04/01/30 20:21
>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);
}
468(^v^)-666:04/01/31 10:04
>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 : {
        ...
    }
}

名前空間を有効に使う俺流の書き方なんだけど,どう?
ナニがどうなのか全然ワカンネ
485483:04/02/05 00:03
caseの中身を中括弧で括ることによって,
その中で宣言された変数が外に見えない
ってことなんだけど.御気に召さない?
そんなのCでは20年前から普通にやってるよ
住んでる世界がせまいぞ
487483:04/02/05 00:12
ありゃりゃ,それはお恥ずかしい.忘れてください.
>482
ANSI以前のプロトタイプ宣言不可の場合分けは普通にどこでも行われているが、

func(a, b)
に対しての引数の型宣言に
int a, int b;
などという書き方が許される処理系を俺は知らない。

int a; int b;
あるいは
int a, b;
なら、最新の物も含めて、どのコンパイラでも通ると思うが。
489デフォルトの名無しさん:04/02/05 00:32
>>488
そういやそうだ。
ただのtypoじゃないのか
>>481の指摘はその点(typoじゃないがミス)についての物だと思うし、
それに気付かないで「今日それを見たよ」という>>482が滑稽だから指摘しただけ。
492480:04/02/05 01:33
il||li _| ̄|○ il||l
漏れが悪ぅございますた。
int a, b; のつもりでした。
493482:04/02/05 01:50
滑稽で悪かったな。
さすがにムカツクわ。
>>493
まぁまぁ、そう気にするな。
どんなに気にしても
滑稽な事には違いないから。
typo を見逃す度量を持とうぜ。
>>495
そういうことではなくて、
昔のCなら普通の記法だということを知らなかったために、
>>481の指摘の意味がわからずに変なレスを返したことが滑稽なんだろう。
>>480「こんな書き方もあるよーん」
>>481「文法エラーだろ」
>>482>>481 知らないの?これはね、昔の書き方なんだよ」
>>488>>482 プッ」
そもそもこんな書き方もあるって紹介するのが何故かわからなかった。
今でもこの書き方のソース普通に見かけるのに。
ここム板だよなあ。。。
それとも若いヤシが増えたってことなのか?
勉強しない若い奴がな
>>499
所謂「若い香具師」って呼ばれる年だが、古いスタイルも知ってる。
知らない人は単純に人のコード読む機会が少ないんじゃないかな。
あるいは読む機会があっても同じ(会社|部署)の人のばかり、とか。
そんな化石みたいな知識なくてもよろしい
書ける必要はない
読めればいい


C言語自体がそうなりつつあるが
504501:04/02/05 21:58
>>502
C99 マンセーだけど、読めないと困るじゃん。
オープンソース物とか人の書いたもののバグを修正したりする必要も
出てきたりするし、読み書きできたほうがいいと思う。
古いCの書き方の方が正しいような気がしています。
int main(int argc, char* bad) は通るし、badを使わない限り動く。
そして、関数宣言はプロトタイプ以上のことはしない。
これ以上ない程説得力のない理由だな。
char main[] = { 0xf0, 0x0f, 0xc7, 0xc8 };
>>508
なつかしー
CPUテ゛ット゛ロックしてフリース゛する
おまし゛ないた゜ね
>>509
お前の濁点の使い方が懐かしい。
511洩れ車@J算譜工房:04/02/09 14:25
>>497
昔の書き方?
昔は a += b; を a =+ b; と書いたくらい言ってほしいぜ。つか C系 以外きぼんぬ。
このすれは「懐かしいコード」すれになりますた。
ついでに0x200げっと。
>>512 「#$200げっと」 に汁!
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;
}
俺はここ(URLは別だけど)で見た
http://www.catnet.ne.jp/kouno/c_faq/c20.html#31
数字だけは連続して並んでることが規格で保証されてますね。
>>537
C の規格が?
C の規格で文字セットまで言及してたっけ。
ANSI C では「0123456789」という 10 個の文字について,
前の char 値に+1 すると次のになることが定められてます。
524 でもやられてる「'0' を引いて 0〜9 の数値にする」
ってのができることを保証したかったのでは。

ISO C90 や JIS X 3010 は知りません(が多分同じ)。
ISO C99 は,その最終案では同じように定められてます。
540528:04/02/19 12:13
>>539
なるほど。>>524は安全に動くというファイナルアンサーだな。

ところで>>525は隠れてないで、好きになれない理由をそろそろ書けや。
>>539
「9」の文字に+1したらなんになるんだよ?w
>>525ではないが、真偽で偽の時が0なのはまだいいけど
真の時に1であることをあてにしているところがちょっと・・
最適化されるわけでもなし、わざわざ1行に詰め込む意味がわからんとこじゃね?
真が1になるのも保証されてるはず
545真一:04/02/19 13:36
呼んだ?
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
タイーホ?
>>554
まぢで?
数字じゃなくて文字でも保証されてるの?
って、C99じゃねえか…そうか、そうなのか
>>541
0 1 2 3 4 5 6 7 8 9

ソースコードと実行ファイルの両方において、
0より後の上記に挙げた十進数の数字それぞれの値は前の値よりも一大きいものとする

だそうだ、だから>>541の疑問は意味をなさないことになるっぽい
558r:04/02/28 08:38
>>557
'0' + 1 が '1' になる事は保証されているのかもしれませんが、
'0' + 2 が '2' になる事も保証されているの?
つまり
'0' + 1 + 1 と
'0' + 2 が等価であると....
2 == 1 + 1 だから自明だと思うんですが。
>>558
結合法則って習ったことないか?
561r:04/02/28 10:19
>>559
( ( a + b ) + c )と
( a + ( b + c ) )ってのは
C言語的には等価なんでしたっけ?
562洩れ車:04/02/28 11:30
>>561
スレ違いまくりだが,
コンパイラが同じ機械語を生成するかは場合によると思う。精度の観点からは
「桁落ち」「情報落ち」「積み残し」をアルゴリズム事典やGoogleで探してみると
良いかも。私は奥村晴彦『C言語による最新アルゴリズム事典』(技術評論社)で
習いました。
563デフォルトの名無しさん:04/02/28 11:50
(a+b)/2 は平均値をあらわすが....
ともに正の場合は精度が減ってしまう
(a-b)/2+bがbetter....
しばらく前にのATMが止まったのはこれなのではないかと…
564562:04/02/28 12:13
>>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");
572567:04/03/01 02:29
>>571
不思議だ・・・。
どうしてかわからないです_| ̄|○
>>563 これ? [UNIX]2038年、みんなどうする?
ttp://pc.2ch.net/test/read.cgi/unix/1021212011/79-80
>>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
( ´,_ゝ`)
ログインプロンプトを偽装してパスワードを(σ・∀・)σゲッツする
プログラムなら書いたことがあるな。
579洩れ車:04/03/06 14:22
(}.~*@$);.0^:2":<"2' *'{~((#:3 2 4){-/&:|@+.`(|-4:)(<:&1@|@))`:0 j./~i:5 NB. J language
実行結果(等幅フォントで見てね):
** **| * | *
*** ***| ******* | *******
*** *** | ********* | *********
*** *** | ** ** | ** **
***** | ** ** | ** **
*** |*** ***|*** ***
***** | ** ** | ** **
*** *** | ** ** | ** **
*** *** | ********* | *********
*** ***| ******* | *******
** **| * | *
-----------+-----------+-----------
** **| * |** **
*** ***| ******* |*** ***
... 中略 ...
*** ***| ******* |*** ***
** **| * |** **
-----------+-----------+-----------
* |** **|** **
******* |*** ***|*** ***
********* | *** *** | *** ***
** ** | *** *** | *** ***
** ** | ***** | *****
*** ***| *** | ***
** ** | ***** | *****
** ** | *** *** | *** ***
********* | *** *** | *** ***
******* |*** ***|*** ***
* |** **|** **
580デフォルトの名無しさん:04/03/07 03:27
>>578
タイーホage
大体のが読みにくい
>>576
PATHにカレントディレクトリを含める馬鹿なんていないと思う。
>>582
でも1980年代後半ぐらいまでは含むことが多かったでしょ。
1990年代前半に>>576のような理由で習慣が変わったけど。

理由もいえるけど、2chのカキコには長すぎるから略。
お前もわかって煽ってるだけなんだろし。
584583:04/03/21 06:55
あ、理由って、昔はカレントも含んでた理由ね。
#define f(type) f##type
生成的関数の定義は感動した


588デフォルトの名無しさん:04/07/23 18:18
ttp://lists.boost.org/MailArchives/boost/msg46138.php
こんなのに感動した漏れは負け組ですか?
うん(´・ω・`)
やはりそうか…
旅に出て来ます。
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;
}
592デフォルトの名無しさん:04/11/13 08:24:51
なるほど
593デフォルトの名無しさん:04/11/29 20:48:53
bitcout
594デフォルトの名無しさん:04/12/06 00:38:38
bit::cout
595デフォルトの名無しさん:04/12/06 03:14:40
xfs(UNIX系OSで使用できるファイルシステム)のfsckのソース。

int
main(int argv, char **argc)
{
return 0;
}

xfsは絶対壊れることのない、一番信頼性のあるファイルシステムだとこのとき感じた。
596デフォルトの名無しさん:04/12/06 03:20:19
幸せな奴。
597デフォルトの名無しさん:04/12/06 12:27:55
>>595
IBMのメインフレーム系の人間にはおなじみのユーティリティBR14のソースが
そんな感じだったな。プログラムの起動オプションの作用だけを必要とする
場合のダミープログラムなのだ。
壊れているのか正常なのか識別できない、信頼性ゼロのファイルシステム。

という意味ではなかろうか。
599デフォルトの名無しさん:04/12/07 00:10:23
>>595は皮肉で言ったのでは?
600デフォルトの名無しさん:04/12/07 14:16:38
599=595
601デフォルトの名無しさん:04/12/08 00:36:15
int a[10];

for (int i = 0; i < 10; ++i) {
i[a] = i;
}

Cのいさぎよさに感動した。
602デフォルトの名無しさん:04/12/08 13:47:40
>>601
アセンブラ知ってれば、わりと普通なんだが。
603デフォルトの名無しさん:04/12/08 16:48:48
>>602

だから いさぎいいと感じたんだよん。
604デフォルトの名無しさん:04/12/08 16:52:58
i[a] = i; は *(i + a) = i; と同じだから問題ないのかな?
605デフォルトの名無しさん:04/12/08 18:26:00
>>604
そういうことだな
606デフォルトの名無しさん:04/12/08 20:50:30
>>601
スレ違い
クソコードスレ行きでしょ
607デフォルトの名無しさん:05/01/19 16:49:10
age
608デフォルトの名無しさん:05/01/20 12:42:59
<Script Language="JavaScript">
//<!--

function yesno() {
  if ( window.confirm("18才以上で利用規約に同意しますか?\n同意される方のみOKボタンを押し入場下さい。") == true ) {
    return true;
  }
  return false;
}

//-->
</Script>
609デフォルトの名無しさん:05/01/20 12:52:12
なんか自然対数を求める C のプログラムで、
ee eE Ee EE を #define してそれだけで組んだやつ。
しかも空白文字をうまく使って、全体が「 e 」の形になってた。

こないだ見に行ったらページが削除されてて鬱。
誰か持ってませんか
610デフォルトの名無しさん:05/01/20 22:47:44
>>609
http://www0.us.ioccc.org/years.html#2004
この辺にイパーイあるぞ
611デフォルトの名無しさん:05/01/20 23:12:32
612洩れ車@J算譜工房:05/01/22 18:41:28
>>609
>>393(確かにリンク先はもう無いみたいですね)とレス >>394-395 >>399-406 もよろ。
613デフォルトの名無しさん:05/03/16 10:42:10
ちょっとすれ違いかもしれないですが、大規模なプログラムで
C(++)かJavaで一番コードが美しかったソフトって何ですか?
読んで勉強してみようと思ってます。
GNUはやっぱり一流なのかな?
614デフォルトの名無しさん:05/03/16 11:14:10
あなたにとってはどのくらいが大規模なのかをまずはっきりさせないと。
まあソースコードを読んだ経験がほとんどないんだろうから欲張らずに
手近なものに手をつけてみるのがいいよ。

615デフォルトの名無しさん:05/03/16 17:47:12
GNUの大半は目に染みます。ものすごく痛いです。
かなり漢してますよ。あれはヤクザです。
616デフォルトの名無しさん:05/03/16 21:12:40
>>614 >>615 そうですね。小さいけれども適度にモジュールに分かれてるって感じの
プログラムを読みたいんですが。やっぱGNUとかはハッカーだから書き方がスマートすぎて上級すぎるのかな?
617デフォルトの名無しさん:05/03/16 21:33:41
http://www.perlscript.ru/v77_9_1.shtml

この「1C」って言語。
最初「VBって世界中でローカライズされてたのか?」って思った。
618デフォルトの名無しさん:05/03/17 01:54:34
>615
あれはある種の踏絵だと思う。
619デフォルトの名無しさん:05/03/17 07:18:23
>>618
踏絵っていうと?
620デフォルトの名無しさん:05/03/17 07:59:01
GNUは最悪のコードの代表の一つだよ
621デフォルトの名無しさん:05/03/17 10:28:24
MINIXのソースはいいらすぃ
622デフォルトの名無しさん:05/03/17 10:35:44
いいも悪いも、大きいのも小さいのも、沢山読むことが重要だと
Pragmatic ProgrammerであるDave Thomasは述べている。
623デフォルトの名無しさん:05/03/17 11:43:01
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
四季のソースコードはすばらしかったよ。
627デフォルトの名無しさん:05/03/18 00:12:02
while(TOT)//~~
{
 exit(-1);
}
628デフォルトの名無しさん:05/03/18 22:05:03
>>626
レッドマジック?
629デフォルトの名無しさん:05/03/19 03:50:18
スネークカモン?
630デフォルトの名無しさん:05/03/19 12:25:02
レッドマジック見てみたい!
631デフォルトの名無しさん:05/03/19 21:39:01
そしてすべてがデブになる。
632デフォルトの名無しさん:05/03/20 21:15:30
read.cgi見てみたいなー。
あの日のソースは見たことあるけど今はどんなになってるんだろ?
633デフォルトの名無しさん:2005/03/21(月) 10:05:10
jakartaのコードはハンサム!鮮やか

ちんことかサラッサラなんだろうなっとか思っちゃうぐらい
634デフォルトの名無しさん:2005/06/30(木) 20:24:55
これとか、
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]テ";
635デフォルトの名無しさん:2005/06/30(木) 23:39:18
>>634
実行したけど何もできない

何もしないプログラム?
636デフォルトの名無しさん:2005/07/01(金) 05:42:42
どうやって実行までこぎつけたの?
ダメだ俺は言語すらわかんね
637デフォルトの名無しさん:2005/07/01(金) 08:46:34
>>636
つ プログラミング言語C
638マイク ◆yrBrqfF1Ew :2005/07/01(金) 20:03:42
実行したらOctane(MIPS IV)に入れた俺のNetBSDのHDDが強制フォーマットされた・・・
悪質な犯罪だ、ゆるさねえ
639デフォルトの名無しさん:2005/07/02(土) 13:08:05
IOCCC 見れば?
640デフォルトの名無しさん:2005/07/03(日) 12:32:48
>>638
匿名掲示板に落ちてるほぼバイナリなプログラムを実行するお前に感動
641デフォルトの名無しさん:2005/09/02(金) 14:44:14

642デフォルトの名無しさん:2005/09/02(金) 23:28:51
>>640
マジレスするお前に感動
643デフォルトの名無しさん:2005/09/03(土) 11:24:37
マジレスと思うやつに感動
644デフォルトの名無しさん:2005/09/03(土) 11:58:24
感動するお前に感動
645デフォルトの名無しさん:2005/09/03(土) 13:56:59
こんな下の方まで見て回るおまいらに感動
646デフォルトの名無しさん:2005/09/03(土) 15:01:51
感動ばっかりで萎えた俺様に感動
647デフォルトの名無しさん:2005/09/04(日) 21:02:59
ここは小泉スレデスカ?
648デフォルトの名無しさん:2005/09/05(月) 14:22:05
空気を夜目ないお前に感動
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));
653デフォルトの名無しさん:2006/02/17(金) 01:49:05
頭悪いのが多いなpっ
654デフォルトの名無しさん:2006/02/17(金) 09:50:32
>>652
Cでもそんな感じです。#includeを書かなくていいので、少し短くできます。
655デフォルトの名無しさん:2006/02/17(金) 20:27:16
>>654
某 C コンパイラは、
0バイトの .c ファイルをコンパイルすると、
何も実行しない .exe を作ってくれたけどな。

処理系依存だが、これが最短。
656デフォルトの名無しさん:2006/02/17(金) 20:40:49
int main=0xc3;
これ
657デフォルトの名無しさん:2006/02/18(土) 00:23:20
おおすげーどうなるのそれ?>656
658デフォルトの名無しさん:2006/02/18(土) 02:32:41

>>657
C言語の場合、mainって予約語だから変数名で使えないからエラーなるんじゃねか?
659デフォルトの名無しさん:2006/02/18(土) 04:20:44
660デフォルトの名無しさん:2006/02/18(土) 12:08:40
>>658
>mainって予約語
661デフォルトの名無しさん:2006/02/18(土) 12:14:03
>>659>>660
新手の釣りなんジャマイカ?
662デフォルトの名無しさん:2006/02/19(日) 16:15:41
エラーじゃなくて大方のコンパイラは警告を出すな
663651:2006/02/20(月) 10:42:54
>>655
>某 C コンパイラは、
>0バイトの .c ファイルをコンパイルすると、
>何も実行しない .exe を作ってくれたけどな。

>処理系依存だが、これが最短。

やはりなにか出力されないと…

>>656
>int main=0xc3;
>これ

VC++6とgcc3.3.3でコンパイルして、どちらもワーニングもエラーも出ませんでしたが、
実行しても何も出力されませんでした。"int main=0xc3;"と出力されることを期待したのですが。
664デフォルトの名無しさん:2006/02/20(月) 11:44:11
はあ?
665651:2006/02/20(月) 13:35:43
失礼。話が切れてたんですね。
666デフォルトの名無しさん:2006/02/21(火) 11:52:11
はあ?
667デフォルトの名無しさん:2006/02/21(火) 13:25:29
通りすがりだが・・・

>>651 Cで改行含めて85バイトで自分自身のソースコードを標準出力に出力するプログラム
を受けて
>>652>>653>>655 がそれぞれレスしていたところへ、なぜか関係ない>>656が出てきたので
>>663 が「それ自分のソースコード出力しないじゃん」と指摘、>>664>>666とバカに絡まれて
革磯スな展開。

自分のソースコードを出力するコードって、構造的に f(a,b) -> a b b みたいな変換を a b で
定義して、引数として b をあたえて a b b にする、というパターンが定石だけれども、
ほかのやり方はあるのかな(>>655は別として)。
668デフォルトの名無しさん:2006/02/21(火) 21:01:45
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
669デフォルトの名無しさん:2006/02/21(火) 21:16:51
>>668
後の方のは「ほかのやり方」だな
670デフォルトの名無しさん:2006/02/21(火) 22:11:48
#!/bin/sh
cat $0
671デフォルトの名無しさん:2006/02/21(火) 22:12:54
#!/bin/cat
672デフォルトの名無しさん:2006/02/21(火) 22:20:10
>671
うまい!っていうか670が間抜けじゃん

@type %0
673デフォルトの名無しさん:2006/02/21(火) 23:02:39
>>667
それはみんな分かってたというか、
>>658>>663のアホっぷりに唖然としてたというか。
特に663は突然HDDをフォーマットされても文句は言えない。
674デフォルトの名無しさん:2006/02/22(水) 01:38:53
このまま延々と続くのも面白いと思った

+++[>+++++<-]>[>+++>++++++>++++>+++>++++>+++>++++++<<<<<<<-]>-->+>++>+> >>+++<<
<<<<...>.>.<<.....> >> >.>.>.<<<<.<.>.<<...> >.<<......> >.<<....> >.<<...> >.<<....
> >.<<...> >.<<......> >> >.......>.>.<<<<.> >>..<<<.<<.> >.<<..> >.<<.> >...<<...> >> >
......<...<.>.<.>.>..<.....<....>.<.>.<.>.>....<.>.<.<.>.>..<...<..>.>..<.....
.<..>.>..<....<..>.>..<...<..>.>..<....<..>.>..<...<..>.>..<......<....>......
.<.>.<.>.>....<.<...>..>...<.>..<.<..>.>..<..<..>.>..<.<..>...>..<...<....>...
...>.<...>.<.<.>.>.<.<.>.<.>..>.<.....>.<....<.>.>.<.<.>.>.<.<.>.<.>....>.<.<.
>.>.<.>.<.<.>.<.>..>.<...>.<..<.>.<.>..>.<......>.<..<.>.<.>..>.<....>.<..<.>.
<.>..>.<...>.<..<.>.<.>..>.<....>.<..<.>.<.>..>.<...>.<..<.>.<.>..>.<......>.<
....<.>.......>.<.<.>.>.<.<.>.<.>....>.<.>.<...<.>..<.>...>.<.<.>..>.<.>.<..<.
675デフォルトの名無しさん:2006/02/22(水) 10:35:12
>673に書かれてしまったが

>667
>なぜか関係ない>>656が出てきたので
出てきちゃいかんのか?「自分のソースコードを出力するスレ」でもないのに

>663
>"int main=0xc3;"と出力されることを期待したのですが。
これに呆れてるんだがなぁ
オマエも期待したクチかw>667
676デフォルトの名無しさん:2006/02/22(水) 11:12:26
どっちがとは言わんが流れが読めていない、または区別できていないやつが居た。それだけだろ。
↓感動したソースコードよろしく。
677デフォルトの名無しさん:2006/02/22(水) 12:57:40
>>675
お前口悪いな。
678デフォルトの名無しさん:2006/02/22(水) 13:11:26
>>667
> なぜか関係ない>>656が出てきたので
> >>663 が「それ自分のソースコード出力しないじゃん」と指摘

アンカーもないのに関係があると思うのもどうかと(ry
679デフォルトの名無しさん:2006/02/22(水) 16:21:58
どっちがとは言わんが流れが読めていない、または区別できていないやつが居た。それだけだろ。
↓感動したソースコードよろしく。
680デフォルトの名無しさん:2006/02/22(水) 20:44:10
BR14ってなんだっけ?
元F系のプログラマで、当時使った記憶があるんだか
遙か昔の事難で忘れてしまった。
681デフォルトの名無しさん:2006/02/23(木) 10:31:11
ブランチ14 (BRANCH 14)
すなわち14番レジスタが保持しているアドレスにジャンプせよという命令。

ちなみに14番レジスタはサブルーチン等の戻りアドレスを格納することが多い。
682デフォルトの名無しさん:2006/02/23(木) 14:18:04
リンクレジスタってやつやね
683デフォルトの名無しさん:2006/02/24(金) 14:56:23
>>681-682
サンクス、思い出せました。
684デフォルトの名無しさん:2006/03/09(木) 16:31:09
俺の友達が作った宿題の解答
#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
685デフォルトの名無しさん:2006/03/10(金) 10:29:05
>684
> 交換(a, b);
ここは
> #define 場所of &
> 交換(場所of a, 場所of b);
みたいな感じじゃないのか
686デフォルトの名無しさん:2006/03/10(金) 13:09:52
>>685
いや、俺に言われても困るけど。
てか#defineでは日本語使えない
687デフォルトの名無しさん:2006/03/10(金) 14:19:47
まともなプリプロセッサなら日本語が使えてもおかしくない。
VC2005ってどうだっけ?
688デフォルトの名無しさん:2006/03/10(金) 17:43:44
>687
識別子にも日本語が使えます
689デフォルトの名無しさん:2006/03/14(火) 16:54:56
MS ってファイル名や
SQL Server はカラム名にも
日本語使えるしね。
690デフォルトの名無しさん:2006/03/18(土) 16:57:26
>>684
>#define (ry o.h
は、>>684によるただのtypoかね?

でもこれは面白いな。気合い入れてソース解析しようとファイル開いて、
いきなり「(ry」なんてのを目にしたら激しく脱力しそうだ
691http://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];
}
693デフォルトの名無しさん:2006/04/03(月) 21:31:36
>>692
よく書くコードだな

int hctoi(char c) {
return string("0123456789abcdef").find(c);
}
も同様によく書く。
694デフォルトの名無しさん:2006/04/04(火) 00:56:58
>>693
そのくらいまっとうに実装しろよ。
その汎用的で使いまわしのきく関数の実装を高々5行サボったことによる
可読性とパフォーマンスの低下は無視できないぞ。
695デフォルトの名無しさん:2006/04/04(火) 00:58:55
パフォーマンスはともかく、可読性が低下しているとは思えないんだが。
696デフォルトの名無しさん:2006/04/04(火) 01:29:36
こんなコードをよく書くようなプログラマはマジいらね。早く会社辞めてくれないかな。
697デフォルトの名無しさん:2006/04/04(火) 02:02:25
>694
より可読性が高くよりパフォーマンスの高いコードとやらを出してはくれまいか
698デフォルトの名無しさん:2006/04/04(火) 05:45:09
あのコードが文字コードに寄らないなんて考えてもいないんだろうな
699デフォルトの名無しさん:2006/04/04(火) 09:29:27
中身一行の関数の可読性ってなんだろうねw
トリッキーなことやってるならともかく、やってないし
700デフォルトの名無しさん:2006/04/04(火) 09:44:29
しかし[0-9a-f]以外の入力をとると戻り値が……
701デフォルトの名無しさん:2006/04/04(火) 10:22:43
それは、入力がそうならないとはっきりわかってるなら使えるし
そうでなければ、ダメというだけで
本質的問題じゃない
702デフォルトの名無しさん:2006/04/04(火) 10:52:12
>>693
↓こちらへどうぞ。
  ぱっと見て「ヘタだなぁ」と思うコード その2
  http://pc8.2ch.net/test/read.cgi/tech/1142741989/l50
703デフォルトの名無しさん:2006/04/04(火) 10:56:04
>>699
慣れた人間にはわからないトリッキーさと言うのもあるよ。
俺が

bool a = f()==b;

って書いたら(もちろん変数名はこんなんじゃないが)
そんなトリッキーなコードは引き継いだやつが困るかもしれないからやめてくれって言われた。
・比較式の結果を代入してる。
・= と == が同じ行に現れる。
・括弧がついてない。

どれも言語仕様上当然の使い方だし並のプログラマがこの行を見てコンマ1秒も悩む可能性は無いと思うが、
(むしろ俺は式の結果に名前をつけて変数に保存することで可読性の向上を狙った)
引き継ぐ人間がプログラミング初めて一週間かもしれないんだからわずかでも混乱の可能性があるコードは書くべきではないって言われたよ。

そんなやつが保守なんかするな思うが、現実の問題としてそういうのもいるからな。
704デフォルトの名無しさん:2006/04/04(火) 11:11:17
「トリッキー」「やめてくれ」はバカだな
「括弧をつけてくれ」なら許せる
705デフォルトの名無しさん:2006/04/04(火) 11:16:57
比較の結果を論理値として扱うことに慣れてないってことなんだろうが、
なんというか、認識が幼稚なんだね。物を正しく理解せず見慣れた形だけ
相手にするというのでやってるとそうなるのかな。

まさか&&は使わずにif文のネストで書けとかは言われないよねw
706デフォルトの名無しさん:2006/04/04(火) 12:07:00
そんなのはアマチュアしか書かないよ。もし本当にプロなら恥ずかしいと思えよ。
707デフォルトの名無しさん:2006/04/04(火) 12:21:17
感動したコードスレなのに
なんで皆でヘタコード晒してるんだ?

>>693
そんな性能でないコードを「良く書く」って公言してる人
初めて見ます田。こっそり書く人は多くいるだろうけど。
708デフォルトの名無しさん:2006/04/04(火) 12:29:33
>>707
性能を重視するなら別のを書くさ
709デフォルトの名無しさん:2006/04/04(火) 12:35:10
>>708
>>693はナニを重視して書いたコード?
「良く書く」って、どれくらいの頻度?

俺はあんな酷いコード書いたこと無いよ
誰だってそうだろ?
710デフォルトの名無しさん:2006/04/04(火) 12:54:40
>>708
>>693はナニを重視して書いたコード?
「良く書く」って、どれくらいの頻度?

俺はあんな酷いコード書いたこと無いよ
誰だってそうだろ?
711デフォルトの名無しさん:2006/04/04(火) 12:55:00
独りよがりにならないように、常に自省する心を持とうよ。
チーム開発してる職業プログラマなら、
間違い、勘違い、タイプミスを起こしやすいものを
極力排除するよう自然となっていき、間違っても
トリッキーな記述なんかしなくなるもんなんだがなあ。
もしかして、一人で好き勝手に開発できるような職場なのかな?
712デフォルトの名無しさん:2006/04/04(火) 13:13:45
>>710
可読性、可搬性、拡張性。

よく書く = この手のことをやらないといけないことになったらまずこっちを書く、くらい。
ここがボトルネックだと分かってから、アスキーコードに依存していいか確かめて書き直す。

c - '0' 的なアプローチじゃ例えばみたいな拡張はできんでしょ。
int hctoi(wchar_t c) {
  const wstring s(L"0123456789abcdef");
  return s.find(c);
}
713デフォルトの名無しさん:2006/04/04(火) 15:04:46
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
714デフォルトの名無しさん:2006/04/04(火) 15:18:57
>>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;
}
715デフォルトの名無しさん:2006/04/04(火) 15:20:24
1行を20行にしておいて、ちょっと長いで済ますな
と、ちょっと思った

趣味で書いたプログラムの中の、1関数を
今の仕事のコーディング規約に沿って書いてみたら
もとが5行なのに、100行になったのを思い出した
716デフォルトの名無しさん:2006/04/04(火) 15:23:04
そんなに汎用性とか可読性とか考えるか?
俺なら絶対、c-'0', c-'a'+10ってやるな。
717デフォルトの名無しさん:2006/04/04(火) 15:37:10
>>716
君にはそれで十分かもしれんが、そうでない人もいるんだよ。
718デフォルトの名無しさん:2006/04/04(火) 15:46:43
>>714
もともとパフォーマンスは気にしてないので割り当てるコストはデメリットにならない。
719デフォルトの名無しさん:2006/04/04(火) 15:50:47
>>715
あまり考えるな。
720デフォルトの名無しさん:2006/04/04(火) 16:10:26
一時オブジェクトを作るなといいつつ、誰もこれを書かないのに絶望した
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;
}
これはたぶん遅いけど
721デフォルトの名無しさん:2006/04/04(火) 16:16:28
上は誰でも思いつくし下は頭悪すぎ。
722デフォルトの名無しさん:2006/04/04(火) 16:19:46
でも誰も書かないのは何故かね?
723デフォルトの名無しさん:2006/04/04(火) 16:20:17
書 く ま で も な い か ら
724デフォルトの名無しさん:2006/04/04(火) 16:23:39
一時オブジェクトを作るなと言っておいて?
恒久オブジェクトを作ってごまかしておいて?
しかもstaticローカルだから、毎回初期化チェックが入るクソコードなのに?
725デフォルトの名無しさん:2006/04/04(火) 16:25:34
君らにはこっちのスレこそふさわしい
http://pc8.2ch.net/test/read.cgi/tech/1142741989/
726デフォルトの名無しさん:2006/04/04(火) 16:25:34
>>724
ひとちがい乙
727デフォルトの名無しさん:2006/04/04(火) 16:28:20
int hctoi(char c){
    return c%('a'-10)%'0';
}
728デフォルトの名無しさん:2006/04/04(火) 21:57:03
ここは学生さんのお遊びプログラマの集いですか?
職業人としては、そんなコードなんてちゃんちゃらおかしいです。
729デフォルトの名無しさん:2006/04/04(火) 22:01:14
>>696
>>706
>>728
…まあがんばれ
730デフォルトの名無しさん:2006/04/04(火) 22:21:21
お遊びでも>>727は最低だけどな
731デフォルトの名無しさん:2006/04/05(水) 14:31:59
sub calculator{ eval $_[0] }
print calculator( "(10 + 200) * 2");
732デフォルトの名無しさん:2006/04/19(水) 00:54:05
>>703
比較式の代入は慣れだね。慣れてないと読めない。
括弧は、あった方がよくね?
733デフォルトの名無しさん:2006/05/01(月) 10:54:30
hctoi を自分で書かなくてはならない のが嫌だなぁ
って言ったら荒し?
734デフォルトの名無しさん:2006/05/02(火) 02:00:53
gnuのstrcpyには感動した。
charポインタをintポインタに変換して4バイトづつコピーみたいにしてた。
アラインメントの関係で最初と最後には特別な処理が必要だけどね。
735デフォルトの名無しさん:2006/05/05(金) 05:46:52
メモリ資源の少ない環境なんかでやったらヌッころされちゃうだろうけど、
俺は hctoi みたいなヤツは256バイトのマッピングテーブルを用意しちゃう。
一見馬鹿げてるコードに見えるだろうけど、アホですら一瞬で理解できる可読性もあるし、
メンテナンス性も高いし、ガチで速いし、実用性抜群だと思ってるんだけど
やっぱり「一見馬鹿げてるコードに見える」が故になかなか理解を得られない。
736デフォルトの名無しさん:2006/05/14(日) 23:28:19
>>735
テーブル参照で早いのは昔のCPU
今のCPUじゃ逆に遅くなる。
737デフォルトの名無しさん:2006/05/15(月) 00:04:40
>>736
実測したら条件判断のヤツより速かったとかいう書き込みをどっかで見たぞ。
確か、vc の文字種判断を行う関数で。その関数、ヘルプでは同じ機能の
関数を自作しても標準の関数より速くなることはないから標準の関数を
使いましょうみたいなことが書いてあるんだけど、実測したらテーブル参照
のほうが速ぇじゃねぇか・・・てな、内容の書き込みをどっかで見た。
738デフォルトの名無しさん:2006/05/15(月) 00:21:34
キャッシュに載らない云々の話は無くも無いけど
基本的にはテーブル参照の方が速いだろ。

まさかとは思うけど、ジャンプテーブルと混同してないよな?
739デフォルトの名無しさん:2006/05/15(月) 11:36:38
>>736-738
プロセッサ特定してから話しろよ。
740デフォルトの名無しさん:2006/05/15(月) 13:02:54
いまのCPUっていうが、そのレベルで速度を気にするようなシビアな
ものを書いてる奴なんているのか?
そんな奴は、こんなスレの情報には頼らず自分で最適化してる
だろうな。
つまり、気にすんなってことだ。
741デフォルトの名無しさん:2006/05/15(月) 21:16:54
>>739-740
そだね。

>そんな奴は、こんなスレの情報には頼らず自分で最適化してる
そんな時はいろんなコードを実測比較が原則(もちろんホットスポット
をプロファイラで調べた上でね)だから、まぁ、テーブル参照もその
候補の一つってことでいんじゃね?
742デフォルトの名無しさん:2006/05/16(火) 19:39:54
>>737
条件判断なんて使わないだろ。
743 :2006/06/11(日) 12:21:24
744デフォルトの名無しさん:2006/06/11(日) 13:07:23
コンパイラのソース。
科学技術の結晶だと思った。
745デフォルトの名無しさん:2006/06/11(日) 13:43:18
コンパイラ屋になりないなあ。
746デフォルトの名無しさん:2006/06/11(日) 15:43:13
>>744-745
なんか哀れ
747デフォルトの名無しさん:2006/06/12(月) 18:04:17
>>744
どこにある?
748デフォルトの名無しさん:2006/06/13(火) 01:33:53
>747
マジで聞いてるの?
749 ◆tAo.kQ2STk :2006/06/13(火) 22:08:48
>>744-747
コンパイラを作ってます。

文字を読み込む関数作るだけで結構な時間食いました。
750デフォルトの名無しさん:2006/06/17(土) 20:47:49
再発明乙
751デフォルトの名無しさん:2006/09/06(水) 05:56:15
↓がんばって書いてみました。批評求ム。

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'));
のほうが軽いかも
753デフォルトの名無しさん:2006/09/07(木) 21:24:30
速度は無視して芸術点狙いで
int hctoi(int c){
    return (c|32)%39-9;
}
754デフォルトの名無しさん:2006/09/07(木) 21:49:30
>>752
かわいいなおい
755デフォルトの名無しさん:2006/09/07(木) 22:21:52
((c>('@'))?(c-('A')+10):(c-('0')))
756デフォルトの名無しさん:2006/09/07(木) 22:28:35
>>752,755
元のと違って英小文字で動かなくなるから気持ち減点
757デフォルトの名無しさん:2006/09/07(木) 22:45:09
もう顔にしかみえん('A') ('@')
758752,755:2006/09/08(金) 01:35:35
(c>('@'))?((c>('_'))?(c-('a')):(c-('A')))+10:(c-('0'))
759デフォルトの名無しさん:2006/09/08(金) 01:50:02
return(c+('w')-('m')-((c>('@'))?((c>('_'))?('a'):('A')):('0')+('o')-('e')));
760デフォルトの名無しさん:2006/09/08(金) 09:18:41
ところどころに入ってる ? がいい味出してるw
761デフォルトの名無しさん:2006/09/08(金) 09:21:00
かわいいなw
762デフォルトの名無しさん:2006/09/10(日) 12:05:44
丹羽信夫のCマガ連載(タイトル忘れた)で、顔文字を使ってコンパイルが通る範囲内で
物語風にプログラムを書くってのがあった
763デフォルトの名無しさん:2006/09/11(月) 01:22:08
何年前のスレだよ・・・
764デフォルトの名無しさん:2006/09/11(月) 22:18:38
GNUのインデントに引いた覚えはある
765デフォルトの名無しさん:2006/09/11(月) 22:32:09
GNUの括弧の位置にどんな根拠があるのか知りたい
766デフォルトの名無しさん:2006/09/11(月) 22:57:16
海外だと「BSDスタイル」とか「K&Rスタイル」とか名前が付いてるけど、
日本にも「つくばスタイル」とか「北陸先端スタイル」なんてのはないんかねぇ?
767デフォルトの名無しさん:2006/09/11(月) 23:21:33
>>765
エディタのTAB幅を8にしてみれば理解できるよ。
768デフォルトの名無しさん:2006/09/12(火) 06:57:35
そういう問題じゃないだろ。
769デフォルトの名無しさん:2006/09/12(火) 07:05:29
1画面に入る情報量をとにかく減らそうとしているコーディングスタイルを見たことがある。
波括弧はどんどん改行。
インデント幅は8。80桁で改行。
文の区切りが分かりにくくなるから、1文ごとに空行を入れる。

if ()
{
}
else
if ()
{
}
770デフォルトの名無しさん:2006/09/12(火) 10:23:54
>>769
「行あたりの価格」とか、くだらない事情があるんだろう。
771デフォルトの名無しさん:2006/09/12(火) 13:41:50
>>769
elseとifの間に改行入れられると分かりづれえ・・・
772デフォルトの名無しさん:2006/09/12(火) 18:30:51
いや、厳密な文法的には else if なんてものは無いのだから

if ()
{
}
else
{
 if ()
 {
 }
}

と書いて、さらに行数を稼ぐべきだったのでは。
そんなに違和感無いし。
773デフォルトの名無しさん:2006/09/12(火) 21:14:03
それやるとインデントが深くなりすぎるんじゃないか。
CにはLispのcondみたいな多重条件分岐構文がないからな。
774デフォルトの名無しさん:2006/09/12(火) 21:38:55
そういう行をかせぐプログラミングスタイルの場合
コメントを全角文字で飾ったりしませんか?
775デフォルトの名無しさん:2006/09/12(火) 22:23:18
しかもウィングコメントじゃなくボックスコメントで、とか。
776デフォルトの名無しさん:2006/09/13(水) 06:45:07
そんなもん
;
;
;
;
;

こうすりゃいいのに
777デフォルトの名無しさん:2006/09/13(水) 14:00:03
行単価どころか文字単価だったら、トライグラフで。

??=include <stdio.h>
??=include <stdlib.h>

int main(int argc, char *argv??(??))
??<
 printf("Hello, world.??/n");
 return EXIT_SUCCESS;
??>
778デフォルトの名無しさん:2006/09/13(水) 15:19:27
>>777
オンラインヘルプとしてマニュアル一式をprintfの引数として内蔵させれば簡単じゃ?
意外と実用的だし,マニュアルきちんと書くことは悪くないと思われ。
779デフォルトの名無しさん:2006/09/13(水) 15:57:09
doxygenとか使おうよ
780デフォルトの名無しさん:2006/09/13(水) 16:14:34
確かに空文とかマニュアルつっこむとかは
ばれるだろうから無理だな
意外と難しい問題だ
奥ゆかしく行を増やす
君ならどうする
#ifndef NDEBUG は無しな
781デフォルトの名無しさん:2006/09/13(水) 18:21:21
一時変数を大量に使ってみる。
int a = (b + c) * d;
なら
int bc = b + c;
int a = bc * d;
782デフォルトの名無しさん:2006/09/13(水) 18:22:50
実は全部asm文とか。
783デフォルトの名無しさん:2006/09/14(木) 00:56:02
変数名に漢字を使って逆に文字単価を下げてみる
784デフォルトの名無しさん:2006/09/14(木) 13:56:38
UTF-8なら1文字あたり3バイトに。
785デフォルトの名無しさん:2006/09/15(金) 22:37:44
>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デフォルトの名無しさん:2006/10/17(火) 21:27:10
誇張なしで一関数千行オーバー。
感動と同時にぶんなぐりたくなった。
788デフォルトの名無しさん:2006/10/17(火) 21:32:56
>>787
んなもん内容によるでしょ。行数だけで判断できるお花畑のほうがよっぽど
疲れた。寝る。
789デフォルトの名無しさん:2006/10/17(火) 22:39:33
#define private public
790デフォルトの名無しさん:2006/10/17(火) 23:11:52
まあ全部publicにすれば動くでしょうけどねぇ
791デフォルトの名無しさん:2006/10/18(水) 11:45:48
>>788
>んなもん内容によるでしょ。
そんなゴミクズコード、見るまでもない。
792デフォルトの名無しさん:2006/10/18(水) 12:50:08
>788
まるでこのスレを全否定するかのようなレスだな
793デフォルトの名無しさん:2006/10/18(水) 17:52:35
>>792
煽りは無視するのが原則。
794デフォルトの名無しさん:2006/10/21(土) 01:29:38
ミートソース
795デフォルトの名無しさん:2006/10/21(土) 10:37:19
つまりそれはスパゲティソースということか
796デフォルトの名無しさん:2006/10/21(土) 17:56:15
Apple ][のROMの中身。
797デフォルトの名無しさん:2006/11/21(火) 23:59:31
アセンブリで
mov eax,0;1clock

xor eax,eax;3clock
で書き換えて3バイト縮める方法には感動したが、それより感動したのが
sub eax,eax;1clock
に書き換える方法。
798デフォルトの名無しさん:2006/11/22(水) 00:10:16
その手の、同じことするのにこうやるのが最適っていう情報
どっかまとまってるページないですか。
799デフォルトの名無しさん:2006/11/22(水) 00:26:11
CPUによって違うからねぇ。
800デフォルトの名無しさん:2006/11/22(水) 01:46:40
486ぐらいまでは実行サイクルって意味あったけど
もう、内部RISCで並列実行だから、
現状で重要なのは前後関係のある命令とない命令の配置でしょ。
801デフォルトの名無しさん:2006/11/22(水) 02:04:04
つーか、xorがsubより時間がかかるCPUなんて存在しないと思うが。
どちらも2入力1出力だが、xorは各bit単位で完結するのに対し、subは他のbitに影響する。
もちろん、ほぼ全てのCPUで、どちらも同じclockで実行できるだろうけどね。

>>797には、感動する前に、もう一度clock数を確認してみることを勧めるよ。
802デフォルトの名無しさん:2006/11/23(木) 14:09:53
>>797
両方1clockだろ。
803デフォルトの名無しさん:2006/11/26(日) 16:11:25
廻されたbatファイルに
mkdir con.\
と書かれていたので気になって実行すると
名前conのフォルダが作られていた事
804デフォルトの名無しさん:2006/11/26(日) 16:17:53
>>803
うわ、すげ、まじで作れた。
で、これどうやって消せばいいんだw
適当にやってみたけど消せねー
805デフォルトの名無しさん:2006/11/26(日) 16:40:28
>>804
rmdir con.\
したら簡単に消えたが,これではダメなのか?
806デフォルトの名無しさん:2006/11/26(日) 17:11:12
>>805
thx!
rmdir conとしつづけてうまく行かずに悩んでた。
807デフォルトの名無しさん:2006/11/26(日) 19:31:15
>>806
他の禁止名も.\つけると作れる。

Dos & Win:

AUX
CON
PRN
NUL

Dos:

CLOCK

Win9x:

COM1 〜 COM4
CLOCK$
LPT1 〜 LPT9
XMSXXXX0

WinNT:

COM1 〜 COM9
LPT1 〜 LPT9
808デフォルトの名無しさん:2006/12/16(土) 21:05:37
A$=inkey$
x=x+(a$=36)-(a$=38)
y=y+(a$=37)-(a$=39)

こんな感じのを中学生のとき見て感動した
809デフォルトの名無しさん:2006/12/19(火) 00:18:27
>>808
俺は、ベーマガで覚えた
比較演算子でtrueなら、1を返すのに感動したよ
810デフォルトの名無しさん:2006/12/19(火) 02:30:43
BASICは0と-1じゃなかったか?(pascalも)
要は全bit0と全bit1で。
Cが特殊だったイメージ。
811デフォルトの名無しさん:2006/12/19(火) 11:08:25
BASICの頃は、true/falseの戻り値は機種依存だったような記憶が。
移植やってて動作が逆になったり
812デフォルトの名無しさん:2006/12/20(水) 01:10:39
0がfalseじゃないのは極悪だなぁ
813デフォルトの名無しさん:2006/12/20(水) 18:23:32
C覚えたての頃に見たstrcpyの実装。
今見たら「何だよこれ可読性考えろよ」って毒吐くんだろうけど。
814デフォルトの名無しさん:2006/12/20(水) 20:18:27
strcpyはそれほど複雑でなくしかも色んなプログラムで大量に使われるものだから
可読性を犠牲にしても高速性を追求する価値があるものの一つじゃないか。

gccなんかはビルトインでインライン展開しちゃうしね。
815デフォルトの名無しさん:2007/01/08(月) 02:36:51
>>813
strcpyの実装コードを見て、読みやすく短くて凄いと思ってしまった俺に対する当てつけか?
816デフォルトの名無しさん:2007/01/13(土) 14:08:19
オープンソース系で感動できるコードってないの?
FirefoxのはNSとかついててしねよって思ったけど
817デフォルトの名無しさん:2007/01/13(土) 20:23:02
オプソは相当強力にコンベンションがないとゴチャゴチャする一方だからなあ……
818デフォルトの名無しさん:2007/01/13(土) 23:51:23
while(*dst++ = *src++);

感動した
819デフォルトの名無しさん:2007/01/14(日) 01:03:00
>>818
でも、それって無意味に可読性を犠牲にした典型的な悪い例として
槍玉に挙げられるようなコードだぞ。
820デフォルトの名無しさん:2007/01/14(日) 01:05:00
>819
感動するだけならいいんじゃ?真似すんなよ初心者は、ってことで。
821デフォルトの名無しさん:2007/01/14(日) 01:15:44
>>820
そんなコードは初心者だけじゃなく、上級者も避けるだろ、フツーは。
ようは、決していいコードなんかではなく、邪悪なコードなんだよ。
老婆心かも知れんが、そんな邪悪なモノに感動しているのはどうかと思うわけよ、ロートルとしては。
822デフォルトの名無しさん:2007/01/14(日) 01:34:25
何言ってんだよ
可読性高いぞ
823デフォルトの名無しさん:2007/01/14(日) 01:40:50
俺も、プログラマとしてはもう年だし、そろそろ上流行程の職へ進もうかと考えてるんだが、
>>822 みたいなヤツを見ると、このまま先へ行ってしまっていいものかと不安になる。
824デフォルトの名無しさん:2007/01/14(日) 01:46:57
*d = *s;
while(*d) {
 d++;
 s++;
 *d = *s;
}

これ可読性高い?
825デフォルトの名無しさん:2007/01/14(日) 01:52:55
for(int i = 0;src[i++];dst[i]=src[i]);
ならちょっとはマシ?
826デフォルトの名無しさん:2007/01/14(日) 02:03:50
ほらな?
こーゆー間違い犯すヤツ( >>825 )がでるだろ?
これこそが >>818 が邪悪なコードだと言われる所以。

>>824
視点の違いというの理解してくれ。
ある視点においては、確かに >>818 のようなコードのほうが
可読性が高いのは俺も認めるし、複雑さを隠蔽しているという点に
おいても評価されるべきかもしれん。
しかし、その複雑さの隠蔽が >>825 のようなミスを招く。

つか、もう古典的な書籍だが、Writing Solid Code ぐらい読んどけ。
827デフォルトの名無しさん:2007/01/14(日) 02:47:48
要するに馬鹿除けってことだな
愚直でもだれでもわかるコードを優先しろってことだ
828デフォルトの名無しさん:2007/01/14(日) 02:55:26
>>826
M$のソフトのバグの多さとか見てると説得力全然無いんですけど
829デフォルトの名無しさん:2007/01/14(日) 03:31:03
MSのソフトはバグが多いとか、そんなことバカなこと言ってるヤツがまだいたのか。
830デフォルトの名無しさん:2007/01/14(日) 15:34:21
>>818の様なコードが問題になるのは、"可読性"ではなく"安全性"

MSのソフトにバグが多いというのは間違い、安全性に問題が多いと言うのが正しい
まあ、MSに限った話じゃないけどな、>>818の様なコードがC言語の標準ライブラリとして存在しているのだから...
831デフォルトの名無しさん:2007/01/14(日) 20:06:59
>>830
えっ、本気で言ってるの? 
832デフォルトの名無しさん:2007/01/14(日) 20:21:46
↑キモイ、アンチMS厨があらわれた。


いつも思うことだけど、この手のキモイ、アンチMS厨って
自分たちがやってることが逆効果でしかないってことにどうして
気づかんのかねぇ。まぁ、だからこそキモイんだけどさぁ。
833832:2007/01/14(日) 21:23:59
>>832
マジレスすると、どっちかと言うとMS嫌いなんだけど、
Windowsがソースコード何行あるか知らないけど、良くこんなの作れるな〜と本気で思ってるよ
一応これでもソフト開発を生業としてるけど、Windowsよりもはるかに少ないソフトでも
バグはあるからね・・・・。

>832の作るソフトはバグが無いんだろうね!!って言うかプログラム作った事が無い?
834デフォルトの名無しさん:2007/01/14(日) 21:34:32
↑この人、マジでチョーキモイんですけど。
騙りまでやってなにがしたいんだが、さっぱり意味不明だし。
835デフォルトの名無しさん:2007/01/14(日) 22:57:03
>>833
名前欄間違ってないか?
836デフォルトの名無しさん:2007/01/14(日) 22:57:55
あ、自演か。
837825:2007/01/15(月) 02:17:18
なんか俺が投下したアホコードがいつのまにやら延焼を広げている……
あんまりケンカすんなよ、おまいら
838デフォルトの名無しさん:2007/01/19(金) 07:25:34
っつーか、Cの思想的には>>818はとても正しいでしょ。
記述量も少ないし。
839デフォルトの名無しさん:2007/01/19(金) 07:30:53
2chの死相的には人を見下して叩くのが生き甲斐の香具師が多いからなぁ
840デフォルトの名無しさん:2007/01/19(金) 14:03:00
\0が来なかったらと思うと恐ろしくて眠れません
841デフォルトの名無しさん:2007/01/19(金) 15:42:39
それじゃ文字の検索すらできないよ
842デフォルトの名無しさん:2007/01/20(土) 07:33:46
オーバーランして\0が来ないことよりも
ワーム埋め込まれることの方が怖いって話?
843デフォルトの名無しさん:2007/01/27(土) 03:12:52
>>838
文法は、正しいが、思想的には正しいのか?
C言語の思想って何だ?
記述量少ないのはいいね。

だけど、やはりわかりにくい。
844デフォルトの名無しさん:2007/01/27(土) 09:02:12
思想じゃなくて精神だけど、これのことかも。

Cの精神
・プログラマを信頼する
・プログラマが行うべき必要作業を妨げない
・小さく単純な言語仕様
・一つの操作に一つの方法
・移植性が保証されなくても早い処理速度

ソース: ttp://www.amazon.co.jp/exec/obidos/ASIN/4320027973/hirnet-22
845デフォルトの名無しさん:2007/01/27(土) 09:04:05
……と思ったけど、どれにも関係ないような。
846デフォルトの名無しさん:2007/01/27(土) 11:15:37
当時のCコンパイラの実装では、>>818と書いた方が
効率的なコードが生成されたからとかじゃね?

最適化技術が発達した今のコンパイラではどうかわからんけど
847デフォルトの名無しさん:2007/01/27(土) 17:02:06
確か、当時のUNIXを動かしてたプロセッサに
読み取り後インクリメント等の、*p++に相当する命令があって
それを生かすためにCの文法をそれにあわせて作った

というようなことをどこかで読んだ気がするが
真偽は未確認。
848デフォルトの名無しさん:2007/01/28(日) 04:29:25
>>847

それ、リッチー(K&RのR)が否定してたはず。
849デフォルトの名無しさん:2007/01/28(日) 08:34:44
結局、Cの思想じゃなくて>>838の思想だったってことでFA?
850デフォルトの名無しさん:2007/01/28(日) 11:15:43
>>849
タイプ数を減らすことを、C の設計目標のように書いた記事を、80年代に何度か読んだ覚えがある。
>838 の思想というか、>838達の妄想かも?
851デフォルトの名無しさん:2007/01/28(日) 15:04:25
>>847
それは ?: 三項演算子の事だったと思う
852デフォルトの名無しさん:2007/01/28(日) 17:30:20
タイプ数減らしをノルマのように科すと汚いソースになると思うが、
タイプ数を意識的に増やすと機械生成のように冗長で読みにくくなると思う。
MFCとかのRADで吐いたようなダラダラ長いのもまた疲れるw
853デフォルトの名無しさん:2007/01/28(日) 17:38:42
>>818のコードは、現在でも早いし、コンパイル後のサイズも小さいはずだよ
ただし、CPUの高速化で無意味にはなっているがな

今のトレンドは、早いこと、小さいことよりも、安全であることだろ
854デフォルトの名無しさん:2007/02/01(木) 22:17:03
>>853
>>818 のコードは確かに遅くはないだろうが、
別に等価な他の表現にくらべて元から優位性があるわけではない。
855デフォルトの名無しさん:2007/02/02(金) 04:48:42
>>854
そりゃ何を等価と定義して優位性を何で測るかによるだろうよ
856デフォルトの名無しさん:2007/02/02(金) 10:54:32
>>853
「安全」を定義してください。
857デフォルトの名無しさん:2007/02/11(日) 19:27:29
while (*((int *)dst)++ = *((int *)dst)++);

速度も危険度も数倍に
858デフォルトの名無しさん:2007/02/12(月) 22:32:36
正直、読む気がしない。
859デフォルトの名無しさん:2007/02/13(火) 08:14:45
>>856
定義されなきゃわかんねえのか?
860デフォルトの名無しさん:2007/02/13(火) 12:59:44
>>859
解ったフリしてないで safe 或いは proof で終わる単語が幾つあるか
探して来い脳足りん。
861デフォルトの名無しさん:2007/02/13(火) 15:03:37
馬鹿あらわる
862デフォルトの名無しさん:2007/03/03(土) 15:21:23
やっぱ>>818は可読性高いと思うよ。
863デフォルトの名無しさん:2007/03/04(日) 01:18:15
イディオムとして記憶してる奴にはな。俺もだが。
864デフォルトの名無しさん:2007/04/10(火) 12:55:40
>>818を理解できない、読みにくいというのは、
Cプログラマとして前提が間違ってると思う。
理解していてはじめてCプログラマなんであって。
865デフォルトの名無しさん:2007/04/10(火) 22:31:58
んで、理想論でバグの種を量産するわけだ。
866デフォルトの名無しさん:2007/04/22(日) 20:29:13
プログラム始めたばかりの頃「not 演算子」の存在を知って感動した。
それまでいちいちTrueだったらFalse、FalseだったらTrueを返すif文書いてたので
そのめんどくさい数行のif文がたった1語で表現できる簡潔さに美しさと感動を覚えた。
867デフォルトの名無しさん:2007/04/24(火) 00:09:06
>>818のコードは、この世の中で最も素晴らしい物だと思う
>>818のコードを理解することで、C言語の良さと邪悪さの両方が判る

ほら、感動的なコードに見えてきただろ?
868デフォルトの名無しさん:2007/05/20(日) 09:43:19
そもそも「感動する」のに安全性が関係するのか?
869デフォルトの名無しさん:2007/05/20(日) 10:05:49
そういやそうだ。
そんな評価基準を語るスレじゃないな。
870デフォルトの名無しさん:2007/05/22(火) 08:07:57
ま、>>819 が文句をたれるだけで、実際のコードを提示しない時点で
そいつがどんな奴か気づくよな。普通・・・
871デフォルトの名無しさん:2007/05/22(火) 08:46:00
人間が言う「普通」は、全て「俺(私)の脳内では」に置換できる
872デフォルトの名無しさん:2007/05/26(土) 18:46:52
メタレベルの感動だが
プログラムというものが上から下へ一行ずつ実行されるものだと初めて知ったとき。
いまだかつてこれ以上の衝撃はないかな。
873デフォルトの名無しさん:2007/05/26(土) 20:38:19
ノイマンならしょうがないね
874デフォルトの名無しさん:2007/05/26(土) 21:04:58
それ系だと、
マルチタスクの仕組みに気付いた時は衝撃だった。
自力でコンテキストスイッチするプログラムを書いた時、
とても興奮したのを覚えてる。
875デフォルトの名無しさん:2007/05/26(土) 23:36:29
そういう興奮って時代が下っていろんな仕組が用意されてくると味わうことが難しくなるね。
876デフォルトの名無しさん:2007/05/27(日) 11:24:57
そういう意味では、BASICの命令文をマシン語で拡張するすごい人がいる、
というのしか知らなかった頃に、「命令を自由に定義できる文法がある言語」
の紹介記事を読んだときは驚いたなー。ちなみにFORTH。初めて買ったOh!
MZの言語紹介記事にて。小6だったか中1だったか……

877デフォルトの名無しさん:2007/05/28(月) 11:06:46
俺の場合はLispのmacroが衝撃だった
マクロアセンブラなんかは知ってたけどパワーが段違い
878デフォルトの名無しさん:2007/05/30(水) 02:28:07
イベントドリブンなんか感動したなあ
879デフォルトの名無しさん:2007/05/30(水) 05:44:15
イベントドリブンやLispのマクロなんかはいまの若者も感動してそうやね。
880デフォルトの名無しさん:2007/05/30(水) 06:32:03
マクロは強力すぎ。
だけど、マクロに感動するまえに再帰に感動するのがセンスのいい子
881デフォルトの名無しさん:2007/05/31(木) 02:57:30
あぁ確かに
そう言えば Ackerman 関数なんて恐ろしいものもあったな
882デフォルトの名無しさん:2007/05/31(木) 03:57:36
コールバックも感動もんかな。
自分で制御してるのとは違う流れになるって辺り。
昔のBASICでも、ONなんとかGOSUBとかあったけど。
883デフォルトの名無しさん:2007/05/31(木) 04:41:41
上から下へのシーケンスフローの手続き型プログラムから
状態遷移のイベント駆動型プログラムに移行したときは
最初は何が何処から始まってどういう風に流れていくのかさっぱりだった。
884デフォルトの名無しさん:2007/06/26(火) 05:04:37
>>881
あんな簡単にトンデモないものが作れるのは衝撃だった>アッカーマン関数
885デフォルトの名無しさん:2007/07/08(日) 21:25:11
char hoge="あ";
putchar(hoge);
886デフォルトの名無しさん:2007/07/09(月) 12:27:12
変なコンパイラだな
887デフォルトの名無しさん:2007/07/09(月) 16:39:09
いったい何を表示させたいんだ
888デフォルトの名無しさん:2007/07/14(土) 01:16:28
     }                    /  o ゚.私はメーテル…
.     〉'' ,、,,,__               ノ} 。 :∴ 機械の体が欲しいのなら
     i ムツッ=,ニ_゙゙"''‐- 、、,,,__,,..,,,.. -‐'''"/ 。 X,,    999に乗りなさい
     l {{ ハ` `゚'~`  ,‐-,ニ二ヾ,,_ヽ   /   i'(_,.l\
      〉、`ハ    }  ` `゚'゙゙” }}'゙   ,'    ti=ti、iiヽ
.     / ハヽハ  ノ       //    {      ゙ヾヽ}
    / /ハヽヘ  `、_   (Cノ/  /  ハ      ノラ
   / // } Y゙\ `   Cノイ  /    \    〆'
. / / / /  ,ゞ,, `-‐ ''´〆⌒ヽ{  ,' ハ   \
 ;''"''ヾノ /_,/  `'' ァ''7/     \l l ヽヾ   \
889デフォルトの名無しさん:2007/07/14(土) 14:00:12
コピペにレスするのもナニだけど、
このスレ的には、その機械の体を動かしてる
プログラムのソースを見せろ、と。
890デフォルトの名無しさん:2007/07/15(日) 08:34:05
>889はエロ杉
891デフォルトの名無しさん:2007/07/15(日) 10:15:04
プログラムのソースで、性的興奮できるのか?
892デフォルトの名無しさん:2007/07/15(日) 15:38:44
そりゃーコード解析すれば何処が性感帯かとか、どんな体位が好みとかわかるじゃん。
893デフォルトの名無しさん:2007/07/15(日) 15:40:45
デバッガにかけて弄り倒す方が楽かも
894デフォルトの名無しさん:2007/07/20(金) 02:08:03
デバグが上手い人って、SEXも上手そう
895デフォルトの名無しさん:2007/07/23(月) 15:51:56
ナンパだろ。極意まどない、ひたすら打ちまくるだけ。
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のソースより
これは面白いと思った
897デフォルトの名無しさん:2007/08/14(火) 21:46:00
全部の行にコメント付
898デフォルトの名無しさん:2007/08/14(火) 22:51:29
import *;
899デフォルトの名無しさん:2007/08/15(水) 10:59:04
>>896
実行時の効率もソースの見易さも悪い感じ
900デフォルトの名無しさん:2007/08/24(金) 19:16:41
CからC++に移行してSTLのソース初めて読んだときだな。
typedefとconstの使い方に衝撃を受けた。
型を引数にして型や定数を計算できちゃうなんて!??
901デフォルトの名無しさん:2007/08/24(金) 19:32:29
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
902デフォルトの名無しさん:2007/11/25(日) 10:34:14
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 "あいえおう" 〜> "あいうえお"

とかは感動した
903デフォルトの名無しさん:2008/01/25(金) 10:53:57
ソースだけ公開されても頭悪いからどこが感動したのかわからん。
詳しく説明してくんなはれ。
904デフォルトの名無しさん:2008/01/25(金) 11:13:27
勉強しなさい
905デフォルトの名無しさん:2008/01/25(金) 18:05:50
×感動した
○ワラタ
906デフォルトの名無しさん:2008/01/25(金) 18:16:09
Sub Func()
  End
End Sub
907デフォルトの名無しさん:2008/01/25(金) 20:42:54
一番かどうかわからんが。WTLの0x042444C7のやつ。
自分でも試しに書いてみたが、え、動くんだ? とか思った。
908デフォルトの名無しさん:2008/01/25(金) 23:10:33
mainの引数argv[0]なんて使わねぇのにこんなん渡すんじゃねぇって
昔から思ってたんだが、busyboxのソース見て感動した。

多分こんなんで感動するの俺だけなんだろな。
909デフォルトの名無しさん:2008/01/26(土) 00:56:53
>>907
マシン語を直にソースへ埋め込んでるのか
ネタとしては面白いけど可搬性無いね
910デフォルトの名無しさん:2008/01/26(土) 01:43:46
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 で判断しててウケタ
911デフォルトの名無しさん:2008/01/26(土) 02:36:11
ソースじゃないんだが、はじめてNextのインターフェースビルダーを見たときは脳内麻薬でまくりだった。
912デフォルトの名無しさん:2008/01/26(土) 15:23:02
>>908
UNIX業界行くとviとかsendmailとかargv[0]により挙動の違うプログラムは多い
>>911
今でもMac用として残っているので是非使ってやってくれ
漏れはWebObjectが今でもすごいと思ってる


再帰を使ったルーチンは感心できるのが多い気がする。
末尾再帰除去をきちんとやっているqsort()のソースを見たときは結構感心した。
main()を再帰呼び出ししているプログラムを見たときはC言語の仕様に感心した。
913デフォルトの名無しさん:2008/01/27(日) 05:49:54
おまえら羨ましすぎる。
COBOL歴20年越えるがCOBOLコードで感動した覚えがない。
背筋が凍りつきそうなコードは何度か出くわしたが。(これをメンテしろってか)
914デフォルトの名無しさん:2008/01/27(日) 05:58:38
>>913
多分、お前の書いたCとかのコードを見たら、周りの人間が背筋の凍る思いをするんだろうな。
915デフォルトの名無しさん:2008/01/27(日) 06:01:36
>>914
まあ、俺に「Cで書け」と頼まれる事もないがな。
頼まれても「できん!!」としか言えない。
916デフォルトの名無しさん:2008/01/27(日) 13:51:36
>>915
普段どういうコード見たり書いたりしてるのさ
917デフォルトの名無しさん:2008/01/27(日) 18:56:23
MFCの腐ったコードになれしたしんだころ
Qtの対照的なコードにほれた記憶がある。

もちろんGUIをつくるには使いづらいので
ほとんど使わなかった。
918デフォルトの名無しさん:2008/01/27(日) 22:58:00
>>913
俺はコボルプログラマに感動する
キーボード打つの苦手&英語苦手だから
俺がやるとスペル間違えまくり&遅くなりそう
919デフォルトの名無しさん:2008/01/28(月) 01:34:18
>>917
ちょっと話がそれるが、今はなんでGUI作ってるのかおしえてくれん?
参考までにちょっと聞きたいなぁっと
920デフォルトの名無しさん:2008/01/28(月) 01:38:07
チンパンジーでもなるべく操作できるように
921デフォルトの名無しさん:2008/01/28(月) 03:32:00
>>918
今時のコボラーは、IDEで自動補完、スニペット使いまくりに決まってるだろ、常考
922デフォルトの名無しさん:2008/01/29(火) 21:17:01
>>921
そうなんだ、情報処理試験のしか見たことないからしらんかった。
923デフォルトの名無しさん:2008/01/29(火) 23:47:33
COBOL歴20年越えるが”IDEで自動補完、スニペット”なんか知らん!!
DISPLAYで充分じゃ。
924デフォルトの名無しさん:2008/02/22(金) 08:39:54
地震測定器のソースは感動したぞ


アンテナにかかる電圧の負荷を描画するだけだった

925デフォルトの名無しさん:2008/02/22(金) 21:53:06
成り行きでいっちゃう場面きた
926デフォルトの名無しさん:2008/02/22(金) 21:53:33
↑すみません、誤爆です
927デフォルトの名無しさん:2008/03/17(月) 00:09:20
なんか書け
928デフォルトの名無しさん:2008/03/17(月) 16:04:09
printf("Hell world!");
929デフォルトの名無しさん:2008/03/21(金) 19:38:16
930デフォルトの名無しさん:2008/04/15(火) 10:06:01
return continue …高尚な語彙
931デフォルトの名無しさん:2008/06/01(日) 04:44:12
感動したソースは、あれだな、
pcm8だな
ハードウェアで1chしかないPCMをソフトウェアで8chにするドライバ
932デフォルトの名無しさん:2008/06/01(日) 17:24:12
>>931
あなたプログラマじゃないでしょ
933デフォルトの名無しさん:2008/06/01(日) 23:47:13
今でもソースコード付きでVectorに掲載されてるよ
934デフォルトの名無しさん:2008/07/10(木) 16:25:14
>>931
ミキシングしてるだけだろ
何か特別なことしてるわけじゃなかろうが
935デフォルトの名無しさん:2008/07/10(木) 18:00:06
ここで颯爽とコロンブス登場。
936デフォルトの名無しさん:2008/07/12(土) 19:10:26
10 run ;
937デフォルトの名無しさん:2008/07/18(金) 22:14:25
>>934
理論的にはできるのわかってても、
それをクロック10MHz程度、メモリも1〜2M程度で実際にやってみるのがミソだな。
さらに最適化したpcm8aだったっけ、普及したのは?
938デフォルトの名無しさん:2008/07/22(火) 16:48:34
俺はディスカバリー、ヒストリーチャンネル、J−SPORTで欧州リーグみてるよ。
そんでさ、ふっと民放にチャンネル変えると、
すげーやらせ臭い笑い番組やってんだよな。ゴチバトルとかいってさ。
939デフォルトの名無しさん:2008/08/16(土) 22:29:32
昔見た某社カーナビのソース。
巨大なswitch文のcaseが直値で書かれていたこと、
じゃなくて、それが10進と16進表記が混在していたことかな。
940デフォルトの名無しさん:2008/08/18(月) 00:12:47
皮肉かよ
941デフォルトの名無しさん:2008/08/18(月) 17:47:37
>>939 すれ違い
942デフォルトの名無しさん:2009/01/03(土) 17:58:46
スレ違いだろうがVC2005で日本語が使えた時。
厨臭いのは十分解かってるがこのコードに何か可能性を感じた。
#include<stdio.h>
#include"日本語.頭" //日本語のdefine群
これは、(収納の,空間)
{
これは、(測りの一種,構造体)
{
符号が無い 長い 整数の 長さ を持つ。
};
これは、(図形の一つ,構造体)
{
符号が無い 長い 整数の 高さ と、 幅 を持つ。
無し 面積を表示(無し)
{
ここに、 符号が無い 長い 整数の 面積 がある。
面積 とは、 高さ を(幅,で掛けた)ものだ。
printf("%d",面積);
}
};
}
整数の 主要(整数の 引数の数,文字の *引数配列[])
{
ここは、全ての 収納の 中身を含む。
ここに、 測りの一種 定規 がある。 また、 図形の一つ 長方形 がある。
定規 の 長さ は、 100 で、 長方形 の 高さ は、 定規 の 長さ と同じだ。
また、 長方形 の 幅 は、 長方形 の 高さ を(2,倍)したものになる。
それでは、 定規 の 長さ が(100,と同じ)である限り 長方形 の 面積を表示 >
定規 の 長さ は、 0 にする。
もし 長方形 の 高さ が(100,未満) だったら 関数は -1 を返す。
じゃなかったら 関数は 0 を返す。
}
943デフォルトの名無しさん:2009/01/03(土) 18:32:14
2万行を超えるクラス
944デフォルトの名無しさん:2009/01/04(日) 02:33:58
果たしてそれは感動という言葉を用いるのが適切なのかどうか。
1クラスの行数で言うと.NETのDataGridViewクラスは2万行どころじゃないね。
945デフォルトの名無しさん:2009/01/04(日) 04:06:30
#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

しょうもなっ
946デフォルトの名無しさん:2009/01/04(日) 08:46:16
>>944
>1クラスの行数で言うと.NETのDataGridViewクラスは2万行どころじゃないね。
え、うそだろ・・・
947デフォルトの名無しさん:2009/01/04(日) 18:09:27
bool IsSeven(int n){
return n = 7;
}

C++勉強始めたころ、これにものすごい感銘受けたな
948デフォルトの名無しさん:2009/01/04(日) 19:19:13
説明してくれ
949デフォルトの名無しさん:2009/01/04(日) 20:10:04
>>946
DataGridViewMethods.csだけで3万行近くあるよ。中身はDataGridViewクラスだけ。
partialで分割されてるから、クラス単位で見るともっと行数あるはず。
950デフォルトの名無しさん:2009/01/04(日) 20:57:01
>>949
いやDataGridで何やってるか詳しく知らんけれど、今作ってるライブラリーがGrid関係だけでなくThreadとか全部含めても2万行ぐらい何で・・・
データソースがあって、それを基本的に表示編集するだけで何で2万3万行も必要なのかと。
951デフォルトの名無しさん:2009/01/05(月) 15:07:15
>>942
マジキチwww
952デフォルトの名無しさん:2009/01/05(月) 21:56:20
でも、>>942 みたいな言語、使ってる人いるわけでしょ
ひまわりとか、なんかそんな名前の

意外とニーズあるのかもしれない
953デフォルトの名無しさん:2009/01/07(水) 18:49:48
日頃、変数名を文字列でなく記号としてとらえてる自分としては
逆に文章を読んでしまい開発効率が下がる。
954デフォルトの名無しさん:2009/04/21(火) 20:56:48
クジラが「こんにちは」と言う。

http://nadesi.com/doc/kouza/01-1-hello.htm
955デフォルトの名無しさん:2009/09/02(水) 12:14:09
おしい
956デフォルトの名無しさん:2009/09/02(水) 15:16:35
最近じゃないけど、データ構造に演算式含めたり関数ポインタのように使える機能の構文。変態言うな。
http://www.rapideuphoria.com/refman_2.htm#1より
> {x+6, 9, y*w+2, sin(0.5)}

演算式を含めるのはあまり使わないけど、実際にやってみると...
object a
integer b,c

b = 2
c = 10
a = {1+2, 3+2, b*c, b/c}
? a[1]
結果:3
957デフォルトの名無しさん:2009/09/02(水) 18:15:00
>>956
evalと何が違うの?
958デフォルトの名無しさん:2009/09/05(土) 10:31:05
javaのEnumMap(Setだったかも)がビット演算で書かれていたことには感動した。まったく予想してなかった。
959デフォルトの名無しさん:2009/09/05(土) 15:04:02
ちゅ

しゃ

は、みんなどう書いてる?
CHU?TYU?
CHI?TI?
SHA?SYA?
960デフォルトの名無しさん:2009/09/05(土) 15:20:16
#include <stdio.h>

int main(void){
  printf("hello, work\n");
  retrun 0;
}
961デフォルトの名無しさん:2009/09/05(土) 20:40:25
printfは思いからputs使え!
962デフォルトの名無しさん:2009/09/06(日) 09:34:22
retrun…
963デフォルトの名無しさん:2009/09/06(日) 09:59:54
gccならputsで済むprintfは自動でputsに置き換えてくれるはず
964デフォルトの名無しさん:2009/09/11(金) 03:54:44
965デフォルトの名無しさん:2009/09/16(水) 06:23:21
>>956
それって遅延評価なの?
966デフォルトの名無しさん:2009/11/26(木) 19:36:07
i=1-i
967デフォルトの名無しさん:2009/11/27(金) 08:04:30
while(*dst++=*src++);
968デフォルトの名無しさん:2009/12/06(日) 23:16:33
>>957
関数型言語ではないのでevalとは違うしtclとも違う。
表現形式や関数のインタフェース違う。

>>965
 ドキュメントでは遅延評価とは記載されてない。
たしか変数の値を変更したときは即時反映される。

>>960
 ANSI Cだとvoid main()ではないよ。
969デフォルトの名無しさん:2010/01/03(日) 04:52:48
(´・ω・`)
970デフォルトの名無しさん:2010/01/04(月) 21:19:40
/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 {

}
}
971デフォルトの名無しさん:2010/01/04(月) 22:11:28
最適化されれば同じかもしれないけど
d=1-dよりもd^=1の方が速い気がする
972デフォルトの名無しさん:2010/01/05(火) 00:26:50
d = ~d の方が良いんじゃ?
973デフォルトの名無しさん:2010/01/05(火) 00:39:22
ステータスレジスタへの影響が違う
974デフォルトの名無しさん:2010/01/05(火) 19:58:49
for (int d=0; cond; d=1-d) {
if (!d) {

} else {

}
}

って何がしたいの?
975デフォルトの名無しさん:2010/01/05(火) 20:24:38
>>974
condがfalseになるまでthen節とelse節を交互に実行したいけど、
ループ中で for (...) { ...; ...; } とは書きたくない何らかの理由があったんじゃないかね
976デフォルトの名無しさん:2010/01/05(火) 21:00:55
ループで書くと while(cond){ ...; if(!cond)break; ...;} こうなっちゃうんじゃね
977デフォルトの名無しさん:2010/01/06(水) 00:28:41
>>973 x86を仮定してないか?
978デフォルトの名無しさん:2010/01/06(水) 01:06:28
いや、x86だけじゃない
まぁMIPSは想定してないがね
979デフォルトの名無しさん:2010/01/06(水) 01:14:06
>>976
>>974のelse節次第ではelse節が連続で実行されることもありえるからそれはまずい
980デフォルトの名無しさん:2010/01/06(水) 22:59:15
980
981デフォルトの名無しさん:2010/01/12(火) 12:02:23
980
982デフォルトの名無しさん:2010/01/12(火) 22:35:22
次スレ建てられん。頼む
983デフォルトの名無しさん:2010/01/12(火) 23:24:22
984デフォルトの名無しさん
.  /     /  /  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'´  /::::::::/ヽ