Russ P. a écrit :
On Jan 15, 12:21 pm, Bruno Desthuilliers
<bdesth.quelquech...@free.quelquepart.fr> wrote:

Once again, the important point is that there's a *clear* distinction
between interface and implementation, and that you *shouldn't* mess with
implementation.

If you "*shouldn't* mess with the implementation", then what is wrong
with enforcing that "shouldn't" in the language itself?

Because sometimes you have a legitimate reason to do so and are ok to deal with the possible issues.

Why leave to
coding standards and company policy what can be encoded right into the
language?

Because human are smarter than computers.

Why leave to humans (who are known to err) what can be
automated relatively easily? Isn't that what computers are for?

Error is human. For a real catastrophic failure, it requires a computer.

But what, some people think programmers are stupid, and
so they hire stupid programmers, so they need b&d languages to protect
stupid programmers from themselves - which just doesn't work, since
*nothing* is idiot-proof. Heck, how many Java "OO" programs with dumb
getter/setter pairs for _each and any_ attribute ?

Hey, I share your distaste for Java and C++.

I'm not talking about the languages by themselves, but about the gap between what they pretend to promote and how they are usually used.

All those "setters" and
"getters" are a kludge. I think Python "properties" are a major step
forward here. Just for fun, I checked to see if Scala has properties.
Guess what? Not only does it have them, but they are generated
automatically for all member data. That's even better than Python
properties!

Oh yes ? "Better", really ? So it's better to have a language that automagically breaks encapsulation (requiring an additionnal level of indirection) than a language that do the right thing by default ? I'm afraid I missed the point ???

As I said before, enforced encapsulation may not be appropriate for
every application, but it is definitely appropriate for some.
No. It is appropriate for dummy managers hiring dummy programmers. The
project's size and domain have nothing to do with it.

Let me try to be very clear here. We are dealing with two separate but
related issues. The first is whether data hiding should be added to
Python.

No need to add it, it's already there : every name that starts with an underscore is hidden !-)

 The second is whether data hiding provides any net benefit in
*any* language.

If it doesn't provide any benefit in Python, then it doesn't provide any benefit in any language.

As for whether data hiding should be added to Python, I am not arguing
one way or the other. I am merely saying that it is worth considering.

It is not.

Whether it can be added without screwing up the language, I don't
know. If not, then so be it. That just limits the range of domains
where Python is suitable.

That's just plain stupid.

As for whether data hiding provides a net benefit in any language, it
certainly does for large programs and for safety-critical programs.
For large, safety-critical systems, it's a no-brainer.

Only if you fail to use your brain. Now, except for regurgitating the official OMG prose, do you have *anything* to back these claims ? Python is older than Java, and there are quite enough man/years of experience and Python success stories to prove that it *just work*.

I think data
hiding can also provide net benefits for medium-size and even smaller
programs, but lets just consider large programs, so I can shoot down
your argument that data hiding provides no benefit.

C'mon, make my day...

I like to use the example of the flight software for a large
commercial transport aircraft, but many other examples could be given.
How about medical systems that control radiation therapy or
chemotherapy? How about financial systems that could take away your
retirement account in 1.5 milliseconds. Or how about the control
software for the strategic nuclear arsenals of the US or Russia? When
you consider the sea, air, and land-based components, I'm sure that's
one hell of a lot of code!

And ? Such systems have been written (and quite a lot are still running) with languages way more permissive than Python. You know, languages like C or assembly. Until you understand that *no technology is idiot-proof*, you'll get nowhere in "software engineering".

So let's take the airplane example. Boeing and its contractors
probably has hundreds of programmers working on millions of lines of
code.

And ?

If they believed you, they would abandon enforced data hiding,
and programmers would have much more discretion to screw around with
code that they don't work on directly.

Yes. And ?

An FMS programmer could perhaps
decide to change the parameters of the engine controls, for example.

Why on earth would he do something so stupid ?

To prevent that sort of thing from happening, the management could
decree that henceforth all "private" variable names will start with an
underscore. Problem solved, eh?

Certainly not. The only way to solve such a problem is to fire this cretin.

Wait a minute. You yourself have
stated several times that those stupid library developers

Where did I say that library developpers where "stupid" ? Chapter and verse, please.

can never
predict what the client will actually need.

Now this is a well known fact - applied to "generic" libraries. Nothing to do with project-specific libraries. Straw man.

So some FMS guy named
Bruno

Fine, personal attack now. Man, beware, this is not going to help you make your point.

(snip remaining braindead fantasy).

Now, let's talk about a data access violations in the nuclear missile
launch software. Oh, yes, I'm sure the leading underscore convention
is more than sufficient! Wake up, dude, and quit spouting bullsh*t!

Please educate yourself and learn about why Ariane 5 crashed on it's first flight, due to an error in a module written in ADA (which is such a psychorigid language that C++ and Java are even looser than Javascript in comparison). Perhaps will it light a bulb for you.

Not
every door needs a lock, but certainly some do.
You only need locks when you don't trust your neighbours.

Yeah, if you live in Nome, Alaska.

Brillant. You obviously failed to understand the differences between "software engineering" and real life. When it comes to computers, the only doors I care closing are those which would let someone crack my computer.

But FWIW, I never close my car. And, in case you don't know, it's perfectly possible to access "private" members in Java (and, if you do have access to the source code, in C++ too).

Also, have you ever heard the expression "locks keep honest people
honest"?

Yes. You don't wan't to know what I'm thinking of it.

I spent *way* too much time on that post.

At least something sensible.

I really need to quit
spending my time refuting the baloney that passes for wisdom here.

I don't have any pretention to "wisdom" as far as I'm concerned, unless you defined wisdom as thinking that experimental results have more weight than theory.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to