X



今までに見たソースコードで一番感動したのは deux
■ このスレッドは過去ログ倉庫に格納されています
0004デフォルトの名無しさん
垢版 |
2010/01/12(火) 23:29:39
>>1
要するに stos[b/w/d] だろ
0007デフォルトの名無しさん
垢版 |
2010/01/13(水) 06:56:38
>>3
左から右に代入に変更してあるってことか?アホじゃないのか?
それだったら -> を左から右への代入ってことにすればいいんじゃないのか?
0008デフォルトの名無しさん
垢版 |
2010/01/13(水) 10:15:37
こういうので感動できないのは、俺が年だからかなぁ。 こういう書き方出来ると分かっても、使わないなぁ。
0009デフォルトの名無しさん
垢版 |
2010/01/13(水) 12:04:53
昔は再帰の書き方で感動したこともあったけど
今は別にって感じだな
枯れちまって情熱がもうないのかもしれん
0015デフォルトの名無しさん
垢版 |
2010/01/13(水) 13:04:55
ソースって訳じゃないんだけど
感動したものにこんなのがある

SQLで覆面算を解く
ttp://miko.org/~naruto/Artifact/MASKSQL.html
0016デフォルトの名無しさん
垢版 |
2010/01/13(水) 14:18:44
呼び出し元でバッファサイズと終了条件の設定を保証しないといけないから、
これだけだと危険なコードだよねぇ
0017デフォルトの名無しさん
垢版 |
2010/01/13(水) 17:47:19
値交換っててっきり一時変数が必要かと思ってたらそうでもなかったんだね

x = x + y;
y = x - y;
x = x - y;
0019デフォルトの名無しさん
垢版 |
2010/01/13(水) 18:28:37
>>12
アセンブラやってた人間から見たら当たり前だよな
Cで同じことが出来ると言われてもあっそうとしか
0022デフォルトの名無しさん
垢版 |
2010/01/13(水) 19:26:56
>>1
終了条件を満たした直後に2つのポインタがインクリメントされてしまうのが
無駄なような気がしていたあの頃が懐かしい
0028デフォルトの名無しさん
垢版 |
2010/01/14(木) 22:12:39
xor を使った値交換は超有名かと思ってたけど、知らない人もいるのかね。
>>17 みたいな劣化版を今更発見されても・・・ねえ
0030デフォルトの名無しさん
垢版 |
2010/01/15(金) 00:50:13
xor使って中央値を求めるコードは昔見て感動した
こんな奴。

int median(int x,int y,int z){
    return max(x,y)^max(y,z)^max(z,x);
}
0032デフォルトの名無しさん
垢版 |
2010/01/15(金) 02:20:01
a = max(x,y)
b = min(x,y)
z = a*a - b + 2 * y

という式において、x, y と zの関係を表にすると、以下のように
zが正方形を規則正しく埋めるような形に並ぶ。
 00 01 04 09
 03 02 05 10
 08 07 06 11
 15 14 13 12

用途:
x,yの上限が動的に増える2次元配列を、
素のvetorに無理矢理突っ込むのに使ったり…
0034デフォルトの名無しさん
垢版 |
2010/01/15(金) 10:50:41
値の交換なんて高々数値1個分のメモリがあればできるのにと思ってたけど、
ROM が数十キロバイトもあるのに RAM が数百バイトなんてマイコンも今時あるんだな。
そら有用だわ。
0037デフォルトの名無しさん
垢版 |
2010/01/17(日) 13:10:35
Dim ac(10) As Class1

Public Sub Test()
Dim c As New Class1
Dim i As Integer
For i = 0 To 10
Set c = Nothing
Set ac(i) = c
Next i
End Sub
0038デフォルトの名無しさん
垢版 |
2010/01/26(火) 17:28:08
>>32
00 01 03 06 10
02 04 07 11
05 08 12
09 13
14
こう並べると条件分岐のない式になる。データの種類によってはこれも便利。
0043デフォルトの名無しさん
垢版 |
2010/03/24(水) 22:38:23
文字列のコピーじゃないかね
文字列の終端には\0があるからそれでループが終わる
K&Rとかに出てきそうな感じ

