Live data from Hacker News

Python past, present, and future with Guido van Rossum [audio]

talkpython.fm

101–110 of 151 posts

Re: Python past, present, and future with Guido van Rossum [audio]

#101
post #42
post #5

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 go…

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" mu…

You say that like it's a bad thing. Python is a multi-paradigm language, allowing you to pick (or create) the idiom that is best suited for solving the problem at hand. It is not a straitjacket language that tells you how to think.

The use of "=" for assignment is only confusing if you are already used to using for equations, and even then it's only confusing for a very short time, since it's obvious that the two (assignment vs equations) are completely different things. Python is hardly the first language to use it, by the way; I got started with BASIC on a Commodore 16 which used X=X+1, before I even knew about equations.

Re: Python past, present, and future with Guido van Rossum [audio]

#102
post #62

Earlier quoted context omitted.

Try PyCharm if you need that kind of support. I'm usually happy with just pyflakes and linters.

Pycharm tries really hard to paper over the lack of static typing in Python. Variable/function refactoring works mostly, code completion is acceptable (especially if you're inside a specially supported-framework like Django) and sometimes it'll show up a type error before your tests fail, saving you the time it takes up setup the test db, run the tests etc... I love Pycharm, and I think people who go without IDE supp…

>Pycharm tries really hard to paper over the lack of static typing in Python.

It does and IMO this is the wrong approach. I usually fire off a test and use that the push the code to the line I'm interested in, at which point I fire up IPython.embed().

That gives you perfect code completion, instant variable inspection (including instant docstring and code lookup) and the ability to execute and inspect on the fly.

You can then fairly easily copy and paste the lines you want back to the text editor.

IMO that's a step ahead of just having autocomplete in an IDE.

Re: Python past, present, and future with Guido van Rossum [audio]

#103

Earlier quoted context omitted.

It IS a 90s language! ;-) My main issue with Python is distribution. Oh, you're using it on Windows? No worries, just install matplotlib using pip. Oh wait, you need to install cygwin and a C compiler and for some weird reason it won't compile but no worries there is a website with Unofficial Windows Binaries for Python Extension Packages but it's still not working.... Numerical computations and plotting are also my…

There isn't anything good about matplotlib that I can see. Maybe I'm just not smart enough to see what's nice about it -- but as someone who has to learn it rather than already indoctrinated into matlab style plotting -- it seems like a disaster ... I switched to bokeh and am so far much happier

Did you use something before Bokeh that you preferred, or is your comment based on Bokeh being generally better than Matplotlib?

Re: Python past, present, and future with Guido van Rossum [audio]

#104
post #78

Earlier quoted context omitted.

Having used Scala I can't stand to go back to Python. Almost as lightweight (more lightweight in some places - case classes and "_ lambdas" are things I really missed in Python, though attrs maybe solves the first), but a whole lot safer, which makes it much easier to refactor, which makes it possible to maintain a much higher quality standard in a long-lived codebase. And the whole library/build ecosystem works a lo…

>And the whole library/build ecosystem works a lot better Seriously? Maven was one of the things that made me run away screaming from the Java ecosystem.

Seriously. For anything more than a single developer maven is the best build system I've ever used by a long way, because its customizability is so limited: every project uses the same source directory layout, every project uses the same release tag format, every project uses the same unit test layout, and so you can immediately jump into any project and be productive. When you want to run random code in your build process it has to be encapsulated as a plugin, which means a) any random logic in the build process is at least ordinary first-class code that goes through your normal code review process, has a versioning and release cycle, can be unit tested etc. b) the slight extra overhead means there's more likely to be one standard plugin for doing a thing, which again means there'll be a standardised source directory etc., rather than everyone integrating thrift or swagger or what-have-you into their build in an ad-hoc and slightly different way. c) often people decide that actually they can live without having function names be capitalised if the build was made on a Wednesday or whatever nonsense they wanted to do to the build, and put their business logic in code where it belongs instead.

