Python2 demotion (moving from main to universe) in progress
Xen
list at xenhideout.nl
Fri Dec 15 09:42:22 UTC 2017
Daniel Watkins schreef op 15-12-2017 0:05:
> On Thu, Dec 14, 2017 at 11:45:23PM +0100, Xen wrote:
>> The move towards Python 3 was forced, it didn't come natural for
>> anyone.
>
> Nope, I have preferred Python 3 since ~3.3, and the transition has
> happened over _more than a decade_.
So you waited till 3.3 until the language was "better" for you, that
means at that point it was marginally better, with more to come later
down the road.
It took 4 years for a version to arise that you liked better.
But there are 3 aspects here:
- self-convincing because you see no future in the alternative
(self-deluding)
- lack of context for proper comparison (newcomers)
- technical reasons.
I argue that for the old established programmers now moving to, or
"liking", python 3, nr. 1 is a larger component than technical reasons.
I don't know if the community is split around the lowlevel part, where
those who have to write lowlevel libraries hate on (or hate) python 3,
and those that don't have to love it because they only benefit from the
new features.
The Tauthon guy actually professes to favour Python 3 technically.
Not practically, but ideally.
I don't know his reasons, but let's just believe him for a second.
Let's believe he likes the str/bytes thing better because that's the
only significant
difference between his Tauthon and Python 3.
There are computer games in which you see the same thing.
Starcraft II is a game that superseded Starcraft I but the interesting
part is money.
The professionals moved to SC II because that's where the tournaments
were.
After a while they all got bored and the viewers also got bored because
it was a game that was boring to watch, so they went back to SC I, but
they really can't, because there are no tournaments anymore for it.
The "future" is SC II but for them it is empty, and the past is hard to
revive.
This then finds a lot of people complaining about those "Korean gamers"
who "refuse to move on" despite "SC II being a better game".
New people however are appalled by the amount of _work_ you have to do
to play the game, in the sense of micro-management and keyboard use (the
old game).
So *new people* are biased to like SC I ... I mean II, because they are
lazy and spoiled and don't know better but these are also the people
that more easily get bored.
The game means much less to them etc.
Their love is superficial. They are the smartphone generation.
Back in the 90s my friend who was into BSD liked to complain about
Windows lovers who professed "It just works!" -- but he knew that for
his use case, it limited him.
He knew that it would someday bite them.
If you always have your food handed to you, you don't need to know how
to grow it yourself.
But when the time comes that you may want to move somewhere where you
need to do this, your lack of experience will keep you immobile and
paralyzed because you can only operate in a world where everything is
done for you.
Some of Python 3's improvements fall into that category, "It works" but
you don't know how and you don't need to do anything for it, and only
later down the road you find that you are limited in what you can do (as
a newcomer) because you don't have the expertise to work around the
difficulties in getting "ordinary" stuff to work.
You, as a seasoned programmer, knows how to do this. The new generation
will be clueless.
You only have this frame of reference because you experienced the old;
you have the knowhow that comes with it.
New people will find barriers in their use of the system that does not
impede them as long as they are doing their "walled garden thing" and
actually, perhaps greatly, increases their productivity as long as they
stick within that garden.
But stepping outside of that, it's impossible for them.
(I experience plenty of young people who are _afraid_ of computers, even
those that are interested in becoming more experts).
I have a friend who is afraid to open a PuTTY session.
He thinks the world will explode if he does something like that.
Back in my day, this _never_ happened.
These people only know Windows or the Mac and have no way to look into
system internals.
They barely know DOS of course, and have no reason to ever have learned
BAT shell scripting.
PowerShell is even more a threatening thing. (Bash is more accessible
than PowerShell imo).
If they program it is Python or PHP; with PHP still being reasonably
raw, but Python 3 an abstraction.
I learned Turbo Assembler on a 80286. I am not that old.
But most people experience a mental block these days because they are
only used to their walled gardens.
Python 3 is a step up in walled-gardenness from Python 2.
Now personally I am not completely anathema to *learning* Python 3.
Now for instance I ran into Python 3's "UserDict" and then found to my
slight dismay that it didn't exist in Python 2.
Now I am actually happy about that in the sense that I wrote it myself
using a MutableMapping and learned some language internals this way.
I *like* to get down and dirty sometimes.
I like to see the rough plumbing.
With OpenWRT "UCI" I had to dive into the generated rules because I
couldn't figure out how to do something using the abstraction.
If the abstraction is faulty, failed or limited, it increases the
difficulty in understanding the system and then you *still* need to get
down and dirty in order to understand it.
I am not satisfied with a superficial knowing.
I immediately feel the walls of the walled garden, having lived outside
of it.
But I have no reason to convince myself that "python 3 is better" just
because python 2 is EOL, which is a *real* defense mechanic the mind has
in order to survive in a world where that which we depend on, no longer
exists.
It is better to convince yourself you like it, than to live in
unhappiness about something you can't change.
Personally I get nauseous when I see people proclaiming their love for
Python 3.
It is a love devoid of love.
I am not fully convinced Python 3 is "dead" like this guy [1] but this
is absolutely true:
"Ultimately though, if Python 3 were good they wouldn't need to do any
convincing to get you to use it. It would just naturally work for you
and you wouldn't have any problems. Instead, there are serious issues
with Python 3 for beginners, and rather than fix those issues the Python
project uses propaganda, social pressure, and marketing to convince you
to use it. In the world of technology using marketing and propaganda is
immediately a sign that the technology is defective in some obvious
way."
"This use of social pressure and propaganda to convince you to use
Python 3 despite its problems, in an attempt to benefit the Python
project, is morally unconscionable to me."
[1] https://learnpythonthehardway.org/book/nopython3.html
I don't even want to read on because I don't want it to ruin what I
think is still good about Python 3.
Yes, also a defense mechanism.
I think you can say that the Python 3 unicode implementation is arguably
the worst out there, without even knowing all the others.
So you say you prefer Python 3.3 (and 3.4) (and 3.5).
I venture that not being stuck in a decaying technology is a large part
of that.
I venture that most (but not all) other improvements are actually
improvements.
Or at least a lot of them could be, and there is no reason to not
incorporate "improvements" that are arguably likeable, even if you don't
like the complete package.
I venture that without those improvements you might actually think
differently,
but the biggest defect of Python 3 seems to be its unicode handling and
the arrogance of its designers,
and I just think there can be no denial that they have used social
pressure of all sorts, including the explicit impossibility to even run
Python 2.7 code, in order to further their agenda.
Why you would want to have anything to do with that is beyond me.
"The Python project decided to make it impossible to run legacy Python 2
code under Python 3. They even go so far as to claim this is
"impossible" when basic computer science says this is very possible and
done all the time. Given they controlled both language implementations
and purposefully decided to prevent Python 3 from running legacy code, I
have to conclude that Python 3 is defective on purpose. [[ he means
that that part is defective ]]. The end result of this defect is that
most people will not bother switching to Python 3 as rewriting Python 2
code is the same switching costs as just using a totally different
language completely."
This is the author of a python book.
Apart from his pessimistic outlook, I second his statements completely.
>> Lists became iterables. That is one glaring thing, even though I am
>> novice
>> in Python, that
>> appalled me.
>
> Nope:
>
> In [1]: type([x for x in range(3)])
> Out[1]: list
>
> In [2]: type(x for x in range(3))
> Out[2]: generator
Sir, you have even no clue what I am talking about.
If you are so unimaginative that, even though you have a good grasp of
the language (and the changes), you still don't know what I could be
implying, maybe you should not enter a discussion.
> % python3 -c"print(list(filter(lambda x: x == 'b', ['a', 'b', 'c'])))"
> ['b']
I meant reduce, sorry.
Instead of being so clever to rush to the easy hits and then letting it
follow at the end with your learned clever pun that you copy from other
people.
> Please stop.
This ^^.
Maybe you should think about what someone could mean first.
The reason reduce was moved to functools was because the devs considered
a for loop to be "cleaner code".
So they do it to force you to write their style of preference.
You are not given the choice here.
They decide for you what's best.
As said, Second System Syndrome.
"The second-system effect (also known as second-system syndrome) is the
tendency of small, elegant, and successful systems, to be succeeded by
over-engineered, bloated systems, due to inflated expectations and
overconfidence."
You can read "overconfidence" as "arrogance".
More information about the Ubuntu-devel-discuss
mailing list