By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
425,611 Members | 1,627 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 425,611 IT Pros & Developers. It's quick & easy.

[EVALUATION] - E04 - Leadership! Google, Guido van Rossum, PSF

P: n/a
Python Leadership was a weakness [1] and becomes now a threat for
python, thanks to Mr. van Rossums employment at Google.

-

I've wrote the Leadership list prioritized (Google rules, Mr. van Rossum
follows, PSF watches and accepts).

The core developer of an open-source-project is 'captured' by an giant
(Google).

The giant does not inform the community directly, e.g. whilst posting
an official statement to this media or with an official anouncement
(which clarifies the details of the deal).

Mr. van Rossum does not inform the community directly.

The Open Source Project (PSF) does not inform the community directly.

Just a thread with a little bit rumour.

Guido at Google
http://groups.google.com/group/comp....c299b817dca256

Really, this does not make a very professional impression.

And this has of course nothing to do with "Leadership" - which should
protect an community from wasting time and energy with unnecessary
assumptions and speculations.

-

[1]

Within this thread (which contained a simple rational change-suggestion)
i've finally contacted the foundation.

[EVALUATION] - E02 - Support for MinGW Open Source Compiler
http://groups.google.com/group/comp....2aad11f0516918

The foundation had reacted by email, but just with some justifications.

Mr. van Rossum has reacted, too. This led to some funny (and off-topic)
conversation, which was closed to be published (but finally he decided
opposite).

And very finally he suggested that I suffer from some mental disease.
Many people simplify: "what I don't understand, must be nuts".

I hope that he understands now (possibly he has the courage for an
apology?):

http://lazaridis.com/core/index.html

..

--
http://lazaridis.com/core/eval/python.html
Dec 26 '05 #1
Share this Question
Share on Google+
104 Replies


P: n/a
Guido at Google: a message in THE public forum c.l.p.

A confirmation by Martellibot, that Guido is IN FACT sitting 15m
distant from him; and everybody in Python knows where Martellibot has
his desk.

Can it get more official than this?

yeah:
a confirmation by Greg Stein @ Google within slashdot, that Guido is
working at Google.

I am sure that more people in the Python community are reading c.l.p.
and /. than the washington post, the people affected have been
informed.

I guess that's as formal and official as it can get.

And concerning Guido, Python, community and leadership:

Guido is the designer, the creator of Python. He has nearly unlimeted
trust in his design decisions: we all know, that he is THE gifted
language designer. His proclamations are accepted because he has proven
over time that he knows what's best for the language.

Allow me to quote Greg Stein:
"Ha! Guido would quit in a heartbeat if you tried to make him manage
people. That just isn't where he's at. He's absolutely brilliant and
loves to write excellent code. Great. We're gonna let him do just that
:-)"

So, Google with their geek-version of the Playboy-Mansion, free massage
parleurs, free lunch and dinner and best recruitment tactics on the
planet and the known universe will not be able to make Guido manage
people.

Somehow the Python community managed itself through the years... Python
grew healthy and steadily; forked less then usual, inspired other
languages and got faster and faster and faster.

Maybe only mediocre and less ideas need a great leader. Maybe a great
idea can lead for itself?

Harald

--
GHUM Harald Massa
persuadere et programmare
Harald Armin Massa
Reinsburgstraße 202b
70197 Stuttgart
0173/9409607

Dec 27 '05 #2

P: n/a
Ilias Lazaridis wrote:
<cut>
So I guess you volunteer http://www.python.org/psf/volunteer.html ?
--
mph
Dec 27 '05 #3

P: n/a
Ilias Lazaridis wrote:
[ panic, fear, worry ]


What's wrong with just saying "Congratulations!" ? First thing I thought was
"ooh, maybe Guido will be able to work on P3K there" - after all that would
benefit Google *and* everyone else :-)

(Especially if he uses PyPy to experiment and play in ... :)

Merry Christmas/Happy New Year :-)
Michael.

Dec 27 '05 #4

P: n/a
Michael wrote:
Ilias Lazaridis wrote:
[ panic, fear, worry ]
What's wrong with just saying "Congratulations!" ?


nothing.

But enouth people do this.

I am focusing on weaknesses & threats:

http://lazaridis.com/efficiency/graph/analysis.html
First thing I thought was
"ooh, maybe Guido will be able to work on P3K there" - after all that would
benefit Google *and* everyone else :-)
My main intrest is to see python pass this simple evaluation (currently
it fails):

http://lazaridis.com/case/lang/python.html
(Especially if he uses PyPy to experiment and play in ... :)

Merry Christmas/Happy New Year :-)

Michael.


..

--
http://lazaridis.com
Dec 28 '05 #5

P: n/a
Martin P. Hellwig wrote:
Ilias Lazaridis wrote:
<cut>
So I guess you volunteer http://www.python.org/psf/volunteer.html ?


I volunteer and contribute already (with a general validity and python
specific analysis)

A mediator should communicate the findings and suggestion (after
verifying them) to the responsibles / community:

http://lazaridis.com/efficiency/process.html#mediator

This would include to pass the relevant ones to the list you've mentioned:

http://www.python.org/psf/volunteer.html

-

TAG.efficiency.process.mediator

..

--
http://lazaridis.com
Dec 28 '05 #6

P: n/a
Harald Armin Massa wrote:
[...] - (comments)

Thank you for your comments.

-

TAG.python.evolution.negate.apotheosis

..

--
http://lazaridis.com
Dec 28 '05 #7

P: n/a
Guido has never been, is not, and will not in the future be, a threat
to Python. End of story.

Unless of course aliens come into play. You never know.

Robert

Dec 28 '05 #8

P: n/a
Robert Hicks wrote:
Guido has never been, is not, and will not in the future be, a threat
to Python. End of story.

Unless of course aliens come into play. You never know.

Robert


-

TAG.python.evolution.negate.apotheosis.faith

..

--
http://lazaridis.com
Dec 28 '05 #9

P: n/a
Ilias Lazaridis wrote:
Martin P. Hellwig wrote:
Ilias Lazaridis wrote:
<cut>
So I guess you volunteer http://www.python.org/psf/volunteer.html ?


I volunteer and contribute already (with a general validity and python
specific analysis)

A mediator should communicate the findings and suggestion (after
verifying them) to the responsibles / community:

http://lazaridis.com/efficiency/process.html#mediator

This would include to pass the relevant ones to the list you've mentioned:

http://www.python.org/psf/volunteer.html

-

TAG.efficiency.process.mediator


Last time I checked a "mediator" otherwise known to me as a
communication manager, is only effective when he/she is recognized as
authoritative by the participating group _and_ him/herself.

As from other posts I read that the last part is the issue, well since
this is a voluntary bunch of people with a slightly social democratic
architecture you fall back on spokesman and that can be anybody,
including or perhaps even especially you.

The only thing that holds "you" theoretically back is "acknowledged
authority by the participating group _and_ yourself" and of course the
resource for "restricted" information.
For the first part you got my vote, for second, well that should grow in
time.

--
mph
Dec 28 '05 #10

P: n/a
Martin P. Hellwig wrote:
Ilias Lazaridis wrote:
Martin P. Hellwig wrote:
Ilias Lazaridis wrote:
<cut>
So I guess you volunteer http://www.python.org/psf/volunteer.html ?
I volunteer and contribute already (with a general validity and python
specific analysis)

A mediator should communicate the findings and suggestion (after
verifying them) to the responsibles / community:

http://lazaridis.com/efficiency/process.html#mediator

This would include to pass the relevant ones to the list you've
mentioned:

http://www.python.org/psf/volunteer.html

-

TAG.efficiency.process.mediator


Last time I checked a "mediator" otherwise known to me as a
communication manager, is only effective when he/she is recognized as
authoritative by the participating group _and_ him/herself.


ok
As from other posts I read that the last part is the issue, well since
this is a voluntary bunch of people with a slightly social democratic
architecture you fall back on spokesman and that can be anybody,
including or perhaps even especially you.
ok
The only thing that holds "you" theoretically back is "acknowledged
authority by the participating group _and_ yourself" and of course the
resource for "restricted" information.
what do you mean by "resource for "restricted" information"?
For the first part you got my vote, for second, well that should grow in
time.


second part = "resource for "restricted" information" ?
-

(you can use private email if you prefere. If so, I will post an summary
back to the thread).

-

[sidenote: I am currently preparing diagramms, which will demonstrate
the several processes more clearly.]

..

--
http://lazaridis.com
Dec 28 '05 #11

P: n/a
Ilias Lazaridis wrote:
<cut>
The only thing that holds "you" theoretically back is "acknowledged
authority by the participating group _and_ yourself" and of course the
resource for "restricted" information.


what do you mean by "resource for "restricted" information"?

Well, I mean that you should know before the others that Guido is
working for google otherwise such a publication is a bit late :-),
nevertheless better late then never.
For the first part you got my vote, for second, well that should grow
in time.


second part = "resource for "restricted" information" ?

yup
<cut>

--
mph
Dec 28 '05 #12

P: n/a

Michael wrote:
Ilias Lazaridis wrote:
[ panic, fear, worry ]
What's wrong with just saying "Congratulations!" ? First thing I thought was
"ooh, maybe Guido will be able to work on P3K there" - after all that would
benefit Google *and* everyone else :-)


Google's not a nice company (yeah, I know I'm posting from a google
account). If you look at their job requirements it's clear they will
only hire people with long backstabbing histories. There seems to be no
room left for world improving undamaged souls in that company.
(Especially if he uses PyPy to experiment and play in ... :)


Yes PyPy could save Python, or destroy the world. I have the impression
not many enough people realize that a selfhosting programming language
is something on the same level as a nano assembler or an artificial
intelligence. There is not much time anymore for idealists to start
trying to save the world, and I don't think we can count on google in
that respect.

Anton

'make my day, prove me wrong'

Dec 28 '05 #13

P: n/a
Anton Vredegoor wrote:
Michael wrote:
Ilias Lazaridis wrote:
[ panic, fear, worry ]
What's wrong with just saying "Congratulations!" ? First thing I thought was
"ooh, maybe Guido will be able to work on P3K there" - after all that would
benefit Google *and* everyone else :-)


Google's not a nice company (yeah, I know I'm posting from a google
account). If you look at their job requirements it's clear they will
only hire people with long backstabbing histories. There seems to be no
room left for world improving undamaged souls in that company.


I have a friend who works at Google. He has no backstabbing history at all. Stop
insulting my friends.

For Software Engineer:

"""
Requirements:

* BS or MS in Computer Science or equivalent (PhD a plus).
* Several years of software development experience.
* Enthusiasm for solving interesting problems.
* Experience with Unix/Linux or Windows environments, C++ development,
distributed systems, machine learning, information retrieval, network
programming and/or developing large software systems a plus.
"""

I don't see any "damaged soul" requirement.
(Especially if he uses PyPy to experiment and play in ... :)


Yes PyPy could save Python, or destroy the world. I have the impression
not many enough people realize that a selfhosting programming language
is something on the same level as a nano assembler or an artificial
intelligence.


??? What the hell are you smoking? We already have self-hosting programming
languages.
Anton

'make my day, prove me wrong'


Prove yourself right.

--
Robert Kern
ro*********@gmail.com

"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter

Dec 28 '05 #14

P: n/a
Robert Kern wrote:
I have a friend who works at Google. He has no backstabbing history at all. Stop
insulting my friends.
Your friends work for people who would never hire me. My resume sucks,
but I'm not a bad person or a mediocre programmer. They sold out.
For Software Engineer:

"""
Requirements:

* BS or MS in Computer Science or equivalent (PhD a plus).
Right here.
* Several years of software development experience.
* Enthusiasm for solving interesting problems.
* Experience with Unix/Linux or Windows environments, C++ development,
distributed systems, machine learning, information retrieval, network
programming and/or developing large software systems a plus.
"""

I don't see any "damaged soul" requirement.


I do. Experience here is an eufemism for having worked for the man.
(Especially if he uses PyPy to experiment and play in ... :)


Yes PyPy could save Python, or destroy the world. I have the impression
not many enough people realize that a selfhosting programming language
is something on the same level as a nano assembler or an artificial
intelligence.


??? What the hell are you smoking? We already have self-hosting programming
languages.


Yes. We have humans too.
Anton

'make my day, prove me wrong'


Prove yourself right.


Ok. That's a bit harder. I suppose we agree that if we have an
intelligent program that is more intelligent than a human and have this
program design an even more intelligent program than things start to
accelerate pretty fast?

Now the combination of a programmer with a tool (program) that can be
used to make a better tool. This gives a better human-machine
combination, which then can be used to further improve the combination.
I don't think I have completely proven my point now, but since the
danger is very real and big, coming close is already reason enough to
watch this carefully. Why hasn't it happened yet with lisp? I don't
know, why didn't the world get destroyed by all out atomic warfare?
Couldn't it have happened?

If we create AI why would AI keep us around if we ourselves won't even
hire people that do not comply to absurdly specific preconditions?
Don't we let our poor people starve in the undeveloped countries or
even in our own cities? If we want to prove we belong to the next world
we should start now. Open work communities where everyone can start
working and get paid. The same thing as open source code or usenet but
now with money for everyone.

Anton

'sorry, I don't want to start a flamewar, but I really believe what I
wrote here'

Dec 28 '05 #15

