[via Nikhil Kothari]
Nikhil’s blog is one of those that no matter how infrequent he posts, I’ll never delete the subscription and always read his posts before others. Why? Because his work and posts are genuinely new and forward thinking.
Earlier this week, he dropped a post on his blog about a side project he’s been working on: Script#:
A Better Scripting EnvironmentThe fundamental goal was to improve the state of the art in scripting. This goes way beyond the usual things that come to mind at first thought: compile-time checking, and intellisense or statement completion. I do think these are super-useful, and would be valuable in and of themselves. As we worked on Atlas we were also thinking of a great tools experience, and we explored different approaches and technologies for achieving this. Script# is a prototype of one such exploration. It attempts to address some programming environment requirements:
- A clean language with the natural constructs. Today with script, you can go a long ways in simulating OOP (classes, interfaces, inheritance etc.), but the simulations are thrown at the face of the developer. Various C# constructs such as properties, events, and syntax for defining inheritance go a long way in making the code readable. Similarly modifier keywords like public vs. protected vs. internal, sealed vs. virtual etc. help define a better object model. All of this can be brought into the scripting world.
- Easier refactoring and exploration. Script development could benefit immensely from the refactoring, and class browsing support already present in the IDE and in tools such as .NET Reflector. Both lend themselves to having a more manageable code base over time.
- Ability to generate documentation. Again doc-comments from C# and the existing infrastructure could be leveraged here.
This is ~way~ cool and has already generated quite a buzz (63 comments within 3 days). He’s posted a short 10 minute video of using Script# to create a C# class library and building a DLL and associated JS file you can use in your web project.