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

■ このスレッドは過去ログ倉庫に格納されています
2010/01/12(火) 23:23:19
やっぱりこれです
while(*src++ = *dst++) ;
・ポインタの型によってインクリメントの適量を判断して加算してくれる点
・行末の ;
・終了判定
無駄も過剰もなくって感じで好きです

前スレ
http://pc12.2ch.net/test/read.cgi/tech/1037458703/
2014/01/13(月) 22:40:47.87
10年後になると、「notだろうがxorだろうがandだろうが、たいした差は無いな」
と思うよ
2014/01/13(月) 22:43:52.15
>>57
またもやウン年前の書き込みにレス。

アキュムレータの下位4ビットをキャラクタコードに変換してる。
メリットはジャンプ命令を使わずに書けることかな。
Z80 なら、

CP  0AH
CCF
ADC  30H
DAA

とも書けるけど、>>31 の方が汎用性が高いな。
2014/01/13(月) 22:44:46.46
そういう意味じゃないだろ。くだらないトリックではなく、本来の意味に沿ってプログラムを書かないと、
メンテナンス不能につながっていく、ということを>>79はいいたいんだと思う。
2014/01/13(月) 22:54:55.96
スレッドセーフなのか気になる
2014/01/18(土) 13:02:24.39
>>79
xorで実現する奴:booleanの概念を持たない老害C(≠++)プログラマー
85デフォルトの名無しさん
垢版 |
2014/01/24(金) 09:45:25.41
要件通りのコードを書くのが正解。その手のトリックはコンパイラを作る人が必要なテクニック。
2014/01/24(金) 10:17:20.71
すれ違い
2014/01/26(日) 09:35:23.45
>>84
if(hoge == TRUE)…というコード書いて問題になったことがあるんだな。正直に言ってみろ。
88デフォルトの名無しさん
垢版 |
2014/02/05(水) 14:17:47.80
#include <stdio.h>
int main(int argc, char* argv[])
{
int x = 10000000;
int y = 1;

x = x ^ y;
y = x ^ y;
x = x ^ y;

printf("x=%d, y=%d\n", x, y);
return 0;
}

Output:
x=1, y=10000000
2014/02/05(水) 14:47:34.79
4bitあれば証明には十分
2014/03/31(月) 20:58:04.99ID:jZUG5SzL
パズル的なコードで感動する人が多いのね。

個人的に目からウロコだったのはsuckless.orgのMakefile全般。
http://git.suckless.org/st/tree/Makefile?id=3c546ae73924804ddc6d29dc3ab2f12a93287009
GNUのツールは猫も杓子もautoconfで人間が読めないMakefileを吐き出すものだから、
Makefileは人間の書くもんじゃねえとかscons他モダーンなビルドシステムの方がいいとか思ってたんだが、
↑のを見てからむしろ他のビルドシステムが面倒に思えるようになってきた。
91デフォルトの名無しさん
垢版 |
2015/02/05(木) 18:46:10.70ID:Wisgh0P5
同意
92デフォルトの名無しさん
垢版 |
2015/02/05(木) 23:16:56.03ID:5/RSARoZ
#define ZERO 1

GNUでよく見かける。
2015/02/05(木) 23:40:37.49ID:7ArXIVK3
ワロタ

でも #ifdef で分けるのに使うマクロは 1 なんだよな
2015/02/12(木) 16:15:36.77ID:1WRWm2Rj
無名高階関数があればifやswitchなしで分岐作れるんだって感動した

Object subclass: #True.
! True class methodsFor: 'testing' !
ifTrue: aTrueBlock
ifFalse: aFalseBlock

^ aTrueBlock value.
!!

Object subclass: #False
! False class methodsFor: 'testing' !
ifTrue: aTrueBlock
ifFalse: aFalseBlock

^ aFalseBlock.
!!
| boolean |

boolean := True.
boolean := False.
boolean ifTrue: [ 1 ] ifFalse: [ 2 ].
2015/02/12(木) 16:18:17.17ID:1WRWm2Rj
valueが抜けてた。

Object subclass: #True.
! True class methodsFor: 'testing' !
ifTrue: aTrueBlock
ifFalse: aFalseBlock

^ aTrueBlock value.
!!

Object subclass: #False
! False class methodsFor: 'testing' !
ifTrue: aTrueBlock
ifFalse: aFalseBlock

^ aFalseBlock value.
!!
| boolean |

boolean := True.
boolean := False.
boolean ifTrue: [ 1 ] ifFalse: [ 2 ].
2015/02/17(火) 17:11:11.79ID:sT/CiA2T
Cでも三項演算子で分岐できるやん
だが無名のブロック作れると喜んで複雑化するのは破滅の入り口
そこであえて踏みとどまって名前つきブロック/関数にすべき
2015/02/18(水) 02:37:00.51ID:QTgMdBtY
>>96
わかってねーなー。
分岐や反復に専用構文が必要なくて、
言語機能が簡素になんのがいいんじゃん。
お陰で分岐だけじゃなく、C#なんかで使われる次世代の構文だって
言語機能の拡張なしで使えるんだぞ。

