This is a great writeup of what I think is an unfortunate trend. When your compiler, build system and IDE are all tightly coupled, you end up locked into a single language.<p>It&#x27;s hard to develop pieces of your code in multiple languages and have everything play well together. But for many projects that&#x27;s a good way to do things. For example, in games programming, you might want to use an offline texture compression tool. Ideally that should be integrated into the overall build; but you shouldn&#x27;t have to write your texture compressor in Haskell or C++ or whatever just because that&#x27;s what the game is written in.<p>I think Xcode is what a lot of other IDEs and build systems are moving towards. Xcode is nice as long as you&#x27;re working with normal code in permitted languages (C++, Obj-C, Swift) and permitted resource formats (NIBs). But if you need to do something slightly unusual, like calling a shell script to generate resources, it&#x27;s horrible.<p>Oh, and I didn&#x27;t even mention package managers! Having those tightly coupled to the other tools is horrible too.