Delevoping a new language...

Hello, everybody.
I'm developing a new programming language, which can be described as hybrid imperative/functional/object-oriented one. It has borrowed a lot from:

-- LISP and Scheme (lists as the most important data structure),
-- Perl, Ruby and some other scripting languages (multi-dimensional arrays, hashes with any key type, regexps still to be implemented),
-- OO-features like in C++/Java (but with persistant class->object bindings),
-- finally, even with some WWW formatting and data declaration languages (like (X)HTML/XML/JS...) (The original idea was (and remains) to try replacement of static "declarative-type" languages like HTML with dynamic functional-type language, allowing construction of text/graphic page content on the run.)

(I'm not sure, is this forum suitable for discussion of such project - but if it is, i'll try to supply some more info.)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

It's suitable

But you've basically made a post with no information in it. I haven't seen a lot of "Nice to meet you all" posts here; I get the general impression that LtU's readers value a high signal to noise ratio, so it'd be better if you provided details about your language, if you're looking for opinions on specific things, etc. You won't get any feedback or discussion about your new language until we know what it is ;p

Ah ...

... so you want to reinvent Scala?

No, seriously, what do you intend to discuss about? You didn't ask any questions.

I suppose you've studied the space

Before developing your own language, it'll help if you study the space and make sure there isn't anything out there that can meet all your needs ... really. If you want to do it because you can, its ok too :)

Usually, its not a language's specific characteristic that leads to elegant solutions for domains, but its a set of abstractions/mechanisms that lead to the elegance. For example - closures, macros, call/cc, even objects. It'll help to work out the kind of elegance you're looking for in your domain before inventing the language & environment lest you be disappointed later on that you can't achieve your goal using your invention.

Hello, again. Well, my

Hello, again. Well, my question was something like "Is it OK to discuss it here", but, if the answer is affirmative...

Here are some AWL demos (what they demonstrate is mostly graphics and Windows interraction):

http://sardar.vingrad.ru/AWL/awl_and_demos.zip

Currently, there is not much documentation, but I plan to make brief description of language in english soon. AWL sources are more or less self-documented, I hope.

Textual description?

I think few people will straight-away take the hassle to download, unzip and take a look at your files, without you giving at least some more detailed explaination about what you're doing. I did, but couldn't unzip the file (using MacOSX).

So maybe you take the time and write a document and make it available for public. Learning a language requires effort and good introductions to get started - reading the language implementation doesn't help very often. Examples are better, but as I said above, I couldn't access them - but making them more easily available will help even more.

Note also, that most people reading LtU do know quite many programming languages and probably have some favourite language, so you probabluy have to spend some more effort to advertise your language.

Looks like the .zip is corrupt

It didn't work on windows either. I found a link to a pdf on the site, but it was written in some sort of cyrillic language. (Russian?) Even early adopters need SOME sort of sales pitch.

OOPS...

That ZIP file seems to be corrupt, sorry.
Try this link instead: http://awl-project.narod.ru/awl-wg.zip

English-language documentation is still a problem. (There's a plenty of documentation available, but almost entirely in Russian, and lots of efforts is needed to translate it to other languages.) Here are a brief references entirely in English:

http://awl-project.narod.ru/_synchart.htm (Syntax chart)
http://awl-project.narod.ru/_functors.htm (List of AWL functors)

Hope this helps a bit...

Definition using Kernel Language

As illustrated by Van Roy and Haridi (and others no doubt), sometimes an interesting way to define a language is via a "kernel" language with a layer of syntactic sugaring over it. The sugaring provides powerful expressions that apply to many purposes, while the kernel language in its simplicity makes the underlying semantics of the language easy to understand. Do you define your language that way? If so, is the kernel language imperative? I am interested in approaches where the kernel language is declarative or even functional. The sugaring above can still provide imperative-looking operations, such as message sending between virtual computers.

more glyphs in high density kernel language

Jack Waugh: ..., sometimes an interesting way to define a language is via a "kernel" language with a layer of syntactic sugaring over it.

That gave me an idea: a kernel language could use more glyphs for concinnity, but would not require support (unicode or whatever) in the language it described, since the extra glyphs need not be used in the non-kernel language.

A while back I played around with using more glyphs in a language, especially in docs. But it wasn't clear where to go from there. I was thinking in terms of writing high speed annotations on whiteboards to convey system designs. But the same idea might apply to docs describing a programming language.

If I ever use new glyphs in a kernel language, I'd avoid using them to denote new odd concepts of either verb or noun varieties. Instead I'd just use new glyphs as a larger alphabet, to permit more lexical naming conventions, by preferring some glyphs for certain purposes.

(In other words, new glyphs can be put in the same class as alphanumeric characters for purposes of creating identifiers. That would just permit shorter names, with more individual glyphs having semantic connotations without exhuasting the space of glyphs.)

glyphs: chinese

I always thought it would be fun to create a Joy-like or APL-like language using Chinese characters.

whoah, that was synchronistic..

Suddenly LtU is overrun by chinese nonsense. [edit: I was referring to a flood spam which was quickly removed.]

Kernel language approach

As illustrated by Van Roy and Haridi (and others no doubt)

FWIW, this approach was pioneered by Landin in his classic paper The Next 700 Programming Languages. He also coined the term "syntactic sugar" in this paper. Most of the Landin classics (including this one) are from the mid 60's. Pretty amazing, huh?

As illustrated by Van Roy ...

As illustrated by Van Roy and Haridi (and others no doubt), sometimes an interesting way to define a language is via a "kernel" language with a layer of syntactic sugaring over it. The sugaring provides powerful expressions that apply to many purposes, while the kernel language in its simplicity makes the underlying semantics of the language easy to understand. Do you define your language that way?

Precisely.
AWL syntactic constructs are mostly "syntactic sugar": for example, simple expressions like a*b + c*d are just shortcuts for add(mul(a, b), mul(c, d)) and so on. Nearly 90% of language are builtin functors and their implementations.

If so, is the kernel language imperative? I am interested in approaches where the kernel language is declarative or even functional.

Partially imperative, partially functional, partially objective. AWL has a lot of functors to support more-less traditional control flow: conditionals: if (...)/unless (...), iterators: while(...)/until(...), for_inc()/for_dec and so on. But there are also functors, which operate on entire data structures (like, for example, l_map()) -- these ones are more "functional" in style.

The sugaring above can still provide imperative-looking operations, such as message sending between virtual computers.

Sounds interesting.