FACTOID # 168: There are 11 countries where the average woman has more than six children. Ten of them are in Africa.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

SEARCH ALL

FACTS & STATISTICS    Advanced view

Search encyclopedia, statistics and forums:

 

 

(* = Graphable)

 

 


Encyclopedia > C Plus Plus

C++ (pronounced "see plus plus", IPA: /siː pləs pləs/) is a general-purpose computer programming language. It is a statically typed free-form multi-paradigm language supporting procedural programming, data abstraction, object-oriented programming, and generic programming. Since the 1990s, C++ has been one of the most popular commercial programming languages. IPA may refer to: The International Phonetic Alphabet or India Pale Ale ... A drawing of the everyday computer. ... A programming language or computer language is a standardized communication technique for expressing instructions to a computer. ... In computer science, a datatype (often simply a type) is a name or label for a set of values and some operations which one can perform on that set of values. ... In computer programming, a free-form language is a programming language in which the positioning of characters on the page in program text is not significant. ... A multiparadigm programming language is a programming language that supports more than one programming paradigm. ... Procedural programming is a programming paradigm based upon the concept of the procedure call. ... In computer science, abstraction refers to two related, but different concepts. ... In computer science, object-oriented programming, OOP for short, is a computer programming paradigm. ... In computer science, generics is a technique that allows one value to take different datatypes (so-called polymorphism) as long as certain contracts such as subtypes and signature are kept. ...


Bell Labs' Bjarne Stroustrup developed C++ (originally named "C with Classes") in 1983 as an enhancement to the C programming language. Enhancements started with the addition of classes, followed by, among many features, virtual functions, operator overloading, multiple inheritance, templates, and exception handling. The C++ programming language standard was ratified in 1998 as ISO/IEC 14882:1998, the current version of which is the 2003 version, ISO/IEC 14882:2003. A new version of the standard (known informally as C++0x) is being developed. This article needs to be cleaned up to conform to a higher standard of quality. ... Bjarne Stroustrup Bjarne Stroustrup (born December 30, 1950 in Aarhus, Denmark) is a computer scientist and the College of Engineering Chair Professor of Computer Science at Texas A&M University. ... In, object-oriented programming, a class consists of a collection of encapsulated instance variables and methods, possibly with implementation of those types together with a constructor function that can be used to create objects of the class. ... The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a standardized imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the Unix operating system. ... In, object-oriented programming, a class consists of a collection of encapsulated instance variables and methods, possibly with implementation of those types together with a constructor function that can be used to create objects of the class. ... In object-oriented programming theory, polymorphism is the ability of objects belonging to different types to respond to methods of the same name, each one according to the right type-specific behavior. ... In computer programming, operator overloading (less commonly known as operator ad-hoc polymorphism) is a specific case of polymorphism in which some or all of operators like +, = or == are treated as polymorphic functions and as such have different behaviours depending on the types of their arguments. ... Some programming languages allow multiple inheritance, in which a class can inherit behaviors and features from more than one superclass. ... In computer science, generics is a technique that allows one value to take different datatypes (so-called polymorphism) as long as certain contracts such as subtypes and signature are kept. ... Exception handling is a programming language construct or computer hardware mechanism designed to handle runtime errors or other problems (exceptions) which occur during the execution of a computer program. ... ISO/IEC International Standard 14882, Programming Languages — C++, is the official standard for the C++ programming language and library, defined by the JTC1/SC22/WG21 working group. ...

Contents


Technical overview

The 1998 C++ standard consists of two parts: the core language and the C++ standard library; the latter includes most of the Standard Template Library and a slightly modified version of the C standard library. Many C++ libraries exist which are not part of the standard, such as the Boost library. Also, non-standard libraries written in C can generally be used by C++ programs. Standardization, in the context related to technologies and industries, is the process of establishing a technical standard among competing entities in a market, where this will bring benefits without hurting competition. ... In computer science, a core language is a pure programming language, generally organized into statement blocks; the core language is often developed into libraries, which are then used during programming. ... In C++, the Standard Library is a collection of classes and functions, which are written in the core language. ... The Standard Template Library (STL) is a software library. ... Boost is a collection of libraries that extend the functionality of C++. The libraries are licensed under the Boost Software License, a very open license designed to allow Boost to be used with any project. ... The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a standardized imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the Unix operating system. ...


Features introduced in C++

Compared to C language, C++ introduced extra features, including declarations as statements, function-like casts, new/delete, bool, reference types, inline functions, default arguments, function overloading, namespaces, classes (including all class-related features such as inheritance, member functions, virtual functions, abstract classes, and constructors), operator overloading, templates, the :: operator, exception handling, and run-time type identification. A declaration is a form of statement, which expresses (or declares) some idea; declarations attempt to argue that something is true. ... Many modern computer languages provide support for namespaces. ...


Despite popular belief, C++ did not introduce the const keyword first. Const was formally added to C shortly before it was adopted by C++.


C++ also performs more type checking than C in several cases.


Comments starting with two slashes ("//") were originally part of C's predecessor, BCPL, and were reintroduced in C++. The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a standardized imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the Unix operating system. ... BCPL (Basic Combined Programming Language) is a computer programming language that was designed by Martin Richards of the University of Cambridge in 1966; it was originally intended for use in writing compilers for other languages. ...