しかし、>>1って未定義じゃないんだろうか

初級C言語Q&Aの
二つの副作用完了点の間に、オブジェクトの値を2回以上変更している場合、
又は変更した後で新しい値を得ること以外の目的でそのオブジェクトをアク セスしている場合

詳しくないのでわからんけど
0045デフォルトの名無しさん
垢版 |
2010/03/25(木) 18:39:57
把握した。
つまり、このコード自体に意味はないが
while((*src)++ = *dst++)
だったら未定義ということだな
0048デフォルトの名無しさん
垢版 |
2010/03/26(金) 05:40:51
>>45
未定義じゃ困るだろ。
右辺値に代入するコードがエラーにならなかったら、みんなC/C++捨てるよ。
0050デフォルトの名無しさん
垢版 |
2010/11/11(木) 20:04:19
ほっしゅ
0052デフォルトの名無しさん
垢版 |
2010/11/12(金) 16:16:41
>>1見てわからんとか、Cの初級者以下じゃないか。
ム板ってこんなに程度が低くなってたのか。
0056デフォルトの名無しさん
垢版 |
2011/11/14(月) 21:53:40.55
0057デフォルトの名無しさん
垢版 |
2011/11/15(火) 07:26:30.94
だれか>>31教えてください。
0058デフォルトの名無しさん
垢版 |
2011/11/15(火) 21:06:15.22
どこかのスレでみたこれ。

/*
ここに処理
//*/

最初の/*を//*にすればどーたらこーたら
0061デフォルトの名無しさん
垢版 |
2011/11/18(金) 20:19:39.09
>>60
確実じゃないの?

場合によるけど。


/*例1
 /*コメントのネストはNG*/
//*/

/*例2
 //このコメントはネストしてもOK
//*/

/*例3
//*//この状態はNG

ようはコンパイラが/*を見つけたら*/がくるまでコメントと見なす機能と//のコメントを上手く使ってるという事で。
0062デフォルトの名無しさん
垢版 |
2011/11/19(土) 16:29:55.61
うっ
0063デフォルトの名無しさん
垢版 |
2012/02/18(土) 01:26:16.96
char main[]={0xC9};

