12,974 reputation
53046
bio website
location
age
visits member for 4 years, 7 months
seen 9 hours ago
Very senior embedded real-time systems programmer (Texas law is very picky about the use of the term "engineer"), unsuccessful candidate for U.S. Congress, and unreconstructed Cold Warrior.

Apr
23
comment Is it common to print out code on paper?
@user1249: It was the photon torpedo routine from the Matuszek-Reynolds-McGehearty-Cohen "STARTRK" ("Star Trek") game. It was written in FORTRAN IV. It had to parse the command, simulate the flight of either one or three photon torpedoes (possibly aborting if a misfire occurred), with perturbations, AND set up a stack to do 8-way connectivity of stars going nova when torpedo'ed or being adjacent to a star going nova, and killing off any Klingons adjacent to said stars. FORTRAN IV did not do recursion, and there just wasn't any way to factor it that didn't make it worse.
Apr
10
comment Is there a license that prohibits code share and using outside the company?
You need to consult an attorney on this one.
Apr
7
comment Has pre-increment operators become that common?
Historical background: The postincrement and predecrement operators have their roots in the PDP-11 indirect addressing modes. The addressing modes were designed that way SPECIFICALLY to facilitate operand stack PUSH/POP operations, stack-based subroutine call/return, and immediate operands (using postincrement on the program counter). C provided those cases to make it easy to generate tight code for computers with (by 21st century standards) microscopic memories. Later, they were generalized. I never see preincrement or postdecrement operators used.
Mar
30
comment Does path coverage guarantee finding all bugs?
Dijkstra actually said that on several occasions. Earliest I could find on a very quick Google was 1966 (just under 50 years ago!), again in 1970, and again in 1972, in his Turing Award lecture.
Mar
4
comment Is it always a best practice to write a function for anything that needs to repeat twice?
Actually, you want something like (mapc #'print name-list), and then something like (mapc (lambda (l) (mapc #'print l)) (list vip-list guest-list)). You can actually do things like this in C and C++, but it WILL baffle those of your coworkers who have never read the Wizard Book.
Mar
4
comment In ifs inside for loops, prefer checking for true, or for false and continue?
No, different kinds of PROGRAMMERS will use different things. A lot depends on what you grew up with. PERSONALLY, I do not use "continue", and I try very hard not to use "break" in anything other than a C/C++ "switch" statement "case" arm.
Mar
3
comment Helping testers who don't have specialized domain knowledge
Thinking like a user is not enough. In an article about the development of Zork, a very early text adventure game, one of the Four Great Implementors told a tale. One day, he made a modification on the weapons technology module, and made it possible for the player to acquire the axe wielded by a certain Very Bad Dude. (Normally, the axe vanished in a puff of smoke when the VBD croaked.) He told one of their better testers. The tester immediately said "GREAT! I'm gonna go chop down some trees in the forest!" Oops.
Mar
1
comment Protect memory from a potentially seg faulting function call
@rwong (continuing previous comment) Gypsy was designed to be formally verifiable AND to be suitable for systems programming. It did not have direct hardware access primitives; those were required to be supplied using assembly language (and by definition were not verifiable). HOWEVER, comma, the VAST amount of C and C++ code out there does NOT require direct hardware access primitives, nor does it require the ability to GOTO heck in a handcart. (Gypsy did not have a GOTO statement. Nobody missed it.)
Mar
1
comment Protect memory from a potentially seg faulting function call
@rwong, in the late 1970s, I was an undergraduate research assistant on Don Good's Certifiable Minicomputer Project. The project was doing research into formal verification. They were doing the work in Gypsy, a language that they developed, that was specifically designed to be robust and verifiable. Verification condition ("theorem") generation was completely mechanical and NO BIG DEAL.
Feb
23
comment Are there memory-memory instructions?
Older processors, most notably the DEC PDP-11 and TI 990, provided memory-to-memory instructions. Current-gen processors are almost all load/store machines, that do not do memory-to-memory.
Feb
23
comment Are there memory-memory instructions?
The PDP-11 instruction set allowed memory-to-memory instructions to be constructed.
Feb
20
comment Origin of the “array” term in computer science
I wasn't sure whether the original FORTRAN had arrays. I knew that FORTRAN II (predecessor to FORTRAN IV, the version I first really learned in 1970) had them.
Feb
19
comment What benefit is there to using recursive binary search over iterative binary search or vice versa?
@raptortech97: Read c2.com/cgi/wiki?TailRecursion for more information.
Feb
19
comment What benefit is there to using recursive binary search over iterative binary search or vice versa?
Binary search is tail-recursive, not generally recursive. As such, a recursive implementation should, given a competent language processor, incur NO speed or stack space penalty over an iterative implementation. Read the "Lambda: The Ultimate ..." papers from the MIT AI Lab for the gory details.
Feb
19
comment What benefit is there to using recursive binary search over iterative binary search or vice versa?
My understanding is that the JVM does not support a general GOTO operation, which is necessary for general tail call optimization. Tail recursion is a special case of tail call.
Feb
18
comment Optimizing code by using registers, but what if they are not enough in number?
@delnan: Worst case, with the temporary, you fetch radius[i] once, store it once in the temp, and then fetch the temp a few times, AS OPPOSED to fetching radius[i] those few times. The question is how much extra does the subscript operation cost. Moreover, depending on what you are doing between uses of the (temp-cached) expression, the compiler may be required to assume that something could have changed, and do an expensive operation. Using a scope-limited temp tells him that the temp DIDN'T change.
Feb
18
comment Should curly braces appear on their own line?
@Alex, comprehension is generally limited to what the programmer can see WITHOUT turning a page, or scrolling, or punching a button. Fancy "navigation" features still boil down to turning pages, meaning the programmer has to remember what he left behind, reducing comprehension. An IDE that can collapse and expand blocks might help, but I've only heard of one such (Rational R1000, for Ada) and I've never used it.
Feb
15
comment Should private functions be held to the same standards as public functions?
@user87166, the basic principle is that most things in life follow a normal distribution, a bell-shaped curve. The curve is symmetric about the mean, which in everyday life we call the "average". Half of the curve is left of the average, below average, half is above average. (TECHNICALLY, half are below the median. For everyday purposes on programming skills, the median and the mean are probably close enough to be considered equal.)
Feb
12
comment Boss is ordering me to send spam. How to I deal with this issue/what is my options?
@Miloshio, there's no "maybe" about it. You MUST speak with a lawyer IMMEDIATELY.
Feb
9
comment What is best practice on ordering parameters in a function?
This is inherently dependent on the application domain and sub-domain. Consider RK4(F, A, B, H): Integrate F from A to B with stepsize H using a 4th-order Runge-Kutta integrator. Consider NEWT(F, FP, A, B, EPSILON, LIMITCOUNT): Using Newton's Method (aka Newton-Raphson Iteration, if you're old and grey and FORTRAN IV is your FRIEND), find a root of function F, using derivative function FP, between A and B, to error limit EPSILON, and quit if you haven't converged after LIMITCOUNT steps. (OK, you could bind F and FP together, but that's about it.)