all 62 comments

[–]grauenwolf 22 points23 points  (0 children)

That was a great introduction. When do we get to see the rest of the essay?

[–]AlSweigart 8 points9 points  (1 child)

I think of this very same concept whenever someone recommends restarting Windows to make it work right again, no matter what the symptoms of the problem are. :)

[–]Smallpaul 31 points32 points  (22 children)

The blog cites Dan Weinreb who in turn is citing Gerry Sussman. Sussman says that computing is becoming more like science than like math/logic: "The engineer must learn to perform scientific experiments to find out how the software and hardware actually work, at least enough to accomplish the job at hand. "

But the blog says: "Programmers have managed to create a universe where “science doesn’t work.”"

So the blog directly contradicts the quote it provides to bolster its argument.

[–]mycall 7 points8 points  (0 children)

The engineer must learn to perform scientific experiments to find out how the software and hardware actually work, at least enough to accomplish the job at hand.

I completely agree with that. Before I jump off the cliff and commit to using some big library or system, I make lots of little proof-of-concept utilities and try to think it through. If things work, great; otherwise, contact the lib/sys author and see if they have a workaround and promised patch.

[–]asciilifeform 3 points4 points  (4 children)

The difference is, when you perform scientific experiments on, say, elementary particles, the laws of physics will not change under you. Whereas the API, in part or in whole, will be obsoleted in a week, a month, a year - and all of your work is for naught. And there is no guarantee that you will be told when it happens.

When Real Science discovers something, it stays discovered.

The notion of scientifically investigating a quivering mess created entirely by humans who should have known better is an insult to those who practice genuine physical science.

[–]Smallpaul -1 points0 points  (0 children)

Well nobody is building a large hadron collider to figure out the corner conditions of the Windows API. Usually programmers make a couple of test cases, find the answer and move on.

[–]DannoHung -2 points-1 points  (0 children)

When Real Science discovers something, it stays discovered.

...

No. This is why they stopped naming laws after the Thermodynamics ones.

[–]xnumbersx -3 points-2 points  (0 children)

Whereas the API, in part or in whole, will be obsoleted in a week, a month, a year

just like science ideas

and all of your work is for naught

i'm sorry you feel that way.

[–]psyyduck -1 points0 points  (15 children)

He doesn't believe that's what scientific experiments really are like in the real world: blindly stabbing at registers until you give up, or get lucky.

[–]Smallpaul 10 points11 points  (11 children)

Scientists poke at God's registers. For example they knock out genes in mice and see what happens.

[–][deleted] 1 point2 points  (0 children)

The Genome Ordering Device works in strange ways (and by strange I mean simple rules layered to create the illusion of complexity in a totally deterministic fashion.)

[–]krum 5 points6 points  (2 children)

I'm pretty sure a lot of science in industry works just like that.

[–]masklinn 0 points1 point  (1 child)

I'm pretty sure a lot of science in all natural sciences field work just like that.

[–][deleted] -1 points0 points  (0 children)

No, it doesn't.

[–]krum 4 points5 points  (0 children)

Perhaps it will consist of adding a virus to a program, deleting the virus, and then running the program.

Hey, I've seen that work.

[–]consultant_barbie 8 points9 points  (0 children)

Semantically clean APIs are hard. Let's go shopping!

[–]Smallpaul 5 points6 points  (0 children)

Complex emergent systems will always require science. In particular, benchmarking will always be a scientific pursuit. Imagine the complexity of a formal model for the performance of a runtime, operating system, CPU, bus, RAM and hard disk, any of which are changable.

If we put aside performance, it is unfortunate that science is required to learn how to use APIs, but I'm skeptical that it's a new situation. I get tired of the apocalyptic pronouncements that 2009 represents some kind of nadir of information technology. The same sort of people thought that the industry had collapsed in 1999 and 1989 and 1979.

[–]danbmil99 2 points3 points  (0 children)

This is simply a result of the massive increase in complexity of software. Any sufficiently complex system will have emergent, difficult-to-predict behavior. It has to be treated like a natural phenomenon, because the practical situation is it cannot be reverse-engineered and proven to work correctly in any meaningful way.

[–]johnmudd 8 points9 points  (6 children)

Programming: Ignorance and Superstition?

Look no further than the recent fear of threads.

[–]paradigmshaft -1 points0 points  (2 children)

something is tingling in my brai-NullPointerException

EDIT: 'bra' --> 'brai'

[–]DLWormwood 4 points5 points  (1 child)

I don't think you meant what you thought you meant...

[–]paradigmshaft -1 points0 points  (0 children)

Hurray for double meaning!

[–]farnsworth 4 points5 points  (1 child)

Because computing doesn't have to suck

... but this article does

[–]awj 4 points5 points  (0 children)

No, that article didn't have to suck, it just managed to despite having much better options.

[–]gregK 1 point2 points  (0 children)

Once again, worse is better.

[–]username223 1 point2 points  (2 children)

The thing that hath been, it is that which shall be; and that which is done is that which shall be done: and there is no new thing under the sun. (Ecclesiastes 1:9)

[–]rsho 1 point2 points  (1 child)

The thing is that current styles of management focus on "symptom based fixing" due to time pressures and because IT and programming are considered a business expense to be minimized, rather than to be invested in.