関数=コードというのは分かっていたんだが、ここまでストレートに書けるモノなのかと衝撃を受けた。
0066デフォルトの名無しさん
垢版 |
2012/10/11(木) 20:09:31.62
test
0067デフォルトの名無しさん
垢版 |
2013/03/26(火) 09:10:03.52
(function(s, callback){
  var result = console.log(s);
  callback(result, function(err, result){
    if(err){
      throw err;
    }else{
      console.log(result);
    }
  });
})('Hello', function(err, callback){
  if(err){
    throw err;
  }else{
    callback(null, 'world');
  }
});
0068デフォルトの名無しさん
垢版 |
2013/03/26(火) 09:18:43.10
馬鹿には無理
0069デフォルトの名無しさん
垢版 |
2013/03/26(火) 09:23:36.70
#include <windows.h>
#define o(c) (c=='/'?63:(c=='+'?62:(c<'A'?c-'0'+52:(c>'Z'?c-'a'+26:(c-'A')))))
int main(int ac, char **av)
{
BYTE str[]="AAAAfzH8QRUEXWl0XVF0XX10QXUEf1X8AFwAXxXwGMekNYpIToHAR0qYAGaofyXEQX0AXUvMXVygXUNwQQnAf06YAAAAAAAA";
BYTE dmp[72];
for(int i=0;i<24;i++){
BYTE c[4];
for(int j=0;j<sizeof(c);j++) c[j]=o(str[i*sizeof(c)+j]);
dmp[i*3+0]=((c[0]<<2)&0x00fc)|((c[1]>>4)&0x03);
dmp[i*3+1]=((c[1]<<4)&0x00f0)|((c[2]>>2)&0x0f);
dmp[i*3+2]=((c[2]<<6)&0x00c0)|(c[3]&0x3f);
}
HWND hwnd=GetDesktopWindow();
HDC hdc=GetDC(hwnd);
HDC hmemdc=CreateCompatibleDC(hdc);
HBITMAP hbmp=CreateCompatibleBitmap(hdc,32,32);
HBITMAP holdbmp=(HBITMAP)SelectObject(hmemdc,hbmp);
for(int i=0;i<24;i++)for(int j=0;j<3;j++)for(int k=0;k<8;k++)
BitBlt(hdc,(j*8+k)*32,i*32,32,32,hmemdc,0,0,dmp[i*3+j]&(128>>k)?SRCCOPY:NOTSRCCOPY);
SelectObject(hmemdc,holdbmp);
DeleteDC(hmemdc);
ReleaseDC(hwnd,hdc);
DeleteObject(hbmp);
return 0;
}
0070デフォルトの名無しさん
垢版 |
2013/03/26(火) 11:41:16.36
eNptWNeS40aWfZ+v6NDEarqEmiUAgjBRakXAE44kDOE6+gHeew+t/n1R1T0asxsMEOTJkzevSXPz/jWrg3IKo0+/LlkdNsvw3+l
vf/nrn+BeZv4H0vZeUnmfgqaqonr8fMCvP300Hs9PL3+Zmyz85KNIGAVNGH2mHIP99Es4jK9ZPX4asj16/Q4NffDy+8fPg/wVB7
99+R384y1u+u9dhi/ga/YFfMt+hY4v4Av88nuQev2nX/wvP5Gut4MEAJxOP719kMMv/tcMgL79/Xh9A6B/SgkOCcGv4VsAAC/vw
3y0B3//G/C3b18GIHgbgC/h2x/v9Hftvo/3ruPpfIwJ/NAv+Ip8e/sHJz84+a/IW340B1/zb1/exX4+jPma/YIA+bd32S//dZjz
dth8YGfgsOzz5+Ar+O3XX+GXn8EVBOPg5X/eIejbb78hH9D55U869J0OHXTkBx38TocP+ncJ8T/p8Hc6fNDR7/TgnR58PX/79PM
ncD0f3D/+eNe88rL6wwQveP3uyl+8+YeJ5X5Y8e3LT5G4jzUD61c5MBOSHTReHMuxCjaRVfpxcsnFuZtPUx1VtsZTE6SU51Qu5i
RpZO4HsCjWTOIAy43jWrPtbf4EEMyNIDGlCt2Y2+/h/VEvy2PBBYondo2uAWuPKY/VKbAoFAPOBHRN7rrUxghEl41O9Xf2Hoh5T
5ZVYA9NCiWBM54RYVBVGkxGkBnj0KMLymVVHext8UnKI2k2ZxfK6DBiVAUAqaiF1kj0GXKVeq483luXyp4oqw5/8y7pIXegoAxf
wzZx+NIrz1BtUYNi3JyhIwKLBGcW3Ug+BbicrYjeGemw7+moMeMcsOxCUYIsm5/syUYcLvAEdJ7FwUszJORaB2FNl6eWFNWCk1F
YOlQwyXkybxYNk/x8XcWtYG/w0AhXSWjX6Ik69mnLBoTzSmC+TW73CG9QbSCMLjf1TAMDsKa8ty5WYbkTzGJFgGKJSSBP43T3z0
UWn1lxm4AxfEqIpA/uDorBep2qzbUExu43Te5lLenOfgiDDsrlJuZU5Mg0t9vlHrh6O4S+TAroGKzcfXVXmb/SghJJi8+j62GOj
Qgh4zMNY7dzQfiWAQCP7Loe7tYn8frQjOzUZShcN1LUBWnQlYXSMZjUOClvHoairo55g5n7WA7KBA/Kspw26yqS7t3L7NgXh46s
aH13V1Q6jynQQmld03Vj3cWylscuDMIwIpXRyot7wY3VNiposd/62z0H1nHibgNTqFYAFEElWPi2XQrvudP4iCJm4rCBkj0ywS2
bFgLUK4H4GXVT2SEte/m+Yn10N51VftpEBFsQP2kXx/T6y31j76RiQjV94aV7Gy5dYN6tczILgQsOJ8sGmw4lTDIBqIsLypTrol
xYnWLPDl0fNgUH6qPeHLinO5QLWtZS3x8TycUtc+OFsI2nCprGdvazc38hc7cEvRznZvWM0eXlpnAcBCDJUgam+6wk3JYLuTOQy
rinnT2YjEZpniWq02Ow9Aw686RmbHLlEW4loTeZQ1ecdyy+YrRNbINrUFpc0wyQEqNNcyujcjaffm1S2F11sMLtggo9cckwDisK
WlPPOeNTZjC6KgWrL7Nsc1sVZcPUCrqxra2nGE2h25RcOT+eS5+bvo3S2sVlawOrkRJ4bFi5XXjPRb3kRBlR2o++I9p8ag9ql52
j3eUVWfEl1VmsB1RJhGdBVy31qzJ94tUAZlLrbIq49FNrc0XsigjnXl2xmEtnLmWuWsRu8RAjTqocSgWXMsc0No5lmQy6C43SHt
LN2HHJ9VxqDwvfp9zcRVrQfK2mT2Te7SBaye3d46+rG7qZKFkNkZPLzEeL1h6LhHbmbI0HHRgeXt+tiMwd+sCToZIOfZWV+jJno
0071デフォルトの名無しさん
垢版 |
2013/03/26(火) 11:42:52.12
R1ZxcUt131hoccoYhg+wru6lwobZPMkweCmbQxHqdPZRVznyqbUDZPVkwmHLn34t16qXpaslrD7cAsL20WlNAZ6M8tr2ERrh7Bg
uN/Ola9MWE1ELs7LmbNAAKoGE/iAHt7ICe64QZmOEYdyWgfoo4fa7oU/nQZo1C4MYQCef9n2yGnhXr+ekrB5SjogdW2+zxrRgHW
7QKUKYpC+Int3cWd+dcz+kdzDadd4UiQioGcfMe4xLgvYrKFDkNB4RN7eMFgD9HLj8uV0J9xNvi/X9DQ/U9+SZZTTQvWUyzchNE
z0Fgh6XdgmMrUPPTLOD6Dt9lGxytybIXIWdK/vWRk9ZijYO1HhF+ItG3Rw8M2LGMGFBeO9fmmPdQa72uqJPsZOvgmLsSYXBFjN5
6gjbE10YHlfT1wo6ECnSE9v9/GYEzBZV8ttOgNJiZVS0FgO8aCuwq3l8TtsziMSYkQa9ydGb+r16mKtvqY31GSsETRidHVw2cw3
VyBR9DlYdrqea2fISdLiTm0mlVaZgSbJZa2rKy3EVfDSFpJ2Td1+UDrOUAn5jj+I+HZE1cg6Y9yIqWQtHxignRJqV6mNwSBpy9c
KIkzsxCyL/Gr2FtVSoXFCU2/yeJXA8pZHdi4hEOiK3QnqkdEQ0GT8ZnnlVehaYAcX5sYNT+5yHeNR7zPak1VphR9A444Vw8V9C2
5YpUDR5foIHndZcwmWHQuZ5Fe4mkjdsog82+7PYs7jCbjUFws0MXn1FDxaeAmLY6lgxzmdUsC26LV8uvoU4AuBLdEaKULmoFs70
oCm3ZTrUOneYDkjrAWzRYUtIU3X4epjjy1aJ1Rx9ds5f7oaJPOGYCzbdm0JpevGgbHUPLVQKpYA5gaVeHmzcOHWk17aAxrsQExM
4FYgrecBvwbPCxob0nDC7iM3Q81Dw1wGOV/TFhfO9YM1NtrhzLVd7RZUuvOdhmyCm9vVj83oYu7NirrpaKbyyTpO7SDzAd8Xt1x
znZmjypQaoUrzagIbkFjq7hm6msm6ZjczINEC2usVuUPGlVMV3+lAB6aofg0Y3pJghKpm7YIZ2dgzQ7NXqucwxMSo0R48FN9QfF
x7CDc3GbFIBk4zxijTrOlhdb/kO6aZD5MY5rFUc/tKlMKxcckeQgWaaGVO/pydYulQ/OhiLCG95jXnjRfVUDmGnJ8UxmcA75gWV
IBG2gETRJw2QYDRQ2h9IkACJK0eug1uUxhDpV49ogKcli1dMYHOS1c/L550K5MeIfh9KPViMfuVXXqjpp0e6oICyEtAPJ/hUVdv
Zj0yGurUnJBLI9CrSXFOLBqZL8dRjvbRzHhbFQfmaFrwskZn86kgwoZPjGWpJ30TSDPZewewxyOdIoDjLLlELO0IZVwQ1qVuGbL
S1hSL/Z3RrkAJM31/d5EL43slF0cKc6w9treyFhDopXWuvRnLXjOhqY6z5kUGdWuTkzW5hWhatIPU0E/KEmCblUk26SYf6ZsluV
lLv5U5aZgVKQ3pg65Ejl77NoaHY2Mggd6LRQfyH/4GzWeSteTQBloJSaEneOvquzz3vS66dyKs9rj00+yZhHCAS/1wLRrFvOHG1
SopWK0Vm7foJn1EKeBep+J8fqb66sXTPKwG/tgDbIRA72wfy5DzLT3MHQ0IENe8G4UhsJ1BZfZ0N+ezWcDZLOImnsvNVZ/12A0G
ppdo+EnM2L0K1rSxLqspn8hbtgbxSCmZrpDTEIyUpQsjUIEqSmx4Vyaae+wVqn5mTpw6Bhc4Y6/NxUv8umCf2tlTThpitvDA9vt
zlnG54loV4E17JrG1F32+NVVCDHgaalQtvtMWuRMsrGrKtQBlOONucXXl+tYB/SWB/Es73Cn7iZagzhB2GxE2GJcJgEu+dHEwEA
0072デフォルトの名無しさん
垢版 |
2013/03/26(火) 11:54:13.50
FAjI0cMd6o8FYaZdkYE7pxdg1hLe3LpxGTZAST7vOZnYJiB4DrOOeG2bNPAUi4xhd3tjkZ07FLHIuo3nDf57O5XXTQhkmzlR+pV
8GBme3ZQj/FhqlHNzz+7QNvc1W6ygDJtOr0RDJsDJTyHlB7tjM9l1QhziPZTqLZTTNV/+GuXTLbqruec/R0wzocO3KzxjQlgiq4
nMAutnIRZuUxLnVP+BBrnE47GcSZXcxgbQN8l6tzoY1O44blk9saPd16Xlqydg+dSEPDZS1HsReRi5TJq7lUPAISKldSR1JASWn
vnjfkiLIengzR6Lm1hFzocfS85Hw/1ckqF97l9jjLhMzPWo7yd6VSRBhYRTri+UcCcKHv2rKxnLgjrw6EDMrmvsHL/sY84zgqAr
t6QJaQFxbFLaJb8QBgGcoJ769t6BsLIbcgNkGitOUFENzEhi6VmcqW+rnH947w6FynyL7fSaRFgSJc81MPgax1yrl6VZXoZJ05s
MAfinKWrnC0dvqNFsk4WEIrnZTWjVowp1dntnT+mskXxrzDpZHFt21YzQDDInxPvDbT+SKG8Agup5TbY5yzrNvjtKYoaeuw2Dwo
9bhJYc+TuBAOcBWCVcxcQ1+qznwibWcCJ57lQBGXjCQqs62qLoS1bFrthJGpRwktYc/5klua4pbEE32K3PNq1oIN2ewglzkWdeF
FshQZ0N73jFbLZ1PrreN0iZNtMLlwQsHKOGPp3i0XSNM4zBIu136awRDOcBldC9snjnRjxtWHqM2H9dVwwtHG8g2UPSEF2GPd5V
kEhEqr6MVyS1VsiVCWI50Vy9kFi/ZZREs2WKEIdlyapDpFyQ+nvmAS/0jNe8hSLqI8nPjIp3FeB5iubDjfpTyGvo/LpawMzNloL
RbLQgIjdUJvCy3x+qTFTDhmuimON38WE9UamAVkfIN4pFhkhS68ouPpWvFpGyqJkl8TqNWAKDVREM6j1eNLcCOXYb7p8KIJ0DGr
ElBnz4OcgCznY8lgdZx2h2SqQgQjRaOW4byLSwiK0RXU6NTCdTD2UYJK4yL5w5kH94BGEPGMn7ZBjgYUUaEjF528SSdsdbORJ8p
gdamjqH1O/GPeBq1rbBZ65y9V7PoPPKuF00LH+oJEP2pB5Y5hX88wdP729s8q1Dv4+g6+vlc6Xr4z/Sn+CmNnFPz2Nh236yT+KE
99+YDesvjzVAdN1fbRMHw+qK8/fxSv/pT08tJH49TXn6C3q3VjPqVLHX7ho5GJhmJsWuujhvb55e3K0J/SMPhooj+/s35gVVQdM
N1H3hjRx0DemPll9M4Jg4NCCYZCPj4dF6L2/5CobKy89p34ioLg66Hvv3RoyvC9z+cfwIselVEw3v38+P78fdTXd6kvb8cNgir/
xMDj80Paq3UVDPbG6vrL278Xxz5cAwAv/14Ow9CPetjhs3efZr9gKJB/+5NTfAFfqy8QjL8Vvx4PALxWv/32BfoP+s/Voen4yNa
o/IdG+S84ULxmrx9FsPj9OSKXfdf5PxT+Fxt0jabvD+fl7f81/Lt3Xt6Yo3GM/tH4L9B7AD64L2/aAXhD9CNsrx9x+RF08O2P/w
UBPgSo
0073デフォルトの名無しさん
垢版 |
2013/10/28(月) 14:38:54.10
spamかと思ったらbase64か
0074デフォルトの名無しさん
垢版 |
2013/12/23(月) 22:24:51.29
>>17
4年が経とうかという書き込みにレス。
XOR 使う方法も同じだけど、大抵は素直にテンポラリ使った方がコード面もスピード面もいいんだよな。
コードが増えても RAM は1バイトたりとも使いたくない場合にのみ有効なワザだな。
ROM は数十KB 載ってるのに RAM は 256 バイトぐらいしかない組み込みとか。
0076デフォルトの名無しさん
垢版 |
2013/12/24(火) 09:24:17.82
それでもメモリに余裕があるならテンポラリ確保する方が良策だな。
いまどき組み込みでも値交換のテンポラリすら確保できないような状況は
なかなかないよな。

