
Python past, present, and future with Guido van Rossum [audio] - mikeckennedy
https://talkpython.fm/episodes/show/100/python-past-present-and-future-with-guido-van-rossum
======
Rapzid
I've recently had to start writing python professionally and I'm not super
impressed. My previous python experience was writing small services and fixing
others code. Now that I'm working on larger "apps" it feels like a 90's
language with all the rough edges and warts. I'd rather being working in a
language with better language services and tooling, but python has numpy and
all these data viz libraries so whatcha gonna do? At least I get a little
reprieve with TypeScript; never thought I'd be so happy to work with the node
platform, but there you have it.

3.5 looks attractive but there are just fundamental issues with the lang and
language services. It's a bit like lipstick o... Well, I'm not going to say
it.

~~~
willtim
Haskell and OCaml are also 90's languages. The rise of Python at the expense
of safer, typed, faster, more principled languages makes me very sad for the
state of our industry. I do not even believe it is the best choice for
teaching programming to children. It heavily mixes and conflates higher-level
ideas like lambdas and list comprehensions with imperative programming and
mutation (the assignment syntax "x=x+1" must be especially confusing to high-
school kids). It also throws in "object-oriented programming" constructs into
the mix too.

~~~
hota_mazi
> The rise of Python at the expense of safer, typed, faster, more principled
> languages makes me very sad for the state of our industry

There is no rise. Not any more. At best, it's a plateau, and in my opinion,
all dynamically typed languages except Javascript are on a straight decline
curve, slowly being replaced by statically typed languages.

I noticed that a lot of people who enjoy Go come from Ruby or Python. Go's
type system is clearly antiquated and weak, but it's a straight upgrade from a
dynamically typed language, which is why it's finding an audience with the
Python/Ruby crowd.

~~~
zephyrfalcon
"""There is no rise. Not any more. At best, it's a plateau, and in my opinion,
all dynamically typed languages except Javascript are on a straight decline
curve, slowly being replaced by statically typed languages."""

This sounds like wishful thinking. (Your wish, apparently... certainly not
mine. :-) I have seen no evidence that Python is on the way out. If I look at
the languages asked for in HN's "Who's Hiring" thread, Python is #1. Even so,
there are dynamically typed functional languages, like Clojure and Elixir,
that are definitely on the way up.

~~~
hota_mazi
Sure, it's just my opinion.

Your post history seems to suggest you are heavily involved in Python. I'm
not. I don't write Python, I don't write Go, I have no dog in this race. I'm
just observing trends, like I've been doing for the 30+ years I've been in
this industry.

And these past few years, I've observed enough hints that people are moving
from Python and Ruby in droves. And also that no large projects would be
started in either of these languages today. Python/Ruby are going to stay
around forever, no doubt, but much more as a glue/infrastructure language to
write scripts here and there (and TensorFlow might help Python stay relevant
for a bit longer too).

------
DodgyEggplant
After years with Python, it's still a mystery to me how the same constructs
are so intuitive and readable in Python (think it acceptable that they are
less in C++, Java or javascript etc, even Ruby)

~~~
pmontra
It might depend on your previous history. My development arc was C, Perl,
Java, Ruby, Python with Javascript in parallel. Python is not particularly
intuitive after 10 years of Ruby. Actually it's a mistery to me how people can
like such a complicated language. However I got only customers using Python
last year so I must make me like it at least a little. I keep thinking I could
have been very unlucky and found some Java projects instead.

~~~
preordained
Yup. I'm with you. For my money, Ruby could fill exactly the space Python does
and do it better...but Python has too much steam in its niche and Ruby got
pigeon-holed as a web language; such is life.

~~~
sametmax
The reason it happened that way is the community.

The python one valued doc, robustness, readability and stability.

The ruby one loved cleverness, beautiful design and conventions.

Eventually they ended up meeting at the middle, but in the mean time, people
got tired of :

\- having the last monkey patch breaking their code

\- having to try to understand the last crazy dsl somebody came up with

\- having an incomplete out of data doc and no tests

\- having gem install breaks on you randomly

\- having to mess with rvm (still an issue though) which never seems to do
quite what you want

Ruby is a good language, but it took too much type to come out of it's teen
years, playing bold and teasing. Now it's too late.

JS is getting away with it, despite being way inferior to ruby, because it's
the only language on the web platform and we are forced to use it. Ruby didn't
have this chance.

