[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Aikido language



Ah, the hard questions...

On 3 Feb 2004, at 07:08, Joe Marshall wrote:

> David Allison <david.allison@comcast.net> writes:
>
>> I heard that this might be a good place to introduce a new language.
>>
>> There are even some new language features that might be unique (but
>> I'm not certain of that).
>
> What do you consider to be unique about the language?

The language maintains a familiar syntax (for those of us
who are used to programming in C++ or Java that is) but
adds scripting features.  A few of the major features:

* dynamic typing with types such as integer, real, map, string, vector, 
bytevector, classes, etc.
* object oriented, single inheritance, with interfaces
* multithreaded, with monitors
* operator overloading
* streams
* enumerated types
* "clever" parser that means you can leave out semicolons where it it 
obvious (end of line)
* very powerful string manipulation and regular expressions

Some "unique" aspects:

* block extension (the ability to add code/data to existing functions, 
classes, etc)
* function inheritance (the ability to inherit functions from functions)
* ability to generate standalone executables that don't need the 
interpreter
* enumeration extension and inheritance
* 'Raw native' functions.  This lets you call out to C functions with 
no interface code.

I'm not asserting that these are totally unique, but I have not come 
across them
in other language.  I could be wrong here.

> What advantages does it have over, say, Python or Java or Ruby or
> Perl?

I'm not going to criticize other languages, but I will point out some 
of the
differences between Aikido and them.

The main difference between Aikido and the other languages is that
it uses a syntax that is familiar to a lot of people and this makes the
learning curve much shorter.  Some people may disagree with this.

Specific differences between Aikido and other languages:

* Python:
     Aikido is most similar in concept to Python, except that it 
provides a richer
     set of types and operations on them.  For example, operator 
overloading, interfaces,
     automatic type conversions etc.

* Java
    Aikido is similar in syntax to Java (it even has some Java object 
model support) but is
    not the same type of language at all.  Aikido is aimed at adhoc and 
prototype programming
    where Java isn't.  Aikido is dynamically typed and there are few 
compile time checks possible.
    The same programming style can be used in Aikido as in Java.

* Perl
    To be honest, I can't take Perl.  Not a criticism of the language 
itself but I find
    it not to be my taste.  Aikido can perform the same tasks as Perl (I 
include the
    PCRE package for regular expressions), but I think it's a much more 
readable
    language

* Ruby
    I have no experience with Ruby, other than reading a little of the 
manual.  It appears
    to be Perl-like (uses the $@% type designators) and is more object 
oriented.  I'm
    afraid I can't comment on it.


> What problems does the language specifically address?
>

The language was implemented because I found that there was a lack
of a way to write scripts without having to learn a new syntax.  I'm
mostly a C/C++ programmer so I wanted something that looked like
C++ but had higher level constructs that made it easier to write
adhoc programs and scripts.

What I like about the language is the way in which you can write a
script or prototype in it and then easily convert it to a compiled,
strongly typed language for production code.

There I go again, getting all long-winded when describing it.  Hope I
didn't bore anyone.

Dave