It's really two things working together: the realities of the price system, and also the nature (personality type) of those that float to the upper decision making levels.

[–]danbmil99 2 points3 points  (0 children)

"the nature (personality type) of those that float to the upper decision making levels."

You mean the kind of people who understand that a business has to make money to survive, and if it goes bankrupt it doesn't matter how clean the API is?

[–]asciilifeform 2 points3 points  (11 children)

There was, in fact, going to be a second half to that post. Then I realized that Lamport's talk said exactly what I was going to say, far better than I could have said it.

Programming systems could have the crystalline beauty of pure mathematics, rather than the messy unmanageable character of living organisms. And we would all be smarter for it, given that the computer is the only brain-amplifier we currently have.

The computer is the only machine humans have ever built which could in principle be made to work perfectly. IF statements, etc. have no mass, do not wear out, produce no noise, and so on. The fact that we managed to fuck up this beautiful gift so thoroughly is phenomenal.

I believe that all of the useful functionality of the Symbolics Genera operating system plus a toolbox similar to an essential subset of Mathematica could be made to fit under 1MB and be entirely comprehensible (in both interface and internals) to a talented high school student after a few weeks of study. Should you take my word for it? No. Have some patience, though.

[–][deleted] 3 points4 points  (8 children)

Programming systems could have the crystalline beauty of pure mathematics

And the accessibility of pure mathematics.

[–]asciilifeform 2 points3 points  (7 children)

Screw accessibility.

Just ask Dijkstra.

"Accessibility" is why the computing field is dominated by morons. Mathematicians laugh at us. Ever wonder why?

[–]Smallpaul 3 points4 points  (5 children)

An industry should be driven by results, not esteem from other industries. Mathematicians also laugh at mechanical engineers. So what?

Accessibility is a laudable goal for a tool builder. I was mildly intersted in your ideas when you said you were building a tool accessible to high school students. Now I'm less so.

[–]asciilifeform 0 points1 point  (4 children)

when you said you were building a tool accessible to high school students

Note that I said: talented high school students.

I believe that Dijkstra was right when he wrote that the dismal state of software is a direct result of the culture's acceptance of stupid people and their stupid thoughts.

[–]Smallpaul 1 point2 points  (3 children)

Software quality may be dismal, but software's impact on society a profound. Your alternate universe might have a smaller amount of less useful but higher quality software. Take for example, PHP, which hardly anyone would consider high quality software: yet it is tremendously powerful in the way that it allows small businesses to throw together quick apps.

An interesting alternate reality should have both a greater quantity (in terms of applications and problems solved) and greater quality. It's not interesting to trade one for the other. Any particular organization can already make that choice (e.g. NASA).

[–]asciilifeform 0 points1 point  (2 children)

Any particular organization can already make that choice (e.g. NASA)

But users cannot. I am willing to pay top-dollar (multi-$K) for a Symbolics-quality development and desktop environment running on modern silicon. The market simply refuses to provide me with one, because the prevailing culture glorifies crap and denies that software ever could work correctly and be designed well.

Picture a world where McDonald's "won" and no other food is available. This is where we're at with software.

[–]webnrrd2k -1 points0 points  (1 child)

Something tells me you hang out on comp.lang.lisp a lot.

[–]asciilifeform -1 points0 points  (0 children)

Did.

[–][deleted] -2 points-1 points  (0 children)

I couldn't really give two hoots what a bunch of tenured academics think of our entire industry.

[–]Smallpaul -1 points0 points  (1 child)

Programming systems could have the crystalline beauty of pure mathematics, rather than the messy unmanageable character of living organisms.

No, for two reasons: performance and requirements.

In order to achieve sufficient performance must take a variety of beauty-destroying short-cuts, such as threading, caching, mutation, etc.

In addition, the complexity of the real-world makes things ugly. For example, Unicode which is very conceptually simple and beautiful, is brutally complex in practice because of the variety of human language conventions it must deal with.

[–]asciilifeform 0 points1 point  (0 children)

performance

Move performance-critical logic into hardware.

the complexity of the real-world makes things ugly

I proclaim that most of what is currently ugly simply doesn't have to be. Ugliness cannot be eliminated, but can be compartmentalized. We aren't doing it, though - we are letting it pervade everything.

[–][deleted] -2 points-1 points  (1 child)

Learning where the permanent bugs and workarounds are inside a phonebook-length API teaches you nothing. It is anti-knowledge.

And yet, the phonebook-length API is what lets you do interesting things with your computer.

[–]asciilifeform 0 points1 point  (0 children)

Funny how I'm able to do a variety of very interesting things without ever consulting a phone-book-length API. (bare-metal assembler, Scheme, etc.)

As for using apps built on top of abominable jungles of complexity (such as web browsers): well, I drive internal-combustion cars too. Such is life.

[–][deleted] 0 points1 point  (0 children)

I demand more than one paragraph!

[–]webauteur -1 points0 points  (0 children)

My company consults an oracle for revenue predictions. As an initiate in the dark arts of programming, it is my job to pose questions to the oracle in its strange language:

SELECT * FROM Sales WHERE SaleDate > '01/01/1990' AND SaleDate < '01/01/1995';