P: n/a
Anton Vredegoor wrote:
Google's not a nice company (yeah, I know I'm posting from a google
account). If you look at their job requirements it's clear they will
only hire people with long backstabbing histories. There seems to be no
room left for world improving undamaged souls in that company.
(Especially if he uses PyPy to experiment and play in ... :)


Yes PyPy could save Python, or destroy the world. I have the impression
not many enough people realize that a selfhosting programming language
is something on the same level as a nano assembler or an artificial
intelligence. There is not much time anymore for idealists to start
trying to save the world, and I don't think we can count on google in
that respect.

Huh?

Dec 28 '05 #16

P: n/a
"Anton Vredegoor" <an*************@gmail.com> writes:
Ok. That's a bit harder. I suppose we agree that if we have an
intelligent program that is more intelligent than a human and have this
program design an even more intelligent program than things start to
accelerate pretty fast?
There's your fundamental flaw. Programs aren't intelligent, any more
than submarines swim.
Now the combination of a programmer with a tool (program) that can be
used to make a better tool. This gives a better human-machine
combination, which then can be used to further improve the combination.
Key word: "tool". Nothing is said about the intelligence of said
tool. It doesn't have to be intelligent at all. It just has to be able
to do one single task better than the human. The intelligence in this
combination is coming from the human.
I don't think I have completely proven my point now, but since the
danger is very real and big, coming close is already reason enough to
watch this carefully.
We aren't any closer to having a "real" AI than we were in the 60s. On
my list of man-made, world-ending catastrophes, a world-dominating AI
is easily outranked by grey goo, and just barely beats out the nine
billion names of god.
'sorry, I don't want to start a flamewar, but I really believe what I
wrote here'


I think you're taking to many bad scifi movies seriously.

<mike
--
Mike Meyer <mw*@mired.org> http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.
Dec 28 '05 #17

P: n/a
Mike Meyer wrote:
We aren't any closer to having a "real" AI than we were in the 60s.


note that the name of the the poster who started this thread only needs minimal
adjustments to become an anagram for "alien lizard AI", which might indicate that
the government has access to some kind of AI, but that it's completely useless.

</F>

Dec 28 '05 #18

P: n/a
Anton Vredegoor wrote:
Robert Kern wrote:
I have a friend who works at Google. He has no backstabbing history at all. Stop
insulting my friends.
Your friends work for people who would never hire me.


This is not a crime.
My resume sucks,
but I'm not a bad person or a mediocre programmer.
Okay. Still has nothing to do with my friend or anyone else who works at Google.
Still doesn't mean my friend has a "backstabbing history," whatever that is.
They sold out.


<rolls eyes> No, he accepted a job. He has a family to feed. Google may or may
not be unethical, but their requirement for experienced developers is not
unethical. Just because they might not hire you doesn't mean they are unethical.
They simply have needs that you can't fill.

Your sense of entitlement is showing.
For Software Engineer:

"""
Requirements:

* BS or MS in Computer Science or equivalent (PhD a plus).


Right here.
* Several years of software development experience.
* Enthusiasm for solving interesting problems.
* Experience with Unix/Linux or Windows environments, C++ development,
distributed systems, machine learning, information retrieval, network
programming and/or developing large software systems a plus.
"""

I don't see any "damaged soul" requirement.


I do. Experience here is an eufemism for having worked for the man.


Who is "the man"? If Google were to hire you with no experience, would you then
have "worked for the man"?
(Especially if he uses PyPy to experiment and play in ... :)

Yes PyPy could save Python, or destroy the world. I have the impression
not many enough people realize that a selfhosting programming language
is something on the same level as a nano assembler or an artificial
intelligence.


??? What the hell are you smoking? We already have self-hosting programming
languages.


Yes. We have humans too.


Some Lisps are self-hosting. C is self-hosting. The world is not yet destroyed.
Do you understand what "self-hosting" means?
Anton

'make my day, prove me wrong'


Prove yourself right.


Ok. That's a bit harder. I suppose we agree that if we have an
intelligent program that is more intelligent than a human and have this
program design an even more intelligent program than things start to
accelerate pretty fast?


PyPy will not bring about the Singularity.

--
Robert Kern
ro*********@gmail.com

"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter

Dec 28 '05 #19

P: n/a
Robert Kern wrote:
PyPy will not bring about the Singularity.


But if it did, imagine how cool that would look on the developers
resumes... :-)

--
Hans Nowak
http://zephyrfalcon.org/
Dec 28 '05 #20

P: n/a

Hans> Robert Kern wrote:
PyPy will not bring about the Singularity.


Hans> But if it did, imagine how cool that would look on the developers
Hans> resumes... :-)

+1 QOTW

Skip
Dec 28 '05 #21

P: n/a
"Harald Armin Massa" <ha**************@gmail.com> writes:
[...]
Allow me to quote Greg Stein:
"Ha! Guido would quit in a heartbeat if you tried to make him manage
people. That just isn't where he's at. He's absolutely brilliant and
loves to write excellent code. Great. We're gonna let him do just that
:-)"

[...]

Guido may or may not realise it, but he seems to have been managing
people (in some sense of 'managing', anyway) quite successfully over
the past decade or so.
John

Dec 28 '05 #22

P: n/a

John> Guido may or may not realise it, but he seems to have been
John> managing people (in some sense of 'managing', anyway) quite
John> successfully over the past decade or so.

Sssh! Don't tell him! Hopefully the PSU won't find out and
Dec 28 '05 #23

P: n/a
Martin P. Hellwig wrote:
Ilias Lazaridis wrote:
<cut>
The only thing that holds "you" theoretically back is "acknowledged
authority by the participating group _and_ yourself" and of course
the resource for "restricted" information.


what do you mean by "resource for "restricted" information"?

Well, I mean that you should know before the others that Guido is
working for google otherwise such a publication is a bit late :-),
nevertheless better late then never.


I operate only based on publically available information.

Possibly you have something missunderstood (or I have explained missleading)

here is the actual diagramm:

http://lazaridis.com/efficiency/graph/index.html
For the first part you got my vote, for second, well that should grow
in time.


second part = "resource for "restricted" information" ?


yup
<cut>


ok.

[I will answer to the other messages of this thread later]

..

--
http://lazaridis.com
Dec 29 '05 #24

P: n/a
Ilias Lazaridis wrote:
<cut>
I'm suspecting that we have different definitions (or at least the
implications of that) of used terms.
I think it's important to first define these definition in a form
acceptable to both of us.

In the link you gave, the title was "Efficiency Management".
Now I believe that in _most_ implementations the words in the titles are
mutual exclusive. So my first question is, please define "Efficiency" my
second one is, please define "Management".

--
mph

Dec 29 '05 #25

P: n/a
Martin P. Hellwig wrote:
Ilias Lazaridis wrote:
<cut>
I'm suspecting that we have different definitions (or at least the
implications of that) of used terms.
I think it's important to first define these definition in a form
acceptable to both of us.

In the link you gave, the title was "Efficiency Management".
Now I believe that in _most_ implementations the words in the titles are
mutual exclusive. So my first question is, please define "Efficiency" my
second one is, please define "Management".


"
* The terminology is not yet aligned to commonly used business or
standards organisation terminology [like e.g. ISO].
* This will happen after the process definition has finalized.
"
source: http://lazaridis.com/efficiency/process.html (V 0.8c - alpha)

-

I am a few steps from having the final diagramms ready, then I can align
the terminology (e.g. asking for feedback, thus people can detect
existent constructs and suggest terminology changes)

I'll send you an email with some details (thus we don't discuss this
off-topic in public).

..

--
http://lazaridis.com
Dec 29 '05 #26

P: n/a
Anton Vredegoor wrote:
Robert Kern wrote:

I have a friend who works at Google. He has no backstabbing history at all. Stop
insulting my friends.
Your friends work for people who would never hire me. My resume sucks,
but I'm not a bad person or a mediocre programmer. They sold out.
For Software Engineer:

"""
Requirements:

* BS or MS in Computer Science or equivalent (PhD a plus).


Right here.


This requirement is really funny.

I thought google is somehow different.
* Several years of software development experience.
* Enthusiasm for solving interesting problems.
* Experience with Unix/Linux or Windows environments, C++ development,
distributed systems, machine learning, information retrieval, network
programming and/or developing large software systems a plus.
"""

I don't see any "damaged soul" requirement.


I do. Experience here is an eufemism for having worked for the man.


I think I understand your thought.

Although I have very much experience, I have not "worked for the man":

http://lazaridis.com/resumes/lazaridis.html

which would mean that Google would not hire me.

[No problem, it's their lost.]

[...]
Prove yourself right.


Ok. That's a bit harder. I suppose we agree that if we have an
intelligent program that is more intelligent than a human and have this
program design an even more intelligent program than things start to
accelerate pretty fast?


ok
Now the combination of a programmer with a tool (program) that can be
used to make a better tool. This gives a better human-machine
combination, which then can be used to further improve the combination.
=> high evolutive system

http://lazaridis.com/core/system/evolution.html
I don't think I have completely proven my point now, but since the
danger is very real and big, coming close is already reason enough to
watch this carefully. Why hasn't it happened yet with lisp? I don't
know,
http://lazaridis.com/core/eval/lisp.html
why didn't the world get destroyed by all out atomic warfare?
Couldn't it have happened?
Of course.

But we should focus on that it don't happen in future.
If we create AI why would AI keep us around if we ourselves won't even
hire people that do not comply to absurdly specific preconditions?
Don't we let our poor people starve in the undeveloped countries or
even in our own cities? If we want to prove we belong to the next world
we should start now. Open work communities where everyone can start
working and get paid. The same thing as open source code or usenet but
now with money for everyone.
Very nice thoughts - but just thoughts.

You should act.

As a first step, you should have your thoughts collected on a website,
thus you can point to them.

And then comes the difficult thing:

Transforming thoughts to real-life actions.

I'll contact you via email, thus this thread remains 'clean'.
Anton

'sorry, I don't want to start a flamewar, but I really believe what I
wrote here'


..

--
http://lazaridis.com
Dec 29 '05 #27

P: n/a
Congratulations to Guide,

Mike

Harald Armin Massa wrote:
Guido at Google: a message in THE public forum c.l.p.

A confirmation by Martellibot, that Guido is IN FACT sitting 15m
distant from him; and everybody in Python knows where Martellibot has
his desk.

Can it get more official than this?

yeah:
a confirmation by Greg Stein @ Google within slashdot, that Guido is
working at Google.

I am sure that more people in the Python community are reading c.l.p.
and /. than the washington post, the people affected have been
informed.

I guess that's as formal and official as it can get.

And concerning Guido, Python, community and leadership:

Guido is the designer, the creator of Python. He has nearly unlimeted
trust in his design decisions: we all know, that he is THE gifted
language designer. His proclamations are accepted because he has proven
over time that he knows what's best for the language.

Allow me to quote Greg Stein:
"Ha! Guido would quit in a heartbeat if you tried to make him manage
people. That just isn't where he's at. He's absolutely brilliant and
loves to write excellent code. Great. We're gonna let him do just that
:-)"

So, Google with their geek-version of the Playboy-Mansion, free massage
parleurs, free lunch and dinner and best recruitment tactics on the
planet and the known universe will not be able to make Guido manage
people.

Somehow the Python community managed itself through the years... Python
grew healthy and steadily; forked less then usual, inspired other
languages and got faster and faster and faster.

Maybe only mediocre and less ideas need a great leader. Maybe a great
idea can lead for itself?

Harald

--
GHUM Harald Massa
persuadere et programmare
Harald Armin Massa
Reinsburgstraße 202b
70197 Stuttgart
0173/9409607

--
The greatest performance improvement occurs on the transition of from
the non-working state to the working state.
Dec 29 '05 #28

P: n/a
Ilias Lazaridis wrote:
Martin P. Hellwig wrote:
Ilias Lazaridis wrote:
<cut>
I'm suspecting that we have different definitions (or at least the
implications of that) of used terms.
I think it's important to first define these definition in a form
acceptable to both of us.

In the link you gave, the title was "Efficiency Management".
Now I believe that in _most_ implementations the words in the titles
are mutual exclusive. So my first question is, please define
"Efficiency" my second one is, please define "Management".
"
* The terminology is not yet aligned to commonly used business or
standards organisation terminology [like e.g. ISO].
* This will happen after the process definition has finalized.
"
source: http://lazaridis.com/efficiency/process.html (V 0.8c - alpha)

-

I am a few steps from having the final diagramms ready, then I can align
the terminology (e.g. asking for feedback, thus people can detect
existent constructs and suggest terminology changes)

I'll send you an email with some details (thus we don't discuss this
off-topic in public).

.

Ilias Lazaridis wrote in email:
Hi,

just point me to a website you are related to (your personal one,

your business one, ...) and I'll initialize the process, as defined in
the draft-document:
http://lazaridis.com/efficiency/textual.html

-

What I need at this point:

- Website adress
- your requirements & constraints for my processing

.


Hey,

I respond on your "private" mail and list in one and to both, I don't
regard this as off-topic because it is still in regard of your OP,
although that post can be seen as a bait to go OT.

I didn't ask you for making an analyze, I asked you for your definitions
because I think they are not the same as used in my contexts.

