トップページ⇒tech
984コメント265KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001七誌NGNG
何ですか?
0153デフォルトの名無しさんNGNG
>>152
おまえが上司なのか同僚なのかしらんが、どちらとしても失格。
0154デフォルトの名無しさんNGNG
>>153
ストーカーかなんかじゃないのか ?
0155デフォルトの名無しさんNGNG
>>152
ヴァカ
0156デフォルトの名無しさんNGNG
久しぶりの良スレハケーン
0157デフォルトの名無しさんNGNG
ユニコードのスペルくらいはちゃんと教えてやれよ。
0158デフォルトの名無しさんNGNG
yunikodo
0159デフォルトの名無しさんNGNG
夕丹子・小戸
0160デフォルトの名無しさんNGNG
いままで「うにコード」と読んでいた
0161デフォルトの名無しさんNGNG
久しぶりの良スレハケーン
0162デフォルトの名無しさんNGNG
フランスで食った、スパゲッティのソースは、うまくて感動したな。
0163デフォルトの名無しさんNGNG
未だにsourceとsauceの違いが分からん奴がいるのか?
0164デフォルトの名無しさんNGNG
>>163
いや、シャレなんだろう、きっと…。
0165デフォルトの名無しさんNGNG
>>164
シャレって、どこで食える。
どんなソース?
0166デフォルトの名無しさんNGNG
こちらと、姉妹スレ関係を、結びました。
http://food3.2ch.net/test/read.cgi/gurume/1045989510/
0167デフォルトの名無しさんNGNG
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;
}
0168デフォルトの名無しさんNGNG
↑まちがい

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;
}
0169デフォルトの名無しさんNGNG
VBの入門書(複数)でそういうの見たことありますよ。
0170169NGNG
まぁ、なんて書籍かって聞かれたら忘れたって答えますが(w
0171デフォルトの名無しさんNGNG
STL。
ひたすらあのコードを追っていった事があるが
発狂しそうになったよ。
0172デフォルトの名無しさんNGNG
>>167-168
逆ポーランド法で簡単な計算機を作る時にたまに使うがな。
0173デフォルトの名無しさんNGNG
BF(BrainFuck)のコード(と、その処理系)には、ワロタ。
ttp://www.muppetlabs.com/~breadbox/bf/

0174デフォルトの名無しさんNGNG
>>167
激しくワラタ
0175デフォルトの名無しさんNGNG
>>168
int answer = compute(1, '/', 0);
0176デフォルトの名無しさんNGNG
>168
エラーコード -1 でいいのか?
0177デフォルトの名無しさんNGNG
shl eax, 7
lea eax, [eax * 4 + eax]

eax を 640倍
0178デフォルトの名無しさんNGNG
,>,>,>,>,>,>,>,>,<<+++<<<<<<.>.>.>.>.>.>.>.>.
brainfuck
brainfxck
0179デフォルトの名無しさんNGNG
スタックポインタ使ってメモリフィルしてたのはちょっとだけ感動した
それもループ展開。
0180デフォルトの名無しさんNGNG
winユーザだったが、ドライブにあるmp3ファイルを全部検索してプレイリスト化するバッチファイルを作った香具師がいて、
さぞかし面倒なコードが並んでるかと思って見せてもらったら、
dir /b /s /o:n *.mp3 > index.m3u
この1行だけだった。まじ感動した。
0181デフォルトの名無しさんNGNG
>>179

メモリ操作が一番速いのは昔っから sp操作ですよ。
0182デフォルトの名無しさんNGNG
>>167-168
誰かeVal関数の実装方法を教えてください。
(Case文の巣窟??)
0183デフォルトの名無しさんNGNG
素朴な実装では関数ポインタの巣窟かと。
0184例えばCならNGNG
K&Rの付録Aにあるアレを、まんま関数化してくだけ。

// アレ
additive_expression:
  multiplicative_expression
  additive_expression + multiplicative_expression
  additive_expression - multiplicative_expression

      ↓

// 漏れが昔書いた腐れソースの概要
? additive_expression( ? )
{
  multiplicative_expression( ? )
  for( ; ; )
  {
    // '+' か '-' かで処理切り分け(それ以外はループ終了)
    // どちらにせよ multiplicative_expression をコールして
    // 加減演算するだけ。
  }
  return // 計算結果
}
0185デフォルトの名無しさんNGNG
>>177
解説きぼんぬ。x86は詳しくないので
eax <<= 7;
eax = eax * 4 + eax;
をやってるようにしか見えん。
0186177ではないがNGNG
>>185
eax = (eax<<7)*4 + (eax<<7)
   = (eax*128)*4 + eax*128
   = eax*512 + eax*128
   = eax*640

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

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

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

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

>>203 のメアド見てみ。
0207205NGNG
こういうのはアリ?
http://compsoc.dur.ac.uk/whitespace/count.ws
0208デフォルトの名無しさんNGNG
>>207
今までに「見た」ソースコードにならないので却下。









…なんて事は言わないのでご安心を。
0209デフォルトの名無しさんNGNG
IF … THEN
  IF … THEN
    …
  ELSE
    …
  END
END

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

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

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

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

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

宗教戦争になりそうなネタだから、これはこの辺で。
0218山崎渉NGNG
(^^)
0219山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0220デフォルトの名無しさんNGNG
>>217
昔は { } 付けなかったけど、それで泣いた事無いけどなぁ。
でも、今は一応付けるようにしてる。保険で。
0221山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0222デフォルトの名無しさんNGNG
i++ + ++i
0223デフォルトの名無しさんNGNG
BASICで論理演算を利用してカーソルキーによる移動を
やる方法を見たときかな。
0224デフォルトの名無しさんNGNG
if(a == 0)
 b = 0;
 c = 0;
アホだろ。
0225デフォルトの名無しさんNGNG
b=(a==0)?0;
c=(a==0)?0;
でつか?
0226デフォルトの名無しさんNGNG
>>224
感動したのか?
0227デフォルトの名無しさんNGNG
>>225
Cなら文法エラーのはず。
0228デフォルトの名無しさんNGNG
げ!!まじ?               
0229デフォルトの名無しさんNGNG
三項演算子でしょ?項が2つしかないよ。

b=(a==0)?0:b;
c=(a==0)?0:c;

b=a?b:0;
c=a?c:0;
0230デフォルトの名無しさんNGNG
使うのは反則技でつか?
0231デフォルトの名無しさんNGNG
あげてみよう
0232デフォルトの名無しさんNGNG
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のコネクションを取得してるっぽい処理
     }
    }
   }
  }
 }
}

