|
我想macro写得能否简洁还要看各自需要(涉及多少变量,需要什么样的输出结果和变量,有没有时间上的重复),如果有时间上的重复,当然还可以写成两层,甚至或三层macro。尽管我写的macro中有时间上的重复,可以写成两层macro。但我写程序不愿花更多时间去玩俏,实用就成。没有必要过分挑战自己的编程能力和水平,甚至花更多精力和时间来为所写macro正确性和合理性去debug,我认为如果只是为了卖弄技巧,那完全划不来!
更何况很多时候我的顶头上司还想知道我的程序是否合乎他的需要,如果他不能明白,我还要花很多时间为他解释,那不是瞎耽误工夫?有时写程序,不单为最后得到的结果,也不光为自己看,更多时候还需要给别人看,给自己的顶头上司或监察机构看,特别是做临床药检试验(clinical trials),我想更是如此吧?
有趣的是现在有些人为了保住铁饭碗,一向为编程员所提倡的简明直接易懂的程序管理方法,现在却变得更让他人不易看懂。这倒是一个很有趣的话题!现在网上有很多这样的javascript,perl,java,c,c++ code,不知道有多少人对此感兴趣?或有谁想挑战自己编程的能力和水平吗?那你可以解释下述c程序吗?最后打印出的结果是什么?或是你也想尝一下用这种思维来写出相应的不易让别人看懂的SAS程序吗?
#include <stdio.h>
main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+k w'k:'+}e#';dq#'l \
q#'+d'k#!/+k#;q#'r}ekk#}w'r}ekk{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'k {rw' ik{;[{nl]'/w#q#n'wk nw' \
iwk{kk{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# \
}'+}##(!!/")
:t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1)
:0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bk'(q)-[w]*%n+r3#l,{}:\nuwloca-o;m .vpbks,fxntdceghiry"),a+1);}
我想假如有一天当计算机挑战人类的时候,我想那会儿的人类恐怕还是希望计算机不要聪明过人吧?
|