Homepage of Bjarne Stroustrup

Homepage of Bjarne Stroustrup

I’m a Managing Director in the technology division of Morgan Stanley in New York City, a Visiting Professor in Computer Science at Columbia University, and a Distinguished Research Professor in Computer Science at Texas A&M University.

I designed and implemented the C++ programming language. To make C++ a stable and up-to-date base for real-world software development, I stuck with its ISO standards effort for 20+ years (so far).


A Tour of C++ (a brief – 180 page – tour of the C++ Programming language and its standard library for experienced programmers)
The C++ Programming Language (an exhaustive description of the C++ Programming language, its standard library, and fundamental techniques for experienced programmers)
Programming: Principles and Practice using C++ (a programming text book aimed at beginners who want eventually to become professionals)
The Design and Evolution of C++ (a book presenting the rationale and design criteria for C++ and its evolution up until 1994).
research and popular papers

Why Learning Assembly Language Is Still a Good Idea

Why Learning Assembly Language Is Still a Good Idea

I am a professional assembler (former C/C++) programmer and an active member and contributor to the assembler community.

If nothing else, I would honestly have to agree that knowledge of assembler, has made me an all round better C/C++ programmer. It took me about 1 year of assembler studies to reach ‘compiler’ level. After 2 years, I was thinking and coding like a compiler. After 3 years, compilers are left in the dust.

One thing I would like to make clear about this ‘transition’ from C/C++ to assembler I was able to make. Is that the abundance of C/C++ source code and resources out there, is astronomical. Libraries, functions, snipets, help files and documentation. I initially found these resources difficult to come-bye in the assembler community. When I wrote C/C++ programs, I had my ‘frameworks’, my templates. I could write a project in 3 days. I have CD’s full of C/C++ source code, example code on everything imaginable. I have years of the stuff. But I had very few for assembler. What I could do, of course was compile and disassemble. So that’s what I did to get my assembler source code. But I’m happy with my assembler library now. I have assembler code to achieve everything and anything I want and need in assembler now. If I don’t have it, I’ll disassemble it.

My Pro Assembler comments
“You don’t know the power of the dark side”: Darth Vader. You don’t know the power of assembler, till you learn. Have respect for it. Have respect for those that code in it. All languages have pros and cons, assembler included. All languages have a purpose and a reason for being there. Assembler will never die. By it’s nature, it cannot die. Without assembler, there’s no true performance. Sucking everything out of the CPU can only be done in assembler. When new CPU’s and instructions come out, assembler is normally the first and only language to support them. C/C++ has no real native/built in support for MMX/SSE/SSE2 instructions. How else can you utilize these instruction sets? Maybe inline assembler but then you loose the ‘benefit’ of compiler optimizations.

I’m not the best assembler programmer, but I don’t consider myself a newbie. I can say I consistently beat compiler output and my project deadlines are met, without ‘buggy’ code as some would argue and without complaint from users on performance.

joelonsoftware.com: Choice of Programming Language

joelonsoftware.com: Choice of Programming Language

Friday, September 01, 2006

The safe answer, for the Big Enterprisy Thing where you have no interest in being on the cutting edge, is C#, Java, PHP, or Python, since there’s so much evidence that when it comes right down to it zillions of people are building huge business-critical things in those languages and while they may have problems, they’re not life-threatening problems.

How do you decide between C#, Java, PHP, and Python? The only real difference is which one you know better. If you have a serious Java guru on your team who has build several large systems successfully with Java, you’re going to be a hell of a lot more successful with Java than with C#, not because Java is a better language (it’s not, but the differences are too minor to matter) but because he knows it better. Etc.

Finally — as to what we use — Copilot is C# and ASP.Net, as I mentioned, although the Windows client is written in C++. Our older in-house code is VBScript and our newer in-house code is C#. FogBugz is written in Wasabi, a very advanced, functional-programming dialect of Basic with closures and lambdas and Rails-like active records that can be compiled down to VBScript, JavaScript, PHP4 or PHP5. Wasabi is a private, in-house language written by one of our best developers that is optimized specifically for developing FogBugz; the Wasabi compiler itself is written in C#.

joelonsoftware.com: Converting Capital Into Software That Works

joelonsoftware.com: Converting Capital Into Software That Works

Invest in programmers rather than lame ideas

The next problem with build-a-better-mousetrap is that we’ve reached a state with Internet software where there is too much money around chasing the same lame ideas. Call it the idrive-xdrive-swapdrive-freedrive phenomenon: suddenly thirty-seven companies pop up offering exactly the same service for free. There are a zillion examples of this.

There’s a different way to think of software development. Imagine that the goal of your software company is not to solve some specific problem, but to be able to convert money to code through programmers. That’s a little bit strange, but bear with me. A software company has to think of recruiting the right people as its number one problem. If you are successful, this can solve any other problem. Hire smart people, and they will produce good stuff that you can sell and make money off. Then everything else follows. Microsoft has the ability to crush its competitors because it has the ability to deploy so many programmers. When Microsoft released Internet Explorer 3.0, fast on the heels of IE 2.0, it was shocking just how good a job they had done. Not only did they replicate every feature in Netscape’s browser, but they added some more features too, and did it all with an architecture that was robust and strategic.