[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: succinctness = power

I disagree that succinctness or terseness is a good property of a
language. When I read an expression or statement, I don't want to have
to puzzle it out. I want the meaning to be obvious. Verbiage decreases
comprehension, but so can terseness.

Also, repetition can increase a program's robustness. We humans like to
approach problems in different ways, and if all those ways lead to the
same answer, then I at least, have a greater confidence in the solution.

The requirement that one must declare the type of a variable before any
use is an example of a beneficial repetition.

I'm willing to let a compiler squeeze the repetition out of my programs.

--- Vladimir

Vladimir G. Ivanovic                        http://leonora.org/~vladimir
2770 Cowper St.                                         vladimir@acm.org
Palo Alto, CA 94306-2447                                 +1 650 678 8014

"AvS" == Anton van Straaten <anton@appsolutions.com> writes:

  AvS> Jeffrey Palm wrote:
  >> Given this definition, no... but this definition is inaccurate,
  >> because 'succinct' doesn't imply the *greatest* compression;
  AvS> ...
  >> So, I'd say languages *should* aim for a succinctness that
  >> reduces the size (and consequently the complexity) of
  >> programs without hindering their expressiveness.

  AvS> I think what is wanted with programming languages and programs
  AvS> intended for human consumption is something along the lines of
  AvS> "the greatest meaning-based compression" (or "greatest semantic
  AvS> compression", to be more succinct). If greatest possible
  AvS> compression were the goal, then all that would be needed to write
  AvS> succinct programs would be to run the final program through a
  AvS> compression program like gzip.

  AvS> Compression programs work by looking for repeated patterns in the
  AvS> data being compressed, and optimizing the expression of those
  AvS> repetitions. But most compression programs look for arbitrary
  AvS> identical patterns, and don't care about possible meanings of the
  AvS> data being compressed. Writing succinct (or concise)
  AvS> human-readable code involves identifying repeated patterns that
  AvS> have closely related meanings, and optimizing those.

  AvS> This kind of "manual semantic compression" results in better
  AvS> code, or even best code. That's because repetition is almost
  AvS> always bad, in almost every possible respect (one common
  AvS> exception: execution speed). A semantically compressed program
  AvS> should, almost by definition, be more comprehensible to a human
  AvS> than the alternatives. Semantic compression of programs tends to
  AvS> result naturally in layered and modular programs, since if one is
  AvS> paying attention to meaning when performing compression, common
  AvS> functionality is factored out, and higher-level behaviors are
  AvS> built on top of lower-level behaviours.

  AvS> So I would need to be convinced that there's any technical case
  AvS> at all, as some have suggested, for not performing maximal
  AvS> semantic compression on programs. In that case, Fredrik's
  AvS> definition of succinctness as "greatest possible compression"
  AvS> works just fine, as long as it's understood to be semantic
  AvS> compression.

  AvS> Of course, there's a pragmatic/business case for not performing
  AvS> maximum semantic compression, which is simply that many
  AvS> programmers and designers are either not capable of doing it, or
  AvS> else they work in environments in which the benefits of
  AvS> approaching development in this way are not understood or
  AvS> sufficiently valued. Also, in some cases with sufficiently small,
  AvS> one-off programs, high levels of semantic compression may not be
  AvS> directly justifiable.

  AvS> Anton