しかしすごいね、見てる人は見てるんだな。
0077デフォルトの名無しさん
垢版 |
2013/12/24(火) 10:13:18.47
専用ブラウザ使ってたらねぇ。

それはさて、メモリに余裕がなくてもレジスタがあるなら要らないノウハウだよ。
つーか、下手なコンパイラだと余計にメモリを喰いそうだ。
0078デフォルトの名無しさん
垢版 |
2014/01/13(月) 17:02:39.14
メモリを使うよりは速い
0079デフォルトの名無しさん
垢版 |
2014/01/13(月) 19:21:46.60
10年くらい昔、どっかのサイトでCを使って
「TRUEとFALSEを交互に返す関数」の作り方について解説があった

if文で実現する奴  :初心者プログラマー
not演算で実現する奴:並プログラマー
xor演算で実現する奴:上級プログラマー

当時学生だった俺はえらく感銘を受けたが
現在はxorで実現する奴を開発チームに入れると禍根を残す気がするのだ
0080デフォルトの名無しさん
垢版 |
2014/01/13(月) 22:40:47.87
10年後になると、「notだろうがxorだろうがandだろうが、たいした差は無いな」
と思うよ
0081デフォルトの名無しさん
垢版 |
2014/01/13(月) 22:43:52.15
>>57
またもやウン年前の書き込みにレス。

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

