I like to compare things to cars, because a lot of people have a reasonable understanding of them. It is good to learn what a clutch, gearbox and gear ratios all mean, and learn the skill of driving a manual gearbox car. Having done that, I might prefer an automatic transmission in heavy city traffic. Then again, what If I had to drive a heavy truck? Most probably won't have auto transmission
Automatic transmission is good not only in city traffic but also in racing. Why? Because it changes gears much *faster* than any manual one and allows for better acceleration [actually they use automatic transmission with manual controls].
The analogy to IDEs is valid - most professionals use IDEs, because it is simply much faster. I can look up a method in docs, but it takes a few seconds. Pressing Ctrl-Q in IDE is less than a second. The same about highlighting errors. If I get a feedback immediately, it is much faster to fix it in place, than to fix it later, when I already closed that file.
I think it's cool xcode checks if the printf string is valid for the supplied arguments. I find it is definitely easier to learn an API when using an IDE, you can go directly to the function see comments and such. Probably the best feature. The syntax error highlighting is nice but it shouldn't be relied on, it doesn't pick up on other errors and you should be rereading your code anyways so syntax errors aren't that big of deal.
Did xerzi mean the IDE displays it in some way to show that it is an error - it can do this because it uses background compilation.
That's why I was perplexed as an astronaut with an itchy nose, when I discovered my new version of KDevelop had no command to compile - it does it in the background as you go along. When you are ready - you build the project.
This differed from earlier versions which allowed the compilation of one file or a fragment only.
As far as I know xcode isn't as integrated with it's compiler as visual studio as such you can choose or add your own compiler. It might have a parser or something integrated to detect errors such as that but I doubt it's cause of the compiler. I only messed with it for a week I can't completely recall how it highlighted but I think it was more then just "this printf is invalid on this line" to the point it actually highlighted the symbol (ie %s) in the string literial which was causing the error.
Apple LLVM Compiler
Apple’s next generation compiler technology, the Apple LLVM compiler, does more than build your app. Apple LLVM technology is integrated into the entire development experience. The same parser used to build C/C++ and Objective-C powers Xcode’s indexing engine, providing incredibly accurate code completions. As you work, Apple LLVM is constantly evaluating what you type, identifying coding mistakes that Xcode shows as Live Issues, and thinking ahead for ways to Fix-it for you.