Reputation
55,063
Next tag badge:
228/100 score
19/20 answers
Badges
10 156 242
Newest
 c#
Impact
~1.7m people reached

Dec
5
answered Does simplicity always improve Readability?
Dec
1
awarded  Nice Answer
Nov
29
comment Why isn't literate programming mainstream?
To make it possible to have a single-pass compiler, all declarations had to come in a certain order. A declaration order like that certainly simplifies compiler design, but it doesn't enable/prevent single-pass compilation. Delphi, for example, doesn't have that order restriction, but it's still a strictly single-pass Pascal compiler.
Nov
29
comment What is the supposed productivity gain of dynamic typing?
That study only uses C, C++ and Java as examples of static languages, and then attempts to apply the conclusions found to traditional programming languages in general. All three languages share the same basic syntax, with the same inherent, prductivity-decreasing flaws, making the comparison invalid. It's not that static languages are unproductive, it's that the C family is unproductive. Had they included a Pascal dialect in their tests, they'd most likely have reached some different conclusions.
Nov
29
comment What is the supposed productivity gain of dynamic typing?
Being insulated from implementation details is great, right up to the point when you need to fix a low-level bug that's the root cause of a high-level problem, or find a way to optimize slow-performing code, or any number of expert-level tasks that require access to the implementation details. Anytime a language sets a baseline abstraction that you cannot get underneath, it's limiting your ability to create truly good software.
Nov
29
comment What is the supposed productivity gain of dynamic typing?
I have to disagree strongly with your assertion that "shorter code... is quicker to read and maintain." There's an intermediate step, understanding the code. I've had to maintain other people's code in both Delphi and JavaScript, and the Delphi code is far easier to understand because it is more verbose. And most especially because the Delphi code has type declarations and the JavaScript does not. When dealing with anything more complex than primitives, type declarations make it trivial to see what your variables are and what they can do, which is essential knowledge for maintenance work.
Nov
24
comment Modern programming language with intuitive concurrent programming abstractions
@dsimcha: I'm not talking about calling a function; I'm talking about being inside the function (that's my starting point, because I'm debugging and this is where the exception was thrown,) and trying to figure out what kind of data it's working with.
Nov
24
comment How is fundamental mathematics efficiently evaluated by programming languages?
-1. Hardware multiply has not been done with shifts and adds for close to 3 decades now, and many CPUs can do a multiply in one cycle. Check the Wikipedia article on Binary Multiplier for the details.
Nov
23
comment Modern programming language with intuitive concurrent programming abstractions
I've had to work with another developer's JavaScript code lately at work, and that's the most painful part of the process: with no types on the function arguments, I have to hunt throughout the entire codebase to figure out what they're supposed to be and what they can do based on where they're called from. This would be a non-issue if JavaScript had retained C's type system in addition to its general syntax.
Nov
23
comment Modern programming language with intuitive concurrent programming abstractions
The purpose of static type declarations in strongly-typed languages is not to "improve performance where needed," and I'm getting kind of sick of Lisp advocates trotting out that old strawman. Type declarations have two purposes: to provide certain compile-time guarantees of correctness, and to make the code easier to read, especially for someone other than the original author. The inherently better performance that static typing provides is just a bonus.
Nov
22
comment Where did the notion of “one return only” come from?
So do exceptions violate this interpretation of Single Exit? (Or their more primitive cousin, setjmp/longjmp?)
Nov
18
comment Where can I get feedback and support from other programmers in real time?
Have you looked at StackOverflow's chat system, by chance?
Nov
15
comment Be liberal in what you accept… or not?
@deworde: To apply your real-world scenario to the real world, if you screwed up that icon, the parser would throw an error that tells you exactly where the problem is, making it easy to fix. Right now, if you make a mistake like that, you get no warning at all. It will just unexpectedly produce the wrong output somewhere, and if it's below the cut you might not even notice it. But your customers will!
Nov
9
answered Why are people so strongly opposed to #region tags in methods?
Nov
5
awarded  Enlightened
Nov
4
comment Local Stack vs Call Stack
Oh, nevermind. My mistake.
Nov
4
comment Local Stack vs Call Stack
I don't see any comments on that page by "LKM". A text search turns up one comment by "blkmage" and one response to his comment, but that's it.
Nov
4
awarded  Nice Answer
Nov
4
revised Would it be dishonest to use side tools during a phone interview?
grammar fix
Nov
3
comment Why are brackets required for try-catch?
@Billy: No, please pay attention. I'm saying that try/finally (not try/catch) is a lower-level concept than automatic object destruction. RAII is implemented with implicit try/finally blocks, (which, again, I never said had anything to do with setjmp/longjmp,) while an actual try/finally construct is not available. This means that to simulate try/finally for other purposes (guaranteed-reversible temporary state changes) in C++ you have to go to the trouble of creating a special class to do it for you through RAII, instead of simply using a try/finally block. Thus, abstraction inversion.