Why not allow empty code blocks?

Paul Rubin no.email at nospam.invalid
Tue Aug 2 15:22:46 EDT 2016


Steven D'Aprano <steve+python at pearwood.info> writes:
> where power is defined (rather fuzzily) as the expressiveness
> of the language, how easy it is for the programmer to read, write and
> maintain code, how efficient/fast you can implement it, etc.

Scheme guru Matthias Felleisen takes a stab at a precise definition here
(though it's pointy-headed theory that I don't understand that well):

  http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.51.4656

> The Halting Problem is easily solved for Bloop languages: they always
> halt.

If Bloop is powerful enough to "solve the halting problem" as you
describe, that gives it capabilities that Turing-complete languages
lack.  (Of course it also loses some capabilities).  Some of the
advantages of Turing-incomplete languages (plus why they are less
constraining than it might sound) are discussed here:

   http://www.jucs.org/doi?doi=10.3217/jucs-010-07-0751

> But as we've seen, syntax can make a HUGE difference to power in the
> sense of expressiveness, maintainability of code, readability,
> efficiency of the programmer, and even efficiency of the
> interpreter. Conway's Game of Life is Turing Complete. Would you
> rather use Python, or Game of Life? BrainF*ck or Javascript?

That's completely different than Python vs Scheme, where you can
basically transliterate Python to Scheme by converting indentation
structure into parentheses and a few other things like that.
Felleisen's paper (linked above) has a deeper take on what
expressiveness really means.  I've programmed lots of Python and a fair
amount of Lisp, and Lisp's parentheses really aren't that big a deal.
Python is more pleasant than Lisp for me these days, mostly because its
built-in datatypes and the standard libraries are a better match for
today's programming than Lisp, which is somewhat stuck in the 1980s.

Clojure (a new Lisp dialect with modern capabilities, currently only on
the JVM) may be the way forward for Lisp, parentheses and all.

> you are convinced that Python would be a better language if it
> supported more mathematical notation with Unicode operators.

Haskell and Agda both support this.  It isn't used much in Haskell but
Agda users actually use it, and the Emacs editing mode for Agda has
special stuff to make it easier.  It's probably more useful in Agda
since Agda programs deal more with actual mathematical proofs.



More information about the Python-list mailing list