Now definitions like the ones in the dictionary are all fine and such
but it still doesn't say what the strings are, for example communication
is a word used to describe the process of information transfer (by
whatever means, could be smoke signals or drum sounds for my part).
Information transfer is a broad term raising immediately the question:
"Transfer? ..... In what direction?"
The answer depends on the situation, if both parties are equal in terms
of information authority, the transfer will resemble a dialog i.e. two way.
If both parties are not on par in terms of information authority, the
transfer will resemble a monolog i.e. one way.
Now this is taken in the extremes, in reality there are usual more than
2 parties and the information authority can vary on the subject while
the subjects are still related with each other (no wonder why there is
so much miscommunication).

An interesting note is that to describe the relation of communication I
have to use another term, "information authority", this term is IMHO
very important and very difficult because you can not define this term
in such a way that it's acceptable for all involving parties without
being authoritative on that specific information piece. Unfortunately
these kind of situations are all but rare just take a look at
http://en.wikipedia.org/wiki/Bootstrap .

Which leads to the interesting question, when is someone authoritative
on information without the use of ipsedixitism.
The answer is IMO actually quite simple: Never, your only authoritative
if others accept you as being authoritative, of course this can be
enforced by various means, like the use of hierarchy or religion.
However more modern organization revert to the use of democracy
(everybody has an equal vote) or play along (if you don't like, you are
not enforced to stay, so accept it or beat it) because if you let
people decide for them self who is authoritative for them it's easier
for that authority to be accepted as such.

Now I don't say that I'm right here and you are not, actually I'm still
puzzled about what your intention of your original post was anyway.
Thus what I said above should also apply to myself, so I do not have the
authority by myself to say that I'm authoritative to say that I'm right
and you are not, but what are your reasons to assume that you are
authoritative over me? (This is a genuine question and not intended as
rhetorical)

So the sum it up my unanswered question to you so far are:
- What is your definition of "Efficiency"
- What is your definition of "Management"
- What is you definition of "Communication" (to compare it with mine above)
- What are your reasons that I should accept you as authoritative on the
subject of "Efficiency Management"?
- What has all that to do with Python except for that Guido is related
to Google and Python?

--
mph
Dec 29 '05 #29

P: n/a
Martin P. Hellwig wrote:
Ilias Lazaridis wrote:
Martin P. Hellwig wrote:
Ilias Lazaridis wrote:
<cut>
I'm suspecting that we have different definitions (or at least the
implications of that) of used terms.
I think it's important to first define these definition in a form
acceptable to both of us.

In the link you gave, the title was "Efficiency Management".
Now I believe that in _most_ implementations the words in the titles
are mutual exclusive. So my first question is, please define
"Efficiency" my second one is, please define "Management".
"
* The terminology is not yet aligned to commonly used business or
standards organisation terminology [like e.g. ISO].
* This will happen after the process definition has finalized.
"
source: http://lazaridis.com/efficiency/process.html (V 0.8c - alpha)

-

I am a few steps from having the final diagramms ready, then I can
align the terminology (e.g. asking for feedback, thus people can
detect existent constructs and suggest terminology changes)

I'll send you an email with some details (thus we don't discuss this
off-topic in public).

.

> Ilias Lazaridis wrote in email:
> Hi,
>
> just point me to a website you are related to (your personal one,
> your business one, ...) and I'll initialize the process, as defined in
> the draft-document:
>
> http://lazaridis.com/efficiency/textual.html
>
> -
>
> What I need at this point:
>
> - Website adress
> - your requirements & constraints for my processing


Hey,

I respond on your "private" mail and list in one and to both, I don't
regard this as off-topic because it is still in regard of your OP,
although that post can be seen as a bait to go OT.


You should not reproduce private conversation on public media.
I didn't ask you for making an analyze, I asked you for your definitions
because I think they are not the same as used in my contexts.

[...]

Making an small analysis can assist you to understand the terminology
(and me to align the terminology). You are free to reject this.

As I am free to terminate the discussion here.

Feel free to contact me with private email (after a few hours).

Thank you.

..

--
http://lazaridis.com
Dec 29 '05 #30

P: n/a
>>>>> "John" == John J Lee <jj*@pobox.com> writes:

John> Guido may or may not realise it, but he seems to have been
John> managing people (in some sense of 'managing', anyway) quite
John> successfully over the past decade or so.
John> John

Just you shush!
If he hears you, he'll return to being a newt!

Chris
Dec 30 '05 #31

P: n/a
Martin P. Hellwig wrote:
[...] - (complex elaborations)
So the sum it up my unanswered question to you so far are:
- What is your definition of "Efficiency"
http://lazaridis.com/efficiency/definitions.html

(as stated on the website, any feedback is welcome. But please not
within this thread).
- What is your definition of "Management"
I have none (I use internally the hellenic word, which explains/defines
itself)
- What is you definition of "Communication" (to compare it with mine above)
I have none (there was no need for me to define, and at this point its
not a priority).
- What are your reasons that I should accept you as authoritative on the
subject of "Efficiency Management"?
a) The process itself

you can verify it on my website.
b) Rate the public application/verification of the process

this is difficult, as the major evaluations (NetBeans, Eclipse) are huge
and complex to follow (google archives)
d) Reference Customers

(they are not available yet)
c) Initiate a Free Website Review (the simplest way):

http://lazaridis.com/services/index.html

and rate the results

- What has all that to do with Python except for that Guido is related
to Google and Python?


Python is still on my list of possible languages for a long-term project.

Thus I am still evaluating it.

This thread here is part of a python evaluation:

http://lazaridis.com/core/eval/index.html

..

--
http://lazaridis.com
Dec 30 '05 #32

P: n/a
Anton Vredegoor <an*************@gmail.com> wrote:
...
Google's not a nice company (yeah, I know I'm posting from a google
account). If you look at their job requirements it's clear they will
only hire people with long backstabbing histories.


Such as...? Guido van Rossum? Greg Stein? Vint Cerf? Ben Goodger?
Please DO share your insider-information about the "long backstabbing
histories" of each and every one of these people, I'm sure it will be
most fascinating (as well as useful for self-protection to future
potential victims), and, after all, they ARE all rather public
figures... TIA!
Alex
Jan 2 '06 #33

P: n/a
Alex Martelli wrote:
Anton Vredegoor <an*************@gmail.com> wrote:
...
Google's not a nice company (yeah, I know I'm posting from a google
account). If you look at their job requirements it's clear they will
only hire people with long backstabbing histories.


Such as...? Guido van Rossum? Greg Stein? Vint Cerf? Ben Goodger?
Please DO share your insider-information about the "long backstabbing
histories" of each and every one of these people, I'm sure it will be
most fascinating (as well as useful for self-protection to future
potential victims), and, after all, they ARE all rather public
figures... TIA!

Alex


The employees you've mentioned should have most possibly the basic
google employment requirement: BS or MS... [1].

This requirement from Google exists in nearly all other IT companies.

Without BS or MS you cannot have a "long back reaching history" - and
thus experience.

This is the main objection of Mr. Vredegoor.

-

I assume that Mr. Vredegoor uses the term "backstabbing" incorrect. Most
possibly he meand just something like "back reaching".

Possibly he can confirm.

btw: I don't understand exactly what Mr. Vredegoor means by "having
worked for the man".

Possibly he can clarify concisely.

-

Mr. Martinelli, you seem to know python.

May you can showcase how to overcome some of the limitations
(limitations in context of the evaluation template):

http://lazaridis.com/case/lang/python.html

My Best Regards.

-

[1]
(copied from within this thread):
"""
Requirements:

* BS or MS in Computer Science or equivalent (PhD a plus).
* Several years of software development experience.
* Enthusiasm for solving interesting problems.
* Experience with Unix/Linux or Windows environments, C++ development,
distributed systems, machine learning, information retrieval, network
programming and/or developing large software systems a plus.
"""

..

--
http://lazaridis.com
Jan 2 '06 #34

P: n/a
Ilias Lazaridis <il***@lazaridis.com> wrote:
...
only hire people with long backstabbing histories.
Such as...? Guido van Rossum? Greg Stein? Vint Cerf? Ben Goodger?

... The employees you've mentioned should have most possibly the basic
google employment requirement: BS or MS... [1].
.... "or equivalent" (I do believe all I named have at least a Bachelor
degree, but with the undisputable results they've shown afterwards, I
think they'd all meet the "or equivalent" clause anyway).
I assume that Mr. Vredegoor uses the term "backstabbing" incorrect. Most
possibly he meand just something like "back reaching".
Possibly he can confirm.
Let's wait for him to confirm or deny; I thought he did mean what he
said.

btw: I don't understand exactly what Mr. Vredegoor means by "having
worked for the man".
Possibly he can clarify concisely.
By all means, let's hope he does. In the jargon of the American
underclass, "to work for The Man" meant working for law enforcement
agencies, and somehow it got widened to "working for ``the system''",
i.e., in a "socially respectable" job. Maybe in Dutch it means
something different.

Mr. Martinelli, you seem to know python.
Sorry, that's a brand of sparking apple cider. I get my name mispelled
that way often enough, since I moved to the US, to have become quite
sensitive about it!-) In MY name, there is no "in"...
May you can showcase how to overcome some of the limitations
(limitations in context of the evaluation template):

http://lazaridis.com/case/lang/python.html


re: #LIMITATION: automated get/set methods via var-name not available
see the 'property' built-in.

re: LIMITATION: InstanceVarName not available
since any object at a given time may be bound to any number of names,
from 0 upwards, and none of them has any privileged relation with the
object, this will never be solved. If you think an object should have a
name with some privileged relation to it, I strongly suggest you switch
to another language.

"prints Class Definition (methods, fields), without code
LIMITATION: no direct access on object-model-level"
not sure what you mean, but maybe see the 'inspect' module.

"#LIMITATION: attribute is not available systemwide in every object
#LIMITATION: attribute is not on object-model-level
#LIMITATION: Operation is not Object Oriented
"
If you think that the syntax x(y,z) is "not Object Oriented", then again
I strongly suggest that you switch to other languages (avoiding other
powerful object oriented languages such as Dylan, Lisp, or O'CAML, which
also allow usage of function-call notation for THEIR OO power); in other
words, if you think the mere presence of a syntax like 'y.x(z)' makes
any difference wrt accessing a functionality versus 'x(y, z)', you're
clearly evaluating things at a totally inappropriate level.

The notation you choose, setattr(Object, "meta", "Some meta
information"), is, at any rate, absolutely semantically identical to
Object.meta = "Some meta information" -- they will both succeed or both
fail, and when they both succeed they will have identical effects; thus,
that point about "not Object Oriented" seems to fall somewhere between
embarassingly wrong, and crazy-level weird.

It IS true that in Python you cannot set arbitrary attributes on
arbitrary objects. The workaround is to use a dict, indexed by the id
of the object you want to "set arbitrary attributes on"; this has the
helpful consequence that separate namespaces are used, so your arbitrary
setting of metadata cannot interfere with the `true' attributes of the
object in question.

I'm unable to understand what you're trying to do in the "extend talker
code" box following that one.

Alex
Jan 2 '06 #35

P: n/a
Alex Martelli wrote:
Ilias Lazaridis <il***@lazaridis.com> wrote:
...
note: Anton Vredegoor wrote:
only hire people with long backstabbing histories.

Such as...? Guido van Rossum? Greg Stein? Vint Cerf? Ben Goodger? ...
The employees you've mentioned should have most possibly the basic
google employment requirement: BS or MS... [1].


... "or equivalent" (I do believe all I named have at least a Bachelor
degree, but with the undisputable results they've shown afterwards, I
think they'd all meet the "or equivalent" clause anyway).


" * BS or MS in Computer Science or equivalent (PhD a plus). "

This referes to an _academic_ degree.

Very few companies make an explicit statement about non-academic applicants.

It seems Google does not.
I assume that Mr. Vredegoor uses the term "backstabbing" incorrect. Most
possibly he meand just something like "back reaching".
Possibly he can confirm.


Let's wait for him to confirm or deny; I thought he did mean what he
said.


yes, I've become curious.
btw: I don't understand exactly what Mr. Vredegoor means by "having
worked for the man".
Possibly he can clarify concisely.


By all means, let's hope he does. In the jargon of the American
underclass, "to work for The Man" meant working for law enforcement
agencies, and somehow it got widened to "working for ``the system''",
i.e., in a "socially respectable" job. Maybe in Dutch it means
something different.


"socially respectable" would fit.

but let's await his comments.
Mr. Martinelli, you seem to know python.


Sorry, that's a brand of sparking apple cider. I get my name mispelled
that way often enough, since I moved to the US, to have become quite
sensitive about it!-) In MY name, there is no "in"...


Mr. Martelli, I apologize for naming you like an soft-drink.

-

Python vs jamLang follows:
May you can showcase how to overcome some of the limitations
(limitations in context of the evaluation template):

http://lazaridis.com/case/lang/python.html


re: #LIMITATION: automated get/set methods via var-name not available
see the 'property' built-in.


Can you (or some reader) sent (or fill in) the relevant code?
re: LIMITATION: InstanceVarName not available
since any object at a given time may be bound to any number of names,
from 0 upwards, and none of them has any privileged relation with the
object, this will never be solved. If you think an object should have a
name with some privileged relation to it, I strongly suggest you switch
to another language.
=> the limitation "InstanceVarName not available" is true.

(I will change the evaluation-template and move this step to the "Expert
Reflective Data Access").
"prints Class Definition (methods, fields), without code
LIMITATION: no direct access on object-model-level"
not sure what you mean, but maybe see the 'inspect' module.
=> Clas Definition is not accessible via MetaClasses
(possible workaround: inspect module)
"#LIMITATION: attribute is not available systemwide in every object
#LIMITATION: attribute is not on object-model-level
#LIMITATION: Operation is not Object Oriented
"
If you think that the syntax x(y,z) is "not Object Oriented", then again
I strongly suggest that you switch to other languages (avoiding other
powerful object oriented languages such as Dylan, Lisp, or O'CAML, which
also allow usage of function-call notation for THEIR OO power); in other
words, if you think the mere presence of a syntax like 'y.x(z)' makes
any difference wrt accessing a functionality versus 'x(y, z)', you're
clearly evaluating things at a totally inappropriate level.
I assure you: the level is totally appropriate.
The notation you choose, setattr(Object, "meta", "Some meta
I did not choose it.

Someone has posted it.
information"), is, at any rate, absolutely semantically identical to
Object.meta = "Some meta information" -- they will both succeed or both
fail, and when they both succeed they will have identical effects; thus,
that point about "not Object Oriented" seems to fall somewhere between
embarassingly wrong, and crazy-level weird.
=> Object.meta = "Some meta information"
=> can be used instead of setattr(Object, "meta", "Some metainformation")
It IS true that in Python you cannot set arbitrary attributes on
=> #LIMITATION: Cannot add arbitrary attributes to arbitrary objects.
arbitrary objects. The workaround is to use a dict, indexed by the id
of the object you want to "set arbitrary attributes on"; this has the
helpful consequence that separate namespaces are used, so your arbitrary
setting of metadata cannot interfere with the `true' attributes of the
object in question.
=> possible workaround: use dict.
I'm unable to understand what you're trying to do in the "extend talker
code" box following that one.


Someone has posted this code, to solve "Applying metadata (or
attributes, as you prefere) to Class, Object, ...".

