|
|
Subscribe / Log in / New account

PyCon: Evangelizing Python

PyCon: Evangelizing Python

Posted Mar 29, 2013 10:47 UTC (Fri) by jschrod (subscriber, #1646)
In reply to: PyCon: Evangelizing Python by marcH
Parent article: PyCon: Evangelizing Python

If they would steal with pride, PEP 343 would mention Lisp somewhere. It doesn't. The talk doesn't mention it either. Doesn't look like much pride to me.

It doesn't mention the source of yield either, and even attributes it to Icon. (yield is called suspend there. And Ralph Griswold clearly knew the work of Barbara Liskov, made 3 years earlier, and published in relevant ACM SIG journals.) Even the ultra-short Wikipedia page of CLU acknowledges who came up with yield first - Barbara Liskov, the brilliant scientist who formulated the concept of abstract data types, exceptions, iterators, and many other things first.


to post comments

PyCon: Evangelizing Python

Posted Mar 29, 2013 13:03 UTC (Fri) by marcH (subscriber, #57642) [Link] (15 responses)

LISP was considered in the discussions:

http://mail.python.org/pipermail/python-dev/2005-May/0537...
http://starship.python.net/crew/mwh/pep310/8.txt

Looks like C++' RAII was more influential though and much closer to the final feature.

You don't really think any serious language designer group reinvents the wheel without looking at other languages, do you?

PyCon: Evangelizing Python

Posted Mar 29, 2013 13:56 UTC (Fri) by jschrod (subscriber, #1646) [Link] (14 responses)

> You don't really think any serious language designer group reinvents the
> wheel without looking at other languages, do you?

Well, no (designers), partly (documentation and review) and yes (evangelists).

In my experience, actual language designers know about the concepts. Then it's documented, and the influences are not part of the rationales, though they should be (witness the cited PEP). Then evangelists (witness the talk from the article) come and present 30+ year old stuff as innovative concepts that's the best thing since sliced bread. Reading the article, I couldn't refrain from commenting - you seem to take that much more as an attack as it's meant to.

My comments are not meant specific for Python, you could also look at Javascript with its obvious roots in Self (which pioneered prototype-instance based OOPL) mentioned in almost no documentation.

PyCon: Evangelizing Python

Posted Mar 29, 2013 18:04 UTC (Fri) by marcH (subscriber, #57642) [Link]

> Well, no (designers), partly (documentation and review) and yes (evangelists).

Fair enough.

> you seem to take that much more as an attack as it's meant to.

Well, it was an attack on "someone"... vague. Quite clearer now.

PyCon: Evangelizing Python

Posted Mar 30, 2013 14:49 UTC (Sat) by intgr (guest, #39733) [Link] (12 responses)

> Ah, the with statement. An innovative concept. Sigh. Those who don't know Lisp are condemned to reinvent it.

> Then evangelists (witness the talk from the article) come and present 30+ year old stuff as innovative concepts that's the best thing since sliced bread

Did he ever claim that these ideas were invented in Python? Did he say the word "innovative" even once in the talk?

All he said is that these features set Python apart from other "scripting languages", wtih Perl and Ruby brought out as examples. It's a true factual statement.

Lisp isn't even on the radar for being a competitor to Python.

PyCon: Evangelizing Python

Posted Mar 31, 2013 9:46 UTC (Sun) by marcH (subscriber, #57642) [Link] (7 responses)

> Did he ever claim that these ideas were invented in Python? Did he say the word "innovative" even once in the talk?

> All he said is that these features set Python apart from other "scripting languages", wtih Perl and Ruby brought out as examples.

In such a promotion speech context omitting references/credits creates a very fine line between the two. I can imagine the speaker saying the latter and the most of the audience misunderstanding the former (of course we'll never know).

I don't think there should be things like "credits" in reference documents like PEPs (PEPs seem to have pointers to discussions which is more than enough).

On the other hand I (finally) agree with jchrod: I expect a "Python's awesome" talk to give credit where it's due. Not just for honesty but also to help me develop my general software engineering culture and better understand *how* to create awesome things, i.e., by standing on the shoulder of giants, recombining existing ideas in new ways, and not patenting trivial prior art.

PyCon: Evangelizing Python

Posted Apr 1, 2013 16:16 UTC (Mon) by kleptog (subscriber, #1183) [Link] (6 responses)

Is it possible it's just because there are many people, like me, who don't know lisp and wouldn't know what a "with-statement in lisp" would look like if it stared them in the face. Certainly google isn't returning me any results, I guess they didn't call it the "with-statement" :). Perhaps someone who does know lisp should actually describe what it was the lisp did first.

I hope people aren't just referring to lisp's ability to transform source code at compile time because that (IMO) trivialises what the with-statement adds to the language: the ability to factor out certain idioms that would otherwise require explicit handling of exceptions. There's a difference between "language X makes it possible to do idiom Y" and "language X includes explicit support for idiom X".

While it may be that lisp did it first Python is the only contemporary language I know that includes something like the with-statement, which does say something.

PyCon: Evangelizing Python

Posted Apr 1, 2013 18:16 UTC (Mon) by nybble41 (subscriber, #55106) [Link] (1 responses)

In Common Lisp the form is known as "unwind-protect" [1], and in Scheme it's "dynamic-wind" [2]. The latter is more complicated because it attempts to handle the case where the inner code is re-entered through a continuation after the cleanup code has already been executed, but the idea is similar.

Both expressions execute a block of code with a guarantee that some other code will be executed when control leaves the block, no matter how that happens (e.g. normal exit, exception, calling a continuation). Operations built on top of this mechanism often start with "with-" by convention, e.g. "with-open-file" (Common Lisp) and "call-with-input-file" (Scheme) both ensure that the file provided to the inner block is closed afterward.

[1] http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node96.html
[2] http://www.schemers.org/Documents/Standards/R5RS/HTML/r5r...

PyCon: Evangelizing Python

Posted Apr 1, 2013 22:57 UTC (Mon) by nix (subscriber, #2304) [Link]

Needless to say, nothing remotely as complicated as the protocols needed in Python to implement 'with' are needed in Lisp. The macro system and unwind-protect/dynamic-wind provides all you need, and implementing new with-*'s is a matter of a few lines of extremely not difficult code. (I emphasise this because macros can often be extremely arcane. Writing a with-blah isn't one of those: the most you have to worry about is a bit of variable capture.)

PyCon: Evangelizing Python

Posted Apr 2, 2013 16:15 UTC (Tue) by lab (guest, #51153) [Link] (3 responses)

> Python is the only contemporary language I know that includes something like the with-statement, which does say something

The C# 'using' statement?
http://msdn.microsoft.com/en-us/library/yh598w02(v=vs.110).aspx

PyCon: Evangelizing Python

Posted Apr 2, 2013 17:06 UTC (Tue) by hummassa (subscriber, #307) [Link] (2 responses)

Every single C++ variable initialization is the equivalent to python's with and C#'s using...

PyCon: Evangelizing Python

Posted Apr 2, 2013 17:23 UTC (Tue) by intgr (guest, #39733) [Link] (1 responses)

Similar, yes. Equivalent, no.

1. Python's "with" statement is more flexible, it has access to the exception when it occurs. A "with db_transaction():" block can automatically decide to commit or roll back, unlike C++/C#. You can also implement something like "with ignore_exception(OSError):"

2. Python doesn't require you to create a local variable to hold the state; this always annoys me when using the RAII pattern to hold locks in C++.

3. Prettier syntax ;)

PyCon: Evangelizing Python

Posted Apr 2, 2013 19:13 UTC (Tue) by hummassa (subscriber, #307) [Link]

1. std::uncaught_exception() allows for your commit/rollback scenario, but not your ignore_this_exception scenario. The latter does not seem a good idea to me, but...
2. the lock thing can be implicit... it's a matter of how you do it. Anyway,
{
some_lock_t lock(x);
x.do_something();
}
does not seem sooo wrong to me... although I usually put it on X and do
x.do_something_locked<some_lock_t>();
only, or even
some_locking_scaffold(x).do_something();
and this last one is really easy.
3. it's not! :-D

PyCon: Praising Python for all the wrong reasons

Posted Apr 5, 2013 12:59 UTC (Fri) by gvy (guest, #11981) [Link] (3 responses)

> Lisp isn't even on the radar for being a competitor to Python.
Yeah, especially given Steel Bank Common Python. Crap, the radar you use must be from '60s!

PyCon: Praising Python for all the wrong reasons

Posted Apr 6, 2013 16:01 UTC (Sat) by pboddie (guest, #50784) [Link] (2 responses)

Your mention is the only trace of "Steel Bank Common Python" I can find on the Internet using Google. Meanwhile, I am aware of CLPython which may or may not now run on SBCL (given that I haven't checked CLPython's status for a while).

PyCon: Praising Python for all the wrong reasons

Posted Apr 6, 2013 16:18 UTC (Sat) by jake (editor, #205) [Link]

For Lisp-Python mashups, Hy might be of interest:

http://code.activestate.com/lists/python-announce-list/9602/

jake

PyCon: Praising Python for all the wrong reasons

Posted Apr 10, 2013 11:09 UTC (Wed) by gvy (guest, #11981) [Link]

It was a crude pun regarding "competition" applicability indeed, given the huge difference between these two cultures (at least from my perspective).


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds