13,213 reputation
63274
bio website lshift.net
location London, United Kingdom
age 39
visits member for 4 years, 3 months
seen 23 hours ago

Delphi/Objective-C/C#/Ruby/Scala programmer by day, Lisper/Smalltalker by night.


May
19
comment TDD: Am I doing it right?
When you memoise that trivial getXXX and get it wrong, or introduce lazy loading in your getXXX and get it wrong, then you will know that sometimes you really do want to test your getters.
May
19
comment TDD: Am I doing it right?
My point was that dogmatism comes from blindly accepting something as gospel. Take the polarising statement, try it out, make it force you out of your comfort zone. You cannot evaluate the tradeoffs involved in TDD if you do not try the 3-point-all-or-nothing extreme approach, because you will have no data.
May
18
comment TDD: Am I doing it right?
@JarrodRoberson which is exactly the point: pithy things like this are supposed to have a strong flavour. Otherwise you end up with watered down feel-good nonsense that leaves you wondering what the author was trying to say.
May
5
comment Where does Objective-C come from? C++ or C?
Objective-C's methods are much more virtual ("only apparently existent") than C++'s virtual: An object need not even understand a message to handle it. It can quietly forward the message on to some internal object that can understand the message, allowing transparent proxying to support, say, lazy loading an instance from a database.
May
4
comment Why is Python slower than Java but faster than PHP
JITs were invented by the dynamic language people: Self. Animorphic, whose work was acquired by Sun and turned into... HotSpot.
Mar
30
comment Design in “mixed” languages: object oriented design or functional programming?
@SK-logic: No, it's a theory: Mendeleev used it to predict properties of then-unknown elements. That's clearly a theory. I understand your fundamental point, and even agree with it: repetition = redundancy = decreased info density = bad. I don't agree with the extremes to which you want to apply "abstract away repetition". I see the real world filled with highly similar patterns.
Mar
29
comment Design in “mixed” languages: object oriented design or functional programming?
@SK-logic: Yes. The Periodic table. It demonstrates both repetition and variance.
Mar
29
comment Design in “mixed” languages: object oriented design or functional programming?
@SK-logic: I'm well aware that some languages are programmable, and some permit the enforcing of effects from the type system too. My point is that, like "OOP", "pattern" is a sadly misunderstood term. A pattern is something that keeps reappearing in similar but different forms, that does not admit a uniform solution. Sometimes you can make those quasirepetitions disappear - multimethods make Visitor/double dispatch redundant. That does not imply "all patterns are signs of a deficiency", because that means the real world is deficient. Patterns originated in architecture, not software.
Mar
29
comment Design in “mixed” languages: object oriented design or functional programming?
@SK-logic: If you can write a macro to make the repetition go away, the repetition is not a pattern. From the master: "Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice." -- Christopher Alexander
Mar
28
comment How to determine if a programming language is verbose or terse?
@DavidMulder: I said that you were conflating concepts: "I taught the very basics of algebra to a girl and the very concept of it was alien to her". We're converging on common ground though: you disagreed with my "maths notation is easy to read because it's terse" because that requires one to know how to read it. Fair enough. I regard it as a precondition to "it is readable/unreadable" that one has learned the notation. A good notation combines info density with transparency, and my own opinion is that a lot of maths notation does just that.
Mar
27
comment How to determine if a programming language is verbose or terse?
@DavidMulder: "1 + 2 = 3" versus "the sum of one and two is equal to three". Which requires less effort to read? I can totally understand someone being utterly confused by the concepts in algebra, but that's not the same thing at all. That would be like claiming that a particular programming language is unreadable because recursion's hard.
Mar
27
comment How to determine if a programming language is verbose or terse?
@DavidMulder: Mathematical notation varies wildly, so I suspect we're both committing sins of hyperbole. Surely you consider the notation for algebra, set theory, basic calculus to be transparent? On the other hand, I consider tensors' abstract notation to be unreadable nonsense. (But then, I also didn't take the time to learn the notation properly.)
Mar
20
comment what is message passing in OO?
I answered this question on SO a while ago: stackoverflow.com/a/3104741/10259
Mar
8
comment Writing better timesheet
You mean of course 'what is a "math"'. "maths" is clearly the plural form. Learn proper usage of grammatical numbers.
Jan
24
comment IDEs for dynamic languages - how far can you get?
In Squeak and Pharo, RoelTyper does a reasonably good job of inferring something's type by looking at what messages you send to it. Otherwise, Shivers & Might's k-CFA provides tunable type inference, in the sense that you can trade off cost against accuracy.
Jan
14
comment What are the biggest differences between F# and Scala?
@Ingo, if you think that ML and Ocaml don't qualify as functional programming languages because they allow mutability, maybe you should adjust your definition!
Jan
5
comment What does 'opinionated software' really mean?
And in both cases "opinionated" doesn't mean "it's mildly easier to do it this way"; it means "I will make you suffer until you do things this way". Haskell has an opinion about being lazy, for example.
Dec
19
comment What are good source control check-in strategies for large tasks?
@Dominic Basically, yes, but I take "size is non-trivial" to mean "anything more than a single line that a peer can immediately see is right or wrong".
Dec
14
comment How is type checked in a dynamic language interpreter/compiler, such as JavaScript?
Tricks like polymorphic inline caches can greatly improve performance. David Ungar's (Self) and Eliot Miranda's (Squeak, Visual Works Smalltalk virtual machines) writings are most informative, regarding dynamic language performance.
Dec
8
comment What is the difference between debugging and testing?
In some systems - Smalltalk, for instance - there's no difference at all, because you can perform your write-test/run-test/write-code cycle entirely within your debugger.