48,270 reputation
8129214
bio website tech.turbu-rpg.com
location Seattle, WA
age 32
visits member for 4 years, 4 months
seen 8 hours ago
A lifelong programmer who's been coding in Delphi since its initial release and currently makes a living at it.

Jan
8
comment Will a profound knowledge of C++ help you in learning other languages faster/easier?
@Doval: Garbage collection gives you the illusion of not having to worry about memory management. Just look at how frequently managed-code programs get memory leaks because some reference remained valid in an unexpected place (collections are a perennial offender) to see just how illusory this truly is.
Jan
8
comment Will a profound knowledge of C++ help you in learning other languages faster/easier?
@Deduplicator: Java and C# have a completely different generics system, because experience shows that templates cause all sorts of serious problems, many of which arise because the Templates system was not well-planned-out in the first place. (Turing-complete by accident, to give one obvious example!) And objects as values break Liskov substitution because if you have a class Derived whose parent is Base, and it overrides a virtual method on Base, and you pass it by default passing to a function that takes a Base and calls the virtual method, it will not invoke the Derived version.
Jan
6
comment What's so difficult about SVN merges?
@naught101: It turns your history from a tree (simple) into a graph (complicated) and makes history harder to understand. Also, it completely breaks the "branching" metaphor. Have you ever seen a tree (real-life plant made of wood) where a branch splits off and then rejoins later on? I know I haven't!
Jan
1
comment What are the caveats of implementing fundamental types (like int) as classes?
@amon: No sane language; just Java: thedailywtf.com/articles/Disgruntled-Bomb-Java-Edition
Dec
31
comment What is different between the internal design of Java and C++ that lets C++ have multiple inheritance?
@JackAidley: Templates. So it's useful because it amplifies the foot-shooting gun into a leg-blower-offer?
Dec
30
comment What is different between the internal design of Java and C++ that lets C++ have multiple inheritance?
@AlexandreC.: Yes, but then you've got dynamism to deal with. That's like dealing with a pain in your foot by amputating everything below the knee. Sure, the pain in your foot is now gone, but it's hardly what a reasonable person would consider "a good solution"!
Dec
24
comment Why lambda/closures expressions came so late to C++?
@JörgWMittag: Implementing lambdas in a language with no garbage collection isn't particularly difficult, and Delphi had it in their 2008 release, several years before the C++11 standard even came out, much less got officially supported in compilers. The problem isn't the lambdas; it's that C++ is a horrible language, poorly designed and poorly implemented, and was too messy to implement a feature like this on top of without a lot of very careful effort.
Dec
22
comment Where did the three tenets of OOP originate
@JörgWMittag: I certainly wouldn't call either language a success. JS rode HTML's coattails to prominence by being the only game in town, but developers with experience in other languages almost universally hate it. Just look how popular alternative languages that compile down to JavaScript are becoming! And Ruby was popular for a while, but these days it really feels like a fad whose time has come and gone, as people start to (re-)discover the problems inherent in message-passing OOP.
Dec
12
comment Modern OOP vs Alan Kays OOP
@Doval: That is a bizarre article, and the author has an extremely poor concept of object-oriented programming. What he calls "Abstract data types" are, in fact, objects and classes, except that he seems ignorant of the existence of interface types that solve the "inherent" problems in the ADT system he describes. And what he calls "objects" are not OOP at all, but appear to be some bizarre system based on lambda calculus and functional programming. If anyone's using this as the foundation of a criticism of OOP, no wonder they get confused! o_0
Dec
12
comment Isn't there a chicken-and-egg issue since GCC is written in C++ itself?
@MichaelT: But an earlier version of GCC can be built with a C compiler, which can then compile later versions written in C++, which is what I said.
Dec
12
comment Modern OOP vs Alan Kays OOP
@Doval: Where? I haven't heard anyone asking "why use OOP when we could just use procedural programming" since the turn of the century. In many ways, OOP is procedural programming; the fundamental flow of control is exactly the same, except for virtual method dispatch, which is only slightly more complicated. I've heard plenty of people ask "why use OOP over functional programming?" but that's a very, very different question!
Dec
12
comment Modern OOP vs Alan Kays OOP
@Doval: Sure, there are plenty of languages better than Java, but that's because the Java language itself is pretty mediocre; not because there are serious problems with the underlying OOP concepts. (Surely any developer understands the distinction between a bad idea and a poor implementation of a fundamentally good idea!)
Dec
12
comment Modern OOP vs Alan Kays OOP
@Doval: Poor workmen blame their tools. If you have two classes that are identical in every way except their name, then your problem isn't that your language won't let you use them interchangeably; it's that you have two classes that are identical in every way except their name.
Dec
12
comment Modern OOP vs Alan Kays OOP
@Doval: Assuming you accept the validity of the Blub Paradox. Given that the concept comes from a developer with a strong bias for a failed language, who has never had any problem with stretching the truth well beyond the breaking point in order to support his cause, his self-serving, condescending ideas about developers who use other languages and their incapability to understand why they're wrong should be taken with a grain of salt, if not the entire shaker!
Dec
9
comment Why isn't software abstract on a grander scale?
@Rawing: The closer programming languages are to natural language, the easier that is, no? NO! Natural language programming languages have been tried before and never really caught on, because they don't work well. It's a very different domain: natural languages are understood intuitively, whereas programming languages are understood formally, with strictly-defined semantics that seek to eliminate ambiguity. This is very important: before you can reason about what your program does, you first need a clear and unambiguous model of its semantics, which you can't do in natural language.
Dec
8
comment What functionality does dynamic typing allow?
A Python 2 static type checker would reject the Python 3 code (and vice versa), even though it would never be executed. My type safe program contains a static type error. In any reasonable static language, you can do this with an IFDEF type preprocessor statement, while maintaining type safety in both cases.
Dec
5
comment A defense for boilerplate?
@Giorgio: On the contrary, it's much more than just my opinion; it's the opinion of the vast majority of people who have ever tried to study it. And when "difficult to read" is inherently a matter of opinion in the first place, the fact that that opinion is so widely shared pretty much makes it a fact.
Nov
20
comment type infered statically typed languages?
@CharlesDuffy: It's slow going at the moment, but there's currently an active effort under way to bring it up to a 1.0 release.
Nov
20
comment type infered statically typed languages?
@MichaelKohne: The C language is full of undefined behavior. For one rather egregious example specifically related to the type system, what does the following function prototype mean: void foo(int* bar);? Is the parameter supposed to be an array of ints, or a pointer to a single int (because C doesn't support pass-by-reference so it has to be faked by using this idiom)? And what happens if it's expecting an array but you pass it a pointer to a single int?
Nov
15
comment In Ruby, change global in thread safe block
If something is global and mutable, it can be changed from anywhere at any time, and therefore is not threadsafe, by definition.