Jump to content
  • Advertisement
Sign in to follow this  
CuppoJava

Introducing Stanza: A New Optionally-Typed General Purpose Programming Language from U.C. Berkeley.

This topic is 912 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello Everyone!

 
It's been 12 years since I first joined GameDev.net, and the desire to program computer games is what first got me into coding. But as my projects got more ambitious, I realized that as a single person the sheer amount of work required to complete a game was just daunting. I was using Java (and later Ruby) at the time, and I noticed that different programming languages were *vastly* different in how productive they were.
 
So I looked around for different languages, but found none that offered all the features needed to make me more productive without compromising me in some other way. So I decided to write my own. I got to work, and applied to graduate school along the way.
 
So now, 12 years later, I'm happy to announce the first public release of the Stanza programming language! Stanza is a new optionally-typed general purpose programming language from the University of California, Berkeley. It was designed to help programmers tackle the complexity of architecting large programs (like video games!) and significantly increase the productivity of application programmers across the entire software development life cycle. You can check out the website here: http://www.lbstanza.org.
 
Here are three really cool things about Stanza:
 
   1) It is *both* statically and dynamically typed. If you give no type annotations, Stanza behaves like a scripting language. The more type annotations you give, the more errors Stanza will catch upfront.
 
   2) It has a *class-less* object system. We believe in both object oriented programming and functional programming, and designed Stanza's object system to seamlessly incorporate both styles.
 
   3) It has a really powerful coroutine system called targetable coroutines. It's a *general* control flow construct that can be used for fine control over concurrency, and is especially useful for video games.
 
We've already been using Stanza internally for about two years now. Using Stanza, we've designed a hardware language called FIRRTL, designed a teaching language called Feeny for teaching a graduate course on virtual machines, wrote a tool for automatically generating circuit boards for robotics, and (as upstanding computer scientists) wrote the entire Stanza compiler in Stanza itself. 
 
Now, Stanza is stable and mature enough for us to feel confident to share it with everyone. We hope you'll check it out!
 
  - Patrick
Edited by CuppoJava

Share this post


Link to post
Share on other sites
Advertisement

Great! I hope this works out well. For all its claims i worry it might be slow. But I may be wrong

 

Went through your website and its rich in information about the language, I see exercises, but there are no application demos. Sure you must have tested it by writing some applications, Or did I miss it?

 

It would be good if you could provide some easy to find demos on a few varieties of applications to bolster your point on its strengths 

Share this post


Link to post
Share on other sites

Thanks for the feedback. Indeed we've used it on a number of projects, but the project page is still under development. It will be coming soon!

Share this post


Link to post
Share on other sites

Congratulations on the achievement and thanks for sharing. I must say, however that "A first taste of Stanza" provided on the Home Page could be made more palatable.

 

Would you consider a simpler, real-world example? Your story about the origins of the language would be well served with an example such as a calculator or guessing game.

 

This would help to show what Stanza makes easier.

Edited by m3mb3rsh1p

Share this post


Link to post
Share on other sites
Reminds me of early iterations on my own language :-)

I did have one question that I couldn't answer by quickly glancing over your documentation - does the language support lexical closures?

Share this post


Link to post
Share on other sites

Lexical closures? Oooh yeah. It even supports closed over variables and *coroutines*. In fact, full functional programming is supported and encouraged. Thanks for checking it out!

  -Patrick

Share this post


Link to post
Share on other sites

And in reply to the "Taste of Stanza". You weren't the first one to comment that the example is a tad academic. We'll try and think of a better one to be on the front page.

  -Patrick

Share this post


Link to post
Share on other sites
Do you have an overview of your compilation model, particularly how you go from Stanza to machine code?

Share this post


Link to post
Share on other sites

It's not documented anywhere. But the stz-kform.stanza, stz-bb.stanza, and stz-asm-emitter.stanza files in the compiler directory contains all the passes used to bring Stanza down to abstract machine code through register allocation and to x86.

  -Patrick

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!