CP  0AH
CCF
ADC  30H
DAA

とも書けるけど、>>31 の方が汎用性が高いな。
0082デフォルトの名無しさん
垢版 |
2014/01/13(月) 22:44:46.46
そういう意味じゃないだろ。くだらないトリックではなく、本来の意味に沿ってプログラムを書かないと、
メンテナンス不能につながっていく、ということを>>79はいいたいんだと思う。
0085デフォルトの名無しさん
垢版 |
2014/01/24(金) 09:45:25.41
要件通りのコードを書くのが正解。その手のトリックはコンパイラを作る人が必要なテクニック。
0088デフォルトの名無しさん
垢版 |
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
0090デフォルトの名無しさん
垢版 |
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他モダーンなビルドシステムの方がいいとか思ってたんだが、
↑のを見てからむしろ他のビルドシステムが面倒に思えるようになってきた。
0091デフォルトの名無しさん
垢版 |
2015/02/05(木) 18:46:10.70ID:Wisgh0P5
同意
0092デフォルトの名無しさん
垢版 |
2015/02/05(木) 23:16:56.03ID:5/RSARoZ
#define ZERO 1

GNUでよく見かける。
0094デフォルトの名無しさん
垢版 |
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 ].
0095デフォルトの名無しさん
垢版 |
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 ].
0096デフォルトの名無しさん
垢版 |
2015/02/17(火) 17:11:11.79ID:sT/CiA2T
Cでも三項演算子で分岐できるやん
だが無名のブロック作れると喜んで複雑化するのは破滅の入り口
そこであえて踏みとどまって名前つきブロック/関数にすべき
0097デフォルトの名無しさん
垢版 |
2015/02/18(水) 02:37:00.51ID:QTgMdBtY
>>96
わかってねーなー。
分岐や反復に専用構文が必要なくて、
言語機能が簡素になんのがいいんじゃん。
お陰で分岐だけじゃなく、C#なんかで使われる次世代の構文だって
言語機能の拡張なしで使えるんだぞ。

