Ok so I'm going to go off on a rant for a minute.....feel free to just delete this message now if you're not in the mood. Even if you are, feel free to tell me I'm crazy.
<rant>
Java developers need tools. Great tools. Awesome tools. They just do. Java is such a neutered language that without great tools it's nearly unusable. Try writing (or testing) any amount of Java in something like Notepad, and you'll feel it right away. It's like swimming in a pool full of marbles.
So you've got hundreds of thousands of developers out there that, for almost a decade now, have been writing code that is almost totally dependent on good tooling to be maintainable. Tools are an essential part of the process to them. In some cases, there is no distinction between the language and the tool. To them, Java IS Eclipse. Eclipse IS Java. They build from it. They deploy from it. I'm not saying it's right, or good, or fair, but that's the way it is.
I really like Groovy. I haven't used Scala in anger but what I've seen of it looks promising. Both of these languages have horrible tool support (when compared to Java). Neither of them looks to be replacing Java any time soon, and Java seriously needs some replacing.
If you want to save Java developers from their tool addiction, you're going to have to give them some methadone. You're going to have to be able to honestly say to them "The tool support for noop is almost as good as you're used to with Java. Really. It's really good. You can go back and forth between Java an noop in a single project or workspace, and it's seamless and awesome, and you'll like it...we promise. Build tools? Oh yeah we got that too. Refactoring? Absolutely. Test runners? Got it. Code completion? Totally. Yes, Mr. Java developer, all those things you are used to in Java are supported with noop."
"Oh, and we have all of these killer language features too. For when you finally realize that you don't need all that tooling, because the power of noop in the language, not the tools."
But you're never going to get there if you leave tooling as an afterthought. It needs to be baked in. It need to be considered as you design the language. Especially when you discuss proposals about the type system, and the specifics of how type inference works. Otherwise, I fear, Noop will join the ranks of so many other JVM languages that have found little niches and just stayed there. Michael actually planted the seed of a language like this in my head a few years ago. I've been waiting for it too. I would really, really like to see something like this be the mainstream successor to Java. I want a mock-able file system. I want a GUI framework that I can easily test. I want to think of Spring as that thing that we had to use before had noop. And I want to move all of my Java code to it, one class at a time.
I think these tooling considerations will actually improve the language itself. They will definitely improve the developer's experience when working with it. But they have to be considered now. TDD improves the design of your code because you consume it an instant before you create it. I think making the most essential of mainstream developer tools (an Eclipse plugin) as soon as you possibly can will make noop a better language. Even if all version 0.1 does is run the code in the current editor through noop interpreter and spit the result to the console. Even if the syntax highlighting is flaky. Even if we have to change it a ton before it's ever really usable. All of that pain will help inform us about where we want to be when it's all settled out.
So yeah, you'll probably have to finish the compiler before we can release an eclipse plugin :-)
But that doesn't mean than we can't start.
</rant>
Ben