Permalink
Browse files

Add a bit of explanation on the new version being written

  • Loading branch information...
1 parent 6f9baae commit 2bcaadf34ec7f65568877f1ff64d701000e76645 @txus committed Jan 7, 2012
Showing with 47 additions and 15 deletions.
  1. +47 −15 Readme.md
View
@@ -1,24 +1,54 @@
# noscript
-Noscript is an object-oriented scripting language written in pure Ruby.
+Noscript is an object-oriented, class-less programming language running on the
+[Rubinius](http://rubini.us) Virtual Machine.
-It's basically a way for me to learn about language design in a practical way.
-In the future this language will run on the [Rubinius VM](http://rubini.us),
-but for now I prefer to deal as much as possible with implementation detail,
-learn as much as I can, and then go for the kick-ass Rubinius VM :)
+It takes design ideas from JavaScript, CoffeeScript, Self, IO and our beloved
+Ruby.
-Feel free to criticize and give advice, I'm happy to hear it!
+## Installing
-# ACHTUNG
+Noscript only runs on Rubinius, so you have to install it (if you use RVM,
+[here](http://beginrescueend.com/interpreters/rbx/) is how you do it). Assuming
+you have it installed:
-Noscript is currently under a heavy rewrite. If you want to check out what it
-was before I started messing with everything, *check out the branch named "old"*.
-The master branch is not to be considered even usable.
+ rvm use rbx
+ gem install noscript
-## Install (the old version)
+You can run your programs like this, pretty standard:
-Although for now it's in a **SUPER ALPHA** stage, you can try and run some
-example scripts doing this:
+ noscript FILE
+
+## Object Model
+
+Noscript is [prototype-based](
+http://en.wikipedia.org/wiki/Prototype-based_programming). Every object is a
+clone of another object with a reference to it. An object is just a collection
+of slots that can be assigned and retrieved. These slots can contain anything:
+literals, functions and other objects.
+
+`Object` is the master object to clone from, available from the main scope.
+
+To create your first object, type this:
+
+````noscript
+greeter = Object.clone()
+greeter.salute = name ->
+ print("Hello #{name}!")
+end
+greeter.salute()
+````
+
+## Installing the old interpreter (AST-walker)
+
+Before running on the Rubinius VM, Noscript was prototyped as a simple
+AST-walker interpreter written in pure Ruby, without any Rubinius-specific
+code.
+
+If you want to check out what it was before I started the rewrite, *check out
+the branch named "old"*.
+
+The old branch is far from usable, but it's a nice example to play with.
git clone git://github.com/txus/noscript
git checkout old
@@ -30,6 +60,8 @@ example scripts doing this:
./bin/noscript examples/test_case.ns
./bin/noscript examples/traits.ns
-## Copyright
+## Who's this
-Copyright (c) 2011 Josep M. Bach. See LICENSE for details.
+This was made by [Josep M. Bach (Txus)](http://txustice.me) under the MIT
+license. I'm [@txustice](http://twitter.com/txustice) on twitter (where you
+should probably follow me!).

0 comments on commit 2bcaadf

Please sign in to comment.