Several features of C++ were later adopted by C, including inline, declarations in for loops, and C++-style comments (using the // symbol). However, C99 also introduced features that do not exist in C++, such as variadic macros and better handling of arrays as parameters. The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a standardized imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the Unix operating system. ... A variadic macro is a feature of the C Preprocessor whereby a macro may be declared to accept a varying number of arguments. ...


A very common source of confusion is a subtle terminology issue: because of its derivation from C, in C++ the term object means memory area, just like in C, and not class instance, which is what it means in most other object oriented languages. For example in both C and C++ the line Object-oriented programming (OOP) is a computer programming paradigm in which a software system is modeled as a set of objects that interact with each other. ...

 int i; 

defines an object of type int, that is the memory area where the value of the variable i will be stored on assignment.


C++ library

The C++ standard library incorporates the C standard library with some small modifications to make it work better with the C++ language. Another large part of the C++ library is based on the Standard Template Library (STL). This provides such useful tools as containers (for example vectors and lists) and iterators (generalized pointers) to provide these containers with array-like access. Furthermore (multi)maps (associative arrays) and (multi)sets are provided, all of which export compatible interfaces. Therefore it is possible, using templates, to write generic algorithms that work with any container or on any sequence defined by iterators. As in C, the features of the library are accessed by using the #include directive to include a standard header. C++ provides sixty-nine standard headers, of which nineteen are deprecated. In C++, the Standard Library is a collection of classes and functions, which are written in the core language. ... The Standard Template Library (STL) is a software library. ... In computer programming, an array, also known as a vector or list, is one of the simplest data structures. ... In computer science, a linked list is one of the fundamental data structures used in computer programming. ... In object-oriented programming, an iterator is an object allowing one to sequence through all of the elements or parts contained in some other object, typically a container or list. ... In computer science, a pointer is a programming language datatype whose value refers directly to (points to) another value stored elsewhere in the computer memory using its address. ... In computing, an associative array, also known as a map, lookup table, or dictionary, is an abstract data type very closely related to the mathematical concept of a function with a finite domain. ... In geographic information systems, a feature comprises an item of feature data. ... Modern-style library In the traditional sense of the word, a library is a collection of books and periodicals. ... A directive is an instruction to a programming language compiler about how to compile a program. ... A standard header, in C, Objective-C and C++ programming, is a header file that contains common definitions and data structures that all programs may use as required. ...


Because standard library was designed by leading experts and proven by the whole industry, it is recommended to use library's components instead of handcrafted counterparts or lower-level facilities. For example, using std::vector or std::string instead of plain old array will not only make life easier, but also hopefully write safer and more scalable software.


The STL was originally a third-party library from HP and later SGI, before its incorporation into the C++ standard. The standard does not refer to it as "STL", as it is merely a part of the standard library, but many people still use that term to distinguish it from the rest of the library (input/output streams (IOstreams), internationalization, diagnostics, the C library subset, etc.). The Hewlett-Packard Company (NYSE: HPQ), commonly known as HP, is a very large, global company headquartered in Palo Alto, California, United States. ... Silicon Graphics, Inc. ...


A project known as STLPort, based on the SGI STL, maintains an up-to-date implementation of the STL, IOStreams and strings. Other projects also make variant custom implementations of the standard library with various design goals. Silicon Graphics, Inc. ...


Object-oriented features of C++

C++ introduces some object-oriented (OO) features to C. It offers classes, which provide the four features commonly present in OO (and some non-OO) languages: abstraction, encapsulation, polymorphism, and inheritance. Object-oriented programming (OOP) is a computer programming paradigm in which a software system is modeled as a set of objects that interact with each other. ... In, object-oriented programming, a class consists of a collection of encapsulated instance variables and methods, possibly with implementation of those types together with a constructor function that can be used to create objects of the class. ... In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on few concepts at a time. ... // Overview In computer science, the principle of information hiding is the hiding of design decisions in a computer program that are most likely to change, thus protecting other parts of the program from change if the design decision is changed. ... In computer science, polymorphism means allowing a single definition to be used with different types of data (specifically, different classes of objects). ... In object-oriented programming of computer science, an inheritance is a way to form new classes (instances of which will be objects) using pre-defined objects or classes where new ones simply take over old ones implementations and characteristics. ...


Encapsulation

C++ implements encapsulation by allowing all members of a class to be declared as either public, private, or protected. A public member of the class will be accessible to any function. A private member will only be accessible to functions that are members of that class and to functions and classes explicitly granted access permission by the class ("friends"). A protected member will be accessible to members of classes that inherit from the class in addition to the class itself and any friends. // Overview In computer science, the principle of information hiding is the hiding of design decisions in a computer program that are most likely to change, thus protecting other parts of the program from change if the design decision is changed. ...


The OO principle is that all and only the functions that can access the internal representation of a type should be encapsulated within the type definition. C++ supports this (via member functions and friend functions), but does not enforce it: the programmer can declare parts or all of the representation of a type to be public, and is also allowed to make public entities that are not part of the representation of the type. Because of this C++ supports not just OO programming but other weaker decomposition paradigms, like modular programming. Modularity is a concept that has applications in the contexts of computer science, particularly programming, as well as cognitive science in investigating the structure of mind. ...


It is generally considered good practice to make all data private, or at least protected, and to make public only those functions that are part of a minimal interface for users of the class that hides implementation details.


Polymorphism

Polymorphism is a widely used and abused term that is not well defined. In computer science, polymorphism means allowing a single definition to be used with different types of data (specifically, different classes of objects). ...


In the case of C++ it is often used in connection with member function names, where the function name corresponds to several implementations, and which implementation gets invoked depends either on the type of the arguments (static polymorphism) or on the type of the class instance value (dynamic polymorphism) used on which the virtual member function is invoked.


For example, a C++ program may contain something like this:

 // Static polymorphism extern void SendJobToDevice(PrintJobText*, DeviceLaser*); extern void SendJobToDevice(PrintJobText*, DeviceJet*); extern void SendJobToDevice(PrintJobHTML*, DeviceLaser*); extern void SendJobToDevice(PrintJobHTML*, DeviceJet*); ... SendJobToDevice(printJob, device); 
 // Dynamic polymorphism class Device { public: virtual void print(PrintJob*); ... }; 
 PrintJob* printJob; Device* device; ... device->print(printJob); // Note that since C++ does not have multiple dispatch, the above // function call is polymorphic based only on the device's type. 

In C, (dynamic) polymorphism of a sort can be achieved using the switch statement or function pointers. Multiple dispatch or multimethods is the feature of some object-oriented programming languages in which a function or method can be specialized on the type of more than one of its arguments. ... A function pointer is a type of pointer in the C and C++ programming languages. ...


C++ provides two more sophisticated features for polymorphism: function overloading and virtual member functions. Both features allow a program to define several different implementations of a function for use with different types of objects.


Function overloading allows programs to declare multiple functions with the same name. The functions are distinguished by the number and types of their formal parameters. For example, a program might contain the following three function declarations: This article needs to be cleaned up to conform to a higher standard of quality. ...

 void pageUser(int userid); void pageUser(int userid, string message); void pageUser(string username); 

Three different pageUser() functions are declared. When the compiler afterwards encounters a call to pageUser(), it determines which function to call based on the number and type of the arguments provided. (The compiler considers only the parameters, not the return type.) Because the compiler determines which function to call at compile time, this is called static polymorphism. (The word static is used here in the sense of "not moving". It denotes that the determination is made based solely on static analysis of the source code: by reading it, not by running it. By the time the program executes, the decision has been made.) Static code analysis is a set of methods for analysing software source code or object code in an effort to gain understanding of what the software does and establish certain correctness criteria. ...


Operator overloading is a form of function overloading. It is one of C++'s most controversial features. Many consider operator overloading to be widely misused, while others think it is a great tool for increasing expressiveness. An operator is one of the symbols defined in the C++ language, such as +, !=, <, or &. Much as function overloading allows the programmer to define different versions of a function for use with different argument types, operator overloading lets the programmer define different versions of an operator for use with different operand types. For example, if the class Integer contains a declaration like this: In computer programming, operator overloading (less commonly known as operator ad-hoc polymorphism) is a specific case of polymorphism in which some or all of operators like +, = or == are treated as polymorphic functions and as such have different behaviours depending on the types of their arguments. ...

 Integer& operator++(); 

then the program can use the ++ operator with objects of type Integer. For example, the code

 Integer a = 2; ++a; 

behaves exactly like this:

 Integer a = 2; a.operator++(); 

In most cases, this would then increment the value of the variable a to 3. However, the programmer who created the Integer class can define the Integer::operator++() member function to do whatever he wants. Because operators are commonly used implicitly, it is considered bad style to declare an operator except when its meaning is obvious and unambiguous. Curiously, it can be argued that the standard libraries do not follow this convention. For example, the object cout, used for outputting text to the console, has an overloaded << operator for outputting the text. Critics argue that this use is non-obvious because << is the operator for a bit shift, which is clearly meaningless in this context. Nevertheless, most people consider this use to be acceptable, and this particular example is certainly in C++ to stay. Console may be: An organ term for the area of an organ including the keys, stops, and foot pedals manipulated by the organist. ... In computer programming, a bitwise operation operates on one or two bit patterns or binary numerals at the level of their individual bits. ...


C++ templates make heavy use of static polymorphism, including overloaded operators.


Virtual member functions provide a different type of polymorphism. In this case, different objects that share a common base class may all support an operation in different ways. For example, a PrintJob base class might contain a member function

 virtual int getPageCount(double pageWidth, double pageHeight) 

Each different type of print job, such as DoubleSpacedPrintJob, may then override the method with a function that can calculate the appropriate number of pages for that type of job. In contrast with function overloading, the parameters for a given member function are always exactly the same number and type. Only the type of the object for which this method is called varies.


When a virtual member function of an object is called, the compiler sometimes doesn't know the type of the object at compile time and therefore can't determine which function to call. The decision is therefore put off until runtime. The compiler generates code to examine the object's type at runtime and determine which function to call. Because this determination is made on the fly, this is called dynamic polymorphism. In programming languages, name binding refers to the association of values with identifiers. ...


The run-time determination and execution of a function is called dynamic dispatch. In C++, this is commonly done using virtual tables. In computer science, dynamic dispatch is the process of mapping a message to a specific sequence of code (method) at runtime. ... A virtual table, or vtable, is a mechanism used in Programming languages to support dynamic polymorphism, i. ...


Inheritance

Inheritance from a base class may be declared as public, protected, or private. This access specifier determines whether unrelated and derived classes can access the inherited public and protected members of the base class. Only public inheritance corresponds to what is usually meant by "inheritance". The other two forms are much less frequently used. If the access specifier is omitted, inheritance is assumed to be private for a class base and public for a struct base. Base classes may be declared as virtual; this is called virtual inheritance. Virtual inheritance ensures that only one instance of a base class exists in the inheritance graph, avoiding some of the ambiguity problems of multiple inheritance. In object-oriented programing languages, virtual inheritance solves some of the problems caused multiple inheritance by having common grandparent classes used only once. ... Some programming languages allow multiple inheritance, in which a class can inherit behaviors and features from more than one superclass. ...


Multiple inheritance is another controversial C++ feature. Multiple inheritance allows a class to derive from more than one base class; this can result in a complicated graph of inheritance relationships. For example, a "Flying Cat" class can inherit from both "Cat" and "Flying Mammal". Some other languages, such as Java, accomplish something similar by allowing inheritance of multiple interfaces while restricting the number of base classes to one (interfaces, unlike classes, provide no implementation and no variable data). Some programming languages allow multiple inheritance, in which a class can inherit behaviors and features from more than one superclass. ... Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. ... In general usage, an interface is the point, area, or surface along which two substances or other qualitatively different things meet; it is also used metaphorically for the juncture between items. ...


Design of C++

In The Design and Evolution of C++ (1994), Bjarne Stroustrup describes some rules that he uses for the design of C++. Knowing the rules helps to understand why C++ is the way it is. The following is a summary of the rules. Much more detail can be found in The Design and Evolution of C++.

  • C++ is designed to be a statically typed, general-purpose language that is as efficient and portable as C
  • C++ is designed to directly and comprehensively support multiple programming styles (procedural programming, data abstraction, object-oriented programming, and generic programming)
  • C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly
  • C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C
  • C++ avoids features that are platform specific or not general purpose
  • C++ does not incur overhead for features that are not used
  • C++ is designed to function without a sophisticated programming environment

Stanley B. Lippman documents in his in-depth book "Inside the C++ Object Model" (1996) how compilers convert C++ program statements into an in-memory layout. Lippman worked on implementing and maintaining C-front, the original C++ implementation at Bell Labs. In computer science, a datatype (often simply a type) is a name or label for a set of values and some operations which one can perform on that set of values. ... Procedural programming is a programming paradigm based upon the concept of the procedure call. ... In computer science, abstraction refers to two related, but different concepts. ... In computer science, object-oriented programming, OOP for short, is a computer programming paradigm. ... In computer science, generics is a technique that allows one value to take different datatypes (so-called polymorphism) as long as certain contracts such as subtypes and signature are kept. ...


History of C++

Stroustrup began work on C with Classes in 1979. The idea of creating a new language originated from Stroustrup's experience programming for his Ph.D. thesis. Stroustrup found that Simula had features that were very helpful for large software development but was too slow for practical uses, while BCPL was fast but too low level and unsuitable for large software development. When Stroustrup started working in Bell Labs, he had the problem of analyzing the UNIX kernel with respect to distributed computing. Remembering his Ph.D. experience, Stroustrup set out to enhance the C language with Simula-like features. C was chosen because it is general-purpose, fast, and portable. At first, class (with data encapsulation), derived class, strong type checking, inlining, and default argument were features added to C, via the Cfront front-end. The first commercial release occurred in October 1985. Simula introduced the object-oriented programming paradigm and thus can be considered the first object-oriented programming language and a predecessor to Smalltalk, C++, Java, and all modern class-based object-oriented languages. ... BCPL (Basic Combined Programming Language) is a computer programming language that was designed by Martin Richards of the University of Cambridge in 1966; it was originally intended for use in writing compilers for other languages. ... This article needs to be cleaned up to conform to a higher standard of quality. ... Wikibooks has more about this subject: Guide to UNIX Unix or UNIX is a computer operating system originally developed in the 1960s and 1970s by a group of AT&T Bell Labs employees including Ken Thompson, Dennis Ritchie, and Douglas McIlroy. ... The word kernel has a a variety of meanings in a several fields. ... In computer science, distributed computing studies the coordinated use of physically distributed computers. ... // Overview In computer science, the principle of information hiding is the hiding of design decisions in a computer program that are most likely to change, thus protecting other parts of the program from change if the design decision is changed. ... Cfront was the original compiler for C++ (then known as C with Classes) from around 1983, which converted C++ to C; developed by Bjarne Stroustrup. ... In their most general meanings, the terms front end and back end refer to the initial and the end stages of a process flow. ...


In 1983, the name of the language was changed from C with Classes to C++. New features that were added to the language included virtual functions, function name and operator overloading, references, constants, user-controlled free-store memory control, improved type checking, and new comment style (//). In 1985, the first edition of The C++ Programming Language was released, providing an important reference to the language, as there was not yet an official standard. In 1989, Release 2.0 of C++ was released. New features included multiple inheritance, abstract classes, static member functions, const member functions, and protected members. In 1990, The Annotated C++ Reference Manual was released and provided the basis for the future standard. Late addition of features included templates, exceptions, namespaces, new casts, and a Boolean type. In computer science, const-correctness is the form of program correctness that deals with the proper declaration of objects as mutable or immutable. ...


As the C++ language evolved, a standard library also evolved with it. The first addition to the C++ standard library was the stream I/O library which provided facilities to replace the traditional C functions such as printf and scanf. Later, among the most significant additions to the standard library, was the Standard Template Library. Several programming languages implement a printf function, to output a formatted string. ... The Standard Template Library (STL) is a software library. ...


After years of work, a joint ANSI-ISO committee standardized C++ in 1998 (ISO/IEC 14882:1998). For some years after the official release of the standard in 1998, the committee processed defect reports, and published a corrected version of the C++ standard in 2003. In 2005, a technical report, called the "Library Technical Report 1" (often known as TR1 for short) was released. While not an official part of the standard, it gives a number of extensions to the standard library which are expected to be included in the next version of C++. Support for TR1 is growing in almost all currently maintained C++ compilers. The American National Standards Institute (ANSI) is a private, non-profit standards organization that serves as a facilitator for the standardization work of its members in the United States. ... Logo of the International Organization for Standardization The International Organization for Standardization (ISO or iso) is an international standard-setting body composed of representatives from national standards bodies. ... ISO/IEC International Standard 14882, Programming Languages — C++, is the official standard for the C++ programming language and library, defined by the JTC1/SC22/WG21 working group. ...


No one owns the C++ language; it is royalty-free. The standard document itself is, however, not available for free.


Future development

C++ continues to evolve to meet future requirements. One group in particular, Boost.org, works to make the most of C++ in its current form and advises the C++ standards committee as to which features work well and which need improving. Current work indicates that C++ will capitalize on its multi-paradigm nature more and more. The work at Boost.org, for example, is greatly expanding C++'s functional and metaprogramming capabilities. The C++ standard does not cover implementation of name decoration, exception handling, and other implementation-specific features, making object code produced by different compilers incompatible; there are, however, 3rd-party standards for particular machines or OSs which attempt to standardise compilers on those platforms, for example C++ ABI. Boost is a collection of libraries that extend the functionality of C++. The libraries are licensed under the Boost Software License, a very open license designed to allow Boost to be used with any project. ... Metaprogramming is the writing of programs that write or manipulate other programs (or themselves) as their data or that do part of the work that is otherwise done at runtime during compile time. ... In computer programming, name decoration provides a way of encoding additional information about the name of a function, structure, class or another datatype in order to pass more semantic information from the compilers to linkers. ... Exception handling is a programming language construct or computer hardware mechanism designed to handle runtime errors or other problems (exceptions) which occur during the execution of a computer program. ... In computer science, object file or object code is an intermediate representation of code generated by a compiler after it processes a source code file. ... A diagram of the operation of a typical multi-language compiler. ...


C++ compilers still struggle to support the entire C++ standard, especially in the area of templates — a part of the language that was more-or-less entirely conceived by the standards committee. One particular point of contention is the export keyword, intended to allow template definitions to be separated from their declarations. The first compiler to implement export was Comeau C++, in early 2003 (5 years after the release of the standard); in 2004, beta compiler of Borland C++ Builder X was also released with export. Both of these compilers are based on the EDG C++ frontend. It should also be noted that many C++ books provide example code for implementing the keyword export (Ivor Horton's Beginning ANSI C++, pg. 827) which will not compile, but there is no reference to the problem with the keyword export mentioned. Other compilers such as Microsoft Visual C++ and GCC do not support it at all. Herb Sutter, secretary of the C++ standards committee, has recommended that export be removed from future versions of the C++ standard [1], but finally the decision was made to leave it in the C++ standard. Microsoft Corporation (NASDAQ: MSFT, HKEx: 4338) is the worlds largest software company, with 2005 global annual sales of 40 billion US dollars and nearly 60,000 employees in 85 countries and regions. ... Visual C++ 6. ... The GNU Compiler Collection (usually shortened to GCC) is a set of programming language compilers produced by the GNU Project. ... Herb Sutter is one of the most prominent C++ experts. ...


Other template issues include constructions such as partial template specialisation, which was poorly supported for several years after the C++ standard was released. Partial template specialisation is a method of optimizing generic code at compile time. ...


History of the name "C++"

This name is credited to Rick Mascitti (mid-1983) and was first used in December 1983. Earlier, during the research period, the developing language had been referred to as "C with Classes". The final name stems from C's "++" operator (which increments the value of a variable) and a common naming convention of using "+" to indicate an enhanced computer program, for example: "Wikipedia+". According to Stroustrup: "the name signifies the evolutionary nature of the changes from C". C+ was the name of an earlier, unrelated programming language. Research is an active, diligent, and systematic process of inquiry in order to discover, interpret and/or revise facts. ... The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a standardized imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the Unix operating system. ... In, object-oriented programming, a class consists of a collection of encapsulated instance variables and methods, possibly with implementation of those types together with a constructor function that can be used to create objects of the class. ... In mathematics, an operator is some kind of function; if it comes with a specified type of operand as function domain, it is no more than another way of talking of functions of a given type. ... Value is a term that expresses the concept of worth in general, and it is thought to be connected to reasons for certain practices, policies, or actions. ... In computer science and mathematics, a variable is a symbol denoting a quantity or symbolic representation. ... For Wikipedias naming conventions see Wikipedia:Naming conventions A naming convention is an attempt to systematize names in a field so they unambiguously convey similar information in a similar manner. ... Bjarne Stroustrup Bjarne Stroustrup (born December 30, 1950 in Aarhus, Denmark) is a computer scientist and the College of Engineering Chair Professor of Computer Science at Texas A&M University. ... A speculatively rooted phylogenetic tree of all living things, based on rRNA gene data, showing the separation of the three domains, bacteria, archaea, and eukaryotes, as described initially by Carl Woese. ...


Some C programmers have noted that if the statements x=3; and y=x++; are executed, then x==4 and y==3; x is incremented after its value is assigned to y. However, if the second statement is y=++x;, then y=4 and x=4. Following such reasoning, a more proper name for C++ might actually be ++C. However, c++ and ++c both increment c, and, on its own line, the form c++ is more common than ++c. However, the introduction of C++ did not change the C language itself, so an even more accurate name might be "C+1". A programmer or software developer is someone who programs computers, i. ...


Stroustrup addresses this debate in the preface of later editions of his book, The C++ Programming Language, adding that another interpretation of the name "C++" might be inferred from the appendix of George Orwell's Nineteen Eighty-Four. Of the three segments of the fictional language Newspeak, the "C vocabulary" is the one dedicated to technical terms and jargon. "Doubleplus" is the superlative modifier for Newspeak adjectives. Thus, "C++" might hold the meaning "most extremely technical or jargonous" in Newspeak. A preface (Med. ... Eric Arthur Blair (June 25, 1903–January 21, 1950), better known by the pen name George Orwell, was a British author and journalist. ... This article contains information that has not been verified and thus might not be reliable. ... Newspeak is a fictional language in George Orwells novel Nineteen Eighty-Four. ... Jargon is a type of terminology which is used in conjunction with a specific activity, e. ... In grammar the superlative of an adjective or adverb indicates that a member of a set transcends the other members in some way. ...


When Rick Mascitti was questioned informally in 1992 about the naming, he indicated that it was given in a tongue-in-cheek spirit. He never thought that it would become the formal name of the language.


Incompatibility with C

While most C source code will compile as C++ code without issue, certain language differences prevent C++ from being a strict superset of C. For example, C++ forbids calling the main function from within the program, whereas this is legal in C.


In addition, C++ is much stricter about various features; for example, it lacks implicit type conversion between unrelated pointer types and does not allow a function to be used that has not yet been declared.


So, while the following code is valid C:

 void somefunc(void *ptr) { int *i = ptr; /* Implicit conversion from void* to int* */ } 

The equivalent C++ code would have to be:

 void somefunc(void *ptr) { int *i = (int*)ptr; // Explicit cast needed } 

A common portability issue from C to C++ are the numerous additional keywords that C++ introduced. This makes C code that uses them as identifiers illegal in C++. For example:

 struct template { int new; struct template* class; }; 

is legal C code, but is rejected by a C++ compiler, since the keywords "template", "new" and "class" are not appropriate in the corresponding places.


The differences even extend to issues of style. For example the old, traditional, way of declaring function arguments in C is not supported at all by C++. The declaration:

 int subtract(minuend, subtrahend) int minuend; int subtrahend; { return minuend - subtrahend; } 

would be rejected by a C++ compiler which, unlike C, demands that the following, newer, style to be used:

 int subtract(int minuend, int subtrahend) { return minuend - subtrahend; } 

See the relation to C++ section of the C article for more details. The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a standardized imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the Unix operating system. ...


C++ examples

Example 1

This is an example of a program which does nothing. It begins executing and immediately terminates. It consists of one thing: a main() function. main() is the designated start of a C++ program. In computer science, a subroutine (function, procedure, or subprogram) is a sequence of code which performs a specific task, as part of a larger program, and is grouped as one, or more, statement blocks; such code is sometimes collected into software libraries. ... A computer program or software program (usually abbreviated to a program) is a step-by-step list of instructions written for a particular computer architecture in a particular computer programming language. ...

 int main() { return 0; } 

The C++ Standard requires that main() returns type int. A program which uses any other return type for main() is not Standard C++. Return types are what results from calling a method or function in high-level programming languages, such as Java, C++, C, Prolog and many others. ...


The Standard does not say what the return value of main() actually means. Traditionally, it is interpreted as the return value of the program itself. The Standard guarantees that returning zero from main() indicates successful termination. Note that the Standard does not require the return explicitly; the lack of a return is assumed to mean return 0. However, many compilers do not support this and mark it as an error.


Indicating unsuccessful termination from a C++ program is done by returning the EXIT_FAILURE constant, which is defined in the cstddef standard header.


Sometimes the passing of parameters to the main function is desirable. In this case one would write the following code:

 int main(int argc, char* argv[]) { return 0; } 

Where int argc is the number of parameters and argv is an array of strings that contains the different parameters.


Example 2

This is an example of a Hello world program, which uses the C++ standard library (not STL) cout facility to display a message and then terminates. A hello world program is a computer program that prints out Hello, world! on a display device. ... In C++, the Standard Library is a collection of classes and functions, which are written in the core language. ... Message in its most general meaning is the object of communication. ...

 #include <iostream> // Required for std::cout int main() { std::cout << "Hello World!" << std::endl; return 0; } 

Example 3

 #include <iostream> #include <istream> #include <ostream> int main() { int response; std::cout << "Are you feeling well? (1=Yes, 2=No)" << std::endl; std::cin >> response; if (response == 1) { std::cout << "I am glad that you are fine."; } else { std::cout << "Oh, I am so sorry."; } return 0; } 

This program asks for a user input (with cin), and stores the subsequent information in the 'response' variable. This is then used in the if block to make a decision as to which message should be displayed.


Example 4

Modern C++ can accomplish advanced tasks in a simple manner. This example demonstrates the use of the C++ Standard Template Library containers map and vector, among other features. The Standard Template Library (STL) is a software library. ... The introduction to this article provides insufficient context for those unfamiliar with the subject matter. ...

 #include <algorithm> // std::for_each() #include <iostream> // std::cout #include <map> // std::map<> and std::pair<> #include <string> // std::string #include <vector> // std::vector<> using namespace std; // import "std" namespace into global namespace typedef string Name; // Name becomes a synonym of a string typedef vector<string> ItemList; // ItemList becomes a synonym of a vector of strings void display_item_count(const pair<Name, ItemList>& person) { // the name is referred as person.first as being the first element of the pair // the same with ItemList (referred as person.second) cout << person.first << " is carrying " << person.second.size() << " items" << endl; } int main() { // Declare a map with string keys and vectors of strings as data map<Name, ItemList> items; // Add some people to the map and let them carry some items items["Anya"].push_back("scarf"); items["Dimitri"].push_back("tickets"); items["Anya"].push_back("puppy"); // Iterate over all the items in the container for_each(items.begin(), items.end(), display_item_count); return 0; } 

In this example, a "using directive" was used for brevity though in a real-life program, its use should be much more restricted. "Using declarations", which are more specific than directives, are usually recommended :

 #include <vector> int main() { using std::vector; vector<int> my_vector; return 0; } 

Note that the declaration was put at function scope, which reduces chances of clashing (which was the reason for which namespaces were introduced in the language). Dumping whole namespaces in the global namespace, with using directives, defeats the very purpose of namespaces.


Typedefs are used to make the code more concise and to reduce the use of large type names (nobody would lilke to type something like map<string, vector<string> >::const_iterator each time we need one of those)


Check out more C++ examples. These are some examples of code from the C++ Programming Language. ...


See also

Wikibooks
Wikibooks has more about this subject:
C plus plus

Image File history File links Wikibooks-logo-en. ... Wikibooks logo Wikibooks, previously called Wikimedia Free Textbook Project and Wikimedia-Textbooks, is a sister project to Wikipedia and is part of the Wikimedia Foundation, begun on July 10, 2003. ... In software engineering, the programming paradigm of aspect-oriented programming (AOP), also called aspect-oriented software development (AOSD), attempts to aid programmers in the separation of concerns, or the breaking down of a program into distinct parts that overlap in functionality as little as possible. ... Overview Managed Extensions for C++ is a set of keywords and attributes to bring the C++ syntax and language to the . ... Overview C++/CLI is the newer language specification due to supersede Managed Extensions for C++. Completely reviewed to simplify the older Managed C++ syntax, it provides much more clarity over code readability than Managed C++. It is currently only available on Visual Studio 2005 Beta editions. ... A C++ struct is actually an extension of the C language struct in that the ability to specify methods is added. ... C# (pronounced see-sharp) is an object-oriented programming language developed by Microsoft as part of their . ... Circular dependencies is a situation which occurs in object oriented programming when two objects point towards each other. ... In computing, C strings are character sequences stored as one-dimensional character arrays and terminated with a null character (0). The name refers to the ubiquitous C programming language using this string representation, and is used elsewhere to distinguish this often-used representation from others. ... This is a comparison of the Java programming language to the C++ programming language. ... In software engineering, a design pattern is a general solution to a common problem in software design. ... The title of this article is incorrect due to technical limitations. ... The GNU Compiler Collection (usually shortened to GCC) is a set of programming language compilers produced by the GNU Project. ... In computer science, an inline function is a programming language construct used to suggest to a compiler that a particular function be subjected to in-line expansion; that is, it suggests that the compiler insert the complete body of the function in every context where that function is used. ... Metaprogramming is the writing of programs that write or manipulate other programs (or themselves) as their data or that do part of the work that is otherwise done at runtime during compile time. ... It has been suggested that Name decoration be merged into this article or section. ... This is a list of the origins of computer-related terms (i. ... In computer science, object-oriented programming, OOP for short, is a computer programming paradigm. ... Objective-C, often referred to as ObjC or more seldomly as Objective C or Obj-C, is an object oriented programming language implemented as an extension to C. It is used primarily on Mac OS X and GNUstep, two environments based on the OpenStep standard, and is the primary language... The title given to this article is incorrect due to technical limitations. ... This is a list of operators in the C++ and C programming languages. ... International Business Machines Corporation (IBM, or colloquially, Big Blue) NYSE: IBM (incorporated June 15, 1911, in operation since 1888) is headquartered in Armonk, NY, USA. The company manufactures and sells computer hardware, software, and services. ... VisualAge was the name of a family of computer integrated development environments from IBM, which included support for a few popular (and not so popular) computer Programming_languages. ... Visual C++ 6. ... Barton-Nackman is a programming trick in C++ invented by John Barton and Lee Nackman [1]. Originally, it provided a way to overload function templates when the C++ language did not support the feature. ...

References

  • Abrahams, David, Aleksey Gurtovoy. C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond, Addison-Wesley. ISBN 0-321-22725-5.
  • Alexandrescu, Andrei (2001). Modern C++ Design: Generic Programming and Design Patterns Applied, Addison-Wesley. ISBN 0-201-70431-5.
  • British Standards Institute. The C++ Standard, John Wiley and Sons. ISBN 0-470-84674-7.
  • Challa, Siva, Artur Laksberg. Essential Guide to Managed Extensions for C++, Apress. ISBN 1-893115-28-3.
  • Coplien, James O. (1992, reprinted with corrections 1994). Advanced C++: Programming Styles and Idioms. ISBN 0-201-54855-0.
  • Coplien, James O. Multiparadigm Design for C++, Addison-Wesley. ISBN 0-201-82467-1.
  • Deitel, Paul, Harvey Deitel, D. R. Choffnes, C. L. Kelsey. Simply C++: An Applicaton-Driven Tutorial Approach, Prentice Hall. ISBN 0-13-127768-5.
  • Dewhurst, Stephen C. (2002). C++ Gotchas: Avoiding Common Problems in Coding and Design, Addison-Wesley. ISBN 0-321-12518-5.
  • Dewhurst, Stephen C. (2005). C++ Common Knowledge: Essential Intermediate Programming, Addison-Wesley. ISBN 0-321-32192-8.
  • Drozdek, Adam. Data Structures in C++, Course Technology. ISBN 0-534-37597-9.
  • Henning, Michi, Steve Vinoski. Advanced CORBA Programming with C++, Addison-Wesley. ISBN 0-201-37927-9.
  • Horton, Ivor. Beginning ANSI C++: The Complete Language, Apress. ISBN 1-59059-227-1.
  • Hughes, Cameron, Tracy Hughes. Parallel and Distributed Programming Using C++, Prentice Hall. ISBN 0-13-101376-9.
  • Josuttis, Nicolai M. The C++ Standard Library, Addison-Wesley. ISBN 0-201-37926-0.
  • Koenig, Andrew, Barbara E. Moo (1996). Ruminations on C++, Addison-Wesley. ISBN 0-201-42339-1.
  • Koenig, Andrew, Barbara E. Moo (2000). Accelerated C++ - Practical Programming by Example, Addison-Wesley. ISBN 0-201-70353-X.
  • Lakos, John. Large-Scale C++ Software Design, Addison-Wesley. ISBN 0-201-63362-0.
  • Lippman, Stanley B (1996). Inside the C++ Object Model, Addison-Wesley. ISBN 0-201-83454-5.
  • Lippman, Stanley B. Essential C++, Addison-Wesley. ISBN 0-201-48518-4.
  • Malik, D. S. C++ Programming: From Problem Analysis to Program Design, Course Technology. ISBN 0-619-06213-4.
  • Meyers, Scott. Effective C++: 50 Specific Ways to Improve Your Programs and Designs, Addison-Wesley. ISBN 0-201-92488-9.
  • Meyers, Scott. More Effective C++: 35 New Ways to Improve Your Programs and Designs, Addison-Wesley. ISBN 0-201-63371-X.
  • Meyers, Scott. Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library, Addison-Wesley. ISBN 0201749629.
  • Nyhoff, Larry R. ADTs, Data Structures and Problem Solving with C++, Addison-Wesley. ISBN 0-1313-2794-1.
  • Oualline, Steve. How Not to Program in C++, No Starch Press. ISBN 1-886411-95-6.
  • Oualline, Steve. Practical C++ Programming, O'Reilly. ISBN 0-596-00419-2.
  • Stroustrup, Bjarne (1994). The Design and Evolution of C++, Addison-Wesley. ISBN 0-201-54330-3.
  • Stroustrup, Bjarne (2000). The C++ Programming Language, Special Edition, Addison-Wesley. ISBN 0-201-70073-5.
  • Sutter, Herb, Andrei Alexandrescu. C++ Coding Standards: 101 Rules, Guidelines, and Best Practices, Addison-Wesley. ISBN 0-321-11358-6.
  • Sutter, Herb. Exceptional C++ Style, Addison-Wesley. ISBN 0-201-76042-8.
  • Vandevoorde, David, Nicolai M. Josuttis (2003). C++ Templates: The complete Guide, Addison-Wesley. ISBN 0-201-73484-2.
  • Viega, John, Matt Messier. Secure Programming Cookbook for C and C++, O'Reilly. ISBN 0-596-00394-3.
  • Wilson, Matthew. Imperfect C++: Practical Solutions for Real-Life Programming, Addison-Wesley. ISBN 0-321-22877-4.
  • Whitehead, Paul. Learning C++: Programming C++ with Objects and Templates, O'Reilly. ISBN 0-596-00437-0.

David Abrahams is a computer programmer and author. ... Andrei Alexandrescu is widely regarded as one of the foremost experts on advanced C++ programming. ... British Standards is the new name of the British Standards Institute and is part of BSI Group which also includes a testing organisation. ... Josh Andrew Koenig is an American character actor best known as Boner on ABCs sitcom Growing Pains. ... Scott Meyers is the author of several books on object oriented programming and especially the C++ computer programming language. ... Bjarne Stroustrup Bjarne Stroustrup (born December 30, 1950 in Aarhus, Denmark) is a computer scientist and the College of Engineering Chair Professor of Computer Science at Texas A&M University. ... Herb Sutter is one of the most prominent C++ experts. ... Andrei Alexandrescu is widely regarded as one of the foremost experts on advanced C++ programming. ...

External links

General information

Reference guides

Compilers

Books

  • Programming:C plus plus Wikibook
  • How to Think Like a Computer Scientist C++ version
  • Free book "Thinking in C++" by Bruce Eckel
  • Free book "C++: A Dialog" by Steve Heller
  • Computer-Books.us Collection of online C++ books.
  • C++Course The well-known book of A.B. Downey as an HTMLHelp based eBook

Bruce Eckel is the author of numerous books and articles about computer programming. ...

Tutorials

  • Free C++ Tutorials
  • Free, comprehensive C++ Tutorials from About.com
  • GNAcademy.Org TWiki C++ Web
  • The C++ Annotations
  • Online C++ Tutorial
  • C++ tutorial for C users
  • Cplusplus.com tutorial, with complete code examples along with the results from each example shown side by side. Also includes a section on using C++ compilers from different vendors (Microsoft/GNU/Borland) to compile the examples

Visual C++ 6. ... The GNU Compiler Collection (usually shortened to GCC) is a set of programming language compilers produced by the GNU Project. ... C++Builder is a popular RAD (Rapid application development) environment produced by Borland for writing programs in the C++ programming language. ...

Standards information

  • Standards Committee Page: JTC1/SC22/WG21 - C++
  • Somewhat dated draft of the C++ standard
  • Testing C++ Compilers for ISO Language Conformance

Libraries and snippets

  • Portable foundation classes from GNU
  • Boost.org: C++ high quality libraries
  • Common Text Transformation Library
  • Planet Source Code with several thousand code samples
  • Hierarchical (Mumps) data base facility

Forums

  • C++ learning community, C++ forums based at learning the C++ language
  • C++ Forum at Cprogramming.com
  • C and C++ at Daniweb
  • C++ Home Forum at cpp-home.com
  • C++ interview questions at TechInterviews

Journals

C/C++ Users Journal is printed computer magazine. ...

User groups

  • Association of C and C++ Users ACCU

The Association of C and C++ Users (ACCU) is a worldwide organization of people interested in programming languages. ...

Miscellaneous

  • C2.com Discussion
  • Parsing C++
  • Embedded C++ Homepage
  • From Borland C++ to ISO/ANSI C++ A guide to translate C++ code for developers.
  • Ch - free interpreter of C++ subset
  • C++/CLI by Stanley B. Lippman
  • freenode's ##C++ channel wiki
  • Article "Incompatibilities Between ISO C and ISO C++" by David R. Tribble
  • Newsgroups "comp.lang.c++" "comp.lang.c++.moderated" "comp.std.c++"

Interpreter can mean one of the following: In communication, an interpreter is a person whose role is to facilitate dialogue between two parties that do not use the same language. ... The title of this article is incorrect due to technical limitations. ...

Other link collections

  • Internet sites and files of interest to C++ users, A categorised list of C++ related links.
  • University of Cambridge Department of Engineering list of C++ links
Major programming languages (more) (edit)

Industrial: ABAP | Ada | AWK | Assembly | Coldfusion | C | C++ | C# | COBOL | Common Lisp | Delphi | Eiffel | Fortran | Java | JavaScript | Lisp | Objective-C | Pascal | Perl | PHP | PL/SQL | PowerBuilder | Python | Ruby | SAS | Smalltalk | T-SQL | Tcl | Visual Basic | VB.NET | Visual FoxPro There are a lot of kinds of listing. ... ABAP (Advanced Business Application Programming) is a high level programming language created by the German software company SAP. It is currently positioned as the language for programming SAPs Web Application Server, part of its NetWeaver platform for building business applications. ... Ada is a structured, statically typed imperative computer programming language designed by a team lead by Jean Ichbiah of CII Honeywell Bull during 1977–1983. ... AWK is a general purpose computer language that is designed for processing text based data, either in files or data streams. ... Assembly language commonly called assembly or asm, is a human-readable notation for the machine language that a specific computer architecture uses. ... In computing, ColdFusion is a tag-based, middleware programming language used chiefly for writing web-based applications. ... The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a standardized imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the Unix operating system. ... The title given to this article is incorrect due to technical limitations. ... COBOL is a third-generation programming language. ... Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, standardised by ANSI X3. ... Delphi is a programming language, first introduced in the Borland Delphi Integrated Development Environment (IDE). ... Eiffel is an object-oriented programming language which emphasizes the production of robust software. ... Fortran (also FORTRAN) is a computer programming language originally developed in the 1950s; it is still used for scientific computing and numerical computation half a century later. ... Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. ... JavaScript is an object-based scripting programming language based on the concept of prototypes. ... Lisp is a reflective, multi-paradigm programming language with a long history. ... Objective-C, often referred to as ObjC or more seldomly as Objective C or Obj-C, is an object oriented programming language implemented as an extension to C. It is used primarily on Mac OS X and GNUstep, two environments based on the OpenStep standard, and is the primary language... Pascal is an imperative computer programming language, developed in 1970 by Niklaus Wirth as a language particularly suitable for structured programming. ... Perl, also Practical Extraction and Report Language (a backronym, see below) is an interpreted procedural programming language designed by Larry Wall. ... PHP, short for PHP: Hypertext Preprocessor, is an open-source, reflective programming language used mainly for developing server-side applications and dynamic web content, and more recently, other software. ... PL/SQL (Procedural Language/Structured Query Language) is Oracle Corporations proprietary server-based procedural extension to the SQL database language. ... PowerBuilder (PB) is a programming language created by Powersoft which was later purchased by Sybase. ... Python is an interpreted programming language created by Guido van Rossum in 1990. ... Ruby is a reflective, object-oriented programming language. ... The SAS System, originally Statistical Analysis System, is an integrated system of software products provided by the SAS Institute that enables the programmer to perform: data entry, retrieval, management, and mining report writing and graphics statistical and mathematical analysis business planning, forecasting, and decision support operations research and project management... Smalltalk is an object-oriented, dynamically typed, reflective, programming language designed at Xerox PARC by Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg, and others during the 1970s, influenced by Sketchpad and Simula. ... Transact-SQL (TSQL) is an enhanced version of the SQL relational database language. ... // Tcl (originally from Tool Command Language, but nonetheless conventionally rendered as Tcl rather than TCL; and pronounced like tickle) is a scripting language created by John Ousterhout that is generally thought to be easy to learn, but powerful in competent hands. ... The four colored boxes is the logo of VBA, and the two drums above them symbolize database connectivity Visual Basic (VB) is an event driven programming language and associated development environment created by Microsoft. ... Visual Basic . ... Visual FoxPro is a data-centric object-oriented and procedural programming language produced by Microsoft. ...

Academic: APL/J | Haskell | Logo | ML | Prolog | Scheme APL (for A Programming Language, or sometimes Array Processing Language) is an array programming language based on a notation invented in 1957 by Kenneth E. Iverson while at Harvard University. ... The J programming language, developed in the early 90s by Ken Iverson and Roger Hui, is a synthesis of APL (also by Iverson) and the FP and FL functional programming languages created by John Backus (of FORTRAN, ALGOL, and BNF fame). ... Haskell logo Haskell is a standardized pure functional programming language with non-strict semantics. ... The Logo programming language is an imperative programming language. ... ML is a general-purpose functional programming language developed by Robin Milner and others in the late 1970s at the University of Edinburgh, whose syntax is inspired by ISWIM. Historically, ML stands for metalanguage as it was conceived to develop proof tactics in the LCF theorem prover (the language of... Prolog is a logic programming language. ... The Knights of the Lambda Calculus recursive emblem celebrates Schemes theoretical foundation, the lambda calculus. ...

Historical: ALGOL | BASIC | Clipper | Modula-2/Modula-3 | MUMPS | PL/I | Simula The position of Algol Algol (β Per / Beta Persei) is a bright star in the constellation Perseus. ... BASIC (Beginners All-purpose Symbolic Instruction Code) is a family of high-level programming languages. ... Clipper is a computer programming language that is used to create software programs that originally operated primarily under DOS. Although it is a powerful general-purpose programming language, it was primarily used to create database/business programs. ... Modula-2 is a computer programming language invented by Niklaus Wirth at ETH around 1978, as a successor to Modula, another language by him. ... Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2. ... PL/I (Programming Language One, pronounced pee el one) is an imperative computer programming language designed for scientific, engineering, and business applications. ... Simula introduced the object-oriented programming paradigm and thus can be considered the first object-oriented programming language and a predecessor to Smalltalk, C++, Java, and all modern class-based object-oriented languages. ...


  Results from FactBites:
 
Encyclopedia: C Plus Plus (954 words)
5 C++ is not a superset of C
C++ supports this (via member functions and friend functions), but does not enforce it: the programmer can declare parts or all of the representation of a type to be public, and is also allowed to make public entities that are not part of the representation of the type.
C++ is mostly backward compatible with C, and C libraries (such as the operating system API) are usually directly accessible from C++.
C Plus Plus (2665 words)
The C++ standard library mostly forms a superset of the C standard library.
C++ implements encapsulation by allowing all members of a class to be declared as either public, private, or protected.
C++ compilers still struggle to support the entire C++ standard, especially in the area of templates &mdash; a part of the language that was more-or-less entirely conceived by the standards committee.
  More results at FactBites »


 

COMMENTARY     

xdKirsten
22nd January 2010
Some men get know close to this good topic from different sources. Thus, People could offer to buy essay opting for the essay writers. And they some times buy custom writing.
HB26Mia
13th January 2010
Thank you for your text about this topic! I would buy papers online or buy essays with the help of the term paper writing service.

Share your thoughts, questions and commentary here
Your name
Your comments
Please enter the 5-letter protection code

Want to know more?
Search encyclopedia, statistics and forums:

 


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms.