Promoting Python

Chris Angelico rosuav at gmail.com
Wed Apr 6 10:14:23 EDT 2016


On Wed, Apr 6, 2016 at 11:54 PM, BartC <bc at freeuk.com> wrote:
> There are plenty of features that /I/ consider must-have, which Python
> doesn't have. It has to emulate them, unsatisfactorily, with variables or
> classes or functions, or do without.

Blub's Paradox epitomized.

> But you're right in that little is actually essential. Basic has shown that.

Actually, BASIC has a lot that isn't essential. A Turing-complete
language can be implemented with just three tokens, although that's
slightly cheating; they form eight opcodes (by being used in pairs).

http://www.dangermouse.net/esoteric/ook.html

> You need expressions, IF, GOTO, variables and assignments, and some means of
> doing I/O.

Depending on your meaning of "language", I would say that I/O does
*not* have to be an intrinsic part of it - it can be implemented far
more cleanly with built-in functions. Python 2 gave good syntactic
support to printing to the console, and messy syntactic support to
printing elsewhere, but Python 3 proved that it's not only
unnecessary, but counter-productive - it's better to push that to
regular functions.

Technically, expressions aren't required. However, a modern imperative
language will normally have expression support because it's so, well,
expressive.

Variable assignment, yes. And you need some form of flow control
(either 'if' or 'while').

> Pretty much every language has (had) those, although it's fashionable now to
> do away with GOTO, and some are getting rid of (rewritable) variables too!
> Others seem intent on doing away with control flow altogether, just having
> expressions. Apparently they think coding should become more elitist with
> only mathematicians allowed to participate.
>
> I have the opposite view.

Or maybe they think that coding should become more accessible to
people with a strong mathematical background. There was a time when
programming was a thing that only programmers did; that time is no
more. A brilliant physicist who sets up synchrotron experiments should
be able to learn enough Python to tinker with his simulation code; a
mathematician who devises cryptographic algorithms should be able to
transfer the algebraic notes directly into code. A language that makes
it easier to translate algebra into executable code is *easier*, not
harder, for those kinds of people. It might be harder *for you*, but
that just proves that, once again, you don't like what you don't
understand, and it scares you, and this feature is mysterious at
least. [1] Also, languages with no mutable state and everything
implemented as expressions lend themselves well to massive
parallelization; the compiler can look at the code and see easily that
these two subexpressions are entirely independent, and evaluate them
in parallel. That's pretty powerful.

Welcome to Blub's Paradox, once again.

ChrisA

[1] https://youtu.be/xCENkwPiuU0?t=1m59s



More information about the Python-list mailing list