"以下usingを使ったexample.txtにvalueと書き込むC#の処理と同等の処理。"
'/tmp/example.txt' asFile withWriteStream:
[ :aStream |
aStream nextPutAll: 'value'.
].
2015/02/28(土) 18:45:17.20ID:LrNX9W7z
三項演算子はリテラル以外禁止だと前の会社で言われた
99デフォルトの名無しさん
垢版 |
2015/02/28(土) 18:54:09.47ID:st/D/r/c
勤怠管理システムで残業0
http://www.fsas.fujitsu.com/service/idlm/
定時で強制ログオフシャットダウン
省エネ効果抜群
2015/03/01(日) 00:41:40.88ID:KvRPiAMx
awkだけど、最近ここで見た回答がすごいと思った。
2つのテーブルデータを合体させるとき、連想配列を使えば、
要素が同じか否か、という条件分岐を使わなくてもいいんだね。
たった1行で、しかもLinuxのjoinコマンドよりも融通が効くところがなおさらイイ。

How to merge two files using AWK?
http://stackoverflow.com/questions/5467690/how-to-merge-two-files-using-awk

$ awk 'FNR==NR{a[$1]=$2 FS $3;next}{ print $0, a[$1]}' file2 file1
101デフォルトの名無しさん
垢版 |
2015/03/03(火) 23:36:31.83ID:StzQ6W23
>>98
printf( a ? "成功\n" : "失敗\n");

が書けることを地力で発見して感動して使いまくってたら
なんか微妙な顔されたことがある。
2015/03/04(水) 07:46:28.47ID:UWB+qgaN
普通
printf("%s\n", a ? "成功" : "失敗");
あるいは
printf("%s\n", ["失敗", "成功"][a]);
って書けると良いね
2015/03/14(土) 15:46:47.22ID:ZPmTfQbC
>>102二つ目知らなかったけどバイナリを添え字ってのはちょっと抵抗が。。

ところでJavaScriptの関数リテラルみたいなのが他の言語にも実装されたら直感的にかけると思うの!
104デフォルトの名無しさん
垢版 |
2015/03/19(木) 23:58:26.08ID:R5h2QGKb
// この部分はサワルナ!
105デフォルトの名無しさん
垢版 |
2015/06/07(日) 04:42:56.99ID:+3hya87E
Dan plays Deus Ex 1 - First Time Playing
http://www.twitch.tv/dansgaming
106デフォルトの名無しさん
垢版 |
2016/08/07(日) 17:05:15.45ID:fH23byCM
Erlang万歳
2016/08/07(日) 23:40:36.63ID:8kEt+rxK
Elixirだろ
2016/08/08(月) 09:23:39.33ID:bsQ3M/kD
c#6.0だと
string a="";
if(hoge !=null && hoge.hage !=null) a=hoge.hage;
 ↓
var a =hoge?.hage??"":
2016/08/14(日) 09:28:18.90ID:Dug1tlBQ
IOCCC(国際難読化 C コードコンテスト)のプログラムはすごい

1987年の作品だけど
main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}

こういうプログラムがたくさんある(これは unix と出力するプログラム)
110デフォルトの名無しさん
垢版 |
2017/03/07(火) 16:22:40.06ID:DO9cEIcz
プログラムコードの柔軟性を持った言語って無いのかな

ifの書式で言うと、
if exp then block elseif block else block end
if (exp) { block } else if (exp) { block } else { block }
が俺の知る言語での主な書式なんだが、
expへの括弧の有無、blockを囲むのがthen endか{}か、elseifかelse ifか、言語毎の方言に毎回躓いてだるい

こう言うのって基本書いてる事は同じだから、コード走らせるときの前処理とかで吸収できるよな?
20年ほど前に比べると、プログラミングについてのノウハウみたいなものがこなれてきて使いやすくはなってきたと思うけど
もう一皮くらい剥けてプログラミングし易くなってくれたらいいんだけどな
2017/03/07(火) 18:05:00.53ID:sN5zB8qN
>>110
その問題は pascal が素敵に解決している
pascal は LL(1)言語
112デフォルトの名無しさん
垢版 |
2017/03/08(水) 13:50:57.20ID:jMX+hATM
>>110
julia
2017/03/09(木) 09:39:51.17ID:hS5pjfRn
>>112
julia は end が要るだろ。
114デフォルトの名無しさん
垢版 |
2017/03/09(木) 19:53:34.25ID:LKSg58e8
macroがあるよ
2017/03/10(金) 03:00:53.00ID:eBvZbI3A
全部英単語で構成されるのと適度に記号が混ざるのとどっちが見やすいんだろう
個人的には後者だけど
2017/03/10(金) 09:12:49.72ID:OTPF9/DX
全部日本語でよろ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況