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".'' * Actually, much OpenSource code is in other languages, such as PythonLanguage, PerlLanguage, or ToolCommandLanguage. The FreeSoftwareFoundation still recommends using CeeLanguage (with extensibility provided by GuileScheme, RichardStallman being a LispLanguage old-timer before becoming a FreeSoftware advocate). JavaLanguage is becoming quite popular as an OpenSource language. The languages which ''don't'' have much open-source mindshare (Smalltalk being a key example) are the ones which are expensive to acquire (or were so until recently), or which are widely considered BondageAndDisciplineLanguage''''''s. * Yes. Much software is written in other languages, but the dominant language for OpenSource is still C/C++. I don't know what point you are trying to make. (See CeeCeePlusPlus) Possible causes: * CeeLanguage's legacy * Early adopter of ObjectOrientedProgramming techniques ''"Early?"'' * Practical balance of high-level and low-level aspects. * Natural evolution of the C-style language now used in JavaLanguage, PhpLanguage, CeeSharp * Strong compiler support * Strong development tool support * Strong vendor support * An ArmyOfProgrammers available There are CeePlusPlus detractors on this wiki. Possible causes: * Usual bias against whatever language/company/product is the current standard. * Usual objections to OOP * Initial design problems with C++ * The imperfect nature of C++ evolution leading to some smelly implementations of modern OOP techniques * Lisp/Smalltalk/Java evangelism * Confusion about the roles of compiled vs ScriptingLanguage''''''s * No language support (except for third-party libraries) for many domain-independent problems: graphics, networking, concurrency, etc. * Low-level programming model introduces many classes of defects (WildPointer''''''s, for instance) simply not found in other languages * Performance optimizations inherent in the language (or most implementations) make incremental or separate deployment of code problematic (see FragileBinaryInterfaceProblem). * No reflection or introspection in the language. * Strong preference for DynamicTyping found on this Wiki 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 *Smalltalk, indirectly, on the order of about an hour. ---- ''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 ?) '''OperatingSystem''''''s 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: * OnceAndOnlyOnceIsNotJustForCode mentions an OS written in AdaLanguage. * MulticsOs was written in a version of PL/I (PliLanguage) * JavaOs (or is it just that all *applications* for it are in JavaLanguage?) * BeOs written in CeePlusPlus * GeneraOs was written in LispLanguage * NIX is written in the completely fictional MMIX assembly language. * InfernoOs is written in LimboLanguage (or is it just that all '''applications''' for it are in that language?) * SymbianOs written in C++ (but it would be better if it weren't; it's kind of EarlyCeePlusPlus, with some really bad idioms) * Significant parts of WindowsNt are written in C++ (the remainder is C) * ... any others I forgot? JNode may also be relevant: http://jnode.sourceforge.net/ '''OperatingSystem''''''s 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 DeviceDriver''''''s 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 ScriptingLanguage''''''s 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