On 2/10/2012 9:52 PM, 88888 Dihedral wrote:
在 2012年2月11日星期六UTC+8上午2时57分34秒,John Nagle写道:
On 2/10/2012 10:14 AM, Nathan Rice wrote:
Lets also not forget that knowing an object is immutable lets you do a
lot of optimizations; it can be inlined, it is safe to convert to a
contiguous block of memory and stuff in cache, etc. If you know the
input to a function is guaranteed to be frozen you can just go crazy.
Being able to freeze(anyobject) seems like a pretty clear win.
Whether or not it is pythonic is debatable. I'd argue if the meaning
of pythonic in some context is limiting, we should consider updating
the term rather than being dogmatic.
A real justification for the ability to make anything immutable is
to make it safely shareable between threads. If it's immutable, it
doesn't have to be locked for access. Mozilla's new "Rust"
language takes advantage of this. Take a look at Rust's concurrency
semantics. They've made some progress.
John Nagl
Lets model the system as an asynchronous set of objects with multiple threads
performing operatons on objects as in the above.
I'd argue for a concurrency system where everything is either
immutable, unshared, synchronized, or owned by a synchronized object.
This eliminates almost all explicit locking.
Python's use of immutability has potential in that direction, but
Python doesn't do anything with that concept.
John Nagle
--
http://mail.python.org/mailman/listinfo/python-list