I’ve subscribed to Dr Dobbs journal off and on for decades, probably for ten to 15 years in total. Wherever I turn in this house, I encounter stacks of old issues of DDJ, even though I’ve thrown away quite a number. A couple of years ago I stopped subscribing, since the main focus of DDJ was drifting away from my main focus, or vice versa, or both. Since Microsoft started buying up all the people central to the C++ evolution, then riddling their version of it with proprietary “extensions” (or rather limitations), that language has become more and more of a dead end and both I, and DDJ moved away from it. But during the years, I’ve often read parts of DDJ on the web and I do get the “Dr Dobbs Update” through email every now and then. The most recent arrived two days ago and had the weirdest “Editor’s Note” ever, at least as far as one would expect from DDJ.
The gist of the editor’s note is that Microsoft isn’t as bad as it’s often made out to be. Andrew Binstock, DDJ’s executive editor, takes great pains in the note to show that he is definitely not a classic Microsoft apologist, and that’s fine and credible, but way down the note towards the end, there’s this paragraph:
No other company — not Apple, Adobe, HP, IBM, or Oracle — offers such a wide range of products from the consumer level to the enterprise. In many ways, this exposes Microsoft to criticism from which other companies are immune. For example, no one takes Apple to task for its failed (and now withdrawn) server. Yet it was clearly technology that significantly misjudged its audience. The execrable Objective C language barely raises a grumble. And so on.
(Emphasis mine.)
Wha… what? WTF? “Execrable Objective C”? According to whom and which standard? One would assume that there ought to be a reference here to a study done by IEEE or at least DDJ staff which objectively had determined that Objective C belonged solidly in the “execrable” category as defined by an ANSI or ISO standard. This is the kind of writing you expect as an anonymous comment on a PC devoted web site or Apple hate site, not as editorial text, and most certainly not from DDJ. What’s going on here? So, naturally, I sent Andrew Binstock an email complaining about this. I half expected a response like “Yes, that’s overdoing it, sorry”, but what I got instead was an explanation that “[he is] not the first person you’ve run into who has this opinion.” I didn’t get much anywhere in the ensuing discussion. It seems that Andrew views it as the most natural thing in the world to have DDJ proclaim publicly that Objective C is “execrable” simply because Andrew knows some people who say they hate it. (While in the same sentence actually saying the opposite: “…barely raises a grumble”. It really makes no sense.)
My solid opinion is that an executive editor of DDJ simply can’t say things like this. It’s unscientific and simply way beneath the level of discourse one expects from such a journal. Additionally, there is not a single computer language out there that can be objectively called “execrable”. All of them are more or less suited for any particular purpose, that is all. And Objective C definitely doesn’t have more haters than any other language, if we were to sink to that level, which I don’t think we should.
I am including the full email exchange below, with the permission of Andrew Binstock. I think it is interesting reading, and I think it clearly shows that DDJ is circling the drain, as far as editorial standards go. Too bad, I used to love the mag. First, read the original editor’s note from DDJ’s site. Then the emails, in order as follows.
From: Martin Wehlou
To: Andrew Binstock
Date: 15 March 2011
Andrew,
Just read your note “The Perpetual Microsoft Canard” and almost agreed until, out of the blue, you say “the execrable objective C language”. I really don’t understand how you can throw out a sentence like that and expect to be viewed as methodical and reliable. All the words you used to build up your credibility blown to bits in one instant. You don’t even seem to provide any form of substantiation of such a claim. Why? Because you feel you’re above that?
From my point of view, having developed for MSDOS, Windows since 1.04 and up to XP, having seriously wielded C++, C#, Delphi, VB, plain C, and maybe five other languages, Objective C is clearly much more productive, orthogonal, powerful than any .NET language, hands down. C# in particular doesn’t stand up to long term use and can only be described as non-scalable. And believe me, I’ve tried to make it work for years. It’s simply too shallow.
The only possible conclusion must be that you either have never used Objective C for any real projects, or that you missed the point. There’s also a very small possibility that you actually did use it, and that you have grounded objections to it. But in none of these cases is your “execrable” twitch acceptable. You could just as well call us Objective C practitioners “jerk faces” for all the sensible content your statement has.
Regards,
Martin
——————————————
Thanks for taking the time to drop me a note. Execrable might be a bit strong, but not much. Surely, I am not the first person you’ve run into who has this opinion. I know more than a few Apple developers who would gladly code in any other language if they could.
How exactly is Objective C more scalable than C#? Given that Obj C is barely ever used on servers, I think you’d be very hard pressed to demonstrate this contention.
Dismissing a language that is disliked by many of its practicioners is not at all like calling people who use it jerks. I really prefer dialog about technologies to not be personalized. I don’t indulge in ad hominem attacks and expect readers to avoid this too.
With all good wishes,
Andrew Binstock
Exec. Editor, Dr. Dobb’s
alb@drdobbs.com
——————————————
On 15 Mar 2011, at 23:32, Andrew Binstock wrote:
Thanks for taking the time to drop me a note. Execrable might be a bit strong, but not much. Surely, I am not the first person you’ve run into who has this opinion. I know more than a few Apple developers who would gladly code in any other language if they could.
And I know more than a few .NET developers who would. That doesn’t mean anything. Meanwhile, the number of Objective C developers is increasing rapidly, and there certainly is no widespread disgust or even dissatisfaction with the language that I have ever heard of. To be frank, I haven’t met a single Objective C developer who didn’t love the language. The more experienced in other languages they were before, the more they love it. As the editor of Dr Dobbs, you have a considerable reputation to uphold, and you should not be surprised that we hold you to a considerably higher standard than “I know some people who don’t like it”.
How exactly is Objective C more scalable than C#? Given that Obj C is barely ever used on servers, I think you’d be very hard pressed to demonstrate this contention.
That is just one meaning of the word “scalable” and no language I know of is clearly more suited for this type of scalability than any other. Platforms yes, languages no.
The “scalable” attribute I’m referring to is the ability of the language to grow with the level of abstraction you need. C++ is masterful in this regard. There is hardly any concept or repeated code that you can’t elevate to a higher level using some nifty, and often very unreadable, template code. If you want to create groups, go ahead. Or a base class or mixin that allows you to do in memory transactions, they can be done. Admittedly with a lot of sweat, but you can do it. I did many years of C++ and I could still sit down and learn entire new abilities and ever higher abstraction levels due to its very clean orthogonality of features. Now if it is a good thing or not that it never ends, is open for discussion, of course, but I admire it for it.
C#, oh boy… I’ve spent a couple of years on this beastie as well. The last project I did was a “model” project. I created a complete clinical lab client in C# and with the explicit task of making the code a model to be followed by the client’s own programmers, so it should contain clean, flexible, didactic, and solid code principles. Up to a point, C# is very productive, but when you get into the realm of raising the abstraction level, you hit a brick wall. For instance, I needed to have my in memory objects transacted, so the user could modify orders and line items, then post, and if the post to the DB failed, have the in memory objects roll back to a previous state. In other words, all in memory objects should have “begin transaction”, “commit”, and “rollback”, independently of the database transactions. A complete undo functionality, is another way of expressing it.
This in C# is as close to total madness as you can get. It is also not too much to ask of a decent language or runtime, but .NET falls down badly. At every turn, things work almost but not quite, everything has exceptions, stuff they didn’t think of. Generics is a sham. I worked on this train wreck for three or four weeks and got it to work in most situations most of the time, using a complicated system of attributes and reflection (which wouldn’t even work at all if we ever needed to run .NET in “secure” mode), while having the language fight me every inch of the way. This experience was what made me leave the Windows platform for good after more than 30 yrs of programming Microsoft OSs one way or the other. I can only say that my initial experience with MS Basic 1.0 back in the 80’s was much better. At least you could bypass the runtime if you had to. Not so with .NET.
Turning to OSX and Objective C, this was the first thing I checked for. Not only does it turn out that you can dynamically hook into and monitor any member variable, exactly what is needed for a generalized transactional mechanism, but they even include the undo manager in the frameworks. You have dynamic loading and unloading (!) of code in runtime. You have messaging where you can dynamically delegate to just about anything in runtime. And on and on. This is the kind of functionality you need to stay sane if you build systems beyond the mundane.
I’m just taking these features as examples, but they reflect on the entire architecture of these platforms. C# can’t be dragged even kicking and screaming into any decent shape. Objective C, however, is infinitely adaptable, or at least adaptable far beyond the limits of .NET.
If Microsoft would add in a similar kind of runtime dynamics in .NET, I would consider going back at least part time, but they won’t. An illustrative anecdote: during a “multithread day” here at Stockholm University, an audience member asked the Microsoft speaker during a discussion about .NET why MS put in so many barriers for higher level abstractions in .NET, effectively making it a programming platform for idiots. I would have expected the speaker to deny it was for idiots, but no, he said instead: “Welcome to the real world. Programmers in general ARE idiots!” Needless to say, the audience, consisting largely of programmers, wasn’t very pleased. (No, I wasn’t there, but I heard it confirmed from several sources.) Put in slightly more civilized terms: MS intentionally don’t provide languages for “real and experienced coders”, to which I gratuitously count myself, but to the indifferent coding masses who prefer largely to do copy and paste, and never aspire to higher the abstraction levels. IOW, good for the average coding monkey, but not much more.
Dismissing a language that is disliked by many of its practicioners is not at all like calling people who use it jerks.
So, now that you know that I dislike C#, will you dismiss it publically as well? Or do I need a minimum quantity of dislikers to qualify? At least I’m telling you *why* I dislike it.
I really prefer dialog about technologies to not be personalized. I don’t indulge in ad hominem attacks and expect readers to avoid this too.
As I said, you *are* Dr Dobbs, you can’t go dropping statements like this around. It did not sound considered or objective in any sense of these words. I can read unsubstantiated opinions anywhere, but I don’t expect them in Dr Dobbs. Especially after you took pains to clarify how objective you are.
— Martin
——————————————
Martin:
If you haven’t heard anyone complain about Objective C, you need to read programmer forums more:
http://stackoverflow.com/questions/435990/why-do-programmers-love-hate-objective-c
http://amplicate.com/hate/objective-c
Lots of people strongly dislike it, just like I do. If you don’t dislike it, that’s fine, but it’s certainly not because everyone who disagrees with you is wrong, as you imply.
Andrew Binstock
Exec. Editor, Dr. Dobb’s
alb@drdobbs.com
——————————————
On 16 Mar 2011, at 1:04, Andrew Binstock wrote:
If you haven’t heard anyone complain about Objective C, you need to read programmer forums more:
http://stackoverflow.com/questions/435990/why-do-programmers-love-hate-objective-c
Of course I use stackoverflow a lot, it’s has the highest concentration of Objective C tips ever. Please don’t resort to telling me I’m poorly read.
Anyway, have you actually read that thread you refer to? I went about two thirds through and did not find anyone who “hated” Objective C. Quite the opposite; most stressed that they did *not* hate it, but had objections to square brackets, lack of full point member syntax, and either liked or didn’t like the value naming in parameters. Yes, the weird syntax can put you off in the beginning, but you get used to it and learn to appreciate it. Just like programmers have a problem going to and fro Basic or Fortran type languages vs C like languages. But this thread in absolutely no way supports your thesis of a lot of hate.
http://amplicate.com/hate/objective-c
Hah! A forum dedicated to hating Objective C has a lot of hate comments. Big surprise! Back down a page to the list of programming languages on Amplicate and you’ll see Objective C haters at 129 opinions, while Objective C lovers only total 80, so yes, if that’s your criterion, you’re right. But in that case, Foxpro, Matlab, PHP, Smalltalk, SQL, and Vbscript are even more “execrable”, only to be surpassed by Visual Basic, which seems to be the most hated of them all. Since there isn’t even an entry for C#, we have to conclude that .NET as represented by VBasic, is the most execrable of them all. But you didn’t write “execrable VBasic”, did you?
Lots of people strongly dislike it, just like I do. If you don’t dislike it, that’s fine, but it’s certainly not because everyone who disagrees with you is wrong, as you imply.
Of course a lot of people dislike it, just like a lot of people dislike a lot of things. The weird syntax is particularly offputting to beginners. But there is absolutely no excessive dislike of Objective C as compared to other languages.
I tried to reason out the advantages of Objective C with you using real examples, verifiable data, and would have appreciated you blowing holes in my arguments. If you could have, I would have just maybe started appreciating .NET more. Who knows, I could have misunderstood the .NET system even after so many years. Unlikely, but not impossible. But you don’t do that, preferring to go on the count of anonymous messages in a thread on a hate forum.
The problem here is not that you personally dislike Objective C, it’s your right to dislike whatever you want. But as chief editor of one of the most respected publications in the software industry, a publication everyone looks up to, your public expressions of dislike *must* be well reasoned out and well founded in fact, not as in “I saw a forum where a lot of people hated X”. If you had written “execrable C#”, I may have silently agreed, but I’m sure I would have written to complain anyway. It would have been no more acceptable than what you actually wrote and for exactly the same reasons.
This whole thing is way beneath you, it reflects badly on Dr Dobbs, and I’m quite disturbed that you don’t seem to see what your position demands of you.
— Martin
Here the discussion ended, and I just sent a mail to ask if it was ok to copy the emails to a public blog, and Andrew graciously agreed.
“As I said, you *are* Dr Dobbs, you can’t go dropping statements like this around.”
That’s a very strange statement and to my knowledge not true of *any* publication. My editorials express my personal opinion on topics of interest to our readers.
Moreover, my opinion of the quality of the language has nothing to do with whether we cover it more or less. Since your blog post, we’ve run a half a dozen articles using Objective-C, the latest being an intro to the language.
See http://drdobbs.com/229402465