I've been playing around with Ruby recently and found it had some rather neat aspects. But then again, there were things I didn't like about the language. The most obvious being a total disregard for convention. The language uses strange keywords, allows you to do the most elementary things in 5 different ways, and has some rather loose syntactic rules. More power to the programmer? Not really, just more confusion!
Anyways, the point is, I've tried numerous scripting languages, even made a simple one of my own (a LISP dialect and interpreter implementation)... But I can't say I've ever felt "satisfied" with one thus far. It seems to me that Python has an unclean syntax and encourages bad programming practices (everything public by default?). I'm also getting sick of the mislead idealism some of those languages put forward "If you don't program in the way we think you should, you're a bad programmer". Ruby has a ton of "learn by example" tutorials, but I haven't been able to find a proper reference manual (like that of PHP). It seems like every of these language says.
And lastly, one thing I found very lame is that, it seems people who make scripting languages present them as "opposed to" compiled languages. Python and Ruby are both interpreted, and they both basically tell you that you have to choose between flexibility OR speed, but you can't have both. Hence, programming a simple portable GUI app in python is doable, but programming a raytracer or a 3D FPS game... Not really, unless you code all of the CPU intensive code in an external C/C++/Java library, which, in my opinion, defeats the entire purpose of a scripting language!
Ah, did I say you could program a simple portable GUI app in Python? Well, no, that's not really true. It's not simple at all. Last time I tried, I had to deal with this Tcl/Tk external dependency that really made everything a pain... Because it doesn't ship with windows, and the python library apparently doesn't ship with python either.
So that's my opinion on current scripting languages... They're not very present. Python is currently the "dominant" one... And Python is cool for several things, but it's not really all that a scripting language can be. It didn't revolution the world of simple GUI apps... It's not very fast, and in the end, it's rather impractical to program with when your project becomes complex. Ruby is neat, but the only reason it's remotely popular is "Ruby on Rails"... RoR is a great product, but nobody would really want to program in Ruby. It's complicated, doesn't have such a good language reference, and well, if you show your code to anyone, they won't really know what's going on because of the obscure syntax, and probably won't be able to help you solve your problems.
My scripting language idea...
I'd like to combine the best qualities of existing languages. Why not have a scripting language with GC, that isn't strongly typed, and that has built-in support for unicode or utf-8 strings, vectors and hash maps... But that is also fast. I would like such a language to have a clean syntax, while offering the speed of bytecode compilation, and the power of a compiled language.
For example, because it would be compiled, such a language could have the ability to properly deal with circular references. Python simply tells you that you shouldn't have them, because it means you're a bad programmer, and then forces you to bastardize your code to deal with the issue. This is only an excuse for the fact that their interpreted linearly interpretes code. But a proper multipass compiler should be able to deal with this issue flawlessly, without forcing lame compromises on you!
There's also the issue of multithreading. AFAIK, most scripting languages don't support it, or support it in a limited way. Most programmers don't really use multithreading in scripting languages because the languages are limited to applications that don't require speed anyways. With a proper, fast scripting language, some quality MT support (such as that found in Java), could be implemented, and could actually be useful.
And finally... I also brought up the topic of GUI apps, and how cumbersome they can be in python. Well, it's not just a matter of being impractical... There's also the fact that using Tcl/Tk is going to limit you in how you make your GUI app look, visually speaking. My idea to solve this problem involves essentially DROPPING support for existing GUI frameworks. Instead, the interpreter could be made to support OpenGL, which is typically supported on every platform that has a graphical interface nowadays... And a custom, default GUI framework would be implemented in the scripting language on top of OpenGL (simple libs to get the mouse and keyboard input within a GUI environment would still be provided to make this possible). This sort of system could make it possible to have an interpreter that supports the same GUI facilities on every platform out of the box... In addition to supporting 3D graphics out of the box.
Now you might think I'm just some idealist myself. You might think that making a bytecode compiled scripting language that is as powerful as python is impossible, but I believe not. I have actually thought of ways to implement this in a fair level of detail. I know it's doable and I know it's not that difficult to do either. Of course, building such a language to have all the libraries anyone could possibly want is the tricky part... But if such a language had just file IO, networking and graphics, it would already have a huge potential. It could also be possible to make a lightweight interpreter that can be integrated in specialized applications (such as games).
Just to give you an idea of how I view the syntax of this language...
import foo
import bas
# Some class...
class Bar extends Foo
attribute x
attribute y
method Bar()
end
method Bif()
# Set some values in a hash map
y = { "foo":5, "bar":7.5 }
# Create a new object of type Bas
bas = new Bas()
# If x is not 0, do something
if x != 0
bas.doSomething()
end
end
end
I'm thinking of giving the language a simple name, such as "Go". To promote the language, once ready for release, I had an idea that it would be neat to have a short trailer movie (possibly all CG), with a touch of humor.
Anyways... Just wanted to share an idea. Feedback and language feature suggestions are welcome, I'm also willing to discuss ideas regarding the syntax.
And if anyone is interested in helping me in this project, or participating in the design, don't hesitate to propose your help and to send me a private message.