I understand that the poster has send code which does not work.

-

see the ruby result as a reference:

http://lazaridis.com/case/lang/ruby/base.html

-

If you (or any reader) like, please provide the concrete code to solve
the open limitations (the simple ones, like e.g. get/set).

Thank you for taking the time to answer.

..

--
http://lazaridis.com
Jan 2 '06 #36

P: n/a
Alex Martelli wrote:
Anton Vredegoor <an*************@gmail.com> wrote:
...
Google's not a nice company (yeah, I know I'm posting from a google
account). If you look at their job requirements it's clear they will
only hire people with long backstabbing histories.


Such as...? Guido van Rossum? Greg Stein? Vint Cerf? Ben Goodger?
Please DO share your insider-information about the "long backstabbing
histories" of each and every one of these people, I'm sure it will be
most fascinating (as well as useful for self-protection to future
potential victims), and, after all, they ARE all rather public
figures... TIA!


No insider information is necessary, the job requirements make it
absolutely clear (at least to me) that Google is a company with an
elitist culture, just like most universities. In fact I am convinced
that universities (and this time I have extensive, first person and
historic information) are elitist.

We can discuss that if you want but to me it's appararent that *titles*
are a strong indication of elitism. Further more I am convinced that
universities spend about 95 percent of their effort into maintaining
the hierarchy (socializing the students), and spend almost no time on
creating new knowledge. A kind of 'piltdown' phenomenon.

Also when considering this massive scientific fraude (because that's
what it is) it is very illustrative to use the same deconstructing
methods that Randi, if that's not the name of a beverage, no:

http://en.wikipedia.org/wiki/James_Randi

uses to discredit paranormal phenomena. For example, careers are
"construed" because scientific success is credited to persons higher in
the hierarchy and mistakes are the faults of research assistents or
students. Only if this system breaks down we see reports of "scientific
fraude" in the media, which according to me is more a sign of the
social network around the scientist collapsing than it is a sign of
their research data being any more "fabricated" than other scientific
data.

There is a lot of this inbred and invisible corruption everywhere in
our societies and I tried to name it by using the term "working for the
man" by which I meant throwing away ones own moral compass and
confining ones efforts to further the interests of a small sub-system
(like soldiers) and thereby stabbing oneself and the rest of humanity
in the back (figuratively) and often not even sparing coworkers in
order to please the master.

Why is this not absolutely clear and apparent? Because when trying to
"feed ones wife and children" it is almost impossible to do so without
*proving* that one has *experience* in working for these corrupt
entities (and possibly having become corrupt oneself) and doing a lot
for the community but still being blind to the faults of ones employer
does count as condoning corruption, at least in my world.

Most people can survive (without damaging their souls so to speak) when
working for corruption themselves in this way, but sooner or later one
is asked to corrupt others (defending one's title during a promotion,
leading a community and so on). This is the crucial point where
corruption definitively occurs: where silence is not enough anymore to
keep one employed.

The human brain can withstand extreme amounts of conficting sensory
data and still maintain a sense of continuity and order while from all
sides things seem to fall apart. Such continuity is highly valuable
because it is the only thing that keeps chaos at arms length. The same
thing can be applied to whole societies (see for example the state
American politics is in now). So that is the reason these kind of
things normally are swept under the carpet.

However for *me* personally, because I am deserted by my government,
the university community, friends and family, and left to fend for
myself, there is no pressing need to keep up the facade so I can
finally see it for what it is.

I hope this answers some of your questions about my position. Anyway, I
think its better to talk about positive things, like trying to convince
google to hire any and all people who can program irrespective of their
corruption history. For example to help manning their commercial "ask
google" service. I read that nowadays people can get payed for playing
*games*, by taking the virtual personae of people who don't have time
to play themselves.

Oh, and here [1] is another job posting, which seems a lot better than
the Google example IMO, but which still misses a plan for what to do
when thousands of programmers would apply and which also misses a
mission statement for what they plan to do to save the world community
from becoming slaves to a select group of elitists hiding behind
webservices. The junior/senior divisioning in the job offerring below
worries me too. Well I guess it's a step by step process, but if it
were my call (which it obviously isn't, and maybe deciding on the basis
of this data is premature anyway) I'd rather have Guido working there
instead of at google.

Anton

[1]

