D : New entrant in Systems Software Arena

In the history of computing C language appeared in 1972 with the humble start for writing portable Operating System kernel (UNIX) C. On the wings of Unix success, C reached far and wide to be used from embedded systems to supercomputers. It went onto succeed in both system software and application software. Soon it was being used for projects huge in size (Lines of code) and complexity started to loom over such projects. Only highly disciplined programmers and process kept large projects going while others started to failed. The symptoms of failure were - missing project timelines, huge delay in bug fixes etc.

With appearance of C++ on computing scene (1983) Object Oriented Programming features became available and raised this project size limits to higher levels. C++ added more design and structure to programs and enabled programmers to succeed in big projects with lesser effort.

Further increases in complexity of projects have brought virtual machine based platforms like (Java and .NET). These languages brought automatic memory management and avoidance of pointers and are successful in application programming. These language realizing the problems and ugliness of C++ syntax have done a lot of clean up in language design and keep improving to suit developer needs.

Till now these language features, advancements and cleanups had been missing from systems programming, because virtual machines are not suitable for system programming. The scene is changing now with appearance of a new systems programming language named 'D' [1]. D has consolidated the good features of C, C++, Java and C# etc to provide a clean syntax.

Some of the most useful features of 'D' which C/C++ programmer would like [3]:
- Single inheritance with support for interfaces. Interfaces add clarity to class design.
- Both automatic and manual memory management available side by side. This permits faster application development.
- Array bounds checking is in-built. This would reduce number of 'long mysterious debugging sessions'.
- Removal of header files and preprocessor directives (macros)
- Removal of 'virtual' keyword, forward declarations etc. These are things which don't add value to software but are there to keep compilers happy.
- Function argument marking - in, out etc. This simplifies API interfaces.
- Unicode support in strings, for ASCII data char arrays are available.

There are two compilers available for D - GCC front end (gdc) and Digital Mars (dmd).

If you are wondering whether it can challenge C and C++ on their home ground i.e. speed, surprise!!! It runs shoulder to shoulder with C and C++ [2].


The language has a growing community which is developing standard libraries and tools. The parallels of – C standard library, STL and Boost libraries are already available as Phobos and Tango library.

This newcomer language has another special significance because that it has not started in software labs of any big company but rather in Open Source community.

References:
[1] Wikipedia entryhttp
[2] Performance results
Key to understanding these figures is that under the hood - gcc, g++ and gdc compilers use same GCC back-end for code generation.
[3] D feature set and comparison

Comments

Popular posts from this blog

हिंदी लेखन:संपूर्ण समाधान भाग 1 Hindi Keyboard

अथ ध्यानम् (Ath Dhyanam)

Typing in Hindi on Windows 7