Supplying expected compensation up front is one of the best ways to market your business to developers. If I, a developer, am making $100K and you make it known that you are willing to pay $200K, I'm going to get excited and get in touch with you. If I am left to assume that you are also only offering $100K, because you "pay market rates" or haven't said otherwise, I'm not even going to waste my time getting in touch with you.
It seems like a lot of businesses feel like they are in a buyer's market, which comes with completely different rules, and then cannot figure out why it isn't working for them.
I also am not convinced that it's a seller's market. Most programmers (developers, software engineers, whatever) are treated like second-class citizens from the first phone screen through the "culture fit" portion of an on-site interview.
Regardless, my point wasn't about whether companies should or should not post salaries; it was that applicants to companies that don't ought not be considered "desperate for any job" because it is simply a fact that all but a very tiny percentage of jobs are advertised without said salary listed.