Archive for December, 2010

Healthy Expenses

The long-term budget forecast for the U.S. federal government looks dire. This is almost entirely due to health care costs.

People talk about social security going bankrupt, but that is actually easy to fix with relatively minor tweaks, such as increasing the income limit for which people pay social security taxes, and/or increasing the retirement age. These are compromises which even the deadlocked federal government should be able to make in order to keep old people out of absolute poverty.

Health care is a different kettle of fish entirely. Social security is a fairly straightforward actuarial problem for which we have a lot of good data. Barring some significant change in, well, health care, we can predict fairly well the rate at which people will die. We can also predict fairly well how much people will pay into the social security system. Therefore, while there can be small shifts from year to year, our predictions for social security spending and income are fairly accurate.

The cost of health care in the future, however, may shift radically. An expensive new treatment which has a good effect on a common disease will cause a large increase in health care costs. Conversely, a new cheap replacement for an existing expensive therapy will cause a large decrease. The health care field has changed radically in the last 100 years. It is very likely to continue to change radically in the next 100 years. Any estimate of future costs is an educated guess.

And it’s not just a matter of technology. Some estimates indicate that for most people in the U.S. some 25% of the total health care spending over their entire lives will occur in the last few months of life. Reducing that would clearly have a huge effect on future health care spending. One can imagine a change in society in which people are more willing to end their lives in a relatively inexpensive hospice with relatively inexpensive pain medication, rather than fighting on via increasingly complex interventions. This would require a change in general attitude, and would also require a change in the medical profession, for which both the Hippocratic Oath and the financial incentives encourage heavy intervention. So it’s not a likely change. But it is clearly a possible one.

So, given the uncertainties, why the long-range pessimism? It’s because we, as a society, feel very uncomfortable watching other people die for lack of health care. Thus we pass laws saying that a hospital emergency room can not turn away patients. And we create programs like Medicaid and Medicare which pay people’s health care costs. When the government is spending money on people, there are some natural ways to control the spending. For example, we could set a lifetime limit on spending per person. However, that would in effect kill some chronically ill people, and we aren’t willing to do that. Or, we could let the government negotiate prices with the vendors, and let capitalist incentives encourage people to find cheaper ways to keep people healthy. However, due to what can be described as, at best, regulatory capture by industry, or, at worst, simple bribery of legislators, the government is not permitted to negotiate prices for certain aspects of Medicare coverage. Or, we could simply let the government set up hospitals and clinics as is done in many other countries, while still permitting private alternatives, and thus control pricing directly. However, in the U.S., aside from the fairly effective V.A. system only available to veterans, that is considered to be a disincentive to medical advances, although I don’t personally see why that would be.

Because we are unwilling to adopt relatively straightforward approaches to limiting health care spending, we have set up a perverse market incentive. Rather than letting health care providers compete on quality and price, they compete only on quality. On average, the highest quality vendors will tend to have the highest price. On average, the best known and most desirable vendors will be able to charge the highest price. Since the government has no effective mechanism for controlling price, they will pay that highest price. That holds true even though the U.S. system uses insurance companies as an intermediary for health care costs. Insurance companies extract revenue from the stream of health care spending; they don’t significantly shift its direction.

The basic fallacy of democracy is that people will always be willing to vote themselves benefits for which they do not have to pay. The fallacy generally does not hold because people are not really that irresponsible. However, when it comes to health care, the benefits are beyond price, the costs are paid after you die, and health care vendors have every interest in confusing the issue so that they continue to earn all available money. The long term prognosis is frankly bad.

Comments (3)

Gccgo in GCC

I committed the gccgo frontend to the mainline of gcc yesterday. Getting to this point was a long series of steps to get the various supporting patches approved. This means that gccgo will definitely be available in the gcc 4.6 release, which will happen sometime early next year.

There is still quite a lot of work to do, of course. Now that it’s in mainline, more people are going to try it on more targets. I’ve only been using GNU/Linux, and Vinu Rajashekhar ported it to RTEMS. Other targets will have problems. Also, the gccgo frontend is still intimately tied to gcc when it converts from the gccgo IR to the gcc IR. I want to increase that separation, so that the frontend proper is independent of gcc itself.

On the functionality side, the gccgo library uses a single operating system thread for each goroutine. That is not what 6g/8g do: they multiplex goroutines onto operating system threads. Multiplexing is more efficient for a language like Go, and I need to change gccgo to work that way.

I also plan to use some escape analysis recorded in the export information to track whether pointer arguments escape—whether they are stored in memory. If a pointer argument does not escape, then it does not need to be pushed onto the heap. My hope is that implementing that will significantly reduce the amount of garbage that is created, and therefore reduce the amount of work that the garbage collector has to do.

Release gccgo in gcc is going to introduce a difficulty for Go programmers who use it. The Go language continues to evolve, but gcc 4.6 will not. That means that people using gcc 4.6 will be using a language which will be increasingly out of date. I don’t think there is any way to avoid that problem at this stage. The language will become more stable over time.

So this is just one more step along the way, but it’s a major one, and I’m very glad that it is finally done.

Comments (7)