Path: csiph.com!eternal-september.org!feeder.eternal-september.org!nntp.eternal-september.org!.POSTED!not-for-mail From: Paul Rubin Newsgroups: comp.lang.lisp Subject: Re: Resources to learn common lisp? Date: Mon, 29 Jun 2026 17:37:24 -0700 Organization: A noiseless patient Spider Lines: 44 Message-ID: <87echozwvv.fsf@nightsong.com> References: <874inbqdz7.fsf@mariorosell.es> <110a9pp$ckmk$6@dont-email.me> <110es1g$1kk17$1@dont-email.me> <110fj4q$1r13s$5@dont-email.me> <110guci$26cjr$1@dont-email.me> <110i789$2iqm8$7@dont-email.me> <110j4qk$2q1p4$1@dont-email.me> <110l0v9$3av52$1@dont-email.me> <110nf0q$3vra6$3@dont-email.me> <87y0gg62cx.fsf@nightsong.com> <110rfqf$142ot$1@dont-email.me> <111ne5o$vsm3$3@dont-email.me> <111pbk6$36pi7$1@dont-email.me> <87qzlqgiyx.fsf@gmail.com> <878q7y10kh.fsf@nightsong.com> <111t1lb$4bes$1@dont-email.me> <87v7b1zsty.fsf@nightsong.com> <111t8dn$6k5d$1@dont-email.me> <87qzlpythv.fsf@nightsong.com> <111urdf$ltvk$3@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Date: Tue, 30 Jun 2026 00:37:28 +0000 (UTC) Injection-Info: dont-email.me; logging-data="785408"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/G8/QptxRpPpISKWkOyws6"; posting-host="73082fae0e8f4668a17d80b1d92a0398" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) Cancel-Lock: sha1:yyYVP2wKDngqGSsqRYsaOxxvdu0= sha1:J3+mUPnk6qtx7LE5tIzeBDY+8WU= sha256:XZcRmRUOB9fuSOIyEnhqd8eu2LyBSwQlZbLL0/4GbrU= sha1:re0k+QyXk6UTaPKZTxARHLd0ClM= sha256:LycZU2RiHVXPtT7zHb3SvTPwYmHDopzuLlIJf/1Y/mI= sha1:NNJP5MgI+3amLU6ZIpZyvFD2e6M= Xref: csiph.com comp.lang.lisp:61087 Lawrence D’Oliveiro writes: > GvR himself said they were introduced for efficiency reasons. The > contribution to code safety was an unintended side-effect. That blog post says: > Thus, every slot attribute is actually a descriptor object that knows > how to set/get each attribute using an array index. So again I'd have to look at the implementation. From what I can tell, there's still a string lookup. It might using perfect hashing or some other scheme for bypassing the machinery of Python dictionaries. > Neither is Python [a Lisp]. Python's inventors insist that it's not a Lisp, but we Lispers can see that it's just a weird Lisp implementation with some surface syntax added. It even has lambda! Kidding. > So why do you look down on Python’s use of reference-counting? Look at the decades of anguish CPython has suffered over its GIL. There's a messy workaround for that now but I have no idea of the performance or maintenance hit. I simply don't understand the refcounting fanboying taking place here. The original selling point in CPython was deterministic finalization, but RAII takes care of that more cleanly, I would say. Hans Boehm makes the interesting point that you really want to finalize in topological order. I wonder if this happens automatically in CPython. https://hboehm.info/gc/finalization.html He has another finalization article that looks interesting: https://dl.acm.org/doi/epdf/10.1145/604131.604153 In that one he says that finalization (non-RAII) is occasionally important, but I don't currently understand why. It also argues for asynchronous finalizers (saying Python's approach can lead to deadlocks) but I think that's only when the refcount decrement is in a separate thread. I should read this paper more carefully.