16,026 reputation
42766
bio website StackOverflow.Com/users/2988
location Karlsruhe, Germany
age 35
visits member for 3 years, 7 months
seen 6 hours ago

Not a software developer in the sense that I write software as part of my job or otherwise get paid to do so. Also, not a developer in the sense that I write software for others.

I write software for myself, often for no other reason than that I want to. (What I call recreational programming.)

Actually, I’m currently forcibly confined to recreational programming, as I’m looking for a job.

My current go-to language is Ruby, but I’m interested in all sorts of other languages as well: Newspeak, Seph, Ioke, Self, Io, Slate, Reia, Cobra, Fortress, Sapphire, Haskell, Scala, Clojure, Racket, Go, Fancy, Poison, and many more.


2d
comment What is the process of determining which method in a class hierarchy should execute known as?
The more I think about this, the more I am convinced that the only thing this question is useful for is to show the complete and utter lack of understanding of the person who wrote it. It seems they don't even understand the difference between parametric polymorphism, ad-hoc polymorphism and inclusion polymorphism.
2d
comment What is the process of determining which method in a class hierarchy should execute known as?
@PatrickCollins: I'd say "method resolution order" is the output of that process, the process itself would then be "method resolution".
2d
comment What is the process of determining which method in a class hierarchy should execute known as?
"virtual method invocation" means calling a method you don't (yet) know the implementation of. But that's not what the question asks. The question asks about what the process is that resolves a virtual method invocation to a concrete implementation. That's a fundamentally different question, in fact, it goes to the very heart of understanding what ad-hoc polymorphism means. Your example shows ad-hoc inclusion polymorphism and virtual method invocation, but the question is about the process that determines that Y.print should be executed, and that process is method lookup.
2d
comment What is the process of determining which method in a class hierarchy should execute known as?
@DerekW: "virtual method invocation" means calling a method you don't (yet) know the implementation of. But that's not what the question asks. The question asks about what the process is that resolves a virtual method invocation to a concrete implementation. That's a fundamentally different question, in fact, it goes to the very heart of understanding what ad-hoc polymorphism means.
2d
comment What is the process of determining which method in a class hierarchy should execute known as?
@DerekW: the Java Language Specification uses the term "method lookup": "Otherwise, the invocation mode is interface, virtual, or super, and overriding may occur. A dynamic method lookup is used. The dynamic lookup process starts from a class S, determined as follows: […]"
2d
comment What is the process of determining which method in a class hierarchy should execute known as?
@ThiagoSilva: That's what I thought … until yesterday, when I finally read an article that explained the difference: binding resolves a name to a thing, in this case an operation. Dispatch resolves a polymorphic operation to a concrete implementation. IOW: binding is independent of polymorphism, dispatch is the process of picking a concrete implementation of a polymorphic operation.
2d
answered What is the process of determining which method in a class hierarchy should execute known as?
Apr
11
comment What kind of processes or static alaysis would you use to catch impropper buffer bugs such as the one that caused heartbleed?
Note that using managed languages may lead to other problems, though. You really need fine-grained control over the complete performance of your crypto routines. You not only need to make sure that they aren't too slow, you also need to make sure that they aren't "too fast"! Otherwise, you are wide-open to timing attacks.
Apr
11
comment Is software irreducibly complex?
Are you really using the pseudo-scientific Creationist concept of Irreducible Complexity and the concept of Evolution in the same paragraph?
Apr
10
comment Does the recent open sourcing of MSFT's C# compiler mean it can be made cross-platform?
@DocBrown: The question specifically asks about the C# language, not the .NET BCL. Mono's C# compiler is very close to Microsoft's, they are usually only a couple of weeks behind. Any C# code will just work on both platforms.
Apr
9
comment Why no MVC methodology for desktop applications?
@RobertHarvey: Yes, and it was already superseded there before the Web was even invented.
Apr
8
awarded  Good Answer
Apr
5
comment Does the source language matter for your first (few) compilers?
As far as I know, Walter Bright is the only person to ever successfully implement C++ on his own, without a large team. So, C++ is probably not a good choice for your first (or really any) compiler.
Apr
5
answered How did the “abnormal” options in shell commands appear?
Apr
5
comment Does design by contract imply correct output?
The whole point of Design-by-Contract is to not do this, but to establish a clear formal contract between caller and callee to exactly avoid having to check everything everywhere.
Apr
5
comment Can a Java interface declaration enforce parameter properties?
"There's no mechanical way to ensure a program won't generate a negative number during the course of its execution without actually executing it." – Only if the language is Turing-complete. In dependently-typed languages, types such as "non-negative integer" or "list of length n, where n is a runtime value" can be expressed, and can be statically type-checked.
Apr
1
comment Has there been any formal proof that documentation in general is incomplete and obsolete to a certain grade?
And of course, having a formal proof of impossibility doesn't necessarily mean that it isn't worthwhile. Microsoft Research's Terminator, which can decide Halting for a very large class of Windows drivers is incredibly useful, despite the fact that Alan Turing proved that it cannot possibly work every time. It has been productized and shipped as part of the Windows Driver Development Kit for years now, and probably saved billions of dollars in development cost and prevented security breaches.
Mar
30
awarded  Enlightened
Mar
30
awarded  Nice Answer
Mar
30
comment Can referentially transparent functions have side effects?
@Doval: right. In my second example, it's a matter of abstraction. foo as a black box is RT. But its implementation clearly isn't, and you run into all the same problems that you run into when not writing RT code. Like, as you mentioned, thread-safety. It's just that the "universe" is much smaller, and so the scope of the side-effects is not that big. The problem with side-effects is that they make reasoning about programs essentially non-local. In my second example, the world is much smaller, so "non-local" is less of a problem.