I just don't see how it is that we get from here to there.
Well, yes, it's much more easily said than done.
The U.S. doesn't get any credit in the Arab
world for [reining in Israel], but it is true
all the same.
"It could've been worse" is not really a
moral high ground.
Arafat is clearly not interested in peace. Not only would peace be a threat to his life, but it would also make him largely redundant as a player on the world stage.
I think Arafat is not Osama bin Laden, though.
I think he is pragmatic enough to deal, so the
question is what does Arafat want. I think
the answer is that he wants a viable
Palestine. This means a Palestine that can
defend itself (as scary as that might be to
Israel). This means a Palestine that has some
sort of economy, communications infrastructure,
and transportation. This means a Palestine
that can potentially threaten Israel, but
won't.
Basically, I think the obsession with
maximizing the economic, political, and
military gap breeds the exact security
nightmares facing Israel today. Now, a
Canada-US friendliness may not be possible
to achieve in five hundred years, but as
much as the English, French, and Germans
seem to dislike each other, war between any
two of them is just as terribly unlikely as
it was reality just sixty years ago.
Israel could very well see the end of U.S. support as a reason to push the Palestinians out of their country once and for all. If they lost U.S. support they would have very little to lose with such an action.
You say this like the US is being blackmailed
by Israel, holding Palestinians as hostages.
First of all, I doubt that this accurately
characterizes the relationship, and secondly,
if it was true the US should treat Israel like
any other rogue state. Such a "fear" certainly
should not result in billions in aid and arms
sales, because they are not your friends.
So what would you have the U.S. do to clear
up this issue? What is the answer?
I'm almost sure that there is no single answer,
and I can see and understand your frustration.
In the short term, Israel and the US should
prosecute terrorists anywhere as if they were
at home. That is, raiding a hideout with
special forces is an act against terrorism,
but blowing the house up with rockets fired
from an attack helicopter is not. In other
words, something between police and military
action, with as much concern for non-citizen
human rights as possible. When you have to
legally arrest a terrorist on US soil, but can
just blow his car up in Yemen, are you really
a believer in human rights?
Another possibility is to prove with deeds
that the criticisms are unfounded. For
example, what if Bush somehow ensures that
US oil companies don't profit from Iraq after
the war? That's speak louder than anything.
In the medium term, the Palestinians need a
state. I really don't see any lasting peace
as long as this issue is at least an excuse
for militants. Israel has systematically
neutralized its nearest neighbors, seeking
security by surrounding itself with buffer
zones. That just won't work, especially when
Israelis are settling in those buffer zones,
in effect expanding Israel.
In the long term, the US must act on principle.
It's one thing to invade a country with a
brutal dictator. It's another thing to invade
only such countries with no nuclear weapons
and are Arab and Muslim, while treating another
such country almost with kid gloves. I'm
almost convinced that Iraq is paying North
Korea to make noise, but the truth is still
that it highlights double standards in US
foreign policy. The fewer such double
standards, the better.
The US also needs to align itself with,
for the lack of a better term, good people.
The most terrible political moves like the
CIA overthrowing some regime are mainly in
the past now. However, the US still has
many dubious "allies". The world will judge
who you are by who your friends are.
Finally, patience is required. It seems
that every other US president wants to be
the one to bring peace to the Middle East.
It's not going to happen that quickly, but
we should still take steps in the right
direction.
There's nothing so annoying as somebody else
telling me how to think. Whether or not this
is the message that the writer or director
intended to convey, each person will leave
the theater with a unique insight shaped by
the resonance of their life experiences with
the story. Each such insight is just as
valuable and valid as the writer's or the
director's.
The beauty and freedom of art is that
appreciation is left to the beholder. What
you're doing is propaganda, so cut it out.
When the U.S. gives aid they are pretty much forced to do so through the existing government. One of the primary reasons that third-world countries stay poor is due to government corruption.
This is a very real and very difficult problem.
In the most anarchic areas, such as Somalia,
the US sent in 20,000 Marines to oversee food
distribution, and the operation is widely
considered a success. Somalians were reported
to be grateful and friendly until the US
started to intervene with local politics.
Obviously, in a "real" country, this is not
possible, but there are still ways to keep
these people relatively honest. Send
inspectors. Give them foodstuff
instead of money. Don't establish military
bases (which essentially helps a local despot
pay for defense).
However, hating the United States and driving planes into our buildings are clearly two separate things.
There's a fundamental point here to be made.
You consider terrorism as a morally distinct
act from war. Historically, except for the
last two or three decades, civilians have
always been targets. Genghis Khan's armies
would force enemy civilians to march in front
of his troops when attacking a castle, to
make it difficult for the defenders to use
archers. Just sixty years ago, two cities
were obliterated in an instant with hundreds
of thousands of civilians, by the US. Those
who consider the nuclear attack on Hiroshima
and Nagasaki as moral cannot then consider a
terrorist attack to be immoral by nature.
Put another way, just because you recently got
the ability to win (not just fight) wars
without excessive civilian casualties doesn't
mean you have the moral right to judge parties
who don't have this technology. Yes, terrorists
can restrict themselves to attacking US military
bases, but they won't win that way! Similarly,
nobody has a right to tell the US that it can
only use expensive smart weapons, especially if
that'll cost the war.
I expect countries, no matter what their personal beliefs, to help us stop terrorists.
Terrorism is a lot like conventional war,
in the sense that terrorists really aren't
a real danger to somebody who isn't their
enemy. I'm not sure that anybody else really
has the responsibility to help you stop
terrorism.
The one other minor point that I would like to make is that it wasn't the UN/US that started the Jewish migration to Palestine.
That is correct. I oversimplified to show the
party that actually accomplished it. The UK
and the League of Nations can obviously not be
expected to establish Palestine today.
Do you honestly think that this would cause the Muslim fundamentalists to start liking the US?
I don't know if I mentioned it in this thread,
but there's no way a fundamentalist can change
his mind. That's almost by definition.
What you want to accomplish is a more moderate
"Arab street", in which these criminals cannot
hide and operate. If your neighbor is unusually
racist, for example, and starts to stock barrels
and barrels of gasoline in the
backyard, you'll probably alert the police.
If you were so sympathetic to their cause that
you might as well have joined them, then you
probably would keep quiet. Make the Middle
East as hostile to terrorism as suburban
America.
I am simply saying that appeasement is not a viable option.
That's right, it's not. The al Qaeda is a
short term threat, and must be dealt with using
short term methods like police action and war.
Arab and Muslim distrust (to put it lightly) is
a long term threat that will generate more
al Qaedas, and must be dealt with using longer
term methods like actually acting honorably
and fairly. Palestine is one key issue that
will test this.
"Sometimes it's about what a bad person Saddam Hussein is, sometimes it's about terrorism, sometimes it's about WMDs, and now it's about what he might (probably will?) do to the Kurds if the no-fly zone was scrapped?"
Have you considered that it's all of the above?
Then why has the Bush government kept wavering
back and forth between "regime change" and
"WMD"? If it's really about justice (the
Saddam Hussein bad person excuse), then "regime
change" is not a negotiable option, but almost
a social responsibility of a sole superpower.
If it's about WMDs, then why does it have to be
right now?
Abdicating its right to defend itself from threat from abroad to the UN, however, would be a crime.
The point is, you do what you have to do, but
quit quoting the UN only where it's convenient.
Either UN resolutions are "sacred", in which
case both the US and Israel should be punished,
or it's not, in which case Iraq's not terribly
guilty of violating them.
Think of the people who quote only convenient
portions of the Bible.
The UN is a joke.
Democracies are all jokes. They are, by
definition, average in intelligence. They
move slowly, and often waver back and forth.
Compared to a dictatorship, democracies are
terribly inefficient.
The problem with a dictatorship (or in this
case, honoring the interests of one country
alone) is the potential for abuse. The US
is internally built on a system of checks and
balances, but wants to operate free of that
outside. That's what bothers people.
It doesn't matter that the U.S. spends billions trying to help the people. It is simply too easy for the leaders in these places to distract attention from their own bad behavior by blaming the peoples problems on the U.S.
The problem is that a lot of those billions are
pocketed by local leaders who at least nominally
support the US. The US government is well aware
of this sort of corruption, and has continued to
fund leaders like this all over the world to
counter the Soviet threat.
The point is, to counter an immediate Soviet
threat, the US abandoned its own principles of
justice and democracy, and helped create some
of its own problems today.
The fact that they chose a criminal and a terrorist [Arafat] to negotiate can hardly be blamed on the United States.
You mean the CIA didn't stuff ballots to get
him elected. What I'm talking about is by
ignoring the plight of the Palestinian people,
the US ensured that terrorism (the 80s version,
involving considerably fewer suicide attacks
and more politics) became the only way these
people were heard. Since Arafat's tactics
seemed to be what got them on the map, electing
him was natural.
Now, consider if the US had dealt fairly with
a moderate Palestinian leader, say in 1965.
To put it in the US context, if you ignore
Martin Luther King, you ensure that Malcolm X
becomes more powerful.
All I know is that there seemed to be a lot of Palestinians dancing in the street after 9/11.
There are a lot of people protesting in the
streets right now against the war. Why do you
pay more attention to one than the other?
There will always be extremists. The real
battle is over the minds and hearts of the
majority of people.
The people [who attack my friends and family] could either hand over the guilty parties, or they would all suffer the consequences.
This is what a street gang might tell another,
not what the police might tell a neighborhood.
Why do you wonder why you're perceived as a
bully?
The Israelis would be happy to stop firing rockets into Palestinian homes if they thought that this would help.
Okay, you need to examine Israeli politics a
little more closely. Just like in the US,
there are hawks who derive power from conflict,
and doves who derive power from peace. The
hawks, by self interest, may not want the war
to stop. I'm not accusing them of continuing
the war against the welfare of Israel (though
some would), but at least consider that they
may not be "happy to stop".
It is easy to simply blame the Israelis, but blaming the Jews for moving back to Israel doesn't solve the problem
Of course not. Giving Palestinians the same
thing you gave the Israelis, however, will go
a long way to solve that problem. The US/UN
literally carved out Israel on the map, against
the wishes and armies of every other Arab
nation, and supplied a newborn Israel with
weapons to fight off the invaders. It is
highly likely that the Israeli nuclear program
has American fingerprints on it.
So if the US/UN can do all that, why can't it
create a Palestine against the wishes of mere
Israel? I don't think it's unfair to conclude
that the US just doesn't want to.
Now, how exactly does the U.S. defend itself from that sort of slander? The answer is that they can't.
First of all, it's not all just slander. The
US must learn to sort through all opinions,
and separate real criticism from slander. One
good example is how the US government is now
basically redefining who its friends are, based
on what they're saying about the war. That's
the wrong way around, because you should first
understand who your friends are, and listen
more carefully when they criticize you.
Secondly, no amount of slander should change
the actions of a principled nation. I'm sure
you're not saying that the US should act
poorly just because it has no chance (and I
don't agree with that either) of being
understood.
the Security Council of the UN [...] has passed over a dozen resolutions over the last decade or so demanding that Iraq disarm
Uh, ignoring the UN is more of a norm than an
exception. Israel is in violation of lots of
resolutions, and the US is currently in violation
of the spirit of one.
The US is also invading a UN member nation
without the explicit authorization of the
Security Council. Do you realize that?
what happens when Saddam rolls in and stamps out the Kurds - the world would chastise us for abandoning them to a brutish dictator.
Supporters of the war keep changing the topic.
Sometimes it's about what a bad person Saddam
Hussein is, sometimes it's about terrorism,
sometimes it's about WMDs, and now it's about
what he might (probably will?) do to the
Kurds if the no-fly zone was scrapped?
Do you at least realize that the world is
trying to understand the precise motive of
the invasion, and are coming to the inevitable
conclusion that the US is just looking for an
excuse?
if this were really all about oil, then why not simply buy Iraqi oil?
I didn't say it was about oil. Only a few people
in the US government can know that for certain.
I said that it looks a lot like it's about oil,
and the US doesn't have the benefit of the doubt
right now.
Secondly, it's not about the ability to buy
oil that people are talking about. It's about the ability to control
production. Notice there's something called
OPEC, a monopoly that artificially controls
prices and production levels.
I find it strange how you go from:
It is simply too easy for local leaders to blame those "Yankee Devils" and cast the blame for their problems on us.
to:
No matter what we do we are criticized.
when there are many things to think about
between the two. Do you think maybe it's
"easy to blame the US" because the US did
some things that were unjust? Do you really
think that it doesn't matter if you treat
people fairly or not?
Arafat nixes the deal (because he is an idiot and a terrorist) and somehow it's the U.S.'s fault.
I'm not an expert of the Camp David accord,
but what I do know is that while on paper
the Palestinians get 97% or whatever of what
they wanted, the territories are not
contiguous, separated by corridors of
Israeli control. If I'm not mistaken, Arafat was
privately known to have said that he'd be
a dead man if he goes home with this deal.
Yes, Arafat was (and maybe still is) a
terrorist, but he didn't live this long in
the Mossad's crosshairs by being an idiot.
When the Palestinians stop talking about genocide then we can start talking about fair.
How many Palestinians are talking about driving
the Jews into the sea? Are you going to let
extremists (of either side), who derive power
precisely from conflict, postpone peace
as long as they want?
It's easy for the Europeans to talk about peace, they aren't in the crosshairs of these terrorist groups.
Doesn't ever cross your mind why not? How
about the fact that European-built helicopters
are not the ones firing rockets into Palestinian
homes, killing alleged terrorists without the
benefit of a trial?
Now, so that I end on a constructive note, I
think it does matter what you do. I think
that if you treat people fairly, they will
ultimately understand and reciprocate. I
think that to be admired is a better way to
achieve security than to be feared.
Pretending that we can simply be nice to the folks in the middle east and have the whole situation blow over is the worst sort of naivety.
You can't "simply be nice" to defuse the al
Qaeda threat. The hatred is deep-rooted and
fundamental.
However, you can in fact "simply be nice" to
defuse future threats. Whatever the real
motive of the US acting in Iraq right now
(and not when Iraq used chemical weapons
against civilians, or even when it invaded
Kuwait), a lot of people think it has to do
with oil.
Bush and Cheney have deep connections to the
oil business. Over the past months, Bush has
swung back and forth between "regime change"
and "WMD", seemingly looking for an excuse
more than operating on some real principle.
In the speech right before the war,
Bush specifically warned Iraqi troops from
using WMDs and destroying oil wells (as if
the two acts are really comparable!). After
the war, American oil companies are expected
to take over the contracts currently promised
to other countries. None of these prove that
it's a War for Oil, but Americans need to
understand that they don't have the benefit
of the doubt. Sprinkle a liberal bit of
rhetoric about "better respected and feared
than liked" and the fact that America is
unabashedly defining other countries as "good"
or "evil", and you have a clearly perceptible
national attitude of a bully.
If that is not true, then America needs to
work on its image. This is not done by
dropping a million leaflets, but by acting
fairly (for example, in Palestine), by
bending over backwards to hear criticisms,
and by operating on principles and not
convenience (look around at some of the
countries supporting the war right now).
If the sole superpower wants a world where
fear reigns supreme, it will in fact get
such a world.
Consider for a moment the irony of terrorists attacking a protest of the war in Iraq.
Sure. What makes you think Islamic terrorists
want the war to end? Here's the Great Christian Devil fighting a secular Arabic power -
no better show on earth! I wouldn't be
surprised if they secretly wish that America
mis-bomb as many Iraqi civilians and mosques
as possible.
there are dozens of other countries supporting the US.
According to CNN, 30 out of 191 UN members
support the US war. Another 15 support the US,
but do not wish to be named. Many of these 30
will not be sending any substantial number of
combat troops into Iraq. There is also
considerable dissent within these 30 countries,
as well as inside the US itself.
software is probably the least capital intensive industry.
This is true, but two of the four companies
cited are Intel and Sun. Competing with either
requires great capital.
While software development is relatively cheap,
software marketing is just as expensive. It's
very difficult to build a trusted brand name,
regardless of technical prowess. American
software companies have a large domestic market,
and many smaller foreign markets. An Indian
company would have a relatively small domestic
market, and have to try to break into an
American market, which is obviously that much
harder. You'll also have to contend with a
local market where copyright infringement is
the norm, and Microsoft products are "freely"
available. We're talking about a company that
stared down the US government here, so how do
you think investors will respond if your
business plan involves defeating Microsoft?
Mass marketing requires lots of money.
As for Oracle, their customers are even more
cautious than Microsoft's. Can you imagine
what will happen to a manager who picks the
cheaper DBMS that turns out to perform poorly?
Unless you can show massive capital behind
you, you will not get the trust (how long will
you even be around to support us?) needed to
succeed in this market. Credibility is
purchased with money here.
Don't even look beyond the borders. Apple
has billions of dollars in cash, and, to put
it mildly, a technically sound OS. IBM and
Oracle have been spending heavily promoting
Linux. Who's still installed on nine out
of ten computers shipped?
However, the question is not completely off-base.
It's silly to ask why India or China hasn't
produced a Microsoft or an Intel, because of
the relative lack of capital. A valid
question might be why they haven't produced an
id Software, or even lots of shareware hits.
One possible reason might be that many of the
most enterprising young talents are lured by
superior pay, working for US companies. Again,
money.
Nothing is stopping the next Sun or Microsoft or Oracle or Intel from sprouting up as a home-grown venture in India, or wherever, given the supposed incredible talent and work ethics.
Have you ever considered that "capital" might be
a factor in "capitalism"?
Why should we endorse the tools that would be used to lock down our vitality, while letting every third-world shithole pump out whatever they want?
Because you used to be a third world shithole that
polluted our collective environments, and now it's
somebody else's turn.
If you don't want to participate in the world,
it's understandable. However, try not to play
the victim here. Leadership requires
sacrifices.
We have an unsurpassed system of healthcare.
Don't confuse medical expertise (people fly
here to get operations) with the health care
system (bringing affordable medical care to
everybody), just as you shouldn't confuse
technical expertise (people flying here to
study) with the education system (bringing
affordable education to everybody).
The US leads the world in many areas of
medicine. However, the health care system
is in severe trouble.
Assembly is a bad analogy. I think that
it's much more fun to program in C++ than in assembly
I think you mean that it's more fun overall,
but surely it's a gain-some-lose-some situation.
C++ is inherently more "industrial" than
assembly. Things like self-modifying code
are all but history, despite the innate
elegance (and danger!) of these things.
Few of us ever program hardware directly
anymore, missing out on the thrill of seeing
software instructions actually affecting
something real. Missing out on how little
resources the program consumes.
The good news is that it opens up other
avenues of creativity. Maybe this will
always be true, as you suggest.
Programming per se isn't going to change
much anymore.
I think a revolution is past due, actually.
I'm tired of the low quality.
Specifically, your prepackaged library path
is one obvious possible future, but I don't
really see how bug densities will drop much
more that way. I'm hoping for a much more
automated future where tools are available to
generate application-specific libraries very
easily. Kinda like general purpose ICs versus
ASICs.
Since I'm the one buying computers, software, etc., and not the poor folks in India, I should be the one getting paid to create the stuff.
Insightful, and potentially effective.
Consumer uproar has altered business practices
like child labor in foreign countries.
Unfortunately, people like their products cheap,
and people like their 401k investments to grow
at 8% a year, every year. I think you'll get
everybody to agree, but not many to act.
wonder if tech jobs will become as scarce as those well paying manufacturing jobs of the 50's and 60's (you know, the ones that are now in China, Taiwan, and Mexico)
Just FYI, Taiwan is actually also at the receiving
end of this problem. Standards of living rose
dramatically over the 80s and 90s, so now
a lot of the work have moved to China, Vietnam,
and other countries that offer cheaper labor.
When there is truly a level playing field,
sign me up.
Level playing field? Do you also send your
competition a copy of your source code, so
you can compete fairly?
By and large, American multinationals enter
foreign markets with a million times the
capital of local players. They can afford
to outspend any local player in terms of
advertising, if not something actually
underhanded like pricing below cost or even
bribery. Generally, the only local players
that can still compete are entrenched
monopolies with deep government connections
(who are, needless to say, not really good
for their economies either). Where's the
level playing field in this "global market"?
As for health care and environment in the
third world, remember that the US doesn't
exactly have clean hands here. Rather than
supporting reform and development, the US
routinely supported despots who plundered
their economies. The US is at least
partially responsible for the gap between
rich and poor countries, despite the billions
in foreign aid (which frequently served more
to keep despots in power than anything else).
Not to mention that the US just backed out
of the Kyoto Accord to protect its industrial
polluters.
And now you want a level playing field
against citizens of a poor nation who
finally managed to get a college education.
And you think the playing field isn't level
because they're too poor to demand everything
you want. I think what you really want is an
advantage, not a level playing field.
I'm not saying this is payback. Just that
life isn't really fair, and you (the average
American) haven't really been at the receiving
end of too much injustice until perhaps now, so
don't be too... uh...
Well said. What I was really struggling to get
at is the extrapolation from, for example,
assembly language programming in 1981 to C++
today. In many ways, it's really intellectually
fun to write assembly (the full control, the
really small and tight code, the silly
XOR-to-swap trick) in a way that is not present
or not the same in a higher level language.
Choosing C++, in one sense, is already valuing
the function (easier to write and debug, more
practical for bigger programs) over the
"sheer artistry".
Point is, people aren't writing assembly
programs now, even for small projects where it
is still feasible. Modern operating systems
don't really have convenient assembly language
bindings, and tools are falling behind
(assembly language IDE, anyone?). Yes, I
technically still *can* do that, but I'm
not likely to.
Now fast forward 50 or 100 years, where the
tools are optimized to write billion-line
programs. It may not take away all of the
intellectual stimulation and creativity, but
it will surely take away some and change
others (but possibly add new ones!). Visions
that far are obviously highly variant, and I'm
not really trying to change your mind, just
drawing a picture.
no one can take programming away from you
Well, I wasn't really talking about me, or any
other motivated individual. I'm talking about
the industry and the community, which I think
will head towards a more mature and less
interesting future. Yes, once in a while
somebody will still build a really fun and
innovative house, but most of them will just
be bland. I'm not really saddened by that
future. It's the price of maturity.
one major principle of physical engineering is, build a prototype and see if it works.
I am by no means discounting testing. In fact,
I didn't mention it because I was taking it as
a given. I'm not proposing that we ship small
programs by manual inspection and no testing!
Well-crafted test cases remains a very good way
of flushing out bugs, even in small programs.
I think your concept of proving the code with something akin to a mathematical proof insinuates an artificial difficulty that is not necessary. Even engineers in physical disciplines don't rely entirely on mathematics.
This is true, but whatever they're building
must still be theoretically (mathematically)
sound. I will be rather upset if somebody
builds me a house that seems to stand up,
but theoretically shouldn't.
Software is also different in the sense that
it can in fact be made infallible, in theory.
However, the most important concept here is
that testing can only show the presence of
bugs, not its absence. It is a fundamentally
flawed activity, when it comes to guaranteeing
that it is free of bugs. (Where it does work,
however, it is very very helpful.)
if you have the patience to do it, you CAN find most (maybe not all -- maybe one or two will surface later) bugs in your software
Sure, that's where we are today. What I'm
trying to point out is that, if the code is
small enough, we can actually get to zero.
Software has the opportunity of achieving
mathematical perfection, being susceptible
only to hardware faults. Yet we routinely
see hardware that's more reliable than
software!
Another thing I've been trying to imply all
along is, over perhaps the next 100 years,
the invention of proofing tools to eliminate
every error except specification errors.
The infinite patience and higher speed of
computers will be what brings "perfection"
beyond the magic size we've talked about.
I just don't like the way people come out every month or so with some totally new way of doing things and claim it changes everything and we can ditch all the old ways.
This is, in fact, a symptom of the youth and
immaturity of the industry. A mature industry
is terribly reluctant to change, because it
knows that 99.99% of proposed changes are
pointless or counterproductive.
First of all, someone will have to write the components.
Yes, but there will be very few of them
needed. Like assembly language programmers.
Second, there will always be academia, where pure research isn't going to involve gluing controls together on a form.
This is the same academe that failed to
protect the industry from the patenting of
basic techniques.;)
Third, don't write off the open source community, which is motivated by the fun of programming
Sure, but even open source still has to be
competitive with the state of the art, both
in terms of bug count and features. The
most vibrant open source projects are the
competitive ones. So, when the state of the
art is a trillion lines of code (and the only
way to put that much together is boring),
there may simply be no fun way to program
such a beast.
your example of Linux being 30,000,000 lines of code is bad
You're probably right. I found that on a web
site, but now I'm not so sure if it meant the
kernel or an entire distro.
You're stuck on the idea that one person can only understand 1,000 lines of code. Where the heck did you get that figure?
The mental picture I'd like to convey is the author
emerging from the project, completely convinced
that there are zero bugs. Any other expert who
has not seen the code can read it (taking weeks
or months as necessary), and also emerge
completely convinced that there are zero bugs.
Zero. This level is trivial for a "hello
world" program, and possible for bigger
programs, but unattainable past a certain
size today. The 1 or 5 KLOC I was tossing
around is this magic size, where something
akin to a mathematical proof is still humanly
possible.
OOP, Components, and so on were all invented to solve exactly this problem.
But nothing has delivered on the promise.
Don't get me wrong. The movement from
spaghetti to structured significantly reduced
the number of bugs in large systems, and
probably from structured to OOP as well.
However, the inherent complexity introduced
could not be completely solved. Each object
you define hid details, but also introduced
risks, because the interactions between modules
are still defined in fallible (and often plain
vague) ways. The tough bugs in structured or
OOP systems today are typically subtle
interaction bugs, where one module does
something just slightly unexpected by another.
I don't think you're actually disagreeing with
my original point that we're not exactly at
the end of the evolution of software engineering
practice.
Eventually, you CAN probably work all the bugs out, but you have to have more patience than you'll find in private industry.
You are attributing bugs to economics, which
may very well be true. However, absent proof
I am doubting that it's possible at all to
achieve zero bugs past the "magic size". Note
that while open source software (which do not
have the commercial pressures) are shown by
some to have fewer bugs, it's not zero.
Look at the space industry. The Space Shuttle
flight control, IIRC, is really two pieces of
software developed to identical specs, voting
in real time to decide what to do. IOW, NASA
decided to pay two groups (not cheaply, either),
rather than pay one group double. That
indicates that they don't think even twice
the money will achieve the safety afforded by
an independent reimplementation.
I respect your view of the future; you seem very optimistic about it.
Here you are completely mistaken. Software
engineering is creative and challenging today.
The future I foresee is essentially blue
collar, involving assembly more than creation.
It's a step forward for the science, but I'm
not sure practitioners will have as much fun.
I'm personally not looking forward to that.:)
The "Copyright Basics" page of the US Copyright
Office lists the following as not copyrightable:
Titles, names, short phrases, and slogans; familiar symbols or designs; mere variations of typographic ornamentation, lettering, or coloring; mere listings of ingredients or contents
Ideas, procedures, methods, systems, processes, concepts, principles, discoveries, or devices, as distinguished from a description, explanation, or illustration
Works consisting entirely of information that is common property and containing no original authorship (for example: standard calendars, height and weight charts, tape measures and rulers, and lists or tables taken from public documents or other common sources)
I don't see how "prices" or "facts" immediately
fit in, and I don't have the ability to
interpret the actual law, so I'll stop right
here.
In any case, I don't feel too much sympathy for
somebody who plucks airfares from airline sites.
The accuracy is questionable (unlike a real
travel agent site, who can in fact realize the
price for you), to say the least.
If what you say is true, can I just rip off the
numbers from, say, Tom's Hardware, and republish
benchmarks with my own text?
Imagine if you write excellent articles, which
indirectly pays for your website, and another
(probably bigger) website just copies your
stuff without paying you or even crediting you.
The circumstances are not exactly the same,
but the law is basically the same. Past fair
use (such as quoting a paragraph in a review),
you need permission to republish.
Actually I've heard that the limit of what one person can reasonably be expected to maintain is 10,000 lines of code
10 KLOC probably represents an absolute peak,
where you have a straightforward project and a
very experienced programmer.
look at the commercial game industry. Those projects are huge
Uh, not really. They take up a lot of space on
the CD-ROM, but the source code is not likely
that big. The original Doom weighed in at
about 47 KLOC, not counting comments. Linux
is estimated to be some 30 MLOC, NT 5 at some
20 MLOC, Win2K at 35 MLOC, and XP at 40 MLOC.
Games also compete in the most demanding sector
of private computing. You'll find that general
applications are ironically held to lower
standards, and ship with correspondingly more
bugs.
I don't think the quality of a program drops
automatically based on size
I was probably not being clear enough. What
I really meant was that the risk of bugs
rises dramatically as the size
exceeds one person's abilities. There are
known ways of mitigating such risks, but it's
essentially impossible to write a bug-free
1 MLOC program, even if you assign a thousand
programmers each capable of writing a bug-free
1 KLOC program. An organization that does not
apply good development methods, as you pointed
out, will realize more of these risks.
I don't think the construction analogy holds up, though. Writing software is a very slippery endeavour, dependent not only on knowledge but on inspiration as well.
...as far as we know how to write software today.
It's entirely possible that in a hundred years,
software development will be as mundane,
repeatable, and predictable as building a
house. A house, nevermind a skyscraper, is
a fairly complex thing. We're just very good
at building them now.
Imagine early construction, where you're not
really sure where that suitable tree is in the
forest. I expect schedules to slip somewhat
back then.
Well, yes, it's much more easily said than done.
The U.S. doesn't get any credit in the Arab world for [reining in Israel], but it is true all the same.
"It could've been worse" is not really a moral high ground.
Arafat is clearly not interested in peace. Not only would peace be a threat to his life, but it would also make him largely redundant as a player on the world stage.
I think Arafat is not Osama bin Laden, though. I think he is pragmatic enough to deal, so the question is what does Arafat want. I think the answer is that he wants a viable Palestine. This means a Palestine that can defend itself (as scary as that might be to Israel). This means a Palestine that has some sort of economy, communications infrastructure, and transportation. This means a Palestine that can potentially threaten Israel, but won't.
Basically, I think the obsession with maximizing the economic, political, and military gap breeds the exact security nightmares facing Israel today. Now, a Canada-US friendliness may not be possible to achieve in five hundred years, but as much as the English, French, and Germans seem to dislike each other, war between any two of them is just as terribly unlikely as it was reality just sixty years ago.
Israel could very well see the end of U.S. support as a reason to push the Palestinians out of their country once and for all. If they lost U.S. support they would have very little to lose with such an action.
You say this like the US is being blackmailed by Israel, holding Palestinians as hostages. First of all, I doubt that this accurately characterizes the relationship, and secondly, if it was true the US should treat Israel like any other rogue state. Such a "fear" certainly should not result in billions in aid and arms sales, because they are not your friends.
So what would you have the U.S. do to clear up this issue? What is the answer?
I'm almost sure that there is no single answer, and I can see and understand your frustration.
In the short term, Israel and the US should prosecute terrorists anywhere as if they were at home. That is, raiding a hideout with special forces is an act against terrorism, but blowing the house up with rockets fired from an attack helicopter is not. In other words, something between police and military action, with as much concern for non-citizen human rights as possible. When you have to legally arrest a terrorist on US soil, but can just blow his car up in Yemen, are you really a believer in human rights?
Another possibility is to prove with deeds that the criticisms are unfounded. For example, what if Bush somehow ensures that US oil companies don't profit from Iraq after the war? That's speak louder than anything.
In the medium term, the Palestinians need a state. I really don't see any lasting peace as long as this issue is at least an excuse for militants. Israel has systematically neutralized its nearest neighbors, seeking security by surrounding itself with buffer zones. That just won't work, especially when Israelis are settling in those buffer zones, in effect expanding Israel.
In the long term, the US must act on principle. It's one thing to invade a country with a brutal dictator. It's another thing to invade only such countries with no nuclear weapons and are Arab and Muslim, while treating another such country almost with kid gloves. I'm almost convinced that Iraq is paying North Korea to make noise, but the truth is still that it highlights double standards in US foreign policy. The fewer such double standards, the better. The US also needs to align itself with, for the lack of a better term, good people. The most terrible political moves like the CIA overthrowing some regime are mainly in the past now. However, the US still has many dubious "allies". The world will judge who you are by who your friends are.
Finally, patience is required. It seems that every other US president wants to be the one to bring peace to the Middle East. It's not going to happen that quickly, but we should still take steps in the right direction.
There's nothing so annoying as somebody else telling me how to think. Whether or not this is the message that the writer or director intended to convey, each person will leave the theater with a unique insight shaped by the resonance of their life experiences with the story. Each such insight is just as valuable and valid as the writer's or the director's.
The beauty and freedom of art is that appreciation is left to the beholder. What you're doing is propaganda, so cut it out.
This is a very real and very difficult problem. In the most anarchic areas, such as Somalia, the US sent in 20,000 Marines to oversee food distribution, and the operation is widely considered a success. Somalians were reported to be grateful and friendly until the US started to intervene with local politics.
Obviously, in a "real" country, this is not possible, but there are still ways to keep these people relatively honest. Send inspectors. Give them foodstuff instead of money. Don't establish military bases (which essentially helps a local despot pay for defense).
However, hating the United States and driving planes into our buildings are clearly two separate things.
There's a fundamental point here to be made. You consider terrorism as a morally distinct act from war. Historically, except for the last two or three decades, civilians have always been targets. Genghis Khan's armies would force enemy civilians to march in front of his troops when attacking a castle, to make it difficult for the defenders to use archers. Just sixty years ago, two cities were obliterated in an instant with hundreds of thousands of civilians, by the US. Those who consider the nuclear attack on Hiroshima and Nagasaki as moral cannot then consider a terrorist attack to be immoral by nature.
Put another way, just because you recently got the ability to win (not just fight) wars without excessive civilian casualties doesn't mean you have the moral right to judge parties who don't have this technology. Yes, terrorists can restrict themselves to attacking US military bases, but they won't win that way! Similarly, nobody has a right to tell the US that it can only use expensive smart weapons, especially if that'll cost the war.
I expect countries, no matter what their personal beliefs, to help us stop terrorists.
Terrorism is a lot like conventional war, in the sense that terrorists really aren't a real danger to somebody who isn't their enemy. I'm not sure that anybody else really has the responsibility to help you stop terrorism.
The one other minor point that I would like to make is that it wasn't the UN/US that started the Jewish migration to Palestine.
That is correct. I oversimplified to show the party that actually accomplished it. The UK and the League of Nations can obviously not be expected to establish Palestine today.
Do you honestly think that this would cause the Muslim fundamentalists to start liking the US?
I don't know if I mentioned it in this thread, but there's no way a fundamentalist can change his mind. That's almost by definition.
What you want to accomplish is a more moderate "Arab street", in which these criminals cannot hide and operate. If your neighbor is unusually racist, for example, and starts to stock barrels and barrels of gasoline in the backyard, you'll probably alert the police. If you were so sympathetic to their cause that you might as well have joined them, then you probably would keep quiet. Make the Middle East as hostile to terrorism as suburban America.
I am simply saying that appeasement is not a viable option.
That's right, it's not. The al Qaeda is a short term threat, and must be dealt with using short term methods like police action and war. Arab and Muslim distrust (to put it lightly) is a long term threat that will generate more al Qaedas, and must be dealt with using longer term methods like actually acting honorably and fairly. Palestine is one key issue that will test this.
Have you considered that it's all of the above?
Then why has the Bush government kept wavering back and forth between "regime change" and "WMD"? If it's really about justice (the Saddam Hussein bad person excuse), then "regime change" is not a negotiable option, but almost a social responsibility of a sole superpower. If it's about WMDs, then why does it have to be right now?
Abdicating its right to defend itself from threat from abroad to the UN, however, would be a crime.
The point is, you do what you have to do, but quit quoting the UN only where it's convenient. Either UN resolutions are "sacred", in which case both the US and Israel should be punished, or it's not, in which case Iraq's not terribly guilty of violating them.
Think of the people who quote only convenient portions of the Bible.
The UN is a joke.
Democracies are all jokes. They are, by definition, average in intelligence. They move slowly, and often waver back and forth. Compared to a dictatorship, democracies are terribly inefficient.
The problem with a dictatorship (or in this case, honoring the interests of one country alone) is the potential for abuse. The US is internally built on a system of checks and balances, but wants to operate free of that outside. That's what bothers people.
The problem is that a lot of those billions are pocketed by local leaders who at least nominally support the US. The US government is well aware of this sort of corruption, and has continued to fund leaders like this all over the world to counter the Soviet threat.
The point is, to counter an immediate Soviet threat, the US abandoned its own principles of justice and democracy, and helped create some of its own problems today.
The fact that they chose a criminal and a terrorist [Arafat] to negotiate can hardly be blamed on the United States.
You mean the CIA didn't stuff ballots to get him elected. What I'm talking about is by ignoring the plight of the Palestinian people, the US ensured that terrorism (the 80s version, involving considerably fewer suicide attacks and more politics) became the only way these people were heard. Since Arafat's tactics seemed to be what got them on the map, electing him was natural.
Now, consider if the US had dealt fairly with a moderate Palestinian leader, say in 1965. To put it in the US context, if you ignore Martin Luther King, you ensure that Malcolm X becomes more powerful.
All I know is that there seemed to be a lot of Palestinians dancing in the street after 9/11.
There are a lot of people protesting in the streets right now against the war. Why do you pay more attention to one than the other? There will always be extremists. The real battle is over the minds and hearts of the majority of people.
The people [who attack my friends and family] could either hand over the guilty parties, or they would all suffer the consequences.
This is what a street gang might tell another, not what the police might tell a neighborhood. Why do you wonder why you're perceived as a bully?
The Israelis would be happy to stop firing rockets into Palestinian homes if they thought that this would help.
Okay, you need to examine Israeli politics a little more closely. Just like in the US, there are hawks who derive power from conflict, and doves who derive power from peace. The hawks, by self interest, may not want the war to stop. I'm not accusing them of continuing the war against the welfare of Israel (though some would), but at least consider that they may not be "happy to stop".
It is easy to simply blame the Israelis, but blaming the Jews for moving back to Israel doesn't solve the problem
Of course not. Giving Palestinians the same thing you gave the Israelis, however, will go a long way to solve that problem. The US/UN literally carved out Israel on the map, against the wishes and armies of every other Arab nation, and supplied a newborn Israel with weapons to fight off the invaders. It is highly likely that the Israeli nuclear program has American fingerprints on it.
So if the US/UN can do all that, why can't it create a Palestine against the wishes of mere Israel? I don't think it's unfair to conclude that the US just doesn't want to.
Now, how exactly does the U.S. defend itself from that sort of slander? The answer is that they can't.
First of all, it's not all just slander. The US must learn to sort through all opinions, and separate real criticism from slander. One good example is how the US government is now basically redefining who its friends are, based on what they're saying about the war. That's the wrong way around, because you should first understand who your friends are, and listen more carefully when they criticize you.
Secondly, no amount of slander should change the actions of a principled nation. I'm sure you're not saying that the US should act poorly just because it has no chance (and I don't agree with that either) of being understood.
Uh, ignoring the UN is more of a norm than an exception. Israel is in violation of lots of resolutions, and the US is currently in violation of the spirit of one.
The US is also invading a UN member nation without the explicit authorization of the Security Council. Do you realize that?
what happens when Saddam rolls in and stamps out the Kurds - the world would chastise us for abandoning them to a brutish dictator.
Supporters of the war keep changing the topic. Sometimes it's about what a bad person Saddam Hussein is, sometimes it's about terrorism, sometimes it's about WMDs, and now it's about what he might (probably will?) do to the Kurds if the no-fly zone was scrapped?
Do you at least realize that the world is trying to understand the precise motive of the invasion, and are coming to the inevitable conclusion that the US is just looking for an excuse?
I didn't say it was about oil. Only a few people in the US government can know that for certain. I said that it looks a lot like it's about oil, and the US doesn't have the benefit of the doubt right now.
Secondly, it's not about the ability to buy oil that people are talking about. It's about the ability to control production. Notice there's something called OPEC, a monopoly that artificially controls prices and production levels.
I find it strange how you go from:
It is simply too easy for local leaders to blame those "Yankee Devils" and cast the blame for their problems on us.
to:
No matter what we do we are criticized.
when there are many things to think about between the two. Do you think maybe it's "easy to blame the US" because the US did some things that were unjust? Do you really think that it doesn't matter if you treat people fairly or not?
Arafat nixes the deal (because he is an idiot and a terrorist) and somehow it's the U.S.'s fault.
I'm not an expert of the Camp David accord, but what I do know is that while on paper the Palestinians get 97% or whatever of what they wanted, the territories are not contiguous, separated by corridors of Israeli control. If I'm not mistaken, Arafat was privately known to have said that he'd be a dead man if he goes home with this deal. Yes, Arafat was (and maybe still is) a terrorist, but he didn't live this long in the Mossad's crosshairs by being an idiot.
When the Palestinians stop talking about genocide then we can start talking about fair.
How many Palestinians are talking about driving the Jews into the sea? Are you going to let extremists (of either side), who derive power precisely from conflict, postpone peace as long as they want?
It's easy for the Europeans to talk about peace, they aren't in the crosshairs of these terrorist groups.
Doesn't ever cross your mind why not? How about the fact that European-built helicopters are not the ones firing rockets into Palestinian homes, killing alleged terrorists without the benefit of a trial?
Now, so that I end on a constructive note, I think it does matter what you do. I think that if you treat people fairly, they will ultimately understand and reciprocate. I think that to be admired is a better way to achieve security than to be feared.
You can't "simply be nice" to defuse the al Qaeda threat. The hatred is deep-rooted and fundamental.
However, you can in fact "simply be nice" to defuse future threats. Whatever the real motive of the US acting in Iraq right now (and not when Iraq used chemical weapons against civilians, or even when it invaded Kuwait), a lot of people think it has to do with oil.
Bush and Cheney have deep connections to the oil business. Over the past months, Bush has swung back and forth between "regime change" and "WMD", seemingly looking for an excuse more than operating on some real principle. In the speech right before the war, Bush specifically warned Iraqi troops from using WMDs and destroying oil wells (as if the two acts are really comparable!). After the war, American oil companies are expected to take over the contracts currently promised to other countries. None of these prove that it's a War for Oil, but Americans need to understand that they don't have the benefit of the doubt. Sprinkle a liberal bit of rhetoric about "better respected and feared than liked" and the fact that America is unabashedly defining other countries as "good" or "evil", and you have a clearly perceptible national attitude of a bully.
If that is not true, then America needs to work on its image. This is not done by dropping a million leaflets, but by acting fairly (for example, in Palestine), by bending over backwards to hear criticisms, and by operating on principles and not convenience (look around at some of the countries supporting the war right now). If the sole superpower wants a world where fear reigns supreme, it will in fact get such a world.
Sure. What makes you think Islamic terrorists want the war to end? Here's the Great Christian Devil fighting a secular Arabic power - no better show on earth! I wouldn't be surprised if they secretly wish that America mis-bomb as many Iraqi civilians and mosques as possible.
According to CNN, 30 out of 191 UN members support the US war. Another 15 support the US, but do not wish to be named. Many of these 30 will not be sending any substantial number of combat troops into Iraq. There is also considerable dissent within these 30 countries, as well as inside the US itself.
This is true, but two of the four companies cited are Intel and Sun. Competing with either requires great capital.
While software development is relatively cheap, software marketing is just as expensive. It's very difficult to build a trusted brand name, regardless of technical prowess. American software companies have a large domestic market, and many smaller foreign markets. An Indian company would have a relatively small domestic market, and have to try to break into an American market, which is obviously that much harder. You'll also have to contend with a local market where copyright infringement is the norm, and Microsoft products are "freely" available. We're talking about a company that stared down the US government here, so how do you think investors will respond if your business plan involves defeating Microsoft? Mass marketing requires lots of money.
As for Oracle, their customers are even more cautious than Microsoft's. Can you imagine what will happen to a manager who picks the cheaper DBMS that turns out to perform poorly? Unless you can show massive capital behind you, you will not get the trust (how long will you even be around to support us?) needed to succeed in this market. Credibility is purchased with money here.
Don't even look beyond the borders. Apple has billions of dollars in cash, and, to put it mildly, a technically sound OS. IBM and Oracle have been spending heavily promoting Linux. Who's still installed on nine out of ten computers shipped?
However, the question is not completely off-base. It's silly to ask why India or China hasn't produced a Microsoft or an Intel, because of the relative lack of capital. A valid question might be why they haven't produced an id Software, or even lots of shareware hits. One possible reason might be that many of the most enterprising young talents are lured by superior pay, working for US companies. Again, money.
Have you ever considered that "capital" might be a factor in "capitalism"?
Because you used to be a third world shithole that polluted our collective environments, and now it's somebody else's turn.
If you don't want to participate in the world, it's understandable. However, try not to play the victim here. Leadership requires sacrifices.
We have an unsurpassed system of healthcare.
Don't confuse medical expertise (people fly here to get operations) with the health care system (bringing affordable medical care to everybody), just as you shouldn't confuse technical expertise (people flying here to study) with the education system (bringing affordable education to everybody).
The US leads the world in many areas of medicine. However, the health care system is in severe trouble.
This is just version 1, so it's kinda plain. Version 2 will enable writes, so you can modify the weather through the satellite.
I think you mean that it's more fun overall, but surely it's a gain-some-lose-some situation.
C++ is inherently more "industrial" than assembly. Things like self-modifying code are all but history, despite the innate elegance (and danger!) of these things. Few of us ever program hardware directly anymore, missing out on the thrill of seeing software instructions actually affecting something real. Missing out on how little resources the program consumes.
The good news is that it opens up other avenues of creativity. Maybe this will always be true, as you suggest.
Programming per se isn't going to change much anymore.
I think a revolution is past due, actually. I'm tired of the low quality.
Specifically, your prepackaged library path is one obvious possible future, but I don't really see how bug densities will drop much more that way. I'm hoping for a much more automated future where tools are available to generate application-specific libraries very easily. Kinda like general purpose ICs versus ASICs.
Insightful, and potentially effective. Consumer uproar has altered business practices like child labor in foreign countries.
Unfortunately, people like their products cheap, and people like their 401k investments to grow at 8% a year, every year. I think you'll get everybody to agree, but not many to act.
Just FYI, Taiwan is actually also at the receiving end of this problem. Standards of living rose dramatically over the 80s and 90s, so now a lot of the work have moved to China, Vietnam, and other countries that offer cheaper labor.
Level playing field? Do you also send your competition a copy of your source code, so you can compete fairly?
By and large, American multinationals enter foreign markets with a million times the capital of local players. They can afford to outspend any local player in terms of advertising, if not something actually underhanded like pricing below cost or even bribery. Generally, the only local players that can still compete are entrenched monopolies with deep government connections (who are, needless to say, not really good for their economies either). Where's the level playing field in this "global market"?
As for health care and environment in the third world, remember that the US doesn't exactly have clean hands here. Rather than supporting reform and development, the US routinely supported despots who plundered their economies. The US is at least partially responsible for the gap between rich and poor countries, despite the billions in foreign aid (which frequently served more to keep despots in power than anything else). Not to mention that the US just backed out of the Kyoto Accord to protect its industrial polluters.
And now you want a level playing field against citizens of a poor nation who finally managed to get a college education. And you think the playing field isn't level because they're too poor to demand everything you want. I think what you really want is an advantage, not a level playing field.
I'm not saying this is payback. Just that life isn't really fair, and you (the average American) haven't really been at the receiving end of too much injustice until perhaps now, so don't be too... uh...
Whiny.
Well said. What I was really struggling to get at is the extrapolation from, for example, assembly language programming in 1981 to C++ today. In many ways, it's really intellectually fun to write assembly (the full control, the really small and tight code, the silly XOR-to-swap trick) in a way that is not present or not the same in a higher level language. Choosing C++, in one sense, is already valuing the function (easier to write and debug, more practical for bigger programs) over the "sheer artistry".
Point is, people aren't writing assembly programs now, even for small projects where it is still feasible. Modern operating systems don't really have convenient assembly language bindings, and tools are falling behind (assembly language IDE, anyone?). Yes, I technically still *can* do that, but I'm not likely to.
Now fast forward 50 or 100 years, where the tools are optimized to write billion-line programs. It may not take away all of the intellectual stimulation and creativity, but it will surely take away some and change others (but possibly add new ones!). Visions that far are obviously highly variant, and I'm not really trying to change your mind, just drawing a picture.
no one can take programming away from you
Well, I wasn't really talking about me, or any other motivated individual. I'm talking about the industry and the community, which I think will head towards a more mature and less interesting future. Yes, once in a while somebody will still build a really fun and innovative house, but most of them will just be bland. I'm not really saddened by that future. It's the price of maturity.
I am by no means discounting testing. In fact, I didn't mention it because I was taking it as a given. I'm not proposing that we ship small programs by manual inspection and no testing! Well-crafted test cases remains a very good way of flushing out bugs, even in small programs.
I think your concept of proving the code with something akin to a mathematical proof insinuates an artificial difficulty that is not necessary. Even engineers in physical disciplines don't rely entirely on mathematics.
This is true, but whatever they're building must still be theoretically (mathematically) sound. I will be rather upset if somebody builds me a house that seems to stand up, but theoretically shouldn't.
Software is also different in the sense that it can in fact be made infallible, in theory.
However, the most important concept here is that testing can only show the presence of bugs, not its absence. It is a fundamentally flawed activity, when it comes to guaranteeing that it is free of bugs. (Where it does work, however, it is very very helpful.)
if you have the patience to do it, you CAN find most (maybe not all -- maybe one or two will surface later) bugs in your software
Sure, that's where we are today. What I'm trying to point out is that, if the code is small enough, we can actually get to zero. Software has the opportunity of achieving mathematical perfection, being susceptible only to hardware faults. Yet we routinely see hardware that's more reliable than software!
Another thing I've been trying to imply all along is, over perhaps the next 100 years, the invention of proofing tools to eliminate every error except specification errors. The infinite patience and higher speed of computers will be what brings "perfection" beyond the magic size we've talked about.
I just don't like the way people come out every month or so with some totally new way of doing things and claim it changes everything and we can ditch all the old ways.
This is, in fact, a symptom of the youth and immaturity of the industry. A mature industry is terribly reluctant to change, because it knows that 99.99% of proposed changes are pointless or counterproductive.
First of all, someone will have to write the components.
Yes, but there will be very few of them needed. Like assembly language programmers.
Second, there will always be academia, where pure research isn't going to involve gluing controls together on a form.
This is the same academe that failed to protect the industry from the patenting of basic techniques. ;)
Third, don't write off the open source community, which is motivated by the fun of programming
Sure, but even open source still has to be competitive with the state of the art, both in terms of bug count and features. The most vibrant open source projects are the competitive ones. So, when the state of the art is a trillion lines of code (and the only way to put that much together is boring), there may simply be no fun way to program such a beast.
You're probably right. I found that on a web site, but now I'm not so sure if it meant the kernel or an entire distro.
You're stuck on the idea that one person can only understand 1,000 lines of code. Where the heck did you get that figure?
The mental picture I'd like to convey is the author emerging from the project, completely convinced that there are zero bugs. Any other expert who has not seen the code can read it (taking weeks or months as necessary), and also emerge completely convinced that there are zero bugs. Zero. This level is trivial for a "hello world" program, and possible for bigger programs, but unattainable past a certain size today. The 1 or 5 KLOC I was tossing around is this magic size, where something akin to a mathematical proof is still humanly possible.
OOP, Components, and so on were all invented to solve exactly this problem.
But nothing has delivered on the promise.
Don't get me wrong. The movement from spaghetti to structured significantly reduced the number of bugs in large systems, and probably from structured to OOP as well. However, the inherent complexity introduced could not be completely solved. Each object you define hid details, but also introduced risks, because the interactions between modules are still defined in fallible (and often plain vague) ways. The tough bugs in structured or OOP systems today are typically subtle interaction bugs, where one module does something just slightly unexpected by another.
I don't think you're actually disagreeing with my original point that we're not exactly at the end of the evolution of software engineering practice.
Eventually, you CAN probably work all the bugs out, but you have to have more patience than you'll find in private industry.
You are attributing bugs to economics, which may very well be true. However, absent proof I am doubting that it's possible at all to achieve zero bugs past the "magic size". Note that while open source software (which do not have the commercial pressures) are shown by some to have fewer bugs, it's not zero.
Look at the space industry. The Space Shuttle flight control, IIRC, is really two pieces of software developed to identical specs, voting in real time to decide what to do. IOW, NASA decided to pay two groups (not cheaply, either), rather than pay one group double. That indicates that they don't think even twice the money will achieve the safety afforded by an independent reimplementation.
I respect your view of the future; you seem very optimistic about it.
Here you are completely mistaken. Software engineering is creative and challenging today. The future I foresee is essentially blue collar, involving assembly more than creation. It's a step forward for the science, but I'm not sure practitioners will have as much fun. I'm personally not looking forward to that. :)
The "Copyright Basics" page of the US Copyright Office lists the following as not copyrightable:
- Titles, names, short phrases, and slogans; familiar symbols or designs; mere variations of typographic ornamentation, lettering, or coloring; mere listings of ingredients or contents
- Ideas, procedures, methods, systems, processes, concepts, principles, discoveries, or devices, as distinguished from a description, explanation, or illustration
- Works consisting entirely of information that is common property and containing no original authorship (for example: standard calendars, height and weight charts, tape measures and rulers, and lists or tables taken from public documents or other common sources)
I don't see how "prices" or "facts" immediately fit in, and I don't have the ability to interpret the actual law, so I'll stop right here.In any case, I don't feel too much sympathy for somebody who plucks airfares from airline sites. The accuracy is questionable (unlike a real travel agent site, who can in fact realize the price for you), to say the least.
If what you say is true, can I just rip off the numbers from, say, Tom's Hardware, and republish benchmarks with my own text?
Copyright, that's what.
Imagine if you write excellent articles, which indirectly pays for your website, and another (probably bigger) website just copies your stuff without paying you or even crediting you.
The circumstances are not exactly the same, but the law is basically the same. Past fair use (such as quoting a paragraph in a review), you need permission to republish.
10 KLOC probably represents an absolute peak, where you have a straightforward project and a very experienced programmer.
look at the commercial game industry. Those projects are huge
Uh, not really. They take up a lot of space on the CD-ROM, but the source code is not likely that big. The original Doom weighed in at about 47 KLOC, not counting comments. Linux is estimated to be some 30 MLOC, NT 5 at some 20 MLOC, Win2K at 35 MLOC, and XP at 40 MLOC.
Games also compete in the most demanding sector of private computing. You'll find that general applications are ironically held to lower standards, and ship with correspondingly more bugs.
I don't think the quality of a program drops automatically based on size
I was probably not being clear enough. What I really meant was that the risk of bugs rises dramatically as the size exceeds one person's abilities. There are known ways of mitigating such risks, but it's essentially impossible to write a bug-free 1 MLOC program, even if you assign a thousand programmers each capable of writing a bug-free 1 KLOC program. An organization that does not apply good development methods, as you pointed out, will realize more of these risks.
I don't think the construction analogy holds up, though. Writing software is a very slippery endeavour, dependent not only on knowledge but on inspiration as well.
Imagine early construction, where you're not really sure where that suitable tree is in the forest. I expect schedules to slip somewhat back then.