(snipped from http://www.python.org/Jobs.html)

Posted 19-DEC-2005

Job Description: Senior and Junior positions available. We're building
a small team of outstanding, hard-working engineers dedicated to
solving interesting problems, writing great code and having a lot of
fun doing it.

Run by an engineer, this work environment is a meritocracy. You will be
working on a redesign and rewrite of an existing PHP web application
using a more deserving language/platform as well as developing new
features. This is a high volume system - if you dig concurrency, you
will not be bored. Must be able to handle the excitement.

Requirements: We're looking for great engineers, so we don't care about
your age or education. Python and SQL a must, PHP a plus, C a big
benefit, don't mention Java <0.5 wink>. Understanding of performance
and scalability issues, networking, event driven and multi-threaded
programming models and Async I/O are Good™. If you've used Twisted,
call us right now.

Work conditions: Onsite in NYC strongly preferred, but don't let this
deter you - we can work with remote folks under the right conditions.
Competitive compensation - we know what good people are worth. Flex
time - relaxed culture - getting the job done is all that matters.

What Python is used for: Python/Twisted as middleware/app server.

Jan 2 '06 #37

P: n/a
Ilias Lazaridis <il***@lazaridis.com> wrote:
...
... "or equivalent" (I do believe all I named have at least a Bachelor
degree, but with the undisputable results they've shown afterwards, I
think they'd all meet the "or equivalent" clause anyway).
" * BS or MS in Computer Science or equivalent (PhD a plus). "

This referes to an _academic_ degree.


Ah, I see. It depends on the job; for example,
<http://www.google.com/support/jobs/bin/answer.py?answer=23641> phrases
the requirement in a more explicit way:

* BS in Computer Science or equivalent experience.

so it's obvious that instead of the academic degree "equivalent
experience" is accepted, while other job offers are very specific in
requiring SOME degree. I had always taken the shorter "or equivalent"
as standing for the same concept, "or equivalent experience", as is
spelled out for some jobs, rather than like, say,
<http://www.google.com/support/jobs/bin/answer.py?answer=23604> which is
very specific about requiring:

* A BS degree in mechanical, electrical or industrial technology.
Very few companies make an explicit statement about non-academic applicants.

It seems Google does not.
It seems we do, for some but not all of our job openings -- that "or
equivalent experience" being the key, where it appears (and, in my
personal opinion the shorter "or equivalent" not being poles apart - but
that's a separate issue of interpretation).

Of course, a candidate who's not already a legal resident of the country
where they want to work may face other issues, visa-related ones, that
are not decided by Google but rather by governments and legislatures of
the various countries involved. I know I did have, among other things,
to document my academic history to the satisfaction of the US Government
(not of Google;-) to obtain my visa, once Google had extended me an
offer, and I believe that getting a visa would have been an even bigger
hassle if I did not have a degree (still, it's _possible_: my compatriot
Roberto Benigni does not have an academic degree, yet he did manage to
get visas to come collect his Oscar prizes, act in Jarmusch's "Coffe and
Cigarettes", and so on;-).
Mr. Martinelli, you seem to know python.


Sorry, that's a brand of sparking apple cider. I get my name mispelled
that way often enough, since I moved to the US, to have become quite
sensitive about it!-) In MY name, there is no "in"...


Mr. Martelli, I apologize for naming you like an soft-drink.


Thanks: if I have to get mis-spelled, I prefer the alternate
mis-spelling "Martel", which at least refers to a potable cognac!-)
re: #LIMITATION: automated get/set methods via var-name not available
see the 'property' built-in.


Can you (or some reader) sent (or fill in) the relevant code?


# within file talker.py, class Talker: (take care of indentations)

def __init__(self):
self.name = ''
self.age = 0

def setName(self, value):
self.name = value

def getName(self):
return self.name

def setAge(self, value):
self.age = value

def getAge(self):
return self.age

zName = property(getName, setName)
zAge = property(getAge, setAge)

Normally, we would name the properties just 'name' and 'age' (and pick
different names for the internal attributes, such as '_name' and
'_age'), but in this case you're already using the plain names for the
attributes, so I've made up different varnames for the properties.

At any rate, with this class definition,
john.zName = 'John Doe Python'
john.zAge = 19
perform the calls to setName and setAge respectively.

"prints Class Definition (methods, fields), without code
LIMITATION: no direct access on object-model-level"
not sure what you mean, but maybe see the 'inspect' module.


=> Clas Definition is not accessible via MetaClasses
(possible workaround: inspect module)


You can surely define a custom metaclass with methods that call
inspect.whatever, or directly perform whatever introspection you
require; it just seems strange to me to put this functionality in the
metaclass. At any rate, SOME code will need to execute to perform this
task, so "without code" cannot be accomplished. (Looking at your
evaluation of Ruby I note there's a LOT of code for this corresponding
case, indeed through inspect, despite the 'without code' specification).

Depending on what exactly you mean here, a simple dir() may in fact
suffice. For example:
class Foo(object): .... def __init__(self): self.zap=23
.... def zapper(self): return self.zap
.... f=Foo()
dir(f)
['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__',
'__hash__', '__init__', '__module__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__',
'zap', 'zapper']

The issues are obvious: you only get the names ('zap' and 'zapper' are
both just names here, no immediate indication of what's an instance
variable and what's a method instead) AND you get all the special names
as well, which clutters the results. Obviously (if you don't want
special names) you can easily filter this list of strings at a purely
string-processing level, and to distinguish methods from non-methods
takes just a little introspection. What module inspect does is provide
simple functions to perform such menial tasks -- nothing mysterious or
magic, you can read inspect.py to see the Python code in question.
"#LIMITATION: attribute is not available systemwide in every object
#LIMITATION: attribute is not on object-model-level
#LIMITATION: Operation is not Object Oriented
"
If you think that the syntax x(y,z) is "not Object Oriented", then again
I strongly suggest that you switch to other languages (avoiding other
powerful object oriented languages such as Dylan, Lisp, or O'CAML, which
also allow usage of function-call notation for THEIR OO power); in other
words, if you think the mere presence of a syntax like 'y.x(z)' makes
any difference wrt accessing a functionality versus 'x(y, z)', you're
clearly evaluating things at a totally inappropriate level.
I assure you: the level is totally appropriate.


My point is that whether you call:

setattr(zap, zip, zop)

or

zap.__setattr__(zip, zop)

is a syntax trifle. The semantics are the same (setattr is defined to
call the __setattr__ method, net of "legacy" issues with oldstyle
classes), so the difference boils down to where exactly you're placing
what punctuation (parentheses, commas, dots), names and decorations in
the statement; describing such merely-syntactical minutiae of
punctuation-placement as "OO" vs "not OO" is making a mockery of the
whole concept of "object orientation".

Python has many similar cases, in which prefix or infix syntax is
defined to internally call specified method. For example, in Python,

a + b

IS "an OO operation" -- it calls a.__add__(b), or, if warranted,
b.__radd__(a), indeed forming a typical 'TemplateMethod' Design Pattern
-- even though it's clothed in infix syntax. And similarly, e.g., for
setattr, which is clothed in prefix ("functioncall") syntax instead.
The notation you choose, setattr(Object, "meta", "Some meta
I did not choose it.

Someone has posted it.


It's quite correct, it's just that there are alternatives.
information"), is, at any rate, absolutely semantically identical to
Object.meta = "Some meta information" -- they will both succeed or both
fail, and when they both succeed they will have identical effects; thus,
that point about "not Object Oriented" seems to fall somewhere between
embarassingly wrong, and crazy-level weird.


=> Object.meta = "Some meta information"
=> can be used instead of setattr(Object, "meta", "Some metainformation")


I'd put it the other way 'round, since assigning to Object.meta is the
simpler and most common approach (for an attribute name that's fixed).
setattr is generally used only when the attribute name is computed at
runtime (a variable or expression), because in that case there is no
more direct syntax for the task. getattr, in addition, has another use
case: you can provide a "default value" so that, if the attribute is
absent in the object, you get the default value rather than having to
field an exception (AttributeError). IOW, instead of:

try:
mymeta = Object.meta
except AttributeError:
mymeta = "No metainfo available"

you can code the simpler:

mymeta = getattr(Object, 'meta', "No metainfo available")

This is a reasonably frequent use case, since nobody particularly likes
using four "atomic actions" (try, etc) to express the unitary concept
"give me the 'meta' attribute, IF available, otherwise a default".
It IS true that in Python you cannot set arbitrary attributes on


=> #LIMITATION: Cannot add arbitrary attributes to arbitrary objects.


Correct. In particular, Python has a concept of IMMUTABLE objects:
objects which, once created, cannot be altered in any way. In
particular, you cannot add attributes (or change existing ones, etc) in
such "immutable", aka "constant", objects.

If any language you evaluate lacks the concept of immutable objects, be
sure to note the reciprocal "LIMITATION: cannot define immutable,
constant objects".

Python could do better (since some objects are mutable and still don't
support attribute-setting -- function objects for example used to be
that way, though that limitation was removed a few versions ago), but
giving up the important concept of "constant"/"immutable" objects would
not be right, so (given the inherent contradiction between having
something immutable and being allowed to add stuff to it) I dearly hope
it will never be possible to alter EVERY object.

Again looking at your evaluation of Ruby, it seems this point is
incorrect there: in Ruby, it's possible to ``freeze'' an object, making
it constant/immutable; once you've done so, you can't then "add
arbitrary" [[or non-arbitrary, for that matter!-)]] "attributes" to it.

If you consider it a limitation that "unchangeable objects cannot be
changed" (which, to me, is a mere DEFINITION of "unchangeable"!-), you
should record the alleged limitation explicitly in both cases.
arbitrary objects. The workaround is to use a dict, indexed by the id
of the object you want to "set arbitrary attributes on"; this has the
helpful consequence that separate namespaces are used, so your arbitrary
setting of metadata cannot interfere with the `true' attributes of the
object in question.
=> possible workaround: use dict.
I'm unable to understand what you're trying to do in the "extend talker
code" box following that one.


Someone has posted this code, to solve "Applying metadata (or
attributes, as you prefere) to Class, Object, ...".

I understand that the poster has send code which does not work.


You mean something like...:

Talker.meta = "Class meta information"
john.meta = "Instance meta information"
Talker.sayHello.meta = 'method meta information"

You can't do that on an integer, because an integer is immutable; you
can't do it on 'Talker.name', because there IS no such thing as
'Talker.name' (if that's a limitation, it's also a limitation that you
can't do it on 'rumpelstiltskin.meta' either, and the reason is just the
same: there IS no such thing as rumpelstiltskin in this code).

There's no need to define this 'meta' attribute anywhere, it just
springs into existence when you assign to it.

Once you've set these, you can "print Talker.meta" etc etc.

If you (or any reader) like, please provide the concrete code to solve
the open limitations (the simple ones, like e.g. get/set).
Hope I've done that in the few cases where I understood what your
intentions were, but there must be more in which I didn't, such as the
strange "without code" specification.
Thank you for taking the time to answer.


You're welcome.
Alex
Jan 2 '06 #38

P: n/a
Anton Vredegoor <an*************@gmail.com> wrote:
...
only hire people with long backstabbing histories.
Such as...? Guido van Rossum? Greg Stein? Vint Cerf? Ben Goodger?

... No insider information is necessary, the job requirements make it
absolutely clear (at least to me) that Google is a company with an
elitist culture,
Absolutely yes, in terms of who we want to work at Google: we DO want
GREAT people. And we don't keep this a secret, either: right up there
at <http://www.google.com/jobs/>, we say "our strategy is simple: we
hire great people". Rather than hiring a LOT of people, we prefer to be
extremely, obsessively selective, and try to hire ONLY a few people,
ones who we can convince ourselves do deserve that adjective, "great".

This does mean that we definitely tend err on the side of caution, and
FAIL to hire some people who are also great, just because we can't
determine with sufficient certainty that they indeed are -- I've seen
this happen more than once, and deeply regret it (for both Google and
the person), but I have no idea how we could do better without relaxing
our extremely elitist standards (we do debate these issues internally
all of the time, trying to do better, but have found no magic wand yet).

But this has nothing to do with "only people with backstabbing
histories", which looks like an unsupported, generalized insult.
just like most universities. In fact I am convinced
that universities (and this time I have extensive, first person and
historic information) are elitist.
No doubt they try to be, mostly (except where governments or other
institutions "twist their arms" to force them to admit huge masses of
students), but I've met many people with advanced degrees from even the
best/most elitist universities, such as Stanford or MIT, where it sure
looked to me as if the university's attempts to only graduate the very
best have definitely failed.
We can discuss that if you want but to me it's appararent that *titles*
are a strong indication of elitism. Further more I am convinced that
Requiring a certain title for a job is mostly a desperate attempt to
reduce the huge amount of work and effort it takes to hire great people,
whittling down the number of resumes to be considered divided by the
number of hires from the high thousands to the low hundreds. If there
were available infinite resources for the job of hiring/selection, we
could easily interview, say, 6000 candidates for a post, giving each a
week or so of concentrated attention to probe their abilities; alas,
this would require about 120 person-years from our people for the
selection process. So, if nobody at Google did ANYTHING BUT interview
candidates, given that we have a bit over 5000 employees now, we could
hire in the course of 2006 another 40 or so, without doing anything
else. (The numbers are all off the top of my head, but I think they may
be roughly the right orders of magnitude).

This is just impractical: we need to hire many more than 40, AND cannot
afford to have all existing employees do nothing but select new ones.
So, we need to shrink the ratio drastically, on both factors: say 10
instead of 40 hours of selection per candidate, and 50 rather than 6000
candidates being considered per post. So we perform selection in
stages, and most candidates out of those many thousands-per-job are
"weeded out" at the very first stage, e.g. by failing to meet specific
qualifications.

I wish that, as you say, "titles" were indeed strong indications of
excellence. Unfortunately, they aren't, but in some cases they're
better than nothing. Many of our job descriptions, as I pointed out in
another post on this thread, say "BS or equivalent experience" or words
to that effect; if you can show the "or equivalent", and can get past
the first hurdle, then that title is the least of the issues. For
example, if we advertised a job requiring "PhD or equivalent", and among
the candidates were Bill Gates, Larry Page, and Sergey Brin, none of
whom has obtained a PhD to the best of my knowledge, they would surely
be able to display the "or equivalent" based on their accomplishments
and experience, and thus get past that first hurdle.

uses to discredit paranormal phenomena. For example, careers are
"construed" because scientific success is credited to persons higher in
the hierarchy and mistakes are the faults of research assistents or
students. Only if this system breaks down we see reports of "scientific
Can you show that happening for Guido van Rossum, for example, or Greg
Stein? What "hierarchy" were they in, to enable them, as you're
accusing, to take credit for accomplishments that are not their own, and
deflect blame to poor maligned underlings?

You've made a very specific and insulting claim about Google hiring only
people with long histories of backstabbing, and yet it appears that
you're failing to substantiate it. Hurling such accusations (ones which
obviously must involve specific people, since the whole thread, as
indicated by the subject, starts with Guido's working for Google)
without being able to provide any substance is, in my strongly held
opinion, quite reprehensible, and doesn't reflect well on you.

However for *me* personally, because I am deserted by my government,
the university community, friends and family, and left to fend for
myself, there is no pressing need to keep up the facade so I can
finally see it for what it is.

I hope this answers some of your questions about my position. Anyway, I
think its better to talk about positive things, like trying to convince
google to hire any and all people who can program irrespective of their
corruption history.
People who distinguish themselves as outstanding contributors to
open-source projects can generally clear the "or equivalent" hurdle
without difficulty. Do you consider a history of such contributions to
be a "corruption history" and evidence of "backstabbing", too? To
emerge as such an outstanding contributor, titles are irrelevant: all
you need, besides willingness and ability to invest your time that way,
are outstanding technical ability (particularly in design and coding,
but testing and debugging are also very important, and so is a knack for
writing good documentation -- one can become an "outstanding
contributor" through many possible combinations of such skills) AND any
of a wide range of suitable character and personality traits.

To focus on the latter: I would never want Google to hire somebody, no
matter how great a programmer they might be, who can accuse, for
example, Guido van Rossum, of having a "long history of backstabbing",
without any substantial data to back up the accusation, just to vent
their frustration at their personal situation. You DID say that Google
hires ONLY people with long histories of backstabbing, and by the very
definition of the word "ONLY" this means you are accusing me, Guido,
Greg, etc, etc, of having "long histories of backstabbing" -- and after
hurling such insults, and providing NO specific data to support them,
you're hallucinating that you can now switch "to talk about positive
things"?!

One reason I'm so happy we've hired Guido is that, in addition to his
technical excellence, he's just a great guy, wonderful to work with.
Technical excellence is a necessary but not sufficient quality: one ALSO
needs suitable combinations of character and personality, and Guido has
them, in spades. There is an enormous variation of personalities and
character traits at Google (we DO value diversity!), but they all have
in common the fact that they can combine into small, fluid teams which
become even more productive than "the sum of their parts", because
teammates LIKE AND RESPECT AND TRUST each other. I do not see how
somebody whose behavior included such unsubstantiated "backstabbing"
accusations could be productive in this way.
And, about the job-posting you liked better...:
Run by an engineer, this work environment is a meritocracy. You will be


To me, "meritocracy" and "elitism" are close to being synonyms, in most
contexts. "Meritocracy" is defined somewhere on the net as:
"""
A system of government whereby a particular standard of ability is used
as the basis by which political leadership is determined or accrues to
an existing elite.
"""
Note the connection with "elite", which in turn gives us "elitism". I
do like "meritocracy" because it specifically mentions *ability*, but of
course ability (including technical skill, which in turn is enhanced by
appropriate experience, AND 'softer' character/personality issues) is
what a successful firm bases its "elite" on (or tries to; if it fails,
and hires people bereft of sufficient ability, it won't prosper long).
Alex
Jan 2 '06 #39

P: n/a
Alex Martelli wrote:
Anton Vredegoor <an*************@gmail.com> wrote:
...
only hire people with long backstabbing histories.

Such as...? Guido van Rossum? Greg Stein? Vint Cerf? Ben Goodger?


...
No insider information is necessary, the job requirements make it
absolutely clear (at least to me) that Google is a company with an
elitist culture,

Absolutely yes, in terms of who we want to work at Google: we DO want
GREAT people. And we don't keep this a secret, either: right up there
at <http://www.google.com/jobs/>, we say "our strategy is simple: we
hire great people". Rather than hiring a LOT of people, we prefer to be
extremely, obsessively selective, and try to hire ONLY a few people,
ones who we can convince ourselves do deserve that adjective, "great".

This does mean that we definitely tend err on the side of caution, and
FAIL to hire some people who are also great, just because we can't
determine with sufficient certainty that they indeed are -- I've seen
this happen more than once, and deeply regret it (for both Google and
the person), but I have no idea how we could do better without relaxing
our extremely elitist standards (we do debate these issues internally
all of the time, trying to do better, but have found no magic wand yet).

But this has nothing to do with "only people with backstabbing
histories", which looks like an unsupported, generalized insult.

just like most universities. In fact I am convinced
that universities (and this time I have extensive, first person and
historic information) are elitist.

No doubt they try to be, mostly (except where governments or other
institutions "twist their arms" to force them to admit huge masses of
students), but I've met many people with advanced degrees from even the
best/most elitist universities, such as Stanford or MIT, where it sure
looked to me as if the university's attempts to only graduate the very
best have definitely failed.

We can discuss that if you want but to me it's appararent that *titles*
are a strong indication of elitism. Further more I am convinced that

Requiring a certain title for a job is mostly a desperate attempt to
reduce the huge amount of work and effort it takes to hire great people,
whittling down the number of resumes to be considered divided by the
number of hires from the high thousands to the low hundreds. If there
were available infinite resources for the job of hiring/selection, we
could easily interview, say, 6000 candidates for a post, giving each a
week or so of concentrated attention to probe their abilities; alas,
this would require about 120 person-years from our people for the
selection process. So, if nobody at Google did ANYTHING BUT interview
candidates, given that we have a bit over 5000 employees now, we could
hire in the course of 2006 another 40 or so, without doing anything
else. (The numbers are all off the top of my head, but I think they may
be roughly the right orders of magnitude).

This is just impractical: we need to hire many more than 40, AND cannot
afford to have all existing employees do nothing but select new ones.
So, we need to shrink the ratio drastically, on both factors: say 10
instead of 40 hours of selection per candidate, and 50 rather than 6000
candidates being considered per post. So we perform selection in
stages, and most candidates out of those many thousands-per-job are
"weeded out" at the very first stage, e.g. by failing to meet specific
qualifications.

I wish that, as you say, "titles" were indeed strong indications of
excellence. Unfortunately, they aren't, but in some cases they're
better than nothing. Many of our job descriptions, as I pointed out in
another post on this thread, say "BS or equivalent experience" or words
to that effect; if you can show the "or equivalent", and can get past
the first hurdle, then that title is the least of the issues. For
example, if we advertised a job requiring "PhD or equivalent", and among
the candidates were Bill Gates, Larry Page, and Sergey Brin, none of
whom has obtained a PhD to the best of my knowledge, they would surely
be able to display the "or equivalent" based on their accomplishments
and experience, and thus get past that first hurdle.
uses to discredit paranormal phenomena. For example, careers are
"construed" because scientific success is credited to persons higher in
the hierarchy and mistakes are the faults of research assistents or
students. Only if this system breaks down we see reports of "scientific

Can you show that happening for Guido van Rossum, for example, or Greg
Stein? What "hierarchy" were they in, to enable them, as you're
accusing, to take credit for accomplishments that are not their own, and
deflect blame to poor maligned underlings?

You've made a very specific and insulting claim about Google hiring only
people with long histories of backstabbing, and yet it appears that
you're failing to substantiate it. Hurling such accusations (ones which
obviously must involve specific people, since the whole thread, as
indicated by the subject, starts with Guido's working for Google)
without being able to provide any substance is, in my strongly held
opinion, quite reprehensible, and doesn't reflect well on you.
However for *me* personally, because I am deserted by my government,
the university community, friends and family, and left to fend for
myself, there is no pressing need to keep up the facade so I can
finally see it for what it is.

I hope this answers some of your questions about my position. Anyway, I
think its better to talk about positive things, like trying to convince
google to hire any and all people who can program irrespective of their
corruption history.

People who distinguish themselves as outstanding contributors to
open-source projects can generally clear the "or equivalent" hurdle
without difficulty. Do you consider a history of such contributions to
be a "corruption history" and evidence of "backstabbing", too? To
emerge as such an outstanding contributor, titles are irrelevant: all
you need, besides willingness and ability to invest your time that way,
are outstanding technical ability (particularly in design and coding,
but testing and debugging are also very important, and so is a knack for
writing good documentation -- one can become an "outstanding
contributor" through many possible combinations of such skills) AND any
of a wide range of suitable character and personality traits.

To focus on the latter: I would never want Google to hire somebody, no
matter how great a programmer they might be, who can accuse, for
example, Guido van Rossum, of having a "long history of backstabbing",
without any substantial data to back up the accusation, just to vent
their frustration at their personal situation. You DID say that Google
hires ONLY people with long histories of backstabbing, and by the very
definition of the word "ONLY" this means you are accusing me, Guido,
Greg, etc, etc, of having "long histories of backstabbing" -- and after
hurling such insults, and providing NO specific data to support them,
you're hallucinating that you can now switch "to talk about positive
things"?!

One reason I'm so happy we've hired Guido is that, in addition to his
technical excellence, he's just a great guy, wonderful to work with.
Technical excellence is a necessary but not sufficient quality: one ALSO
needs suitable combinations of character and personality, and Guido has
them, in spades. There is an enormous variation of personalities and
character traits at Google (we DO value diversity!), but they all have
in common the fact that they can combine into small, fluid teams which
become even more productive than "the sum of their parts", because
teammates LIKE AND RESPECT AND TRUST each other. I do not see how
somebody whose behavior included such unsubstantiated "backstabbing"
accusations could be productive in this way.
And, about the job-posting you liked better...:

Run by an engineer, this work environment is a meritocracy. You will be

To me, "meritocracy" and "elitism" are close to being synonyms, in most
contexts. "Meritocracy" is defined somewhere on the net as:
"""
A system of government whereby a particular standard of ability is used
as the basis by which political leadership is determined or accrues to
an existing elite.
"""
Note the connection with "elite", which in turn gives us "elitism". I
do like "meritocracy" because it specifically mentions *ability*, but of
course ability (including technical skill, which in turn is enhanced by
appropriate experience, AND 'softer' character/personality issues) is
what a successful firm bases its "elite" on (or tries to; if it fails,
and hires people bereft of sufficient ability, it won't prosper long).
Alex

That all been said. My recommandation: hire that man!

Jaap
Jan 2 '06 #40

P: n/a
Anton Vredegoor wrote:
<cut description of modern western society>

Most people can survive (without damaging their souls so to speak) when
working for corruption themselves in this way, but sooner or later one
is asked to corrupt others (defending one's title during a promotion,
leading a community and so on). This is the crucial point where
corruption definitively occurs: where silence is not enough anymore to
keep one employed.

The human brain can withstand extreme amounts of conficting sensory
data and still maintain a sense of continuity and order while from all
sides things seem to fall apart. Such continuity is highly valuable
because it is the only thing that keeps chaos at arms length. The same
thing can be applied to whole societies (see for example the state
American politics is in now). So that is the reason these kind of
things normally are swept under the carpet.

However for *me* personally, because I am deserted by my government,
the university community, friends and family, and left to fend for
myself, there is no pressing need to keep up the facade so I can
finally see it for what it is.

Modern life has modern problem, well that isn't quite true, the problems
are actually the same since the moment organisms began to group to
enlarge their chance of survival.
The funny thing is that the problem, in its essentials, is still the
same, how to enlarge the chance of survival, this time within the group.
"En zie daar" (pardon my dutch) we have created hierarchy and within
that the problem of the individuals identity versus the groups identity,
mix it with diplomacy and "unreal" friendship (the ones that are based
on a persons status) and you got enough material to create Hollywood and
everything that comes from it. If you add "take one for the group" you
got yourself an action movie.

Now theory is all fine and dandy especially if its common sense but
where does it leave us? Well most of the time, screwed, for the lack of
a better word. But is it fair to negatively mark people because their
personal identity for whatever reason fitted better to the common group
identity? Sure it's bitter but don't be bitter about it, you know
probably more then anybody else where that bitterness leads to.

What we can do about it? I have no clue, I'll just use that frustration
to work on a personal project or making a song on my guitar, but YMMV
;-). Perhaps being happy for somebody's else's luck is the key to ones
own happiness, at least it works for me.

Now luckily where on the Internet where anybody can be anybody or not if
they like to, at least everybody got a chance (not an equal one but
still) to show what they are worth of. Perhaps you could too?

I wish you the best of wisdom and luck and I mean that most sincerely.
<cut rest>

--
mph
Jan 2 '06 #41

P: n/a
Alex Martelli wrote:
Ilias Lazaridis <il***@lazaridis.com> wrote:
...
... "or equivalent" (I do believe all I named have at least a Bachelor
degree, but with the undisputable results they've shown afterwards, I
think they'd all meet the "or equivalent" clause anyway).
" * BS or MS in Computer Science or equivalent (PhD a plus). "

This referes to an _academic_ degree.


Ah, I see. It depends on the job; for example,
<http://www.google.com/support/jobs/bin/answer.py?answer=23641> phrases
the requirement in a more explicit way:

* BS in Computer Science or equivalent experience.

[...]
<http://www.google.com/support/jobs/bin/answer.py?answer=23604> which is
very specific about requiring:

* A BS degree in mechanical, electrical or industrial technology.
Very few companies make an explicit statement about non-academic applicants.

It seems Google does not.
It seems we do, for some but not all of our job openings -- that "or

[...] - (comments, examples, elaborations)

I understand.

Ok, thus Google is flexible in this.

[sidenote: some jobs _require_ a degree by law]

So, I like Google again (in this context).

-

What about external independents ?

Does Google cooperate with them?

And how can one contact such a giant?
Mr. Martinelli, you seem to know python.

Sorry, that's a brand of sparking apple cider. I get my name mispelled
that way often enough, since I moved to the US, to have become quite
sensitive about it!-) In MY name, there is no "in"...


Mr. Martelli, I apologize for naming you like an soft-drink.


Thanks: if I have to get mis-spelled, I prefer the alternate
mis-spelling "Martel", which at least refers to a potable cognac!-)


hicc!

-

Python vs. jamLang follows:
re: #LIMITATION: automated get/set methods via var-name not available
see the 'property' built-in.


Can you (or some reader) sent (or fill in) the relevant code? [...] - (code, explanations)

thanks, I've changed this:

http://lazaridis.com/case/lang/pytho...ariable_access

this leads to a new limitation:

"#LIMITATION: large amount of repetitive code"
"prints Class Definition (methods, fields), without code
LIMITATION: no direct access on object-model-level"
not sure what you mean, but maybe see the 'inspect' module.


=> Clas Definition is not accessible via MetaClasses
(possible workaround: inspect module)


You can surely define a custom metaclass with methods that call
inspect.whatever, or directly perform whatever introspection you
require; it just seems strange to me to put this functionality in the
metaclass. At any rate, SOME code will need to execute to perform this
task, so "without code" cannot be accomplished. (Looking at your


I meant: reproduce the definition of the class (but without reproducing
the source-code of the class)

I have removed the "without code" remark, which was missleading.
evaluation of Ruby I note there's a LOT of code for this corresponding
case, indeed through inspect, despite the 'without code' specification). [...] - (code-level elaborations, implementation suggestions)

ok
"#LIMITATION: attribute is not available systemwide in every object
#LIMITATION: attribute is not on object-model-level
#LIMITATION: Operation is not Object Oriented [...]
I assure you: the level is totally appropriate.


My point is that whether you call:

setattr(zap, zip, zop)

or

zap.__setattr__(zip, zop)

is a syntax trifle. The semantics are the same (setattr is defined to

[...] - (elaborations)

I've understood this.

[...]
=> Object.meta = "Some meta information"
=> can be used instead of setattr(Object, "meta", "Some metainformation")


I'd put it the other way 'round, since assigning to Object.meta is the
simpler and most common approach (for an attribute name that's fixed).
setattr is generally used only when the attribute name is computed at
runtime (a variable or expression), because in that case there is no
more direct syntax for the task. getattr, in addition, has another use
case: you can provide a "default value" so that, if the attribute is
absent in the object, you get the default value rather than having to
field an exception (AttributeError). IOW, instead of:

try:
mymeta = Object.meta
except AttributeError:
mymeta = "No metainfo available"

you can code the simpler:

mymeta = getattr(Object, 'meta', "No metainfo available")

This is a reasonably frequent use case, since nobody particularly likes
using four "atomic actions" (try, etc) to express the unitary concept
"give me the 'meta' attribute, IF available, otherwise a default".


I understand now.
It IS true that in Python you cannot set arbitrary attributes on


=> #LIMITATION: Cannot add arbitrary attributes to arbitrary objects.


Correct. In particular, Python has a concept of IMMUTABLE objects:
objects which, once created, cannot be altered in any way. In
particular, you cannot add attributes (or change existing ones, etc) in
such "immutable", aka "constant", objects.


=> Python: immutable objects
If any language you evaluate lacks the concept of immutable objects, be
sure to note the reciprocal "LIMITATION: cannot define immutable,
constant objects".
yes, you are right.

=> {New Requirement: ability to declare objects as mutable/immutable.}
Python could do better (since some objects are mutable and still don't
support attribute-setting -- function objects for example used to be
that way, though that limitation was removed a few versions ago), but
giving up the important concept of "constant"/"immutable" objects would
not be right, so (given the inherent contradiction between having
something immutable and being allowed to add stuff to it) I dearly hope
it will never be possible to alter EVERY object.

Again looking at your evaluation of Ruby, it seems this point is
incorrect there: in Ruby, it's possible to ``freeze'' an object, making
it constant/immutable; once you've done so, you can't then "add
arbitrary" [[or non-arbitrary, for that matter!-)]] "attributes" to it.
I estimate that there is a "unfreeze" operation, too - which would lead
to flexibity.
If you consider it a limitation that "unchangeable objects cannot be
changed" (which, to me, is a mere DEFINITION of "unchangeable"!-), you
should record the alleged limitation explicitly in both cases.
I think I've understood your elaborations.

[...]
I'm unable to understand what you're trying to do in the "extend talker
code" box following that one.


Someone has posted this code, to solve "Applying metadata (or
attributes, as you prefere) to Class, Object, ...".

I understand that the poster has send code which does not work.


You mean something like...:

Talker.meta = "Class meta information"
john.meta = "Instance meta information"
Talker.sayHello.meta = 'method meta information"

You can't do that on an integer, because an integer is immutable; you


ok
can't do it on 'Talker.name', because there IS no such thing as
'Talker.name' (if that's a limitation, it's also a limitation that you
can't do it on 'rumpelstiltskin.meta' either, and the reason is just the
same: there IS no such thing as rumpelstiltskin in this code).
ok
There's no need to define this 'meta' attribute anywhere, it just
springs into existence when you assign to it.
?

"assign to it" with:

setattr(Talker, 'meta', "Class meta information")

but _not_ with this:

Talker.meta = "Class meta information"

correct?
Once you've set these, you can "print Talker.meta" etc etc.


ok
If you (or any reader) like, please provide the concrete code to solve
the open limitations (the simple ones, like e.g. get/set).


Hope I've done that in the few cases where I understood what your
intentions were, but there must be more in which I didn't, such as the
strange "without code" specification.


clarified above.
Thank you for taking the time to answer.


You're welcome.

Alex


..

--
http://lazaridis.com
Jan 3 '06 #42

P: n/a
Alex Martelli wrote:
It IS true that in Python you cannot set arbitrary attributes on
arbitrary objects. The workaround is to use a dict, indexed by the id
of the object you want to "set arbitrary attributes on"; this has the
helpful consequence that separate namespaces are used, so your arbitrary
setting of metadata cannot interfere with the `true' attributes of the
object in question.

That's a horrible suggestion (using id's, not the bit about separate
namespaces). If you use the id then attributes will persist beyond the
lifetime of the object and may suddenly reappear on other unrelated objects
later.

A better suggestion here would be to use weak references. Unfortunately,
not every Python object can be the target of a weak reference, so there is
a limitation here preventing a useful implementation for many builtin
types. I can't actually think of a use case for what Ilias wants, and if
there isn't a use case it isn't a big problem, but if anyone can come up
with a usecase please say.

BTW, I don't know Ruby enough to understand the example at
http://lazaridis.com/case/lang/ruby/base.html:

class Object
def meta # adds variable "meta" to all objects in the system
end

Talker.meta = "Class meta information"
john.meta = "Instance meta information"
1234.meta = 'any Instance meta information"

puts Talker.meta
puts john.meta
puts 1234.meta # an integer object

With the above code what would 'puts someexpressionresultingin1234.meta'
output? i.e. is the attribute being set on all integers with the value
1234, or just on a specific instance of an integer.

I don't know if the question even makes sense for Ruby, but it obviously
needs to be answered before similar code could be implemented for Python.

Anyway, subject to the restriction that it doesn't work for int, list,
tuple, etc. here is some code which lets you assign attributes the way I
think Ilias wants. Unlike the Ruby code it doesn't just dump them all in
the same namespace as other attributes, instead you have to create one or
more meta namespaces which then don't interfere at all with other
attributes on the objects, but which in other ways work just like
attributes (e.g. for the purposes of inheritance you can set an attribute
or a method on a base class and it works fine in instances of derived
classes.)

BTW, If anyone does actually want to use this, the attribute lookup code is
incomplete: completing it is left as a exercise.

------------- metaspace.py -------------------
from weakref import WeakKeyDictionary

class _Metanamespacewrapper(object):
def __init__(self, namespace, target):
self.__dict__['_namespace'] = namespace
self.__dict__['_target'] = target
d = namespace.d
if target not in d:
d[target] = {}
self.__dict__['_dict'] = d[target]

def __getattribute__(self, name):
if name.startswith('_'):
return object.__getattribute__(self,name)

if name in self._dict:
return self._dict[name]

t = type(self._target)
for klass in (t,)+t.__mro__:
try:
d = self._namespace.d[klass]
v = d[name]
except KeyError:
continue
break
else:
raise AttributeError, "meta namespace has no attribute '%s' on
object '%r'" % (name, self._target)

if hasattr(v, '__get__'):
return v.__get__(self._target)
return v

def __setattr__(self, name, value):
self._dict[name] = value

def __delattr__(self, name):
del self._dict[name]

class Metanamespace(object):
def __init__(self):
self.d = WeakKeyDictionary()

def __call__(self, target):
return _Metanamespacewrapper(self, target)

meta = Metanamespace()

# Example of use...

class Talker(object):
def sayHello(self):
print "Hello world"

john = Talker()

# Check simple access to attributes
meta(Talker).name = 'test'
print meta(Talker).name, meta(john).name

meta(john).name = 'a name'
john.name = 'real attribute' # Does not interfere with meta namespace
print meta(john).name, john.name

meta(object).arg = 5
print "arg=", meta(john).arg
meta(john).arg = 2
print "arg=", meta(john).arg
del meta(john).arg
print "arg=", meta(john).arg

def fn1(self, arg):
print "fn1", self, arg
def fn2(self, arg):
print "fn2", self, arg

# Check that methods work properly
meta(object).fn = fn1
meta(john).fn(1)
meta(Talker).fn = fn2
meta(john).fn(2)

-------------------------------------------------
The output is:

test test
a name real attribute
arg= 5
arg= 2
arg= 5
fn1 <__main__.Talker object at 0x009D9670> 1
fn2 <__main__.Talker object at 0x009D9670> 2

Jan 3 '06 #43

P: n/a
Alex Martelli wrote:
Anton Vredegoor <an*************@gmail.com> wrote: [...]
No insider information is necessary, the job requirements make it
absolutely clear (at least to me) that Google is a company with an
elitist culture,


Absolutely yes, in terms of who we want to work at Google: we DO want
GREAT people. And we don't keep this a secret, either: right up there
at <http://www.google.com/jobs/>, we say "our strategy is simple: we
hire great people". Rather than hiring a LOT of people, we prefer to be
extremely, obsessively selective, and try to hire ONLY a few people,
ones who we can convince ourselves do deserve that adjective, "great".

This does mean that we definitely tend err on the side of caution, and
FAIL to hire some people who are also great, just because we can't
determine with sufficient certainty that they indeed are -- I've seen
this happen more than once, and deeply regret it (for both Google and
the person), but I have no idea how we could do better without relaxing
our extremely elitist standards (we do debate these issues internally
all of the time, trying to do better, but have found no magic wand yet).


[...] students), but I've met many people with advanced degrees from even the
best/most elitist universities, such as Stanford or MIT, where it sure
looked to me as if the university's attempts to only graduate the very
best have definitely failed.
[...] Requiring a certain title for a job is mostly a desperate attempt to
reduce the huge amount of work and effort it takes to hire great people,
whittling down the number of resumes to be considered divided by the
number of hires from the high thousands to the low hundreds. If there
were available infinite resources for the job of hiring/selection, we
could easily interview, say, 6000 candidates for a post, giving each a
week or so of concentrated attention to probe their abilities; alas,
this would require about 120 person-years from our people for the
selection process. So, if nobody at Google did ANYTHING BUT interview
candidates, given that we have a bit over 5000 employees now, we could
hire in the course of 2006 another 40 or so, without doing anything
else. (The numbers are all off the top of my head, but I think they may
be roughly the right orders of magnitude).

This is just impractical: we need to hire many more than 40, AND cannot
afford to have all existing employees do nothing but select new ones.
So, we need to shrink the ratio drastically, on both factors: say 10
instead of 40 hours of selection per candidate, and 50 rather than 6000
candidates being considered per post. So we perform selection in
stages, and most candidates out of those many thousands-per-job are
"weeded out" at the very first stage, e.g. by failing to meet specific
qualifications.

I wish that, as you say, "titles" were indeed strong indications of
excellence. Unfortunately, they aren't, but in some cases they're
better than nothing. Many of our job descriptions, as I pointed out in
another post on this thread, say "BS or equivalent experience" or words
to that effect; if you can show the "or equivalent", and can get past
the first hurdle, then that title is the least of the issues. For
example, if we advertised a job requiring "PhD or equivalent", and among
the candidates were Bill Gates, Larry Page, and Sergey Brin, none of
whom has obtained a PhD to the best of my knowledge, they would surely
be able to display the "or equivalent" based on their accomplishments
and experience, and thus get past that first hurdle.

[...]

-

TAG.google.evolution.talent.detection

..
--
http://lazaridis.com
Jan 3 '06 #44

P: n/a
Ilias Lazaridis <il***@lazaridis.com> wrote:
...
Ok, thus Google is flexible in this.

[sidenote: some jobs _require_ a degree by law]
Or some even more stringent qualification, such as the state's Bar exam
for lawyers -- you may not be able to sit for that exam w/o the
appropriate degree, but the degree by itself is not enough, you still
have to pass the exam. It is that way for Engineers in Italy (I passed
my State Exam in the early '80s), although you only need the certificate
for some specific professional undertakings (e.g. design a ship, or a
large building, or technically supervise building operations beyond a
certain size -- not to write software or to design chips).

Personally, I agree with the theory, first expressed by Adam Smith, that
such barriers to entry are mostly useful to grant practitioners of a
certain profession the "scarcity value" that lets them charge higher
prices, although of course they're always presented as "good for
society". Note that in Europe in the Middle Ages you needed strict
qualifications of that kind for just about anything -- you could not
make hats unless you belonged to the Hatters' Guild, etc; most of those
restrictions have since been lifted, but a few groups (doctors, lawyers,
accountants, ...) have managed to keep them in place.
What about external independents ?
Does Google cooperate with them?
Hardly ever... I, too, was at first trying to see if I could establish
some kind of consulting relationship with Google, in order to keep my
existing freelance practice alive as well, but in the end I found no way
to do so. I believe Google's external consultants are very few -- e.g.,
some lawyers (Google employs some, but also has some external ones on
retainer), the members of our Board of Directors, Hal Varian.
And how can one contact such a giant?
I believe that starting at <http://www.google.com/about.html> and
navigating from it will show you all the various avenues of contact
depending on your purpose for the contact; except that, for questions
about the Google Foundation, it might be better to start at
<http://google.org/> instead. Since the number of people wanting to
establish such contact for all sort of purposes is very large, and only
a few of Google's 5000 employees spend their time dealing with such
contact attempts, I have unfortunately heard of many cases in which such
attempts prove unfruitful.

http://lazaridis.com/case/lang/pytho...ariable_access

this leads to a new limitation:

"#LIMITATION: large amount of repetitive code"
One normally does not define large numbers of identical accessors (there
would be no purpose served in so doing), so the "boilerplate"
(repetitive code) does not truly occur. If for whatever reason one DOES
want a bazillion identical accessors, a simple custom metaclass (if one
has many classes with such needs), or simpler code still (if just one or
two classes require such bundles of accessors), avoid the repetitions.

For example (untested code, but should work):

class Talker(object):
def __init__(self):
self._name = ''
self._age = 0
for attr in '_name _age'.split():
def getter(self, attr=attr): return getattr(self, attr)
def setter(self, value, attr=attr): return setattr(self, attr, value)
setattr(Talker, attr[1:], property(getter, setter))

This is probably not worth the bother for just 2 attributes, but it
trivially generalizes to a bazillion attributes, if that's what you
want. A custom metaclass could also more easily define an __init__
based simply on attribute names and default values desired (it's quite
possible this way, too, of course); alternative approaches include
wrapping the 'class' statement and the following loop in a factory
function which builds and returns the desired class (this gives roughly
the same power as a custom metaclass for this specialized task, though a
custom metaclass is more flexible and general); and the use of lexical
closures in preference to the simple getter and setter functions shown
here (or, factory functions for properties, embedding such closures).
E.g., change the loop to:

def makeprop(attr):
def getter(self): return getattr(self, attr)
def setter(self, value): return setattr(self, attr, value)
return property(getter, setter)
for attr in '_name _age'.split():
setattr(Talker, attr[1:], makeprop(attr))

Some would consider this more elegant (better factored).
The reason you don't see this kind of thing emphasized in Python
literature is that this style of programming is very rarely needed --
mostly when you're building a framework, or the Python modest equivalent
of a domain-specific minilanguage, or some kind of automated code
generator. For 99% of the normal, everyday application programming one
does in Python, this introspective metaprogramming would be overkill,
although that may not be obvious to one who does not know Python -- for
example, it remains true that the addition of all of those trivial
getters and setters by whatever means performs NOTHING useful -- the
class's functionality and interface are IDENTICAL to the one you'd
normally code, with directly accessible attributes and without all of
those boilerplate methods.

You'll find more examples of appropriate use of metaprogramming and
introspection in the 2nd edition of the Python Cookbook, though.
I meant: reproduce the definition of the class (but without reproducing
the source-code of the class)

I have removed the "without code" remark, which was missleading.
Aha! I see now, and it does make more sense. Yes, using inspect you
could surely emit for example skeletons for the various methods, with
e.g. a 'pass' in lieu of their code. However, since instance attributes
are determined by code that gets executed (in __init__, and maybe in
__new__ and even elsewhere), it's not really practical to find out what
attributes an instance would have without in fact creating such an
instance and introspecting on it. Would such instantiation be OK here?
In some cases instantiating a class might have externally visible
effects, say opening a network connection, or a database, etc, so you
might well want to forbid that for purely introspective purposes.
yes, you are right.

=> {New Requirement: ability to declare objects as mutable/immutable.} ... I estimate that there is a "unfreeze" operation, too - which would lead
to flexibity.


Yes, but also mean that immutable objects are not really immutable, only
"immutable until further notice". For example, the immutability of
objects can be used to enhance the ability to reason about a program's
correctness... but such reasoning is not helpful if an 'immutable'
object isn't really immutable.

Perhaps rather than thinking in terms of ideals and limitations, in this
field you could just use a simple descriptive approach, since each
choice has some advantages. E.g., a language such as Haskell occupies
one (productive) extreme: EVERY object is immutable -- you never change
existing objects, but rather make new ones as needed; this makes the
language ideal to reason about program correctness, although it requires
a programming style very different from what's normal in other languages
(I believe Haskell and other functional-programming languages of its ilk
requires very deep abilities to reason mathematically -- I've been known
to describe that as "math or CS PhD", although of course that's merely
indicative!). At the other extreme, Ruby's very productive choice is to
allow freeze and unfreeze of everything (I believe -- but you should
double check with a Ruby expert) -- makes it a lost cause to use
immutability to reason about program correctness, but allows a wide
variety of programming styles.

Most languages try to strike a balance with SOME objects being mutable
and others not, which of course like all compromises tries to get some
advantages from each side but also inevitably gets some DIS-advantages
too. It's not necessarily easy to see all the implication of each such
choice, or trade-off, and yet most design IS about making trade-offs...
There's no need to define this 'meta' attribute anywhere, it just
springs into existence when you assign to it.


?

"assign to it" with:

setattr(Talker, 'meta', "Class meta information")

but _not_ with this:

Talker.meta = "Class meta information"

correct?


Nope: both forms have IDENTICAL semantics. They both work in just the
SAME way.

Try it out...!
class Talker(object): pass .... Talker.meta = 'class metainfo'
print Talker.meta class metainfo

Alex
Jan 3 '06 #45

P: n/a
Duncan Booth <du**********@invalid.invalid> wrote:
Alex Martelli wrote:
It IS true that in Python you cannot set arbitrary attributes on
arbitrary objects. The workaround is to use a dict, indexed by the id
of the object you want to "set arbitrary attributes on"; this has the
helpful consequence that separate namespaces are used, so your arbitrary
setting of metadata cannot interfere with the `true' attributes of the
object in question.
That's a horrible suggestion (using id's, not the bit about separate
namespaces). If you use the id then attributes will persist beyond the
lifetime of the object and may suddenly reappear on other unrelated objects
later.


The second sentence is true, but does not imply the first: just add a
strong reference to the object you're imposing extra attributes on
(e.g., pile such objects into an auxiliary list).
A better suggestion here would be to use weak references. Unfortunately,
not every Python object can be the target of a weak reference, so there is
a limitation here preventing a useful implementation for many builtin
....which is why I didn't suggest that;-).
types. I can't actually think of a use case for what Ilias wants, and if
there isn't a use case it isn't a big problem, but if anyone can come up
with a usecase please say.
Many usecases of Lisp's property-lists might apply to Python just as
well, assuming one could associate properties/attributes to all objects
(as you can have property-lists anywhere in Lisp).

For example, you could associate to each of a lot of strings in some set
of data structures (but not necessarily all of them) the codec to be
used with that string. This is typical metainformation: a string of
bytes as such does not tell you how to make it back into Unicode, and in
the cases where you have obtained that metainformation it would be nice
to store it somewhere (falling back to heuristics if you ever need to
deal with strings for which you haven't yet obtained the metainfo).

Similarly, some numbers (but again not necessarily all of them, for
whatever complex datastructures set they're used in) might usefully be
associated with the unit of measure they're in (again falling back to
heuristics if needed).

In Python you just know you can't easily do that so you typically turn
the whole program around to use, not strings or numbers with optional
metainfo associated to each, but instances of more complicated datatypes
which carry the information and the optional metainformation. But if
you're used to the extremely handy idiom of just associating interesting
metainfo with any object whatsoever, that's quite a bother.

If you know that all you're decorating with propertylist is hashable,
you can use a simple dictionary -- but then one day you want to add some
metainformation to a file instance, and OUCH, that just fails... so
you're back to workarounds of various sorts, the most popular being no
doubt "superstructures" (subclasses or wrappers) holding the real data
and optional metainformation separately.

The ability of having attributes on functions is relatively recent in
Python and basically spoke to the same kind of needs (in that case,
there were also enough abuses of functions' docstrings to hold what was
in fact metainformation that nobody could really doubt the usecase for a
better approach;-).

With the above code what would 'puts someexpressionresultingin1234.meta'
output? i.e. is the attribute being set on all integers with the value
1234, or just on a specific instance of an integer.


Good question, presumably answerable with a small Ruby test (which
however I have no time to perform right now;-).
Alex
Jan 3 '06 #46

P: n/a
Duncan Booth wrote:
BTW, I don't know Ruby enough to understand the example at
http://lazaridis.com/case/lang/ruby/base.html:

class Object
def meta # adds variable "meta" to all objects in the system
end
I don't think this is valid Ruby code, by the way... It should probably
be something like this:

class Object
attr_accessor :meta
end
Talker.meta = "Class meta information"
john.meta = "Instance meta information"
1234.meta = 'any Instance meta information"

puts Talker.meta
puts john.meta
puts 1234.meta # an integer object

With the above code what would 'puts someexpressionresultingin1234.meta'
output? i.e. is the attribute being set on all integers with the value
1234, or just on a specific instance of an integer.


At first glance, it seems the former is true:

irb(main):021:0> class Object
irb(main):022:1> attr_accessor :meta
irb(main):023:1> end
=> nil
irb(main):026:0> 1234.meta = "fred"
=> "fred"
irb(main):027:0> (1000+234).meta
=> "fred"
irb(main):028:0> x = 617
=> 617
irb(main):029:0> x *= 2
=> 1234
irb(main):031:0> x.meta
=> "fred"
irb(main):032:0> 3.meta
=> nil

However, inspecting the object_id (comparable to Python's id()) shows
that all these refer to the same object:

irb(main):035:0> 1234.object_id
=> 2469
irb(main):036:0> x.object_id
=> 2469
irb(main):041:0> y = 1000
=> 1000
irb(main):042:0> y.object_id
=> 2001
irb(main):043:0> y += 234
=> 1234
irb(main):044:0> y.object_id
=> 2469

I am not an expert on Ruby internals, but it looks like these integers
are cached. As with Python, I don't know if one can count on this
behavior to happen always.

--
Hans Nowak
http://zephyrfalcon.org/
Jan 3 '06 #47

P: n/a
Alex Martelli wrote:
Duncan Booth <du**********@invalid.invalid> wrote:
That's a horrible suggestion (using id's, not the bit about separate
namespaces). If you use the id then attributes will persist beyond
the lifetime of the object and may suddenly reappear on other
unrelated objects later.
The second sentence is true, but does not imply the first: just add a
strong reference to the object you're imposing extra attributes on
(e.g., pile such objects into an auxiliary list).

Except that would lead to fairly massive memory leaks, so isn't really
of practical use. I guess you could combine an auxiliary list with a
periodic scan of the list releasing those objects which are referenced
only from the list, which would reduce the problem to objects
participating in cycles. Combine that with the weak reference approach
wherever it works and you might be able to cover most situations.
With the above code what would 'puts
someexpressionresultingin1234.meta' output? i.e. is the attribute
being set on all integers with the value 1234, or just on a specific
instance of an integer.
Good question, presumably answerable with a small Ruby test (which
however I have no time to perform right now;-).


Hans Nowak seems to have partly answered that. It looks as though the id
of a Ruby integer is one more than twice the integer's value so I guess
that ruby packs the integer value in place of the object reference. A
quick search reveals:
A Fixnum holds Integer values that can be represented in a native
machine word (minus 1 bit). If any operation on a Fixnum exceeds this
range, the value is automatically converted to a Bignum.

Fixnum objects have immediate value. This means that when they are
assigned or passed as parameters, the actual object is passed, rather
than a reference to that object. Assignment does not alias Fixnum
objects. There is effectively only one Fixnum object instance for any
given integer value, so, for example, you cannot add a singleton
method to a Fixnum.


So it looks like the Ruby example will work as observed for integers which
fit in one bit smaller than a machine word and then work differently for
larger integers.
Jan 3 '06 #48

P: n/a
Alex Martelli wrote:
Ilias Lazaridis <il***@lazaridis.com> wrote: [...] - google stuff
http://lazaridis.com/case/lang/pytho...ariable_access

this leads to a new limitation:

"#LIMITATION: large amount of repetitive code"


One normally does not define large numbers of identical accessors (there

[...] - (extensive elaboration)

possibly one can provide the code for something similar to the ruby
attr_accessor:

class Talker
def sayHello
puts "Hello world"
end

attr_accessor :name, :age

end

thus they can later be accessed this way

john.age = 19

print john.age

I meant: reproduce the definition of the class (but without reproducing
the source-code of the class)

I have removed the "without code" remark, which was missleading.


Aha! I see now, and it does make more sense. Yes, using inspect you
could surely emit for example skeletons for the various methods, with
e.g. a 'pass' in lieu of their code. However, since instance attributes
are determined by code that gets executed (in __init__, and maybe in
__new__ and even elsewhere), it's not really practical to find out what
attributes an instance would have without in fact creating such an
instance and introspecting on it. Would such instantiation be OK here?


If I understand you right, it would be ok.

The requirements are given by the template:

john.sayYourClassDefinition()

"john" is instantiated, when asked for his class definition.
In some cases instantiating a class might have externally visible
effects, say opening a network connection, or a database, etc, so you
might well want to forbid that for purely introspective purposes.


see above.
yes, you are right.

=> {New Requirement: ability to declare objects as mutable/immutable.}


...
I estimate that there is a "unfreeze" operation, too - which would lead
to flexibity.


Yes, but also mean that immutable objects are not really immutable, only
"immutable until further notice". For example, the immutability of

[...] - (elaborations)

I understand now.

=> {New Requirement: ability to declare objects as immmutable or
mutable/immutable}
There's no need to define this 'meta' attribute anywhere, it just
springs into existence when you assign to it.


?

"assign to it" with:

setattr(Talker, 'meta', "Class meta information")

but _not_ with this:

Talker.meta = "Class meta information"

correct?


Nope: both forms have IDENTICAL semantics. They both work in just the
SAME way.

Try it out...!


But this means that "assignment of metadata" works fine.
class Talker(object): pass
...
Talker.meta = 'class metainfo'
print Talker.meta


class metainfo


thus if I make a typo, I create a new attribute?

..

--
http://lazaridis.com
Jan 3 '06 #49

P: n/a
On Tue, 03 Jan 2006 08:27:39 -0800, Alex Martelli wrote:
Or some even more stringent qualification, such as the state's Bar exam
for lawyers -- you may not be able to sit for that exam w/o the
appropriate degree, but the degree by itself is not enough, you still
have to pass the exam. It is that way for Engineers in Italy (I passed
my State Exam in the early '80s), although you only need the certificate
for some specific professional undertakings (e.g. design a ship, or a
large building, or technically supervise building operations beyond a
certain size -- not to write software or to design chips).

Personally, I agree with the theory, first expressed by Adam Smith, that
such barriers to entry are mostly useful to grant practitioners of a
certain profession the "scarcity value" that lets them charge higher
prices, although of course they're always presented as "good for
society". Note that in Europe in the Middle Ages you needed strict
qualifications of that kind for just about anything -- you could not
make hats unless you belonged to the Hatters' Guild, etc; most of those
restrictions have since been lifted, but a few groups (doctors, lawyers,
accountants, ...) have managed to keep them in place.


Let's not confuse the medieval guild system with today's system. Guilds
were more like clubs than professional bodies: it was who you knew, rather
than what you knew, that decided whether you got in. You were forbidden
from becoming (say) a hat maker unless the other hat makers allowed you to
join the guild. There was no independent, or even semi-independent, body
who decided what qualifications were needed to make hats. It was all about
who you knew -- if your uncle's best friend was a hat maker, you could be
apprenticed to a hat maker and join the guild, otherwise there was no exam
to sit that got you in, no matter how talented you were.

This system combined the worst of all outcomes: you got artificial
scarcity with the monopoly pricing that leads to, *plus* it failed to
enforce or even encourage minimum standards of skill and strategy.

By contrast, today's professional bodies like law, medicine etc. have
independent standards of skill that must be met. I don't wish to deny
that knowing the right people can help smooth the procedure of becoming
a doctor, lawyer, etc., but failing to have an uncle who is a lawyer is no
barrier to becoming a lawyer, provided you can pass the bar exam. That is
very different from the guild system.

In general, professional bodies like engineers, doctors, etc. do a
reasonable job of enforcing minimum standards of skill and quality.
Certainly there are a lot fewer building collapses in countries that
enforce building standards than countries that allow the free market to
decide.

Free market radicals like to sneer at "for the good of society" arguments,
but the problem with their reasoning is that they only consider the
monetary cost of hiring a professional, and not the other costs. Of course
anything that makes professionals scarce will increase the cost of hiring
that professional. But they fail to take into account the externalities
that come from increasing the numbers of under-qualified, shoddy
professionals.

The free market often works well for (say) enforcing minimum standards for
bread: anyone who can taste can recognise good bread from bad, and if you
buy bad bread from a baker today you simply will go to another baker
tomorrow. But dealing with accountants, lawyers, doctors etc. is very
different. Expert opinions are not like bread: only a fellow expert can
recognise good advice from bad advice. Most people buy bread at least once
a week, but might only get legal advice once or twice in their life. Under
these circumstances, Adam Smith's Invisible Hand is feeble indeed, and
shonky rip-off merchants and incompetents thrive, harming everyone.

That's not to say that skilled experts can't make a living -- in an
economy filled with snake-oil medical practitioners, good experts who
get a good reputation can charge a high premium. People who find a
good doctor or lawyer will recommend him to their friends. This squeezes
out the middle: new, but skilled, experts get lost in the sea of shonkies,
but the tiny minority that manage to get a reputation will attract
near-monopoly pricing. That leads to a two-tier system where only the rich
and powerful can afford good experts, be they doctors, lawyers, engineers
or accountants, and everyone else either goes without or are forced into a
lottery where the vast majority of experts they can afford are incompetent.

Another major difference between today's professional bodies and medieval
guilds is that the scarcity is not entirely (or even mostly) caused by
the professional body. It is the universities controlling prerequisite
degrees that gain more from the scarcity: within reason, the fewer places
they offer for (say) law degrees, the higher fees they can charge for
them. In my inexpert opinion, the cause of shortages of experts is more
the fault of the universities than of the professional bodies.
--
Steven.

Jan 4 '06 #50

104 Replies

This discussion thread is closed

Replies have been disabled for this discussion.