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".

--
Ubuntu-devel-discuss mailing list
Ubuntu-devel-discuss@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss

Reply via email to