Cee Plus Plus Reigns

For modern non-web applications, C/C++ (CeeCeePlusPlus) remains the standard. See ProgrammingLanguagePopularity.

Ah, SourceForge. Many people consider it a pathology of the OpenSource community that they write so much C/C++, often on the spurious grounds of "portability".

Possible causes: There are CeePlusPlus detractors on this wiki.

Possible causes:

At this point it is impossible to discount CeePlusPlus or even claim it is dying.

I believe this is due to CeePlusPlus's strongest point: It is the best fit (and most common) in the role of balancing high-level abstractions with low-level bit twiddling.


Countdown to a language debate in 3..2..1

Argg. Please don't let it become that. The point here is that CeePlusPlus reigns, not because it's great, but because it's optimally ungreat.

Response Times


I agree, CeePlusPlusReigns... in the domain of static monoliths coded in CeePlusPlus. Oh my, that's circular. Yup.

Could you elaborate on static monolith? Do you mean LegacyCode, independent applications, or code that is difficult to refactor?


Most common "foundational" applications are written in CeeCeePlusPlus: LinuxOs, bsd, WindowsOs, MicrosoftOffice, iis, apache, samba, gnome, MySql, OracleDatabase, etc.

Even though many business applications are coded in JavaLanguage, PerlLanguage, CeeSharp, etc., it is difficult to imagine C/C++ not reigning till these foundations start being written in other languages. Nothing else seems to be efficient enough.


(EditHint: this section has very little to do with C++ -- is there a more relevant page ? OperatingSystem ? OperatingSystemsImplementation ? OsWiki ?)

OperatingSystems written in something other than CeeLanguage

My understanding is that most OSes were written in AssemblyLanguage. (VaxOs?, CP/M, MsDos, ProDOS, MicrowareOsNine, etc.) My understanding that the most *popular* OSes today (2004) are currently written in mostly C (not even C++ !).

(For example, Ken Thompson and Dennis Ritchie (right?) wrote the original UnixOperatingSystem in PDP-11/20 AssemblyLanguage, then rewrote it in C in 1973).

Since the conversion from assembly language to C was such an amazing success (and has a huge influence on computer architecture: most modern CPUs have been optimized for running C programs), some people wonder about writing an OS in some other language. How would the size (There is NoSuchThingAsSize) of the SourceCode depend on which language it was written in? How would computer architecture be different today if a different language had become dominant?

An OS built on JavaLanguage, Inferno, or some other dynamic programming language [DynamicProgramming??] wouldn't need a MMU. If any of those languages had become the dominant language (rather than C), computers would not have MMUs.

Here's the list:

JNode may also be relevant: http://jnode.sourceforge.net/

OperatingSystems built out of an InterpretedLanguage

Some are fascinated with the idea of an operating system built atop a dynamic ProgrammingLanguage. Does such a thing already exist? It depends what you consider an operating system. Emacs qualifies for some, though it relies on a host operating system to do the low-level bit pushing. Squeak is usually the same, though there are versions of Squeak that run on bare metal. In that case, though, most of the low-level work is done in CeeLanguage. Some implementations of ForthLanguage probably qualify, having DeviceDrivers and all operating system functions (such as they are) implemented in Forth itself. ---- It does depend partly on how much of the OS core has to be HighLevelLanguage to qualify. On one extreme would be systems where the user-space interface is the runtime of a HLL but all the kernel code is in C/assembler/whatever; on the other extreme are systems where every iota of kernel code is HLL. I suspect that SqueakNOS is actually a lot closer to the latter end of that range (modulo VMWare).


SmalltalkLanguage was always intended to be its own OperatingSystem, and it ran as such on the original Smalltalk machines at XeroxParc. According to DesignPrinciplesBehindSmalltalk, "An operating system is a collection of things that don't fit into a language. There shouldn't be one."


Dynamic != interpreted. Most would call LispLanguage a "dynamic language", but every serious implementation these days supports compilation. Perhaps you are trying to make a connection between dynamic and interactive.


Wait a minute... what the heck is C/C++? (See CeeCeePlusPlus) There is no language of that name. Taking another look at SourceForge, oh, it seems CeeLanguage actually reigns. Possibly because it is the 'ScriptingLanguage' of UnixOs. ---- C was more the JavaLanguage of Unix, oriented to systems programming and "serious" applications work. The original ScriptingLanguage of Unix was, well, shellscript. PerlLanguage became the first modern scripting language when it gained the ability to replace shell in that role.

Looking at the 2005 figures at http://www.jroller.com/page/matsh?entry=java_history_was_made_today , CeeLanguage, CeePlusPlus and JavaLanguage together dominate Sourceforge, with roughly equal project numbers. Of the three Java is ahead by a nose.


Any real language is going to be TuringEquivalent, and ScriptingLanguages definitely fill a different role than "applications". AssemblyLanguage doesn't do high level easily and PowerBuilder doesn't do low level easily, and I often wonder what the proper balance for a language is. I don't know anyone that claims CeePlusPlus is some kind of ultimate grand language, and everyone can name a worse language... for any category. The nice thing about languages & standards is there are so many to pick from (see: AndrewTanenbaum).


Of interest: PaulGraham's BeingPopularEssay


CategoryCpp


EditText of this page (last edited September 29, 2010) or FindPage with title or text search