Beyond that there's a working central repository where all the important libraries are (and it's one of the few ecosystems that actually enforces code signing of all published libraries), and also a free repository server that you can run on-premises (and that's a normal JVM app that runs like anything else in the ecosystem) and use for private publishing and/or to proxy remote repositories to make sure you will always be able to rebuild any previously successful build even if a remote repository goes down. The release plugin enforces good practices by default, e.g. you tag a release and rebuild from that release, ensuring you can always recreate any given release; you may build a -SNAPSHOT which depends on another -SNAPSHOT, which makes it lightweight to make a change to an upstream library and check that it has the right effect on your downstream application (and the first-class IDE integration dovetails very nicely with this), but releases are only allowed to depend on releases, which ensures they're reproducible and immutable. None of this should be hard, and I think other ecosystems are gradually getting it right, but Maven just seems to have managed to make all the right choices and avoid all the pitfalls. You don't hear as much about it as you do about, say, NPM, but I think that's at least partly because it rarely goes wrong, so a lot of the time it's invisible to developers.

Re: Python past, present, and future with Guido van Rossum [audio]

#105
post #55

Earlier quoted context omitted.

I'm surprised Ubuntu doesn't come with gcc.

You type in 'sudo apt-get install build-essentials' and you have it. I don't what the process on Windows these days but you used to have to find visual studio install media, install it, and reboot two or three times.

I don't what the process on Windows these days

1) Go to visualstudio.com

2) click Downloads

if you want the full IDE:

3) choose between downloading free version of a trial of the professional version

if you just want the command line tools

3) scroll down until you find C++ Build Tools and download that

4) double click the file you just downloaded.

5) Done

Re: Python past, present, and future with Guido van Rossum [audio]

#106
post #42

Earlier quoted context omitted.

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" mu…

You say that like it's a bad thing. Python is a multi-paradigm language, allowing you to pick (or create) the idiom that is best suited for solving the problem at hand. It is not a straitjacket language that tells you how to think. The use of "=" for assignment is only confusing if you are already used to using for equations, and even then it's only confusing for a very short time, since it's obvious that the two (as…

In practice I do not see it being any more "multi-paradigm" than e.g. Haskell is. It just conflates the imperative and declarative subsets, meaning that a lambda is not really a lambda etc

Re: Python past, present, and future with Guido van Rossum [audio]

#107
post #69
post #53

Earlier quoted context omitted.

>x=x+1 I've always heard this explained along the lines of "adds 1 to whatever x is, then puts that value into x, so x is one more than it was before".

The syntax is trying to look friendly and familiar, but ultimately it's an abuse of a standard mathematical notation that has meant something else for hundreds of years. The original meaning, an equality relation, is still being taught to high-school children today, typically before python is forced upon them.

Good god. If anything is "forced" upon high-school kids, it's algebra. (Maybe ask the average high schooler and see what they have to say about it.) I haven't heard of any schools that make Python mandatory though; where are these located?

Re: Python past, present, and future with Guido van Rossum [audio]

#108
post #42

Earlier quoted context omitted.

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" mu…

> 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'…

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

Re: Python past, present, and future with Guido van Rossum [audio]

#109
post #104

Earlier quoted context omitted.

>And the whole library/build ecosystem works a lot better Seriously? Maven was one of the things that made me run away screaming from the Java ecosystem.

Seriously. For anything more than a single developer maven is the best build system I've ever used by a long way, because its customizability is so limited: every project uses the same source directory layout, every project uses the same release tag format, every project uses the same unit test layout, and so you can immediately jump into any project and be productive. When you want to run random code in your build p…

>Seriously. For anything more than a single developer maven is the best build system I've ever used by a long way, because its customizability is so limited

That, along with its horrible XML markup abortion, was exactly what I hated about it. Any behavior that was even moderately unusual was a monumental pain to implement.

Build scripts by their very nature need to be turing complete because the need for customization isn't rare enough.

>Beyond that there's a working central repository where all the important libraries are

Python got this 17 years ago, a good 4 years before maven even existed.

Re: Python past, present, and future with Guido van Rossum [audio]

#110
post #86

Earlier quoted context omitted.

Love Python, but very happy to be writing Go instead now, to give one example of a post-90s language. (Their intersection of uses isn't total, of course; Python's still got Go handily beat for numpy-ish stuff and interactive use. See Julia for a possibly-superior post-90s competitor in those areas, though I've only played with it.)

Interesting, because a common criticism of Go is that it's "stuck in the 70s". [1] It's "modern" only because of its age, not because of its features. [1] https://github.com/ksimka/go-is-not-good

Part of Go's charm is how much it leaves out.

But that's not to say it doesn't include good stuff.

I'd say support for lightweight threading, CSP (channels), structural typing, fully embracing first-class functions (crippled python lambda, anyone?), and a build-system integrated into the language rather than left to 3rd-party-tools are all distinctly post-90s features, for a mainstream language.

Also, gofmt is a huge boon. The Go community focuses on ecosystem and ergonomic human factors of development feels distinctly post-90s-lanauge to me.

Also, the 90s saw an intense, misguided focus on "object-oriented-programming", which Go completely, mercifully ditches. In that sense, it's post-90s. :)

(Well, OK, maybe OO-style programming is good for UIs -- thinking of stuff like iOS/Cocoa apis and Unity.)

Post reply on HN