The Deconstruction of C
Here are three superstitions about C and its descendant languages including C++, perl, Java, and C sharp.
Every statement ends in a semicolon: untrue: a statement can be made of any single statement, or any series of statements, by surrounding the statement or series of statements with curly braces: indeed, understanding block structure is key, and placing a semicolon after a right brace only annoys your compiler (assuming it has emotions) because this creates a null statement between the right brace and the comma.
This is true for all languages in the family.
You must always use a { } block in for loops, while loops, and if blocks: nope. If the looped or selected statement construct is one statement and like to remain so, it is best to leave out the surrounding braces which are syntactic sugar.
C, and languages descended from C, are great: no, they aren’t. C was never intended to live so long by its original developers. It was intended as a quick, stopgap language for programming the new DEC (Digital Equipment Corporation) 10 without nonsense and encapsulates both the wisdom and the folly of computing circa 1970.
C was a rather passive-aggressive “laissez nous tranquille†(leave us alone) response to the arrogance of the MIT Multics project, which was supposed to be an enormous “computer utility†which would be tapped by the Ordinary User like electricity.
As such, C incorporated both the wisdom and the folly of an American cultural meme which America shares with the French rural right of the Petain era and the South African Boers: when the going gets tough, the tough get going…outa here, to stake out new topos in places uninhabited, or, in the case of Israel and South Africa, places inhabited only by brown and junglee men who can be eliminated.
Dennis Ritchie and Brian Kernighan could have joined forces with Algol in response to MIT’s dependence on IBM and GE compilers for PL/I which did not work properly in 1970 and stayed broken until 1974, but preferred to trek out into a new cybernetic territory.
Only the truly first-rate computing scientist should be permitted to reject a tool because of its putative defects, and education should be so open and free for all that being first-rate should be the statistical norm. The mythos “IBM compilers and hardware suck†is spread by people uneducated in IBM compilers and hardware and it is true. But this gives the ignorant no right to speak.
As such the C designers made passive-aggressive mistakes which are now so embedded in all of the C family languages that they will never be fixed, and also mistakes which took a lot of work to fix and today create misunderstanding.
Mistake of type A, the embedded mistake, is the syntax and semantics of the for statement which necessarily evaluates the control variable “by reference†and does not as in the case of other languages make a by value copy. The syntax is overgeneral, one of those overgeneral structures which seems cool until one reflects that the overgenerality transgresses upon the terrain of while, which handles things in a way that overlaps with for.
Mistake of type B, the mistake that creates misunderstanding and clouds the mind, is the way in which C, and C alone in the family, gives the programmer who hasn’t gotten the very idea of how cool it is, or might be, to be a “really real†assembler language programmer, or wait a minute how about a “real†machine language programmer, or maybe a hardware engineer with a soldering gun and duct tape, out of his system.
Computing education as practised at all but elite venues, by deliberately masking deep machine structures in the name of the pragmatic anti-intellectualism of the nth-rate American university, creates I claim a deep frustration among computing students who feel, rightfuly enough, that there professors never properly inducted them into the Eleusinian mysteries of levels, all the way down.
There is in other words a justified yearning in all of us for transparency and a desire not ro reify, to take for granted, a “real world†including unexplained digital systems, but the pragmatic anti-intellectualism of the nth-rate American university (where n>1) frustrates, ultimately for the convenience of the professor and even more so the institution, this desire.
Which is why C programmers rage that their language gives them what was denied to them, a non reified access to the “bare machineâ€, which in actuality they do not have.
As in the movie Fight Club, young men without fathering will find false and destructive ways of finding their place in society and C Club is one example. The dead mansion in which today’s programmers, today’s cybernetic Eds Norton and Brads Pitt dwell, happens to be the ruins of Algol.
Algol was deliberately destroyed by IBM and also by the underdeveloped state of the European Union, which at the time of Algol, was little more than a Franco/German/Belgium coal and steel community. It was convenient at the time to US polity that Europe be weak and divided and for this reason the successive Algol teams failed to accomplish their goals while Fortran “worked†in some crude sense.
The phenomenon is part of a more general lack in American culture generally to properly instruct and spiritually mentor the young who in 1970 and today were and are abandoned in front of an unexplained TV by mothers who have to work because the father went West to work on Algol.
C, and languages of the C family, aren’t great. What is needed is a true computing science education which would combine the highest and most arcane theorizing with the actual building of a computer, and its programming starting from nothing, in the lab, in a way that would overthrow the way in which a split between theory and practice is a tool of social monitoring, surveillance, and control.
What is needed is a noncommerical authority able to design languages and systems whose goals are systematically undercut by the profit motive.
Cf. Derrida, Spectres of Marx. The ideal remains not even “liberalismâ€: it is socialism. Why is it that in mathematics we can calculate with limits and with idealizations all the time whereas socialism as a limit case remains unusable in the discourses of sociology, including a normative computing sociology, resulting in the fact that in social talk, we are calculating with Roman numerals?
Why are we forced to admire and to praise a language like C, with its flaws, and doesn’t this forced chorus of praise corrupt our spirits?
For one species of computing language is indeed the "forced admiration of the flawed" as at conferences where the invention of a scrollbar is greeted with applause.
A society with contempt for politicians, and a heightened contempt for central and universalizing efforts to make sense of the world, whether the World Court or Algol, has to look within itself each and severally, for our contempt for and fear of bodies who might take “too long†to come up with something prima facie “too complicated†or “not practical†is in part our several inability to develop an internalized superego.
The politicians and the Algol team “working†in spas and in fashionable capitals represent in part our reflections on our own superego, our own suspicion (which may or not be well-founded) that if we as computists were given unlimited time, we’d waste that time on long lunches.
A society, whether in France or in America, which presupposes Republican purity of heart, who at times might call upon men to rise above their instinct to abuse their positions, whether as President or a member of the Algol team, cannot completely mythologize the Republican dreamtime as only one historical period where in France, St. Juste was able to say “you may now scatter our limbs to the four winds! Republics will rise from them!â€, or in the Virginia assembly, Patrick Henry could say “give me liberty or give me deathâ€.
If the Liberty tree which in computing should be our liberty to use not the pretty good but the best is refreshed by the blood of patriots, this is a metaphor for the need for the survival of the pure Republican impulse and pure Republican moral seriousness, in which as a member of a language or standards body, the individual corporate employee forgets not his personal vanity (which a Puritan always suspects is controlling) but the larger vanity of his employer, and actually works for a truly higher good.
The French, and to an extent the New England, vision of the Liberty tree was that the free man would be free to be the good man, whereas the American south took Liberty as a form of axiomatic Libertarianism, in which Liberty became an end in itself and was inclusive of the paradoxical Liberty to, in Samuel Johnson's words, "drive Negroes".
I'd like in connection with C to point out a forgotten difference. Richard Stallman wanted liberty-for, not a Liberty disconnected from a *telos*. Stallman, at MIT, wanted to exchange and write software freely in order to best serve the needs of the MIT community and thereby MIT's vision (which it shares, officially at least, with other first-rate universities) of serving what we used to be able to call, sans peur et sans reproche, Mankind.
Now, what C does is provide the Libertarian form of Liberty. Gee, Ah kin gits to de address of ANYTHING. How cool is that?
Answer: not cool at all. At worst, C's aliasing allows the crafting of code which is itself unmastered by its Sophistical author, code that immiserates.
What the Algol team wanted was "true" Liberty in the French and American New England model, in which all men would agree on a minimal description of the good man, the good life, the good society, and the good program, and Liberty would empower them to pursue this form of Happiness.
As it was, Bob Bemer of IBM was sent in bad faith in the 1950s to represent IBM at the Algol team primarily as a spy even as IBM in 2000 made a bad-faith agreement with SCO to work on industrializing Linux so that IBM could, according to SCO’s lawsuit, get not Linux but proprietary unix.
Acting in bad faith as an agent of a corporation is the real corruption because it permits us to externalize…to blame “George Bushâ€â€¦in a society in which the lying starts with us, in which we always presuppose that we are not “wasting time†if we are “making moneyâ€.
Laissez faire, the culture of all consumption all the time, whispers that this is so, that man lives by bread alone, and that for this reason has to be subject to a brutal, and brutalizing regime of quick Fortran results, or at best to the “alternative†C-libertarian culture of “rough consensus and running [not correct?] codeâ€, a sort of high-tech Lynch mob involving the systematic hounding of “free†men who were “free†to demur, to be found out, to accomplish anything; to get work done, the libertarian Lynch mob gives the truly creative individual only enough rope to hang himself.
The suspension of personal greed and sloth in a secular Constitutional convention becomes a myth and for this reason we have C as a damaged Pole star.
Purity of heart becomes a joke in a universalized Fight Club which despite its “libertarianism†is the tyranny of the mob in fashionable guise, in which the mob sees nothing higher than C.
Just won't let me alone...
This just won't get out of my head.
So let me add this -- insofar as quantum mechanics have revealed that binary states are a phenomenon local to the observer, is the sort of objective "truth" that a common consensus seems to demand even physically possible?
If not, of course, then the unwashed can immediately argue that their "truth" is just as valid as yours, or mine. This is, I believe, what is happening in Pennsylvania.
And this knowledge is the genie I refer to above.
Despite that, we still have to keep getting up every day and doing our best to muddle through, and I don't see how waiting for Algol would make things better.
Very interesting and well-done, Mark
I enjoyed reading your comments, BUT precisely insofar as a minimalist description of the good programmer, the good man, the good life, and the good society is minimal, it is possible.
Have you read A Theory of Justice, by John Rawls? His program, prior to his story of the "veil of ignorance" in which we accept that through the chance of fate, we might well be a homeless person under water in New Orleans, is a minimalist program.
In the spirit of C rather than Algol 68, indeed in the spirit of the first Algol report, Rawls was not seeking to please all the people all of the time, instead he concluded that a minimal set of the moral feelings and opinions of the ordinary slob would include arrangements for the least well off while allowing successful people to enjoy higher incomes insofar as those incomes benefited the least well off in an indirect fashion (as in the case of a doctor or teacher in a village who has only a margin of higher income, given to him by the elders in recognition of his willingness to use his skills for the Dalits and the least well off).
And sure, if some kid in the village shows the elders how to connect to the Internet so that the farmers can grow what the Chicago options market indicates will get the highest price, we can give the kid some extra rupees, which, being a "geek", he can be trusted to invest in a cooler system, and not Sher Bidis or dope.
What I am "deconstructing" is the idea that a Good Society has to be a Texas-style, Lyndon Baines Johnson scale, Great Society in which the government tends towards a maximal specification of such Greatness, unmoored to any one simple principle, and as a result is always up our ass about something or other.
What happened is shown in "At clinic, hurdles to clear before medical care" (Richard Perez-Pena, New York Times, October 17 2005). Today, Medicaid, intended by its Great Society architects to help the poor, is the enemy of the least well off, because efforts to fight fraud focus on the poor client and not where they'd probably do the most good: on the doctors and hospitals who use completely opaque (unstructured by default) computer systems to hide the fact that they have a sweet deal.
A Medicaid based on minimalist principles would operate as does public hospitalization in Hong Kong, based as this system is in part on Mencius' theory that man is born good. In Hong Kong, once you can produce the ID card, the visit costs 100.00 (about $13.00).
Likewise in Cuba. Yeah, you got that right. In Cuba, when a mother with a sick child goes to a clinic she is tormented by clerks while her kid has a seizure on the floor.
In both systems, a simple, understandable and minimalist principle distinguishes health care from the free market, where in Hong Kong the free market is otherwise and for the most part allowed to operate with very low taxes and no unemployment insurance or minimum wage, it being assumed that the Chinese work ethic will cause people to get SOME sort of job, which they do.
The principle operates not in the poorly coded cicuitry of some goddamn computer but upon patient presentation and saves the government money, because the paperwork is the presentation of ID.
I'd have to claim that those Drivers of Negroes, who in Samuel Johnson's words cried for Liberty, way down south in the land of Dixie are a case of mass social bad faith, and that the secesh of West Virginia in 1860 PROVES that poor whites in the South then and now would speak with a different voice were they not terrorized at gunpoint by the good old boys.
I can prove this.
For a subminimal ethics is not an ethics at all, but at best a meta-ethics. That is, the latter day Driver of Negroes in his SUV yawps about a libertarian liberty as allowing all men to choose choices including slave-driving, black-birding and pornography manufacture while at the same time actually claiming a higher standard in his personal affairs.
This is not a simple hypocrisy. Many Southerners in fact freed their slaves in the ante-bellum period while being quite ready to fight for the Confederacy and its Constitution, which while banning the slave trade (there being enough slaves in the South) established slavery for all time (actually, until Appomatox, but that "wuz because they got beat").
This is a higher, aristocratic hypocrisy, however, and it is a fault if the good man's mind is single.
Thomas Jefferson wrestled with this as did conscientious members of the founding generation.
These men, who read their Shakespeare, pondered how Brutus was a bad man precisely because his absence of hypocrisy and double-dealing in his personal affairs merely rendered him swept and garnished for a more powerful form of hypocrisy in which Brutus allowed Cassius and Cinna and the rest to murder Caesar (in violation of a Roman tradition in place since the days of Roman kings, a tradition on which the Roman Republic was founded) because Brutus "believed", in a vain and meta-ethical way, that he should "allow" the parricide to proceed, indeed administer the coup de grace ("et tu, Brute").
Brutus so believed in the Roman "liberty" of the other conspirators that while their behavior violated his personal ethics (with which Calpurnia was more acquainted than Brutus himself, wives then and now often being the guardians of unknown regions of a man's heart) he had to "allow" them to secure their (not his) "Liberty".
In programming terms, Liberty in the Southern reading generates the paradoxes of negative logic, for if I allow another man to be a pirate in the name of Liberty, then I must arm myself against pirates, mustn't I, and suspect all sea-rovers.
This is a long digression. But I think it illuminates how the man who talks of an absolute Liberty while being upright in his personal affairs is violating the Kantian moral imperative: so act that your action can be recommended as a universal law.
Americans THINK they can reject, as a matter of meta-ethics, the teachings of philosophers and moral leaders, even a minimal set, while in their lives remaining proof from corruption and one of the most attractive characteristics of your American is his TOLERANCE.
But we could understand JFK when he tried to articulate minimalist visions after the October missile crisis and before he was shot, a dreamtime today in which we had some hope, and could surf off Malibu without getting sick.
"We all treasure our children's future and we are all mortal".
Very interesting
I was doing some family research when I came across your name. Remembering my father talking about you in regard to some work you did with Fortran, I decided to find out some more information about you, and stumbled upon your blog. I studied programming last year and found your "3 myths of C" very interesting. It clarifies alot about the nature of C.
I then proceeded to read through your blog a bit. Is it true that before moving to China you lived in Illinois? I too am from Illinois, more specifically, Urbana-Champaign where I will attend the University of Illinois after I return from my stay here in Japan.
I have also spent the past few hours reading alot of your writing all over the internet and have found you to be a quite prodigious reviewer, learned historian, and politically minded fellow. I have found all your opinions quite interesting, as well as your excellent knowledge of history both global and political.
Anyways, It was interesting coming across you and I wish you good luck in the future.
Well done? Like a steak?
No, I confess to actually being one of the unwashed (hence my abundance of sympathy for their point of view) -- I've heard of Rawls, but never read him.
However, I've read enough about him and his works (and 10 minutes of Googling/wikipedia was enough to refresh my memory adequately) that I am willing to take a stab at continuing the discussion. :)
The primary weakness that I see in Rawls approach is that it still requires some sort of prime mover. Who arbitrates the discussion that leads to the "original position"? Who determines the characteristics (the interface, or protocol) of the "veil" that insulates the parties from knowing too much about one another?
If you say, "No one. The parties determine these things themselves", then do we not have endless recursion? For, in order to define the terms of the discussion, the parties must then first reach some sort of "overlapping consensus" about these preconditions. Since they have come togther to achieve just this sort of consensus re. the original position itself -- whoops! The snake just swallowed its tail.
If one bails on this problem by resorting to a prime mover (in whatever disguise -- note that, for the terms of my argument here, Rosseau's arbitrary "state of nature" is just another sort of Prime Mover), then we are back to accepting things "on faith".
Even if one chooses to sidestep these issues altogether, the "original position" itself is simply another sort of Prime Mover, or Big Bang or whatever, when looked at from this perspective.
That's no better than this: http://cecelia.physics.indiana.edu/life/video/2001/monolith.JPG
:)
And as soon as faith enters the equation, we are vulnerable to subjectivism, and the quantum reality that my faith must be as valid as yours.
I understand that Rawls work was intended to resolve precisely this conundrum, that this is precisley what the "overlapping consensus" was thought up to solve. I find the universe, as Rawls envisions it, quite pleasant. And I'm in complete agreement with you, I think, that the world would be a nicer place to live in if we cleaved closer to such an ideal.
I remain unconvinced that this is possible, however. And to reject a tool like C for being imperfect strikes me as overdone, not well done. The pragamatist gets up in the morning, and does the best he can, with the tools at hand.
Excuse me, but what is "subjectivism"?
It is commonly said that "philosophy" is "subjective" and it is commonly held that the philosopher is engaged in forcing one to accept some sort of "presuppositions" and as such is an intolerant sort, and not acceptable in an America where we are, well, "tolerant".
However, Rawls never says that people in the original position would definitely select a liberal state. Instead, Rawls conducts a thought experiment.
Rawls did feel that in the Veil of ignorance, people would be afraid to emerge from this political amnesia to find themselves up shit's creek, and for this reason would select welfare provisions for the least well off.
You can if you like replace this assumption by a speculation that being Americans, being riverboat gamblers, we'd be willing to take a chance at immiserating the least well off (no or low minimum wage, no health care, etc.) so as to emerge rich on the scale of Larry Ellison or Bill Gates on emerging from the Veil.
To me personally, this is unlikely, because the "liberal" choice to limit income differentials that Rawls recommends nonetheless allows people to be wealthy to a degree (as long as their income differentials, like that of a competent college professor or doctor, benefit the least well off by attracting people to the field). There is a question as to whether another yacht will make Larry Ellison of Oracle happy, and my guess is that Bill Gates like a nerd is prone to sea-sickness and doesn't want a fancy yacht.
What Rawls does is enable further speculation using his framework. For example, one can experiment with basing the choice in the Veil on methodological individualism.
American philsophy is unduly influenced by the strange classical axiom that we act most or all the time in self-interest, for in reality most of us are Homer Simpson.
Homer Simpson acts in the interest of his family and friends most of the time. The rest of the time he only tries, and usually fails, to act in self-interest, being the gull of scams.
Homer might in the Veil elect to vote in favor of free beer. In an actual election, many people may reason that they can suspend their self-interest since their influence on the outcome is mathematically so small, and may well for shits and giggles decide to vote for free beer and other welfare schemes for the least well off, and the least deserving.
Tomek! My mistake! My delay!
I didn't see your post until today, Tomek, and I feel bad because there is quite a lot of isolation in my family.
But thanks for your post of October 18th.
I am guessing that your father is the chemist with Univ of Illinois. He is a distant relation, I believe. Generally speaking, Nilgeses (Nilgii?) are related and appear to be from Galicia, not in Spain, but an eastern province of what used to be the Austro-Hungarian empire, inhabited by ethnic Germans.
Of course, in our family discussions, we'd identify ourselves (in families including that of my father that were patriarchies, against the grain of modern America) by the father's family. Who we "were", were, Nilgii.
Which neatly and unscientifically (given our knowledge of genetics) suborned the equal contribution of the poor Nilges wife (a rather put upon species).
My late Mother, despite her unswerving loyalty to my still living Father, contributed to my particular genetic makeup a leavening of the Germanic stolidity, indeed a Celtic twilight and pinheaded lunacy which I have been told emerges in my book.
The genetics were dealt, unevenly. My father used to look down at my brother and I as we randomly (indeed in Brownian motion) pushed and shoved for his attention and tell us apart. Mine was the narrow Celtic head whereas my brother's was the roundish-squareish Teutonic head.
Please give my best to your father, although I have not met him. I am flattered he knew about my work with Fortran, for when I was at Roosevelt University in Chicago, the University of Illinois at Champaign was already running a tough Fortran-based introduction to programming.
Larry Ellison of Oracle took this class and it was one of the few he liked or did well at, since in programming there can be instant gratification. Both Larry and I were into instant gratification at the time.
Other students regarded the class with horror. The literary-culture types of course despised the neobarbarism of having to code in upper case characters only. And the science and math types strangely often did not do well, for they thought in physical and analog terms in that distant era, feeling the micro motion of the slide rule and eyeing minute shifts.
Whereas like T. S. Eliot, who took symbolic logic from Bertie Russell in the 1910s, I found Dadaistic and gnomic delight in entering a comic-opera world and having to speak a new language, almost like the Austro-Hungarian Student Prince who in the mythical kingdom of Ruritania must master a new court protocol and catches the eye of the Princess.
You are in Japan! What are you doing there? I have only been able to tarry overlong in Japan Narita in the transit lounge courtesy of various bottom-feeder carriers.
Please feel free, Tomek, to email me. I will send you my email address.


But you seem to presume....
... that it is possible to achieve a consensus on what constitutes "a minimal description of the good man, the good life, the good society, and the good program". Is that possible?
I have my doubts. And if it is not, is acknowleding this unfortunate fact not an opening of the door that allows the irrational to believe that the liberty to "drive slaves" is the same Liberty as that which you aspire to? Isn't this, in fact, precisely the argument in use this very moment in my sad home state, PA, to support the teaching of "intelligent design"?
This, I find, is what depresses me about all of the arguments for and against "post-modernism". I pay little attention to the arguments of those who seem to think that critical thinking and logic are a threat to their God. But there is a train of thought that I have seen among the "elite" that seems to suggest that we would be better off concealing such wisdom, lest the unwashed use it (in a perverted but appallingly effective way) against us. A "let's put this genie back in its bottle" sort of reaction.
I find that appalling. The message of that, it seems to me, is that the masses are not only unsavory, but too stupid to be saved. I am convinced that this attitude has helped those in power. You could see this clearly in the last presidential election -- the hatred of the "intellectual" was visceral, powerful, and an important factor in the result. The unwashed masses are not so stupid after all -- at the very least, they are clever enough to understand what the "elite" think of them.
And yet... None of that changes this: I don't think a true consensus on things as sweeping as "a minimal description of the good man, the good life, the good society, and the good program" is possible.
Because of that, there is value in the "sloppy", in the Adam Bosworth sense. Where would we be without it? If we always had to wait for the perfection of the ultimate consensus, we would never stop waiting. If we never worked without the perfect tool, we would never work.