Hacker News new | ask | show | jobs
by WalterBright 1458 days ago
> But if he hadn't been nice what would have happened?

I would have tried to negotiate a deal. If that failed, I would have abandoned making a C++ compiler.

Consider that at the time C++ and ObjectiveC were neck and neck, judging by the message volume on newnews. I rejected doing O-C because Stepstone demanded royalties for implementing it.

When Zortech C++ was released, an inexpensive native C++ compiler that was well-adapted to the 16 bit DOS model, C++ took off, and O-C sputtered and died. If AT&T had also demanded royalties, C++ would have been a failure, as cfront was not very practical.

90% of programming in those days was done on DOS, and Zortech C++ was top of the heap. If I may say so, Zortech C++ gave C++ the critical mass it needed to surge ahead.

My partner made the mistake of telling Eugene Wang of Borland how well ZTC++ was selling, and from the look on Eugene's face I knew we'd made a big mistake. Borland did an abrupt change in direction and went all in on Turbo C++. And the rest, as they say, is history. Microsoft also soon abandoned its object extensions to C and went with C++.

4 comments

My graphics class instructor was Jack Bresenham. The class was given in Borland's Turbo Pascal, but I asked for permission to write my code in the then-new Turbo C++ (since Jack knew C, I was sure he'd allow it).

It came time to demo our work. Everyone else's code ran at least 5 times faster than mine. How could this be? Well, the Turbo C++ compiler was on the "immature" side at that time and produced really inefficient binaries. While the Borland Pascal compiler was mature and created code that ran really quite fast. Lesson learned. :)

That's what you get for not having the foresight to pick the compiler written by the guy who would go on to create C# and TypeScript [1].

[1] https://en.wikipedia.org/wiki/Anders_Hejlsberg

My C# story: We were a Visual Basic 6 shop, writing COM+ components being called by classic ASP pages. Microsoft .NET had just been announced and we spent some time doing an evaluation between it and Java (JSPs and Beans) - our brand new CTO was concerned about Microsoft technology being a monoculture and felt that Java would allow us to pick from several competing vendors so we could be using the best of breed[0].

We spent several months doing a technical comparison. And in the final meeting they went around the room getting opinions from everyone. All but one chose .NET (the dissenter was: "Whatever you think, boss"). The CTO said "That settles it. We're going with Java."[1]

So we spent hundreds of thousands on Oracle database licenses (because if you're changing languages, might as well change databases too, right?) and consultants to write a prototype. When they were done, it scaled to a grand total of two concurrent users on the fastest Compaq servers we had. While our existing VB code was serving about two hundred. Again, mature technology vs. immature technology.

I've been a big fan of C# since then. While I think the latest changes to the language and runtime are mostly eye candy (how hard is it to have a Main method, really?) there's some good stuff in there (I spent some time looking at System.Threading.Channels recently)

[0] The idea isn't bad, but what happens in practice is you get about 2 top-tier vendors and a bunch of also-rans.

[1] When choosing a technology stack, the CTO will pick what they want and everyone else's opinions are secondary. I think this must be a corollary to the "When a business moves, it's always closer to the CEO's house" rule.

Optimising compiler is not the same business as a language implementation :-) related but not the same at all
That compiler got template support very, very late, and conforming support much later than that.
Man, it really is history. Crazy to think had things been a little different how different would things be today. If kid me knew one day I'd run across this in an online forum I don't think I'd have believed it.

As others said- thanks for sharing the insights, made my week.

The refusal to open-license Minix is another one that has had major repercussions.
Yes, that was a giant mistake. But you have to keep in mind that there was already a deal with Prentice-Hall at that point and re-negotiating that to open sourcing it may well have been prohibitively costly for Tanenbaum / VU.
I don't even really think it was a mistake, it's just that it indirectly caused linux. Of course the Hurd being a Turd helped there, too.
It's the Butterfly Effect, for sure.
Thank you for giving these details. I feel like AI is the next step in some kind of implementation war after languages and then browsers.
Does C++ have much of an AI/ML implementation? I saw something recently about the language missing a good AI/ML framework since there was no way to do proper differentiation (might be the wrong term, sorry).
This doesn't make much sense, for two reasons: 1. Various ML libraries are implemented in C++ and have wrappers for respective interpreted languages. 2. Given higher-level languages can do auto-diff, c++ as a lower-level language is likely to be able to do it (and it can).

It just doesn't have as popular libraries such as python/R etc given the latter are far easier to work with + lower barriers for entry.

PyTorch is written in C++ and has a C++ API (although the most famous API is — as the name suggests — the Python one).
dlib is pretty good: http://dlib.net/
> Microsoft also soon abandoned its object extensions to C and went with C++.

Anyone have any info on what those abandoned Microsoft extensions were?

I heard it was called "C*". But I've never been able to find out more about it. Just that a Redmondian told me that Zortech's success caused them to abandon it. Probably it was in the very early stages.