Comments on ORAC
- Posted by Pete Lomax <petelomax at blueyonde?.co?uk> Nov 06, 2007
- 675 views
Obviously this is all just my opinion, and when it comes across as harsh, that is probably just because it is 1) Implemented as a preprocessor: Madness, utter madness. I accept you are invested, but I suspect you know I am right: STOP Regroup, figure out your goals, and use your head. I've been here and done this: if you are determined you will find a way to use the stuff you have learned to your advantage. It may take time. 2) Conditional compilation: Good, and VERY BAD. DEBUG=0->1 is an example of Good. Linux vs Windows is an example of WRONG (one .il works on both = good). HLL statements to do this = VERY BAD:
function f() puts(1,"compiler asks") return find(wait_key(),"aA") end function if f() then include zA.e else include zB.e end if
Remember this is just my opinion, point is there are cases galore. You could probably prove me wrong round about here 3) include/global mods: GOOD I've agreed with MWL on similar, what would be cool is something that could suggest best possible changes "include"/"include global" wise. 4) comparison ops: I predict you just got this badly wrong from a true language semantics point, but as you said it is ultimately tweakable, and not something that would particularly worry me. (It all depends on exactly how you treat eg (a=b)=(c=d), where for simplicity of argument, a,b,c,d are all seqs of length 3 or 4) <as point 2> 5) Improved syntax: Dot notation. We like. Indirect routine calls: I think you missed a trick here. Impossible from a pre-processor angle, but what if routine_id did +1, and c_func/c_proc did +1 on the _same_ counter? Therefore c_func would be the faster/better route, missing a wrapping level, but call_func would (accept one sequence parameter and) achieve the same result? Auto-increment constants. We like, lots. Humbling how simple that is. I would use "infix notation" rather than "native operators", prolly just me. abs: Note that nested "|" may need additional round brackets, eg "|a + |b||" will not compile properly, but "|a + (|b|)|" would be fine. ~s Hmm: I personally dislike, but that sort of thing would be good as an "alias '~'=length(%1)" sort of thing? On the macro side, macros can (quite rarely imo) be pretty cool, but you MUST at least have a "-pp=expand_macros -out=x.exw" option so you can figure out/trace(1) what the pig is going on. You also wrote: "Perhaps some kind person will volunteer to write a <ahem> simple utility that can translate the names in the error file back into their original form.." Should you steadfastly ignore what I said in point 1 (just my opinion) and grant me the means, I hereby volunteer to make Edita do this. Lastly, incremental compilation seems a total cop-out to me. That said, while 2.4 did not need it, imo 2.5 and later do Regards, Pete