Why does python not have a mechanism for data hiding?
jgardner at jonathangardner.net
Tue Jun 10 20:58:39 CEST 2008
On Jun 10, 11:21 am, "Russ P." <Russ.Paie... at gmail.com> wrote:
> I took a risk in choosing Python, and I would
> feel better about it if Python would move up to the next level with
> more advanced features such as (optional) static typing and private
> declarations. But every time I propose something like that, I get all
> kinds of flak from people here who do their hacking and care little
> about anyone else's needs.
Let me share my personal insight. I used Python for a mission-critical
application that needed, in effect, almost 100% uptime with superior
throughput. In other words, it was a very fine piece of art that
needed to be precise and correct. In the end, Python delivered, under
budget, under schedule, and with superbly low maintenance costs
(practically 0 compared to other systems written in Java and C). I
didn't have to use any of the features you mentioned, and I can't
imagine why you would need them. In fact, having them in the language
would encourage others to use them and make my software less reliable.
You may think we are all a bunch of hackers who are too stupid to
understand what you are saying, but that is your loss.
Now, let me try to explain something that perhaps the previous 166
post may not have thoroughly explained. If I am duplicating what
everyone else has already said, then it's my own fault.
Short answer: You don't need these features in Python. You do need to
use the right tools for the right tasks.
Who cares what the type of an object is? Only the machine. Being able
to tell, in advance, what the type of a variable is is a premature
optimization. Tools like psyco prove that computers (really,
programmers) nowadays are smart enough to figure things out the right
way without any hints from the developer. Static typing is no longer
necessary in today's world.
Who cares about private declarations, or interface declarations at
all? It is only a message to the developers. If you have a problem
with your users doing the right thing, that is a social problem, not a
technical one, and the solution is social, not technical. Yes, it is
work, but it is not coding---it is explaining to other living,
breathing human beings how to do a specific task, which is what you
should have been doing from the start.
When all you have is a hammer, the world seems full of nails. Think
about that. You have more tools than Python to solve these problems,
and Python will never be the panacea you wish it was. The panacea is
you, putting the right tools to use for the right tasks.
More information about the Python-list