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

Jan
16
comment How did people write end-user software in Smalltalk?
Again, object-oriented programming is not an idea that came from Smalltalk. The term did, but the concepts came from Simula, which does it a very different way. In the years since Alan Kay coined the phrase, Simula-style OOP has taken over the world, and Smalltalk-style OOP (message passing, etc) has failed every time it was introduced in the marketplace of ideas.
Jan
15
comment If I replace N objects with N pointers, is my space complexity still O(N)?
Unless you're working in C++, all objects are reference types anyway, so the distinctions you're trying to draw doesn't make much sense. (And if you are working in C++, you've got bigger problems to worry about!)
Jan
10
comment How to comply with LGPL 2.1 source-code request?
If it was a formal request that required a formal response, it would most likely be coming from a lawyer. At this stage, it's still safe to try ordinary social interaction. :P
Jan
10
comment How to comply with LGPL 2.1 source-code request?
It's most likely to get you to contribute modifications back, but if you don't know why he's asking, don't ask us the reason why; ask him.
Jan
9
comment Will a profound knowledge of C++ help you in learning other languages faster/easier?
@DocBrown: I didn't say it makes people dumber; I said it would give people ideas that need to be unlearned.
Jan
8
comment Will a profound knowledge of C++ help you in learning other languages faster/easier?
@Deduplicator: I expect copies to not exist because references "should go" everywhere. Liskov substitution demands it, and that's the sine qua non of OOP. You can have inheritance, or value types, but not both on the same type.
Jan
8
comment Will a profound knowledge of C++ help you in learning other languages faster/easier?
@Doval: Yes, that's my whole point: these things are algorithmically undecidable in the general case, which is why they need to be handled by an intelligent person, not an algorithm, to be handled correctly. And saying "that's not a leak, it's an inefficient program" is just semantical hair-splitting; to an outside observer, the behavior of the program is the same as that of a program that is leaking memory, especially in the context of multitasking systems where memory squeezes under load can cause severe problems.
Jan
8
comment Will a profound knowledge of C++ help you in learning other languages faster/easier?
@Doval: Wrong size, place, alignment: how exactly does one do any of these things in an object-oriented language when the proper size is known to the compiler and the allocator handles placement and alignment? Freeing early: this is exactly what GC is supposed to prevent, so saying it's not relevant to this discussion is just straight-up not true. But it does so at the cost of turning every allocation into a memory leak. And not stomping other objects' data is a bounds checking issue, not a garbage collection issue.
Jan
8
comment Will a profound knowledge of C++ help you in learning other languages faster/easier?
@FredLarson: I should have guessed such a prevalent, pernicious problem would have a specific name for it. (And, this being C++, a silly name at that. When a programmer outside the C++ world hears "slicing," he's likely to think of array slicing! :P
Jan
8
comment Will a profound knowledge of C++ help you in learning other languages faster/easier?
@BasileStarynkevitch: Knowing any modern language makes a lot of C++11 new features easier to understand. (Except maybe Java. Does it have closures yet?) :P
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.