# [Python-ideas] Making stars optional? (was: Making colons optional?)

Steven D'Aprano steve at pearwood.info
Thu Feb 5 23:03:42 CET 2009

```Bruce Leban wrote:
> In algebra, you don't have to put a multiplication sign in between two
> quantities that you want to multiply. I've seen beginning programmers
> write things like
>
>     x = 3a + 4(b-c)
>
>
>     x = 3*a + 4*(b-c)
>
> Why should we require the stars when it's unambiguous what the first
> statement means?

Because it's never unambiguous.

If I write x = 3a, does that mean that I've accidentally left out the +
sign I intended, or that it is a multiplication?

Worse, if I write x = a3, is that an assignment of a*3 or a variable
named "a3"? Similar for x = ab. The tradition in mathematics is to use
one letter variable names, so a variable called "ab" is so rare as to be
virtually non-existent, but this obviously doesn't hold for programming.

Mathematicians get away with this sort of ambiguity because they are
writing for other mathematicians, not for a computer. Because
mathematical proofs rely on a sequence of equations, not just a single
statement, the ambiguity can be resolved:

y = a(b+c) - ac  # does this mean a+() or a*() or something else?
y = ab + ac - ac  # ah, it must have been a*()
y = ab

--
Steven

```