From: fu.limin.tao@... (Fu Limin) Date: 2005-04-28T00:54:27+09:00 Subject: Re ANN: A new scripting language Tao 0.9.0 beta released! > 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