> In what ways is your language distinctive?
Well, I think the most distinctive feature is the integration of powerful
text processing ability and powerful numerical computation with a
simple syntax for them. I also try to support a simple and transparent
interface to C++. Though there is still a long way to go, I think the
status of Tao is promising, in fact I already benefit from it in my
research where both text processing and numerically computation are
important, for which I "suffered" a lot from using Perl in the beginning,
which drived me to design my own one ^_^
How does developing your own
> language (as opposed to making stronger one of the languages whose
> newsgroups you've posted to) make the sum of human experience richer?
For the existing languages, I think they have already stabilized a kind of
philosophy, and something have already got complicated. So I think it
would be more difficult for me to dive into them. Anyway, I believe it
worth trying to design a new language, if I found it more usesful in some
work than the other languages, somebody will also find this. A new option
is not bad thing.
> And do any of these observations/questions below help you explain these
> larger matters? :^)
Yes, thank you for your time to make these observations/question and
suggestions.
> Odd things I've noticed in a quick trawl through your docs:
> * What no bit-ops? And why give ^ a non C/C++ meaning?
My using of ^ as power is influenced by Matlab. In the beginning I didn't
know it is also used in C/C++.
> * What sort of characters are you using?
For strings, I use stl::string, so I didn't care about this.
But for byte type numeric array, I used unsigned char.
> * How does passing by reference square with constant arguments?
In Tao constants are also represented by objects, their passing by reference
are the same as other types of objects.
> * Your I/O interface has a /long/ way to go!
Right. I haven't concentrated on this part. The status of IO support
deosn't conform to the version number which increased too rapidly
> * The complex number and matrix stuff seems reasonable.
Yes, this is one of the important features I intended to have in Tao.
In fact, I spent much time on implementing them, and they contributed
to half of the size of the compiled codes. I believe this part is one
of the best implemented part. Some of the operations for numeric
arrays are even more convenient than Matlab. Now a very simple
and transparent interface is supported to pass numeric types to and
from C++ modules, so the next step to support powerful numeric
computation in Tao is to find somebody or by myself to write
bindings to some commonly used numerical packages.
> * It is probably a good idea to add something like a C/C++ switch; it
> might only be syntactic sugar around if, but good syntax makes a
> difference.
Yes, I will do it.
> * Given that you are using mutable objects, do you have a way for
> someone to force a duplicate of an arbitrary object? That would make
> doing things like security separation much easier.
If you mean data object, yes, but it's not available for users yet. Now it is
mainly used for passing Tao data types to C++ modules, where each Tao
object can be copied and converted into its C++ equivalent object
(though internally they are all C++ objects, but the object used in C++
modules is different from the one used in Tao interpreter, e.g. TaoHash is
used in the interpreter, while TcHash is used in C++ module, the conversion
or copying keep its structure including cyclic ones).
But for class or routine objects, no, I will support this when I started to
support multi-threading.
I should point out (since I am afraid I misunderstood something
of you in this point), the assignment in Tao is simpily a new binding
of object to pointer even if the objects in two side of assignment are
or the same type (except for assign new values to numeric array elements).
> * The ~~ operator is neat.
> * Do you have some kind of subtype operator?
Not yet. Yes, I should support it, it can be useful for checking
type of numeric arrays and objects of Tao class. Though now
Tao can well check the types of two objects are the same or
different, e.g., if aa is an object of class AA and bb is an object
of class BB, aa=?AA, bb=?BB, will give true, and aa=?bb will give
false.
> * Are classes, namespaces and modules all objects? Can you introspect
> on them to discover what exists and what you can do with them?
Yes, they are all objects. But no mechanism is provided to introspect
them, I had thought about supporting this, but it simply slipped my mind.
You remind me ^_^
Best regards,
Limin