"以下usingを使ったexample.txtにvalueと書き込むC#の処理と同等の処理。"
'/tmp/example.txt' asFile withWriteStream:
[ :aStream |
aStream nextPutAll: 'value'.
].
0099デフォルトの名無しさん
垢版 |
2015/02/28(土) 18:54:09.47ID:st/D/r/c
勤怠管理システムで残業0
http://www.fsas.fujitsu.com/service/idlm/
定時で強制ログオフシャットダウン
省エネ効果抜群
0100デフォルトの名無しさん
垢版 |
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
0101デフォルトの名無しさん
垢版 |
2015/03/03(火) 23:36:31.83ID:StzQ6W23
>>98
printf( a ? "成功\n" : "失敗\n");

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

ところでJavaScriptの関数リテラルみたいなのが他の言語にも実装されたら直感的にかけると思うの!
0104デフォルトの名無しさん
垢版 |
2015/03/19(木) 23:58:26.08ID:R5h2QGKb
// この部分はサワルナ!
0106デフォルトの名無しさん
垢版 |
2016/08/07(日) 17:05:15.45ID:fH23byCM
Erlang万歳
0108デフォルトの名無しさん
垢版 |
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??"":
0109デフォルトの名無しさん
垢版 |
2016/08/14(日) 09:28:18.90ID:Dug1tlBQ
IOCCC(国際難読化 C コードコンテスト)のプログラムはすごい

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

こういうプログラムがたくさんある(これは unix と出力するプログラム)
0110デフォルトの名無しさん
垢版 |
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年ほど前に比べると、プログラミングについてのノウハウみたいなものがこなれてきて使いやすくはなってきたと思うけど
もう一皮くらい剥けてプログラミングし易くなってくれたらいいんだけどな
0112デフォルトの名無しさん
垢版 |
2017/03/08(水) 13:50:57.20ID:jMX+hATM
>>110
julia
0114デフォルトの名無しさん
垢版 |
2017/03/09(木) 19:53:34.25ID:LKSg58e8
macroがあるよ
0115デフォルトの名無しさん
垢版 |
2017/03/10(金) 03:00:53.00ID:eBvZbI3A
全部英単語で構成されるのと適度に記号が混ざるのとどっちが見やすいんだろう
個人的には後者だけど
■ このスレッドは過去ログ倉庫に格納されています

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