Monday, July 26, 2010

C++ Definition & Brief History

What is C++?

C++ is an "object oriented" programming language created by Bjarne Stroustrup and released in 1985. It implements "data abstraction" using a concept called "classes", along with other features to allow object-oriented programming. Parts of the C++ program are easily reusable and extensible; existing code is easily modifiable without actually having to change the code. C++ adds a concept called "operator overloading" not seen in the earlier OOP languages and it makes the creation of libraries much cleaner.

C++ maintains aspects of the C programming language, yet has features which simplify memory management. Additionally, some of the features of C++ allow low-level access to memory but also contain high level features.

C++ could be considered a superset of C. C programs will run in C++ compilers. C uses structured programming concepts and techniques while C++ uses object oriented programming and classes which focus on data





Your Ad Here



A Brief History

C++ was written by Bjarne Stroustrup at Bell Labs during 1983-1985. C++ is an extension of C. Prior to 1983, Bjarne Stroustrup added features to C and formed what he called "C with Classes". He had combined the Simula's use of classes and object-oriented features with the power and efficiency of C. The term C++ was first used in 1983.


C++ was developed significantly after its first release. In particular, "ARM C++" added exceptions and templates, and ISO C++ added RTTI, namespaces, and a standard library.

C++ was designed for the UNIX system environment. With C++ programmers could improve the quality of code they produced and reusable code was easier to write.

Bjarne Stroustrup had studied in the doctoral program at the Computing Laboratory at Cambridge University prior to joining Bell Labs. Now, Bell Labs no longer has that name since part of Bell Labs became AT&T Labs. The other half became Lucent Bell labs.

Prior to C++, C was a programming language developed at Bell Labs circa 1969-1973. The UNIX operating system was also being developed at Bell Labs at the same time. C was originally developed for and implemented on the UNIX operating system, on a PDP-11 computer by Dennis Ritchie. He extended the B language by adding types in 1971. He called this NB for New B. Ritchie credited some of his inspiration from theAlgol68 language. Ritchie restructured the language and rewrote the compiler and gave his new language the name "C" in 1972. 90% of UNIX was then written in C. The committee that wrote the 1989 ANSI Standard for C had started work on the C Standard project in 1983 after having been established by ANSI in that year. There were quite a number of versions of C at that time and a new Standard was necessary.

C is portable, not tied to any particular hardware or operating system. C combines the elements of high-level languages with the functionality of assembly language and has occasionally been referred to as a middle-level computer language. C makes it easy to adapt software for one type of computer to another.

C was a direct descendant of the language B. The language B was developed by Ken Thompson in 1970 for the new UNIX OS. B was a descendant of the language BCPL designed by Martin Richards, a Cambridge University student visiting MIT.

C++ Compilers

Disclaimer

The information provided on this page comes without any warranty whatsoever. Use it at your own risk. Just because a program, book, document or service is listed here or has a good review does not mean that I endorse or approve of the program or of any of its contents. All the other standard disclaimers also apply.

