Read the rest of his post - he mentions specifically that performance issues would probably be the number 1 reason to not use HTTP. Bear in mind also that most applications are low-bandwidth, latency-insensitive, and do not need to make optimal use of available resources. This makes HTTP very quick to implement, nearly universal in compatibility, and fairly foolproof.
I think he was complaining more along the lines of "why are we running a custom protocol when we're just passing along a bunch of strings?"
Because the tools are there to support this. Let's just say I want to be able to query the current weather at a longitude/latitude, and I want to make sure this service is accessible not only to my client application, but also any other apps that want to integrate this feature.
I can:
- Write my own protocol with very low overhead, just a simple TCP handshake, the client sends me a little string with its location, and I send back the weather. Simple, really fast, has low network and processing overhead. But then you find that this is almost impossible for someone to integrate into their webapp, or even a native app, without opening sockets and doing a stupid amount of work just to set up that connection. I can also write my server code in C++, which gets me some hellishly fast performance.
or
- I can implement it in PHP, and accessible via a URL like http://www.mysite.com/weather.php?lat=X&long=Y and be done with it. Total coding time? Almost zero. There is no need to set up or tear down connections, and no worry about things like encodings, endianness, or anything of that sort that you'd have to worry about with a raw TCP connection. These tools are also proven, and relatively bug free, which one can't confidently say about anything they re-implement themselves at a low level. Hell, a simple shell script can curl my URL and get the weather back, just like that.
There are gains to be had for doing everything yourself, but for the majority of webapps the tradeoff in reliability and ease of use/development simply isn't worth it. The existence of talent, tools, and community knowledge is often worth the lower performance and sometimes unnecessary overhead.
I think he was complaining more along the lines of "why are we running a custom protocol when we're just passing along a bunch of strings?"