[Tutor] beginning to code

Bill BILL_NOSPAM at whoknows.net
Fri Sep 22 03:27:01 EDT 2017


Bill wrote:
> Stefan Ram wrote:
>> Bill <BILL_NOSPAM at whoknows.net> writes:
>>> Stefan Ram wrote:
>>>> bartc <bc at freeuk.com> writes:
>>>>> On 20/09/2017 02:31, Bill wrote:
>>>>>> it's implementation, I would say that C++ has it all over Python 
>>>>>> from
>>>>>> the point of view of "intuitiveness".  It's much easier to tell 
>>>>>> what's
>>>>>> going on, at a glance, in a C++ program.
>>>>> You're being serious, aren't you?
>>>> For one example, this is a part of a C++ program:
>>>> template< typename C >C T( void ( C::* )() );
>>>> . It defines a template T, that can be used in a
>>>> class as follows:
>>>> struct example { void f(); typedef decltype( T( &f )) S; };
>>>> . The type »S« now has a certain property, that can
>>>> be useful sometimes. What is this property (asking Bill)?        As
>>> has already been pointed out, one can write "obfuscating code" in any
>>> language, with little effort.  I strive to write code which is easily
>>> understandable--and I document it. I don't wish to debate whether I
>>> could make more of a mess in Python, or not.
>>    From the point of view of a C++ programmer, the above
>>    is not obfuscated, but it is readable and simple C++.
>>    It is of course not readable for readers who do not know
>>    C++. Just as Python's »string[::-1]« appears "obfuscated"
>>    to readers who don't know Python.
>>
>>    It was the answer to the question "How can I express the
>>    class I'm in in, when I can't write that classes name
>>    literally?
>
> I would try to use virtual cast in place of the *&%, I mean code, you 
> wrote.

Sorry, I mean dynamic_cast().

> "Clever code" is a losing game--just look at your explanation below.  
> Simple==Good.
>
>
>> So, »S« is »example«.
>>
>>    It works like this: The type of »&f« is »void ( example::*
>>    )()«. So, the function-declaration template »T« infers »C«
>>    to be »example«, and the type of »T( &f )« is »example«,
>>    which then is transferred to the name »S« using typedef.
>>
>>    This is obvious for C++ programmers, but it takes a lot
>>    of time to become a C++ programmer, maybe more than it
>>    takes to become a Python programmer.
>>
>




More information about the Python-list mailing list