Posted by
Andrews on Tuesday, January 12, 2010 8:59:54 PM
A warning before I start. The opening paragraphs are filled with computer geek topics. I will try to keep them understandable to non-geeks, but they are going to be a tiny bit technical. However, as they do have some relevance to my post, please bear with me. And for computer geeks, please understand, as I said in "
Object Oriented Programming, Apple Computers and Justice" and "
The Right Way", I do believe object oriented programming, while popular, has been oversold and many flaws were overlooked in the rush to adopt the flavor of the month. And much of what I write is both based upon this assumption and proves it. So if you are a huge fan of OOP, you may find some of my statements conflict with your beliefs. As I said, please bear with me, as there is a political/philosophical point to all of it.
I recently decided to refresh my memory of LISP as part of a New Year's resolution to expand my programming skills a bit
1, and I came across
a pretty good online text. I have to confess, I am a bit behind the curve on the latest trendy technologies, mainly as I moved from programming to admin jobs a few years ago, but also as my interests lie in forth and C, so the "cutting edge" languages, where such ideas arise, just hold little interest for me, and I don't follow developments. And so I was unaware of the push for "Aspect Oriented Programming" and the hype around it.
What I found interesting was that AOP sounds pretty much like what I did as a matter of course with functions in C, or sometimes with separate applications listening on ports or Unix domain sockets. Basically, AOP seems to be creating functions for "cross-cutting interests". So, reading through, it struck me as either pointless, or just something I always did in C
2. But then I realized why it was needed. AOP is needed for Object Oriented Programming. What is easy in functional languages like C is not always easy in OOP. OOP, with its methods tied to data, does not have an easy way to split out functionality the way procedural languages do, and so they need AOP to essentially create what was always possible in procedural languages
3.
I am simplifying this a bit, and ignoring some nuances, but the point is the same (and this is a political essay, not a computer programming one, I just use the OOP stuff as an intro and example). By adopting object oriented programming, developers gained some things and lost others. They made some things hard and others easier, or at least we know they made some things hard. However, rather than reconsider the choice, they have tried to add a bandaid, a patch over top of OOP, to make OOP work more like the procedural paradigm they called insufficient. In other words, the theory they rejected actually proved to be better than they claim, but rather than return to it and abandon their bad choice, they have committed to the bad choice, and so change it to look more like the rejected design.
The reason I bring this up is that it reminded me of politics. Computer design theories are every bit as fervently and passionately supported as any political philosophy. Read any of the OOP vs procedural "flame wars" and it will make DailyKos and DU look positively tame. And so, there is probably something to be learned about our political beliefs from looking at this non-political model.
The first thing that AOP brought to mind was the NEP and its many successors, including modern China's "openness" (of a kind) to capitalism. All of these plans, from Lenin's initial foray to the present, are tacit admissions that communism does not work, otherwise there is no sense in allowing even a trace of capitalism to remain. But if communism does not work, then why retain it? Why not start over again? If capitalism performs better than communism, why retain communism with capitalism bandaids rather than revert to capitalism? Even if you think there are ways to improve capitalism, why not try starting from capitalism rather than from communism with capitalist trappings, which you have admitted is inferior to the real thing?
The answer is that communists cannot renounce communism as it would be to both admit their own failure and to surrender their power. Neither of which any individual is likely to do. Yes, there have been people who have voluntarily renounced power, and those who have refused to assume it, but those who have struggled to the top of communist systems rarely have the sort of personalities likely to make such changes.
And that is why we have such systems in place, why we have regulatory agencies with mock competitive systems layered on top, or alternating regulation and deregulation of industries, piling ever more complicated layers of rules on top of one another. People are not willing to concede their system was the wrong one, that they made the wrong choice, and most importantly, those who have struggled to gain the power of government are unlikely to be the ones who will give up such power voluntarily.
Worse still, those who would be willing to give up power, those outside of the government and in opposition to it often give those wanting to hold power an out. For example, term limits are effectively such a plan. Rather than scale back government, which would cure all our problems, we adopt the bandaid of limiting how long anyone can wield that excessive power. It is a bad solution, especially as it leaves the original problem untouched, but many accept it, as they think it is a possible goal, while reducing government power is impossible. Similarly, many adopt half-hearted deregulatory schemes on the same basis, thinking they will be possible steps toward fixing big government, when in reality they are merely window dressing used to discredit the free market through their failure.
Not that no compromise is possible. I have written before ( "
Cigarettes, Sudan and Abortion") that we need to compromise, that we cannot be all or nothing in our methods, only in our beliefs. But at the same time, we need to be smart when compromising as well. When we make compromises, we need to try to make compromises that fix problems, not that support pointless window dressing, or means for discrediting small government. Deregulation is probably the best example, as without full and honest deregulation, any half-way scheme will do nothing but make things worse, while providing grounds for criticizing the free market. And if conservatives sign on they even come in for most of the blame when it fails. Likewise, term limits, though they sound good, will likely end up making things worse("
The Civil Service and Term Limits", "
Why Term Limits Will Fail (And Should)"), handing more power to career bureaucrats, while doing nothing to eliminate the career Washington power structure
4.
The other problem we have due to this is what I call the "glasnost" problem. Recall when Gorbachev saw the USSR collapsing around him and introduced "glasnost". A lot of people at the time said he was just making cosmetic changes to fish for foreign aid to prop up the USSR. And likely it is true. Fortunately the USSR collapsed before he could proceed much farther, as the citizens took him at his word. But here in the US, it seems a lot were willing to believe everything he was saying, regardless of whether or not his actions matched his words. Nor did anyone ask why, if "openness" was such a good thing, he should keep communism at all, why not open it up all the way by doing away with communism? (At least the Russian people eventually
DID ask, and did something about it.)
But too often we see this in our own politics. When a "moderate" Democrat makes a small gesture in the right direction, we are ready to compromise with him, forgive him all manner of other problems. Just think of the many horrible bills Lieberman has supported, yet because he split with the Democrats and was right on the war, many forgive him a huge number of sins. Similarly, we are often impressed with a Democrat who cuts taxes, even if he is wrong on everything else. Or, on the other side, we forgive Republicans who have the right position on one topic close to our hearts.
I know I have said before we should encourage those who are even 10% right to try to get them to move in the right direction, but that does not mean ignoring their faults. Encouraging them also means pushing them toward the good by criticizing their errors. I supported McCain as the best of two bad choices, but that did not mean I would have allowed president McCain to get away with whatever he wanted. Similarly, while I applaud Lieberman on the war, I criticize him on health care and a number of other issues.
But I seem to be getting a bit far afield. I started talking about how nonsensical such bandaid fixes are, and I have ended up talking about not being fooled by those who apply them. Actually, that isn't too far afield, after all. Regardless, my point is, if your current path proves wrong, it makes no sense to apply fixes which amount to nothing more than resorting some aspect of what you had previously. If the old system was better, undo the change. And, if you are observing someone applying such bandaids, rather than applaud them for making gestures toward the old system, why not ask them why they aren't reverting completely. After all, if the old system was better, then why keep the new one at all?
I doubt such questions will get an honest answer, but if we ask, maybe it will make a few others wonder the same thing. Why we need to retain any regulation if partial deregulation is a good idea, or why we need any government management if partial privatization makes sense
5. And, at this time, our best hope is to begin reeducating those around us, because until people stop seeing government as a swiss army knife, suitable for any problem we encounter, we will continue to suffer through ever larger and more intrusive government. ("
What We Deserve", "
Don't Blame the Politicians", "
Who Is To Blame?", "
What is Wrong with Us", "
The Single Greatest Weakness", "
The Difficulty of Principle")
---------------------------------------------------
1. If anyone cares, my resolutions are to stop smoking, to write fiction 2-3 days a week, hopefully finish at least two of the eight novels I put off writing last year, to finish three programming projects I have been putting off, to expand my programming skills, to brush up on Hebrew and Aramaic, to eat better, and to look into on-line yeshivot to see if any are worth attending when my son starts kindergarten, leaving me more free time for such things. I don't know why I feel the need to list these things, but as I mentioned resolutions, I suppose it doesn't hurt.
2. For example, I will create a function "void output(char*)" which will write the output to screen and a log. Or do a #define which defines LOG(x) as "log(x);printf(x);" so it will both log and print the function. In this way, any change to logging only takes place in the function, not in the code calling it. It seems rather simplistic, but that si pretty much what AOP seems to be doing.
3. This reinforces arguments made in
this site. Basically, what he argues about whether you want to group together data or functions shows the reason this is important for OOP. Because
they group data, with the result of
funcitons being replicated, they need AOP to allow them to have less function duplication. In short, it allows OOP to have what procedural languages always had.
4. Granted, the career rack will now have less time in elected office, and more as a lobbyist or in the civil service or appointed office, and there will now be a few more former office holders, but the inbred nature of Washington will not change in the least ("
Our Aristocracy", "
Some Thoughts on Term Limits"). The only real change will be a move toward empowering the career bureaucrats more and legislature less.
5. This is my problem with Bush's social security reform. If partial privatization was good, then why not eliminate the system entirely? Of course he was trying for small steps toward privatization because he thought they were possible. But given how difficult the fight would have been, had he tried, he might as well have shot for the moon, he wasn't going to get either, but arguing for the bigger goal may have set the stage for a better reform next time around.
---------------------------------------------------------------------
UPDATE 01/15/2010 : I can't believe I overlooked an old post on almost exactly the same topic. Though it is much more brief, "
Examples From Another Field" touches on many of the same topics.