2,764 reputation
1230
bio website
location Argentina
age 37
visits member for 3 years, 10 months
seen 7 hours ago

Software developer and science fiction fan.


Apr
19
comment Why does Java use so many middlemen?
@dan1111 I'd say it's not even that good of an OO design. Just a verbose, full-of-minutiae design. On the other hand, if this was indeed good OO design, then it'd be a good argument for rejecting OO...
Apr
19
comment Why does Java use so many middlemen?
@dan1111 +1 to your comment. I agree and your "it builds character" made me laugh!
Apr
18
comment Extreme Programming practices make an application more error prone?
Also, the title and first paragraph seem to imply this question is about bugs and errors, when it's actually about process and requirements. When you have the wrong requirements (or implement them wrongly), this doesn't necessarily lead to bugs or errors; maybe it just produces a working piece of software that simply doesn't meet the needs of the customer!
Apr
18
comment Extreme Programming practices make an application more error prone?
I must echo @jk and MadKeithV here: most of the problems you describe exist in any process and methodology. For example, when you don't have external customers and the team must play both the developer and user roles, how is that exclusively an XP problem? Likewise with multiple customers having contradictory requirements: isn't that problem regardless of methodology?
Apr
18
comment Am I a bad programmer, or does everyone have this feeling?
+1 just for "the bad programmer is the one who believes that he already knows the best way to do everything". And there are so many of them out there...
Apr
17
revised How to deal with management staff (company owner) that downplays the impact of specs changes?
improved title to remove ambiguity
Apr
17
suggested approved edit on How to deal with management staff (company owner) that downplays the impact of specs changes?
Apr
16
comment Is Haskell/Clojure actually unsuited for dynamic systems such as particle simulation?
In addition, I'd also disregard the answer that starts with "A pure functional approach is not a good fit for games ..." unless the author proves he has actually tried writing a functional program. Otherwise, he is just guessing what he thinks the problems may be.
Apr
16
comment When to use DAG (Directed Acyclic Graph) in programming?
A loop cannot exist in a DAG, as per this definition: "a directed graph with no directed cycles". So I'd say a program in general is not a DAG (an example of a structure which does correspond to a DAG is a binary tree, for example). Specific programs may be DAGs, though.
Apr
16
comment When to use DAG (Directed Acyclic Graph) in programming?
Is this imperative program a DAG in your opinion: while (true) { print("hi"); } ? Maybe you want to exclude non-terminating programs?
Apr
16
comment Teaching `class`es and objects in C++ to university students
Fair enough. But then, like @Caleb says, your problem is unrelated to 'classes' and 'objects'. Maybe you should retitle your question to "teaching low-level memory management to Java programmers".
Apr
16
comment Is Haskell/Clojure actually unsuited for dynamic systems such as particle simulation?
Who told you they were unsuitable? Link to answer/comment?
Apr
16
comment Teaching `class`es and objects in C++ to university students
Why would you want to pick between C++ and Java when teaching classes and objects? For this goal they are essentially the same. If true object orientation is your goal, you'd better pick something like Smalltalk. If not -- which is what I'm guessing -- then stick to Java. Nothing to "unlearn" when moving from Java to C++; don't assume your students are idiots :)
Apr
15
comment How to determine most challenging test-cases to test any algorithm?
Agreed, I think several complementary approaches are needed. And yes, nothing beats actually understanding how the algorithm works and what its special cases are (which is why TDD is hopelessly inadequate for this task)
Apr
15
comment How to determine most challenging test-cases to test any algorithm?
+1 The random approach you suggest (verifying properties against randomly generated samples) actually exists! See tools such as QuickCheck (for Haskell) or Scalacheck for Scala :)
Apr
15
comment How to determine most challenging test-cases to test any algorithm?
Maybe I'm being a nitpicker, but your most relevant answer is the last line (about Pex). Why not move it to the top, since it's the actual answer? The rest is either wrong (the tongue-in-cheek part) or incomplete ("design your programs in such a way..."). Partitioning the test space is usually at least a whole chapter in software engineering books, and there are published papers about it. Obviously "design your algorithms well" is not the complete answer, but only one side of the equation!
Apr
15
comment How to determine most challenging test-cases to test any algorithm?
I don't understand why you started your answer with a misleading paragraph, which you later acknowledge to be "tongue in cheek"? Shouldn't you remove it, or at least move the relevant part of your answer to the top? (that TDD isn't the answer to input space partitioning is a given)
Apr
13
comment Why do some of object oriented languages let programmer use primitive types?
Um, isn't Double in C# not a primitive type, just like Decimal? In which case, the performance increase had to do with the differences between both abstract types, rather than with primitive vs non-primitive. Double is an example of a performant non-primitive type.
Apr
13
comment Why do some of object oriented languages let programmer use primitive types?
@tgkprog Why would a primitive be handy for a simple "next loop"? I assume we are not coding in assembly language here, but a high-level OO language.
Apr
8
comment Immutable vs mutable object as returned parameter for class method
Immutable objects are not only about multi-threading, like Jimmy Hoffa correctly pointed out. Making an object immutable also makes it simpler to reason about single-threaded code: for example, if I see x mentioned somewhere, more code follows, then x again, I know it represents exactly the same value or object state as before; I don't even have to look at the function calls in between.