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#.