An oversimplified story is that BETA is the response from the creators of SIMULA (arguably the first object-oriented language) to the languages it inspired (e.g., Smalltalk and C++). More here: [1]<p>There are some interesting and unique concepts in BETA, but IIRC the most interesting is the "pattern":<p>>The abstraction mechanisms include class, procedure, function, coroutine, process, exception and many more, all unified into the ultimate abstraction mechanism: the pattern. In addition to the pattern, BETA has subpattern, virtual pattern and pattern variable. This unification gives a uniform treatment of abstraction mechanisms and a number of new ones. Most object-oriented languages have classes, subclasses and virtual procedures, and some have procedure variables. Since a pattern is a generalization of abstraction mechanisms like class, procedure, function, etc., the notions of subpattern, virtual pattern and pattern variable also apply to these abstraction mechanisms. In addition to the above mentioned abstraction mechanisms, the pattern subsumes notions such as generic package and task type as known from Ada.<p>[1] <a href="http://kristennygaard.org/FORSKNINGSDOK_MAPPE/F_BETA_hovedside.html" rel="nofollow">http://kristennygaard.org/FORSKNINGSDOK_MAPPE/F_BETA_hovedsi...</a>
As I learned on a trip to Denmark years ago, BETA remains relevant because of the students who worked on it[1], many of whom have gone on to do important work in languages and virtual machines. Don't be surprised to see some of their nostalgia should they happen to spot this thread!<p>[1] <a href="http://dtrace.org/blogs/bmc/2012/10/08/a-systems-software-double-header-surge-and-goto/" rel="nofollow">http://dtrace.org/blogs/bmc/2012/10/08/a-systems-software-do...</a>
Curious if anyone finds this language pretty to look at, a lot of punctuation :/<p><a href="http://cs.au.dk/~beta/doc/beta-intro/Quick-Reference-Card.html" rel="nofollow">http://cs.au.dk/~beta/doc/beta-intro/Quick-Reference-Card.ht...</a>
<a href="http://cs.au.dk/~beta/BETAbookExamples/BETAbookCode.html" rel="nofollow">http://cs.au.dk/~beta/BETAbookExamples/BETAbookCode.html</a>
Time to take another look...<p>...hey, for loops that take just a single integer and implicitly loop from 1. Interesting.<p>Just checked my (Objective-)C loops, and of the 500 with<p><pre><code> for (i=
</code></pre>
440 start with<p><pre><code> for (i=0;
</code></pre>
That's 88%. So looping on integers that implicitly forms a range starting from 0 seems like a reasonable addition for Objective-Smalltalk. "Looping" is already defined as higher order functions on collections and ranges, so all we need to do is map the number to the appropriate range and done.<p><pre><code> -(void)do:aBlock
{
[[@(0) to:[self sub:@(1)]] do:aBlock];
}
</code></pre>
Try it out:<p><pre><code> > 4 do:[ :i | stdout println:i ]
0
1
2
3
</code></pre>
Nice. Thank you, BETA!
A much better object oriented language than C++. I was not fond of its syntax but liked its uniform treatment of a number of different abstract mechanisms via “patterns”.
Heh, back in the 90s I designed a DSL for programming mobile robots called ALFA. It was an acronym: A Language For Action. I had planned to design a follow up language called BETA: Better Even Than ALFA. But it never happened, and now I've been scooped. Oh well.
I own the language reference, which I got as gift for attending ECOOP'99 in Lisbon.<p>The language is quite powerful, sadly its concepts never managed to get into mainstream.