The Avail Programming Language
availlang.org
availlang.org
https://www.availlang.org/about-avail/documentation/faq.html...
However, I'm close to completing the macro mechanism that will allow the same flexibility of syntax present in method names (keywords/operator tokens, argument positions, guillemet-enclosed repeated argument groups, etc), but for constructs that run at compile time with parse trees instead of values. The actual macro mechanisms have been working for some time, but were disabled until we were able to represent the ~dozen syntactic constructs of Avail purely as macros. Then any new syntax wouldn't be in conflict with existing syntax. When that's working we'll toss the existing compiler (the one that knows anything about Avail's current syntax, like statements and functions and variable declarations), and use the compiler that knows nothing about Avail – just how to parse methods and macros. Then we'll be able to support arbitrary evaluation orders, declaration syntax, treating some expressions as lazy, alternative scoping models, etc.
As for custom types, we're investigating ideas about carrying purity annotations through user-defined control structures. Kind of hard to describe in this forum, though.
I like what's being tried here. Many people like to be expressive and think while they talk. Is not unreasonable that they might want to program a system using the same social trait. Specially to get things done evading the hard dependency with programmers that have awful communication skills (close to toxic some times).
As for the language, the general idea of English-like programming is far from new. Here are a few arbitrary historical examples, the most impressive of which is Inform, a language for writing interactive fiction:
http://inform7.com/learn/eg/bronze/source.html
http://en.wikipedia.org/wiki/HyperTalk
http://www.csis.ul.ie/cobol/examples/Conditn/IterIf.htm
None of these revolutionized programming. The hard part of programming isn't learning to read a specialized notation. The first hard part of programming is learning how to think in a logical, step-by-step fashion without omitting even the most intuitively obvious details. The second hard part of programming is learning how to maintain a large, complex program as requirements change. Neither of these is made much easier by writing in a rigid, artificial dialect of English.
All the good programmers I know can communicate fine.
I'll definitely be paying closer attention to this as it agrees with a lot of hunches that I have about what's wrong with programming as we currently practice it.
Thanks so much for the link. I'm taking notes :)
EDIT: Anyone who likes Avail, and particularly the points made in the History section, should probably read CTM. [1]
[1] http://www.amazon.com/Concepts-Techniques-Models-Computer-Pr...
An example of a current language with this philosophy is actually Typescript. The gradual typing means that you, as a module designer, can choose to make rigid exactly what you wish (and choose how much rigidity you require). If the consumer of that module also uses Typescript, your rigidity requirements will be respected.
The reason we don't think of programming languages as being per-project, per-module, per-domain, etc, but rather as large global things is because we don't currently have a clue how to do that (and if we did, we don't have a clue how to make the tooling work). If and when we do, these types of conversations will seem quaint.
One can hope, anyway...
Anyone have more experience with it and care to weigh in?
Method "_plus_" is [ a : number, b : number | a + b ]:number;
Print: 5 plus 6;
The entire language is built this way.
https://www.availlang.org/about-avail/documentation/stacks/l...
There is also a strong beginning of a "cookbook" of expressions here:
https://www.availlang.org/about-avail/documentation/expressi...
There's also coverage of a sizable chunk of Avail's type system here:
https://www.availlang.org/about-avail/documentation/type-sys...
(wonder if anyone from the HN crowd has ever heard of them).
Other than that, interesting project!
Sorry about that
Deleted comment