October 05, 2003
A Big Hello to all D Fans,

I work at Kyocera Wireless India , Bangalore..and from the time I started to work here..I felt a need for language that is better that C and not as complicated as C++.
So I started to think about a languge called C+ (between C and C++). I have designed half of it and  when I came across D I was pleasantly surprised to see that there is a great deal of similarity between D and C+. Since C+ is not going to come through here..(Its strategically  unimportant to use a new language) , thought I will give the D  community some of the ideas I had for C+. Some of the ideas are based on the need in the Mobile Software World. But still a good deal of new ideas can be reused.  D is really good but has not got the recognition due to it. Why it so,  we need to analyse and see what can be done about it. I think I will give the ideas in installments..so as not to overwhelm the news server with replies...:)

Design of the C+ Programming Language =======================================

The design of C+ is based on the philosophy that a language must enable the programmer to program at the
highest level of abstraction suitable for the system. It uses C as a base language and adds constructs that
enable design at an abstract level.
C is a low-level programming language and is not suitable for all types of systems. Indeed the lack of important
features in C is considered it strength. But in reality programmers always tend to unconsciously program at the
level of the problem domain. We see in the use of typedefs , naming convention, abstract data types ,  static
and function pointers for data hiding and inheritance , libraries for concurrency , code reuse and so on. It is best
that a language provides these features rather that allowing the programmers to build them in a hundred unrelated ways.
This least common denominator approach to language design may seem to take away the freedom of the programmer, but it
is not. Indeed it gives a higher freedom of thinking at an abstract level rather than worrying about the details of
storage and representation.

C+ is a dialect of C with extensions for building large fault-tolerant systems.The low level features of C are retained
in C+.This is necessary for the most demanding system programming tasks.
C+ is new programming language with language support for persistence and concurrency. It has a mixed heritage :

1)  Abstract data type concept from Alef.
2)  Operator overloading from C++.
3)  Reference types from  Java.
4)  Concurrency concepts from Alef
5)  Exception handling from C++ and Alef and CLU.
6)  boolean data types from Java.
7)  generic types from C++.
8)  Construction and Destruction from C++.
9)  Expression syntax from C.
10) Persistence from Java.

C+ = C + abstraction + concurrency + exceptions + persistence + safety;

The first thing to do is to introduce a boolean type :
Java's ease of reading is mainly due to it..We should eliminate the  use of typedefs in whichever case its uncecessary.
 I think a new boolean data type must be introduced..to D
boolean , true and false; these are taken from Java. boolean data types from Java.

Regards
Ravishankar