This is quite an undertaking and even if they do not achieve all the lofty goals, the experience and the code (if they open-source it) will be extremely valuable.
For many years I made a living working on static analysis tools and that included a lot of compiler construction stuff. Unfortunately not all languages are equally amenable to static analysis.
Take C++ for example. On one hand C++ is statically typed and that helps in static analysis and refactoring. On the other hand, its semantic is so horribly complicated that it makes almost impossible to write static analyzers for it and useful refactoring tools for C++ are almost non-existent. Pointer aliasing and macroprocessor just add insult to injury.
Python on the other hand is very clean language, no macroprocessor, but it is dynamically typed which makes reasoning about code very difficult.
Java (and after it, C#) managed to strike very nice balance, that is why tooling ecosystems for these languages are very good. The road to good tools starts with carefully designed language.
This is why I have high hopes for the Kotlin language. I think it makes a lot of sense to design a language with tooling in mind from the beginning to avoid nightmares like C++.
I think nobody really understands the pitfalls of language tooling better than the Jetbrains guys.
Comments
This is quite an undertaking and even if they do not achieve all the lofty goals, the experience and the code (if they open-source it) will be extremely valuable.
For many years I made a living working on static analysis tools and that included a lot of compiler construction stuff. Unfortunately not all languages are equally amenable to static analysis.
Take C++ for example. On one hand C++ is statically typed and that helps in static analysis and refactoring. On the other hand, its semantic is so horribly complicated that it makes almost impossible to write static analyzers for it and useful refactoring tools for C++ are almost non-existent. Pointer aliasing and macroprocessor just add insult to injury.
Python on the other hand is very clean language, no macroprocessor, but it is dynamically typed which makes reasoning about code very difficult.
Java (and after it, C#) managed to strike very nice balance, that is why tooling ecosystems for these languages are very good. The road to good tools starts with carefully designed language.
This is why I have high hopes for the Kotlin language. I think it makes a lot of sense to design a language with tooling in mind from the beginning to avoid nightmares like C++.
I think nobody really understands the pitfalls of language tooling better than the Jetbrains guys.
Either way their free Scala plugin for IntelliJ is pretty sweet. Kotlin looks very similar, will be interesting to see how it develops.