------
nkantar
I've only started this particular episode, but the Talk Python to Me podcast
is pretty stellar and has contributed a lot to my addiction to technical
podcasts.

~~~
kmonsoor
if you're into Node, then try: [http://nodeup.com/](http://nodeup.com/) i
liked it quite a lot

------
sametmax
I've made a living of Python since 2.4 and hitting the 3.6, here is my take on
it:

The Python team does an incredible job at making the language evolve. This is
a 20+ years old language, with billions of lines written in the world, and
allowing a huge number of paradigms. It still matures, steals ideas, makes
hard compromise on growth vs compat, etc. I know very few other techs that can
even compare to this level of legacy/flexibility.

E.G: the current debate on the mailling list about the "delayed" keyword:
[https://mail.python.org/pipermail/python-
ideas/2017-February...](https://mail.python.org/pipermail/python-
ideas/2017-February/044682.html)

(Python-idea is a fantastic mailling list BTW. You learn a lot about
programming, community management, Python and humans. It's very approachable,
yet you read some very talented people. Sign up !
[https://mail.python.org/mailman/listinfo/python-
ideas](https://mail.python.org/mailman/listinfo/python-ideas))

Coding in 2.x is now a pain. You can't see that if you are stuck in 2.7. 3.X
doesn't seems appealing because what it brings on the table is not shinny. But
the hundreds of small fixes hugely add up, and the experience is not the same
at all on any project that takes more than a few days.

The good things is, Python 3 won. Nobody starts a new project in 2.x, most
important 3rd party libs are have been converted and legacy code is ported
every day. Porting a big code base is not really hard (2to3, python-future and
python-six do most of the work) and can take only a few hours if you know what
you are doing. Which is nothing given Guido have us 15 years to do it.

Honestly I had more time porting from Django 1.5 to 1.9 and DRF 1 to 2.

Python 3.6 is a wonderful release and a bliss to use. pathlib, f-string,
better error handling, absolute imports, diminished verbosity, transparent
unicode support, stable asyncio, unpacking everywhere, improved windows
support, wheels for so many things, subprocess pools, pip+venv included
(although debians admin excluded them, grrrr)... Everytime you go back to an
earlier version it feels clunky.

The problem is, there are very few tutorials showing you the current best
practices. I still read plenty of .format(), os.path.join(), manual
subprocess/threads handling, etc.

People are still complaining you can't provide a standalone Python program
while nuikta have been compiling very well Python for years now. It's even
yum/apt installable.

Whether you are in Python 2 or 3 though, the ecosystem makes it all.

I'm amazed at where I find Python these days. It's the official language for
colleges in France, it's installed on Linux and Mac by default, on the raspi
(en consequently a recommended language for all students in the UK). It's at
Google, Facebook, Instagram, Apple, Disney/Pixar, Sony, the CNES, the NASA,
Mozilla, Docker...

But also in very heterogeneous places. Blender uses it to script, but most GIS
as well. I got clients from everywhere using it: mathematicians, physicists,
geographers, sysadmin, bankers, big data analysts, deep learning
researchers... In big and small ways.

Plus there are so many great 3rd party tools: requests, django, sqlalchemy,
numpy, pendulum, begins, jupyter, httpie, faker, marshmallow, autobahn,
crossbar, pew are fantastic.

But how do you discover those ? The ecosystem is so huge, even curated lists
such as [https://github.com/vinta/awesome-
python](https://github.com/vinta/awesome-python) are intimidating.

On strengh of Python is that it's good a little script upt to big projects.
but there is an enormous list of things to learn if you want to get out of the
scripter mind set and start coding a big project.

\- virtualenv. Wait virtualenvwrapper ? Wait pew ? wait pip ? wait conda ?

\- tox, coverall, pytest, flake8, pylint, bandit...

\- Python path, modules, __stuff__...

And the packaging is still a mess. It's hard to make a setup.py file for a
newcommer. And the 1000 files next to it. It's hard to make a compiled
extension wheel. To provide a msi, a deb or a dmg.

It's hard to do desktop or mobile UI. Kivy and PyQT are nowhere as easy as
creating a website, which says it all.

Mypy and type hints are not mature enough. Really a pain to use. I would not
recommend it right now. Also VSCode and PyCharm makes everything better. I'm a
sublime text guy, but the competition rocked it on this one.

Asyncio is super low level. Most people should probably just not use it, it's
designed to dev high level libs, not to code your service yourself. And most
high level libs using it are not mature. The revolution hasn't happened yet,
and we need it to happen in the next 2 years. MeteorsJS is here and kicking.
JS has the Webpack ecosystem (which sucks, but provide features you don't have
in pure Python right now). You see more and more stack with Sass + es 6 + jsx
+ whatever and the Python tools to do it don't cut it. So you are back to JS.
I hate JS.

Hosting a Python website is still too complicated. pythonanywhere.com comes
close, but beginners want PHP + FTP kind of deployments, and you can't blame
them. Not everybody needs the robustness of our pro stacks.

Performances, though, has never been an issue for me. I know some people that
have indeed the need for it, but my experience is that they are a rare breed.
Most people complaining about it want a pony, they don't have a Python
performance problem.

Nevertheless, I look forward for the gilectomy just to stop hearing the FUD.
But I'm not holding my breath.

I have more hopes for Pyjion, the Microsoft JIT, though. Their approach is the
sanest I've seen. Pypy is nice, but is having a hard time by design. Pyston is
dead.

Free perf is like free pizza. You don't need it, but hey, free pizza!

Also I have a feeling that rust and Python will be very good friends in the
future...

~~~
andrewd18
> The problem is, there are very few tutorials showing you the current best
> practices.

As someone looking to expand from simple Python scripts to serious Python
projects, this is my primary issue. Do you have any recommendations?

~~~
sametmax
I like to brag and say the best blog I know about Python is mine. But it's in
french so you will have to take my word for it. Yet it has more than 300
articles about Python and covering at length stuff from decorators to
metaclass and even a fat 8 parts manual on OOP. Maybe google translate can
help.

~~~
BrendanD
linky?

~~~
sametmax
[http://sametmax.com/](http://sametmax.com/)

~~~
BrendanD
Thanks

Edit: _NSFW!_

------
howfun
Any chance for a text version?

~~~
jgill
The text is up and part of the audio as well.

~~~
mikeckennedy
Yep, thanks J. You can find it in the player:

[https://talkpython.fm/100](https://talkpython.fm/100)

Or directly here:

[https://talkpython.fm/episodes/transcript/100/python-past-
pr...](https://talkpython.fm/episodes/transcript/100/python-past-present-and-
future-with-guido-van-rossum)

------
mianos
I liked the bit where he said he underestimated the number of people and code
using python 2.7. I often hear python 3.X has 99% penetration based on
probably the same bogus metrics, like downloads from python.com. Then they go
on to talk about how many exciting changes are being made to python 3. Some of
us actually have work to do.

------
daveguy
The unofficial python 2.8 is here:

[https://github.com/naftaliharris/tauthon](https://github.com/naftaliharris/tauthon)

~~~
greyman
But didn't Guido say that everything what could be backported was already
backported?

> There are a small handful of backwards incompatibilities introduced by
> Tauthon.

How to understand this?

Anyway, something like this was expected to happen. I wonder if it wouldn't be
better if Guido would not halt python 2 development and just let it evolve.

~~~
mkesper
This discussion goes now on since Python 3 was released. Python 2 will not be
supported or developed after 2020.

~~~
greyman
Yes, I know. The question is if this decision is correct, given that
apparently a lot of people and companies just doesn't plan to switch no matter
what.

~~~
StavrosK
Well, if you want people to switch to 3, you do need to apply some pressure by
end-of-lifing 2.

~~~
dagw
Or you could offer something in 3 which will make switching enticing enough
for people to do so of their own free will.

~~~
shakna
Proper unicode handling, list comprehensions, generators, await & async, TSL
1.1 & 1.2 support, better namespace handling, better string interpolation, and
better argument parsing are just a few of the things that you get.

Is there a feature that could entice these people? Or have they made up their
minds?

~~~
dagw
List (and set,dict and generator) comprehensions and generators are available
in python2. Await & async and unicode handling are nice improvements, but you
could do both in python2 well enough if it was important to you. TSL support I
don't use in python so I cannot comment on it. And I've honestly never found
namespace handling or string interpolation a problem.

 _Is there a feature that could entice these people? Or have they made up
their minds?_

A working, stable, version of [http://pyparallel.org/](http://pyparallel.org/)
would entice the hell out of me.

~~~
lmm
It's not practical to safely work with non-ASCII strings in Python 2. There
are too many "arbitrarily mangle my string" functions available (both in the
language proper and in libraries), and the only way to avoid them is constant
vigilance, which doesn't scale.

