On Tue, Jun 4, 2019 at 10:11 AM Stephen J. Turnbull
<turnbull.stephen...@u.tsukuba.ac.jp> wrote:
>
> Yanghao Hua writes:
>  > On Fri, May 31, 2019 at 3:48 PM Rhodri James <rho...@kynesim.co.uk> wrote:
>
>  > > It really doesn't.  If the end user is going to implement the
>  > > logic of this anyway, implementing signal linkage as a method
>  > > call or class all of its own is not a significant extra burden.
>
>  > There are very constructive discussions in terms how this could be
>  > handled and which turns out not really elegant. Your justification
>  > could be used to reject features like descriptors, decorators, meta
>  > classes,
>
> And has been so used.  The question is always "does the use case
> justify increasing complexity for a couple hundred maintainers and a
> few hundred million readers?"

That's a valid question. and let's address the items one by one.

Complexity & hundreds of maintainers. It is nothing complex and it is
almost a direct copy of the implementation of @= operator, all logic
behind <== are the same of @=. With some refactoring @= and <==
implementation might even be able to share 99% of the code, so I think
it is not complex at all, and there is not much additional overhead
for maintenance.

hundred million readers. I can only guess you mean python developers
here? Just like @=, <== is not enforced on anyone, but can be used by
anyone who wants to. As it is today I can choose to give @= a complete
different meaning if I chose to, other uses may chose (and most
importantly, being able to) give <== the meaning they see fit when
they want  to preserve all number operators and matrix operators. It
is merely a new possibility for end user with very limited effort.

I am glad that this question comes, which means at least the python
community is no longer denying there is a problem (a small one by the
way), and it can be improved in terms of allowing end user to write
more readable code in this specific domain.

> As far as I can tell, here we have (a) *one* person *strongly* in
> favor of adding just one new operator token, who justifies it based on
> *personal* preference over style of expression for *one* specific DSL,
> and (b) a few supporting a generic facility for adding new operators.
>
> The former (a) is obviously insufficient, considering past practice in
> Python.  One person can probably use MacroPy or a preprocessor.  If
> the DSL becomes popular, as with "@", first applied for matrix
> multiplication, it might become justification for a new operator
> token, but the popularity has to come before more than a tiny fraction
> of committers (if any) will sign on.  The other possibility would be
> to present a complete implementation of a toy language using existing
> Python facilities, and then show the alternative with the new
> operator.  Preferably at the same time showing how the preprocessor/
> MacroPy strategy falls short.

Will do.

> The latter (b) has been discussed and rejected a number of times, on
> the grounds that unfamiliar symbols are *harder* to read than
> functions, and that Python is not in the DSL-producing industry.  Some
> features are clearly more descriptive than procedural in nature (eg,
> comprehensions), but they are justified on the ground that they
> increase readability when expressing algorithms.

Understood.

>  > Please let's be constructive and be specific, this kind of
>  > conclusion without any reasoning behind it
>
> In Python practice, the conclusion of "reject" needs no reasoning,
> unfortunately.  Python adds new features in response to a demonstrated
> need that overcomes a general conservatism, a conservatism that
> extends far past backward compatibility to a certain amount of forward
> compatibility as well.
>
> So you should take your own advice.  We have seen you express your
> *preference* for a new operator numerous times, but there is no
> *visible* logic behind it.  Show us the best you can do with actual
> working hardware description classes (say a NAND gate and the
> composition into a half-adder, or perhaps you need more to demonstrate
> the relevant difficulties -- I know little about hardware, quite a bit
> about how the Python enhancement process works).  Then show us the
> syntax you want to use to express the same thing.

I will come up with a complete working implementation of HDL-in-Python
with <== to show the differences, how it enhances readability, and how
it compares without it.

> It's possible that people with wizard-level Python skills can find a
> way around the difficulties you describe with descriptors and other
> features that have been suggested in this thread.  If not, your case
> for a new operator token would be much stronger (though still
> insufficient IMO -- fortunately for you, few committers listen to me
> about language features ;-).

I'd like to take any recommendations that can achieve the same logical
integrity and readability.

> Without such a test, or a few tens of thousands of hardware designers
> lobbying for a decade or so (which is what happened with the numerical
> community, although this time around I bet Python will be
> substantially more forward-leaning, say 5 years and 5000 hardware
> designers), it's your taste against Python's conservatism.  I'll take
> long odds that conservatism wins.

Thanks for the advice, I will (I was) working on it and will show you
the ideas behind it. I knew it is going to be difficult and probably I
have failed to use some cool features and I think a completely working
system will help to demonstrate the ideas better. Stay tuned.
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to