Google is pregnant again?
Perhaps you have heard this statement. Also you could hear that the “baby” has been created to substitute Java… and number of similar statements… But What is NOOP?!
Some people are reporting it to be Google new language, which is not quite technically correct. Noop is being developed by a group of independent developers as a side project, a few of which happen to work at Google.
Noop is built on the Java Virtual Machine and is syntactically similar to Java. What it adds, though, is dependency injection and testability functionality built directly into the language…
What is the status of NOOP?
Development on the language is still at an early phase, but many hope that they release something to the public in the near future. There is no binary to download, although, the source code is available from their online repository.
Why this language?
The experience shows that developers often create code that’s hard to test and maintain, without realizing this. On a large software project, this can create problems later on for the whole team. While analyzing this problem, it was found that the root cause in many cases was language features – like globally visible state, misused subclassing, obligatory and redundant boilerplate, and API’s that are easily misused. The language seeks to apply the wealth of lessons of language development over the past 20 years and optimize on cleanliness, testability, ease-of-modification, and readability.
Also we should consider the following factors why to choose/try this language:
1) Dependency Injection changed the way we write software. Spring overtook EJB’s in thoughtful enterprises, and Guice and PicoContainer are an important part of many well-written applications today.
2) Automated testing, especially Unit Testing, is also a crucial part of building reliable software that you can feel confident about supporting and changing over its lifetime. Any decent software shop should be writing some tests, the best ones are test-driven and have good code coverage.
3) Immutability and minimal variable scope are encouraged by making final/const behavior the default and providing easy access to a functional style. Testability is encouraged by providing Dependency Injection at the language level and a compact constructor injection syntax.
In conclusion I would like to notice that this language experiment attempts to blend the best lessons of languages old and new and syntactically encourages what we believe to be good coding practices. However only time will tell whether it will last or merely be another fad language which the programming world is littered with. In any case this language might be worth taking a look at… 😉
Thank you for your attention and you are welcome with your comments!
So, as one of the initial language designers of Noop, I can tell you we’ve largely abandoned it. Your information is about a year and a half out of date, sadly. The main authors were quite interested in the language proposals involved, but were also very busy with other projects during our day jobs.
At this point, there are several JVM languages which look promising, and which incorporate many of the features we were looking at in Noop. In particularly I’d mention Kotlin, by JetBrains, and Ceylon by Redhat. I’m not an expert on Ceylon, but I’m definitely liking the Kotlin approaches.
I started to get involved with Noop, because I wanted to have the language I wanted to code in, and if it wasn’t there, I’d make it. Kotlin (and others) seem to be going in the directions I was hoping for, with more dedicated resources and community. So let’s hope that these directions are solid, and that we end up with production-ready offerings on the JVM that satisfy the constraints you mention above.