元気に稼動中。
0233デフォルトの名無しさんNGNG
>>227
if(a == 0){
 b = 0;
}
c = 0;
って事なのでエラーにはならんだろ。
0234デフォルトの名無しさんNGNG
>>232
泣いた(w
0235デフォルトの名無しさんNGNG
>>233
gccでパースエラーになったぞ。
0236デフォルトの名無しさんNGNG
iiii, iiiiiはiv, vにしてもらいたい。
0237デフォルトの名無しさんNGNG
>>232
イイヨイイヨー
0238名無し@沢村NGNG
printf("きんたま\n");
printf("せんずり\n");
printf("おまんこ\n");
0239無料動画直リンNGNG
http://homepage.mac.com/norika27/
0240デフォルトの名無しさんNGNG
>>232
定番のアンチパターン?

確か、藤原さんの本にも書いてあったような・・・?
0241デフォルトの名無しさんNGNG
一番感動って訳じゃないけど、

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; で、エラーを抜け出してるのを見たとき。
0242デフォルトの名無しさんNGNG
>>241
俺はgotoを使うべきだと思うけどね。
アンチgoto原理主義者が無理やり考え出した、不自然な
プログラミングだな。
0243 NGNG
>>242
gotoは使わないでくらさい。
エラー出たらreturnで返せやゴルァ!
0244デフォルトの名無しさんNGNG
>>242
アンチgoto原理主義者などいない。

1 FORTRANなど過去のしがらみでGOTOをしょうがなく使っている場合。→原理主義ではない
2 gotoを排除する言語設計者。 →不要なものを入れないだけなので原理主義ではない。
3 >>241のような例。→単なるヘボ
0245デフォルトの名無しさんNGNG
241は判定で定数を左に持ってくるって時点でヘボっぽいけどな。
0246デフォルトの名無しさんNGNG
>>245
アホ発見
0247デフォルトの名無しさんNGNG
>>246
むしろお前がアホ
0248デフォルトの名無しさんNGNG
goto使ってるだけで文句言われることがあるんだよ
0249デフォルトの名無しさんNGNG
ふざけんな!!
後藤を全員首にしなきゃいけなくなるじゃん!!!
0250デフォルトの名無しさんNGNG
>>245-247
うえ、
気になる

なんで、左だと駄目なんだ?
=にしてたとき、コンパイラのエラー出るから
たまに、助かってるぞ。
0251デフォルトの名無しさんNGNG
>>250
それが馬鹿だということじゃないの。
FAQとかにもそんなことするよりlintを使えと書いてあるし。
0252デフォルトの名無しさんNGNG
うお、
lint 知らなかった。
でもさ、導入してまで、役立つの?これ?
■ このスレッドは過去ログ倉庫に格納されています