Due Thursday, May 2, 2013
For your final assignment, you will be tasked with designing your very own programming language!
Please fork this repository and modify the assignment.md
document. We have provided a skeleton for your design document. Each section
outlines some of the key points that you should discuss. Under each section are
a series of bullet points that provide some considerations you may or may not
want to talk about. You shouldn't incorporate all of them - they are just
suggestions to get the ball rolling.
When discussing the decisions you have made in designing your language, please justify each and weigh the pros and cons. Simply stating that your programming language is an "interpreted, imperative, hybrid functional/object-oriented, dynamically-typed, generic, garbage-collected language" isn't enough.
In particular, you should design your language with specific goals and use cases in mind. Whether you're designing a domain-specific language or general purpose language, you are still going to need to optimize and make decisions with a purpose in mind.
We're focusing on the semantics of your language, not the syntax. Syntax will show through in your code examples; however, you may want to consider how the grammar of your language is going to be structured.
Make sure that your language actually comes together as a whole. Don't mash together contradictory features just for the sake of doing so.
Remember, there's a trade-off to everything.
Sometimes less is more.