Microsoft Visual C++ 2010 Express New
The free Microsoft Visual C++ 2010 Express, along with the rest of the Microsoft Visual Studio 2010 Express suite of programs, is available free of charge directly from Microsoft. The software includes an integrated development environment (IDE) that allows you to create programs for the .NET framework (including .NET Framework 4) as well as native Windows (Win32) programs. The new version of the C++ compiler included in this package has some language features from the upcoming C++0x standard such as lambda expressions (to support function objects), rvalue references, auto (now with a different meaning from its C version and earlier C++ standards), static_assert (testing assertions at compile time), nullptr and decltype. Note that this free version lacks some of the features provided in the full (commercial) Microsoft Studio 2010, such as MFC, ATL, the Windows resource editor, a macro assembler, etc. (I'm not sure if the other major new feature of the 2010 release, the inclusion of parallel programming libraries and tools, is in the Express edition or not.)
AMD x86 Open64 Compiler Suite
This is a version of the Open64 compiler suite that has been tuned for AMD processors (and has additional bug fixes). The C/C++ compiler conforms to the ANSI C99 and ISO C++ 98 standards, supports inter-language calling (since it has a Fortran compiler available as well), x86 32 bit and 64 bit code generation, vector and scalar SSE/SSE2/SSE3 code generation, OpenMP 2.5 for shared memory models, MPICH2 for distributed and shared memory models, IEEE 754 floating point support, an optimizer that supports a huge variety of optimizations (global, loop-nest, inter-procedural analysis, feedback-directed, etc), etc. It comes with an optimized AMD Core Math Library and documentation. This compiler suite requires Linux.
Free Microsoft Visual C++ 2008 Express
Microsoft Visual C++ 2008 Express is currently available for download, free of charge, from Microsoft's site. It allows you to create programs for the .NET framework as well as native Win32 programs. It comes with an optimizing C++ compiler, linker, debugger, static libraries (including the Standard C++ Library and STL), and Microsoft SQL Server 2005 Express Edition. You can also get either the MSDN Express Library or the full MSDN Libary if you wish. The MSDN Express Library provides documentation for both the IDE as well as the .NET framework classes. The full MSDN library, designed primarily for the full version of Visual Studio also includes information about the Win32 API. Incidentally, if you wish to create native Win32 programs, you may need to download the Microsoft Windows Platform SDK separately and install it. It requires Windows XP, 2003, Vista (or their x64 versions). Note that unlike the commercial Visual Studio Professional 2008, it does not have MFC, ATL, a Win32 resource editor, a macro assembler, source code control integration, etc.
Apple Xcode for Mac OS X
Xcode is Apple's integrated development environment which includes a syntax-highlighting editor, a build control system, a debugger, the GNU C compiler (gcc), an interface builder, AppleScript Studio, Java development support, WebObjects development tools, etc. You need to be an Apple Developer Connection (ADC) member to get the tools, but it appears that online membership is free.
Open Source Watcom / OpenWatcom C/C++ Compiler
The Watcom C/C++ compiler (now OpenWatcom C/C++ compiler) is now open source and free. This compiler, which generates code for Win32, Windows 3.1 (Win16), OS/2, Netware NLM, MSDOS (16 bit and 32 bit protected mode), etc, was a highly coveted compiler some years back (until Sybase terminated it). The compiler also includes the rather well-known STLport.
Digital Mars C/C++ Compiler (Symantec C++ Replacement)
Digital Mars C/C++ is a drop-in replacement for the Symantec C++ compiler, with support for compiling programs for Win32, Windows 3.1, MSDOS, and 32-bit extended MSDOS. If the target machine does not have a floating point processor (pre-Pentium machines), you can link the floating point emulation into your program. The compiler supports the C++ definition found in The Annotated C++ Reference Manual (ARM) and the enhanced language features of AT&T version 3.0, including templates, nested classes, nested types, exception handling, and runtime type identification.
UPS Debugger (C Interpreter)
This is actually a graphical source level debugger for X Window, but it contains a built in C interpreter which can handle single or multiple source files. You can use it to build a byte-code executable and execute the interpreter on that executable. If you need an interpreter to debug or prototype programs, or to just learn the language, check this out. It supports the following platforms: Solaris, SunOS, Linux, FreeBSD, BSD/OS, and possibly other Unices.
The BDS C Compiler
Remember the old (famous) BDS C compiler for 8080/Z80 CP/M systems? It is now in the public domain, complete with assembly language source code. The package is the retail version of the compiler, with a linker and user manual. Before you scoff at this, remember that it can be used to generate 8080/8085/Z80 code for embedded systems with a little bit of work (ie, write your own routines to replace any runtime library code that access the operating system functions).
Bloodshed Dev-C++ C++ Compiler
This is a Win32 integrated development environment that includes the egcs C++ compiler and GNU debugger from the Mingw32 environment together with an editor and other facilities to make program development using the Mingw32 gcc compiler easier on a Windows platform. It also includes an installer for your applications.
Intel C++ Compiler for Linux Non-Commercial Version
The Intel C++ compiler has a non-commercial version for Linux which you may use to develop your programs for non-commercial purposes (read their licence for more information). The optimizing ANSI C/C++ compiler supports all Intel 32 bit processors and the 64 bit Itanium processor.
PCC - Portable C Compiler
PCC is based on the original Portable C Compiler by S C Johnson. The goal of the project is to write a small, fast C compiler that can compile C99 source code. The compiler is a two-pass compiler that runs on OpenBSD and NetBSD.
DeSmet C
DeSmet C will be familiar to those who programmed in C in the 1980s. It is an MSDOS C compiler. It has been released under the GNU GPL, and comes with manuals, an editor, and a third party optimizer.
Sun Studio Compilers and Tools
Sun Studio Compilers and Tools for Linux and Solaris OS on Sparc and x86/x64 platforms includes command line tools as well as a NetBeans-based IDE for developing, compiling and debugging C, C++ and Fortran programs. It also includes performance analysis tools. You have to join the Sun Developer Network (SDN) to get access to the free compilers. As far as I can tell, joining the SDN is free.
Open64 Compiler Tools
Open64 comprises optimizing compilers for C, C++, and Fortran 90/95 for Intel Itanium systems running Linux. The compiler is the successor to the SGI Pro64 compiler suite, now released under the GNU GPL.
Apple's Macintosh Programmer's Workshop (C and C++ compilers)
Yep, you're right. This is Apple's own Macintosh Programmer's Workshop. The C/C++ compilers, debuggers, tools, etc, in this workshop are all downloadable from their web site, free! They're the same those you get from their Developer CD. Full documentation about the compilers as well as documentation about programming for the Macintosh in general can be found online. You get the SC/SCpp (68k), which are ANSI compliant C and C++ compilers that generates 680x0 code; as well as MrC/MrCpp which generates C/C++ code for the PowerPC. You also get two assemblers (one for the 68k and one for the PowerPC), the shell, linkers, a Make tool, resource manipulation and analysis tools, file comparison tools, editor, three debuggers, etc. If you want to be on the cutting edge, you can also download the absolutely latest compilers which are still under testing (but having the latest bug fixes and C++ support). CodeWarrior plugin compilers appear to be available from the site as well. (Note - this tool set is for Mac OS 7.X/8.X/9.X program development.)
Tiny C Compiler - Smallest Linux C Compiler
This small Linux and Windows C compiler generates optimized x86 native binaries. It purportedly compiles, assembles and links several times faster than GCC. The compiler is currently moving towards ISO C99 compliance. It also includes an optional bounds checker. It also handles C script files (just add the shebang line "#!/usr/local/bin/tcc -run" to the first line of your C source code file on Linux to have it executed directly. TCC is distributed under the GNU General Public License.
Portable Object Compiler
This is a set of Objective C class libraries and a compiler that translates your Objective C code to plain C code. It works on Windows, Linux, OS/2, Macintosh, etc.
Mingw32 C & C++ Compilers
This system comes with the GNU C/C++ compiler, which you can use to generate Win32 executables. It has its own which is in the public domain. Applications generated using this system are supposed to be faster than those generated by the Cygwin32 system (see elsewhere on this page), and they are free from the encumberances of the GNU license. Like other systems based on the GNU tools, Mingw32 comes with complete with various programming tools, such as a program maintainence program (ie, make), text processing tools (sed, grep), lexical analyser generator (flex), parser generator (bison), etc. It also comes with a resource compiler, allowing you to compile your Windows resources.
GNU C/C++ Compiler
This is the GNU C compiler page, from which you can get links to binaries and source code for the GNU C Compiler. You can also use our links on this page for the most commonly requested binary versions (MSDOS and Win32).
Pelles C Compiler
This is another Windows-hosted C compiler that is based on LCC. It contains a C compiler, linker, resource compiler, message compiler, a make utility, etc. It compiles code for both Windows and Pocket PC.
Compaq C Compiler
Linux/Alpha users can now download and use Compaq's optimising C compiler freely by simply filling a form and agreeing to their license agreement. The compiler may be used to generate any sort of program, commercial or otherwise. The compiler includes a math library and a debugger (ladebug) ported from True64 Unix. It comes with the usual man pages as well as a Language Reference Manual and a Programmer's Guide.
Ch Embeddable C/C++ Interpreter (Standard Edition)
Ch is a C/C++ interpreter that supports the ISO 1990 C Standard (C90), major features in C99 (complex numbers, variable length arrays or VLAs, type generic functions, long long data type, etc), classes in C++, and extensions to the C language like nested functions, string type, etc. It can be embedded in other applications and hardware and used as a scripting language. Your C/C++ code is interpreted directly with no compilation to intermediate code. Since it supports Linux, Windows, MacOS X, Solaris and HP-UX, it means that your code should be portable to any of those platforms once you write it for this compiler. The standard edition is free for personal, academic and commercial use. You need to register to download the package.
DJGPP C and C++ Compilers
This is a development system based on the well-known GNU C/C++ compiler. It generates 32 bit MSDOS executables that is Windows 95 long-filename-aware. It is a very complete system with IDEs, graphics libraries, lexical analyser generators (flex), parser generators (bison), text processing utilities (like grep, sed), a program maintainence utility (ie, make), a dos extender, and so on. The compiler, utilities and libraries come with source code.
Cilk ANSI C Based Compiler
Cilk is an ANSI C-based language that can be used for multi-threaded parallel programming. It "is especially effective for exploiting dynamic, highly asynchronous parallelism in data-parallel or message-passing style". Their website mentions that Cilk has already been used to develop three world-class chess programs, StarTech, Socrates and Cilkchess.
Sphinx C-- Compiler
This MSDOS compiler is a sort of hybrid C compiler and assembler that allows you to "create programs with the power and readability of C while retaining the efficiency of assembly language." It can produce MSDOS executables or .OBJ files which you can use in conjunction with other linkers to generate an executable. The above link leads to the source code and documentation for the compiler. If you want a precompiled binary, you can get it from the Unofficial Sphinx C-- Compiler site.
LSI C-86 C Compiler
The website for this compiler is written in Japanese which unfortunately is not displayed correctly in my browser (I don't have the necessary fonts), so I'm not able to comment for certain about this compiler. It looks like a cross-compiler that allows you to generate ROMable code. An older version (3.30c) of the compiler appears to be free. The free version runs on MSDOS only.
ACC C Compiler
This is an MSDOS compiler that handles a subset of the C language with some extensions (eg the #asm directive for inline assembler). Floating point is not supported. It generates protected mode 32 bit assembler code, which you will have to assemble and link using the supplied A86 assembler and linker. A copy of the DOS extender will also be embedded into your application.
CINT C and C++ Interpreter
This is a C/C++ interpreter that comes with source code. It can be compiled and used on a large variety of Unices, including HP-UX, Solaris, SunOS, AIX, Alpha/OSF, FreeBSD and Linux, as well as Windows NT. You can even issue system calls from the interpreter (such as Posix calls on Unix or Windows API calls from Windows). It accepts most of K&R and ANSI C and is close to the standard C++ (at the time of this writing). As with all interpreters, it may be useful in debugging programs or learning the language.
SDCC C Cross-compiler
This is a C cross-compiler that targets the Intel 8051, DS390, Z80, HC08 and PIC microprocessors. It can also be retargetted for other 8 bit MCUs or PICs. It comes with a retargetable assembler and linker, a source level debugger and a simulator, and it is capable of a variety of optimisations. The libraries are Standard C99 compatible. Source code for the compiler is available under GPL. Host platforms supported include Linux, Windows, Mac OS X, Alpha, Sparc, etc.
LADSoft CC386 C Compiler
This is an ANSI C compiler for MSDOS/DPMI and Win32 that comes with a runtime library, linker, rudimentary debugger, DOS extender (MSDOS version), an IDE (Win32 version) and a make utility. Source code is also available. It compiles most of the C99 constructs when ran in C99 compatibility mode. Note: The author is no longer working on this compiler. The files for the last available version from him is available at the mirror site linked above.
Cygwin Project (C & C++ Compilers)
This "project" includes a commercial quality compiler (GNU C/C++) that generates Win32 GUI and console applications. I have not used this port myself, but based on what I read, it appears that they have their own and so on. Source code for the compiler, libraries and tools are provided. Note that the default option in this package forces you to distribute your source code if you compile and link with their libraries. There is also a special option that you can invoke which will cause it to link with alternative libraries, allowing you to distribute your applications without sources. It appears that the free version has not been updated for some time now.
LCC-Win32 C Compiler
This is a C compiler that generates Win32 GUI and console applications. It comes with its own linker, IDE, debugger, resource editor and resource compiler. LCC-Win32 is based on the LCC compiler (see elsewhere on this page) and is free only for non-commercial use.
LCC - A Retargetable Compiler for ANSI C
LCC is a C compiler (source code only) that generates code for the Alpha, Sparc, MIPS R3000 and Intel x86. There is also a book A Retargetable C Compiler written by the authors of the compiler that explains the code of the C compiler. This compiler is the basis of at least 2 other Win32 C compilers.
Pacific C Compiler
This is a MSDOS C compiler that comes with a development environment. You can distribute programs compiled with the compiler freely. Latest news: the site now requires that you register before downloading. To download the program, go to the page linked to above, seach for Pacific C under the "Free Software" section, click the link, and create a new account.
Cyclone C
Cyclone C is not strictly an ANSI C compiler but a compiler of a "safe dialect" of C. It enforces type safety, has a variety of checks to protect against buffer overflows, array-bound violations, etc. It currently works on Linux and Windows (the latter via Cygwin), and requires you to have the GNU compiler tools on your system.
TenDRA C/C++ Compiler (mirror site)
TenDRA is a free C/C++ compiler and source code checker (like lint) that runs on a variety of Unix systems like AIX, HP-UX, Linux, Irix, OSF1, SCO, Solaris, SunOS, Ultrix, and Unixware. You can use it to replace your system C compiler, or use it as a lint-like utility to check your source code for correctness and potential bugs. The compiler comes bundled with sid, an LL(1) parser generator. (This is a link to a mirror. The original site seems to be gone at the time I write this.)
Leonardo IDE
Leonardo IDE is a Macintosh-based IDE, compiler and debugger for C programs. It has a syntax highlighting editor, an ANSI C compiler, a compiler for the ALPHA visualization language, a graph editor, a reversible virtual CPU, etc. Note that the programs are not compiled to native code but to code to be executed for the virtual CPU. The virtual machine and debugger allows you to execute code forwards and backwards and supports multitasking. The IDE comes with animated algorithms, plus example source code for games like Tetris, Checkers, etc. The IDE is useful for checking and debugging your source code, search for memory leaks, etc. Note: this project has been discontinued.
For Complete Syntax, Library and Code Refence click here...

1 comment: