"Succinctness is Power", by Paul Graham

I'll see his succintness, and raise him,

brevity

It's not just power, it's the soul of wit!

I must say that I've just skimmed this article, which by the way, can
be found at: Succinctness is Power so I can't say that
I won't change my mind on a deeper reading, but it feels like it's off
the mark.

His argument seems to be based in Fred Brook's observation that the
productivity of programmers tends to be fairly constant when measured
in lines of code per unit time. Fred went on to write that, as far as
he could see , there was "no silver bullet" to solve the problem that
software too too long to produce.

The real problem, it seems to me, is not efficiently producing lines
of code, but producing the right lines of code, and what's right tends
to change over time, as:

   * You understand the requirements as you implement them.
   * You understand the implementation better as you implement the
      requirements.
   * Your customer understands the real requirements better as he/she uses
      what your current set of lines of code implements.
   * Your customer understands the real requirements better as he/she
      discovers that the environment (business, technical or otherwise) has
      changed or is changing.

Now brevity, a term which I prefer to succinctness since it's more
terse, helps a bit because when things change there's less code to
change. Maybe.

In order to change code you first need to understand what you are
changing. I've recently taken over the maintenance of a huge wad of
poorly structured PHP/SQL code, and I still don't feel comfortable
changing it.

Now it might be easier, or at least less of a task if there were less
code, but I'm not sure that that's the real problem. The problem is
how the code is structured, or perhaps how it isn't structured.

Well developed code gets polished instead of developing cruft.

Now brevity, although it might reduce the bulk of cruft, doesn't
really change the problem, and taken to the extreme it can exacerbate
it. In my early days, oh so many decades ago, I used to do about half
of my work in APL, which is if nothing else an extremely terse
language. But like other terse languages, it got the reputation,
often well deserved, of being a write-only language, a combination of
perl and hieroglyphics.

But this really is less a language issue than one of the programming
teams approach. A little less brevity, and a little more attention to
how understandable the code will be in the future, either by you or
your successors is more important, and sometimes at odds with,
brevity.

IIRC in Fred's "No Silver Bullet: Essence and Accidents of Software
Engineering" paper, he held out a glimmer of hope for object-oriented
programming, which was something new to him at the time he wrote the
paper. Brad Cox wrote at least one article revisiting "No Silver
Bullet" and holding out his evolving view of reusable "software-ics"
as the way to kill the vampire. But the reusability which really
helps is the reusability of the knowledge acquired as a particular set
of software evolves, and that takes a combination of the right
languages and tools, and an approach which embraces the need to evolve
and re-factor that code.

The real silver bullet is a process which keeps software malleable.
Dynamic typing is a key ally in forging the right kind of alloy. <G>

Okay, I guess I need to read that article in more detail and then turn
this into a blog entry myself.

···

On 9/28/06, Rich Morin <rdm@cfcl.com> wrote:

This is probably old news to many here, but I found it
to be an interesting read, with implications for Ruby.

  "Succinctness is Power"
  Paul Graham

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

I don't think you are particularly in disagreement with what he is saying. e.g.

So there is no argument about that-- at least, not from me. Individual programs can certainly be too succinct for their own good. The question is, can a language be? Can a language compel programmers to write code that's short (in elements) at the expense of overall readability?

···

On Sep 28, 2006, at 6:18 PM, Rick DeNatale wrote:

On 9/28/06, Rich Morin <rdm@cfcl.com> wrote:

This is probably old news to many here, but I found it
to be an interesting read, with implications for Ruby.

  "Succinctness is Power"
  Paul Graham

I'll see his succintness, and raise him,

brevity

It's not just power, it's the soul of wit!

I must say that I've just skimmed this article, which by the way, can
be found at: Succinctness is Power so I can't say that
I won't change my mind on a deeper reading, but it feels like it's off
the mark.

His argument seems to be based in Fred Brook's observation that the
productivity of programmers tends to be fairly constant when measured
in lines of code per unit time. Fred went on to write that, as far as
he could see , there was "no silver bullet" to solve the problem that
software too too long to produce.

The real problem, it seems to me, is not efficiently producing lines
of code, but producing the right lines of code, and what's right tends
to change over time, as:

  * You understand the requirements as you implement them.
  * You understand the implementation better as you implement the
     requirements.
  * Your customer understands the real requirements better as he/she uses
     what your current set of lines of code implements.
  * Your customer understands the real requirements better as he/she
     discovers that the environment (business, technical or otherwise) has
     changed or is changing.

Now brevity, a term which I prefer to succinctness since it's more
terse, helps a bit because when things change there's less code to
change. Maybe.

In order to change code you first need to understand what you are
changing. I've recently taken over the maintenance of a huge wad of
poorly structured PHP/SQL code, and I still don't feel comfortable
changing it.

Now it might be easier, or at least less of a task if there were less
code, but I'm not sure that that's the real problem. The problem is
how the code is structured, or perhaps how it isn't structured.

Well developed code gets polished instead of developing cruft.

Now brevity, although it might reduce the bulk of cruft, doesn't
really change the problem, and taken to the extreme it can exacerbate
it. In my early days, oh so many decades ago, I used to do about half
of my work in APL, which is if nothing else an extremely terse
language. But like other terse languages, it got the reputation,
often well deserved, of being a write-only language, a combination of
perl and hieroglyphics.

But this really is less a language issue than one of the programming
teams approach. A little less brevity, and a little more attention to
how understandable the code will be in the future, either by you or
your successors is more important, and sometimes at odds with,
brevity.

IIRC in Fred's "No Silver Bullet: Essence and Accidents of Software
Engineering" paper, he held out a glimmer of hope for object-oriented
programming, which was something new to him at the time he wrote the
paper. Brad Cox wrote at least one article revisiting "No Silver
Bullet" and holding out his evolving view of reusable "software-ics"
as the way to kill the vampire. But the reusability which really
helps is the reusability of the knowledge acquired as a particular set
of software evolves, and that takes a combination of the right
languages and tools, and an approach which embraces the need to evolve
and re-factor that code.

The real silver bullet is a process which keeps software malleable.
Dynamic typing is a key ally in forging the right kind of alloy. <G>

Okay, I guess I need to read that article in more detail and then turn
this into a blog entry myself.

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

Silver bullets don't kill vampires, they kill werewolves
Wooden stakes kill vampires :wink:
But ruby sure takes you a lot closer to doing either...

Sorry, couldn't resist.

Rick DeNatale wrote:

···

On 9/28/06, Rich Morin <rdm@cfcl.com> wrote:
> This is probably old news to many here, but I found it
> to be an interesting read, with implications for Ruby.
>
> "Succinctness is Power"
> Paul Graham

I'll see his succintness, and raise him,

brevity

It's not just power, it's the soul of wit!

I must say that I've just skimmed this article, which by the way, can
be found at: Succinctness is Power so I can't say that
I won't change my mind on a deeper reading, but it feels like it's off
the mark.

His argument seems to be based in Fred Brook's observation that the
productivity of programmers tends to be fairly constant when measured
in lines of code per unit time. Fred went on to write that, as far as
he could see , there was "no silver bullet" to solve the problem that
software too too long to produce.

The real problem, it seems to me, is not efficiently producing lines
of code, but producing the right lines of code, and what's right tends
to change over time, as:

   * You understand the requirements as you implement them.
   * You understand the implementation better as you implement the
      requirements.
   * Your customer understands the real requirements better as he/she uses
      what your current set of lines of code implements.
   * Your customer understands the real requirements better as he/she
      discovers that the environment (business, technical or otherwise) has
      changed or is changing.

Now brevity, a term which I prefer to succinctness since it's more
terse, helps a bit because when things change there's less code to
change. Maybe.

In order to change code you first need to understand what you are
changing. I've recently taken over the maintenance of a huge wad of
poorly structured PHP/SQL code, and I still don't feel comfortable
changing it.

Now it might be easier, or at least less of a task if there were less
code, but I'm not sure that that's the real problem. The problem is
how the code is structured, or perhaps how it isn't structured.

Well developed code gets polished instead of developing cruft.

Now brevity, although it might reduce the bulk of cruft, doesn't
really change the problem, and taken to the extreme it can exacerbate
it. In my early days, oh so many decades ago, I used to do about half
of my work in APL, which is if nothing else an extremely terse
language. But like other terse languages, it got the reputation,
often well deserved, of being a write-only language, a combination of
perl and hieroglyphics.

But this really is less a language issue than one of the programming
teams approach. A little less brevity, and a little more attention to
how understandable the code will be in the future, either by you or
your successors is more important, and sometimes at odds with,
brevity.

IIRC in Fred's "No Silver Bullet: Essence and Accidents of Software
Engineering" paper, he held out a glimmer of hope for object-oriented
programming, which was something new to him at the time he wrote the
paper. Brad Cox wrote at least one article revisiting "No Silver
Bullet" and holding out his evolving view of reusable "software-ics"
as the way to kill the vampire. But the reusability which really
helps is the reusability of the knowledge acquired as a particular set
of software evolves, and that takes a combination of the right
languages and tools, and an approach which embraces the need to evolve
and re-factor that code.

The real silver bullet is a process which keeps software malleable.
Dynamic typing is a key ally in forging the right kind of alloy. <G>

Okay, I guess I need to read that article in more detail and then turn
this into a blog entry myself.

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

Thanks, I guess I need to bone up on my knowledge of the occult.

···

On 9/28/06, michael.mabin@gmail.com <michael.mabin@gmail.com> wrote:

Silver bullets don't kill vampires, they kill werewolves
Wooden stakes kill vampires :wink:
But ruby sure takes you a lot closer to doing either...

Sorry, couldn't resist.

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

Well having now read the article completely, it looks like he never
actually makes a decision about whether succinctness really equals
power.

But I have to say that I'm more convinced that it doesn't.

There may be some correlation between more compact notations and
'power', but it's not at all clear that it's a universal.

In fact at the edges I think that it's demonstrably false. Machine
code is actually more succinct than assembly language for example.

In fact that first step up the evolutionary ladder of programming
languages was motivated not by a desire to make code more compact,
but to make it more understandable.

And extremely compact notations like APL are famous for befuddling
even the author of works expressed in those notations.

It's not often that one feature like brevity is a controlling measure
of goodness, so that one can use the Nigel Tufnel methodology and
crank that up to 11, because it's 1 better than 10 init?!

Instead it's more like Goldilocks and "this one is too x, and this one
is too y, but this one is just right."

···

On 9/28/06, Reprisal <nepenthereprisal@aol.com> wrote:

I don't think you are particularly in disagreement with what he is
saying. e.g.

So there is no argument about that-- at least, not from me.
Individual programs can certainly be too succinct for their own good.
The question is, can a language be? Can a language compel programmers
to write code that's short (in elements) at the expense of overall
readability?

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

Knowledge is Power
Power Corrupts
Study Hard
Be Evil

-- Matt
It's not what I know that counts. It's what I can remember in time to use.

Rick DeNatale wrote:

···

On 9/28/06, michael.mabin@gmail.com <michael.mabin@gmail.com> wrote:

Silver bullets don't kill vampires, they kill werewolves
Wooden stakes kill vampires :wink:
But ruby sure takes you a lot closer to doing either...

Sorry, couldn't resist.

Thanks, I guess I need to bone up on my knowledge of the occult.

Lycanthropy certainly gives one paws.

Hal

Matt Lawrence wrote:

Knowledge is Power
Power Corrupts
Study Hard
Be Evil

Knowledge is power.
Time is money.
Power is work / time.

So knowledge = work / money.

Therefore, the more you make, the less you know.

Hal

These puns are real howlers, but topics like this are the reason I
haunt this list.

···

On 9/29/06, Hal Fulton <hal9000@hypermetrics.com> wrote:

Rick DeNatale wrote:
> On 9/28/06, michael.mabin@gmail.com <michael.mabin@gmail.com> wrote:
>
>> Silver bullets don't kill vampires, they kill werewolves
>> Wooden stakes kill vampires :wink:
>> But ruby sure takes you a lot closer to doing either...
>>
>> Sorry, couldn't resist.
>
> Thanks, I guess I need to bone up on my knowledge of the occult.

Lycanthropy certainly gives one paws.

--
Giles Bowkett
http://www.gilesgoatboy.org

Groan!!!!

Or should I say Grrrrrrrrr <G>

···

On 9/29/06, Hal Fulton <hal9000@hypermetrics.com> wrote:

Rick DeNatale wrote:
> On 9/28/06, michael.mabin@gmail.com <michael.mabin@gmail.com> wrote:
>
>> Silver bullets don't kill vampires, they kill werewolves
>> Wooden stakes kill vampires :wink:
>> But ruby sure takes you a lot closer to doing either...
>>
>> Sorry, couldn't resist.
>
> Thanks, I guess I need to bone up on my knowledge of the occult.
>

Lycanthropy certainly gives one paws.

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

Isn't there a business rule that postulates that a person can be
promoted starting at the level of his/her own incompetence? Kind of in
the same vein. Maybe not. But in terms of succinctness being power as
Paul Graham article states, I wouldn't jump on that bandwagon for sure.
I could whip up some obfuscated, cryptic Perl line of code that is very
succinct for my company's internal development but if I was to get hit
by a bus someone would pick up the code and frown menacingly and throw
their hands up to the heavens (or down to the hells perhaps).

Terse doesn't mean powerful. It means ugly IMHO. I like to use Ruby for
its elegance and readability. If it takes a few more lines of code to
express myself I still prize those selling points above being a man of
few words. After all, breaking things down to binary form I could just
punch a bunch of 0's and 1's. But what fun would that be?

Hal Fulton wrote:

···

Matt Lawrence wrote:
> Knowledge is Power
> Power Corrupts
> Study Hard
> Be Evil

Knowledge is power.
Time is money.
Power is work / time.

So knowledge = work / money.

Therefore, the more you make, the less you know.

Hal

Giles Bowkett wrote:

These puns are real howlers, but topics like this are the reason I
haunt this list.

Polar bear walked into a bar and said, "give me a...glass of iced
water".
Bar tender said, "Sure, but why the big pause?"
Polar bear said, "Oh, I was born with them"
Wocka wocka wocka!

Regards,
Jordan

You might consider reading the article.

···

On Sep 30, 2006, at 12:10 AM, gregarican wrote:

Isn't there a business rule that postulates that a person can be
promoted starting at the level of his/her own incompetence? Kind of in
the same vein. Maybe not. But in terms of succinctness being power as
Paul Graham article states, I wouldn't jump on that bandwagon for sure.
I could whip up some obfuscated, cryptic Perl line of code that is very
succinct for my company's internal development but if I was to get hit
by a bus someone would pick up the code and frown menacingly and throw
their hands up to the heavens (or down to the hells perhaps).

Terse doesn't mean powerful. It means ugly IMHO. I like to use Ruby for
its elegance and readability. If it takes a few more lines of code to
express myself I still prize those selling points above being a man of
few words. After all, breaking things down to binary form I could just
punch a bunch of 0's and 1's. But what fun would that be?

Hal Fulton wrote:

Matt Lawrence wrote:

Knowledge is Power
Power Corrupts
Study Hard
Be Evil

Knowledge is power.
Time is money.
Power is work / time.

So knowledge = work / money.

Therefore, the more you make, the less you know.

Hal

quoth the MonkeeSage:

Polar bear walked into a bar and said, "give me a...glass of iced
water".
Bar tender said, "Sure, but why the big pause?"
Polar bear said, "Oh, I was born with them"
Wocka wocka wocka!

Ouch!

You've just discovered a way to punch someone in the gut over the internet :wink:

Regards,
Jordan

-d

···

--
darren kirby :: Part of the problem since 1976 :: http://badcomputer.org
"...the number of UNIX installations has grown to 10, with more expected..."
- Dennis Ritchie and Ken Thompson, June 1972

"gregarican" <greg.kujawa@gmail.com> writes:

Terse doesn't mean powerful. It means ugly IMHO. I like to use Ruby for
its elegance and readability. If it takes a few more lines of code to
express myself I still prize those selling points above being a man of
few words. After all, breaking things down to binary form I could just
punch a bunch of 0's and 1's. But what fun would that be?

01000100 01110101 01101110 01101110 01101111 00101100
00100000 01001001 00100000 01101100 01101001 01101011
01100101 00100000 01101001 01110100 00101110 00001010

···

--
Christian Neukirchen <chneukirchen@gmail.com> http://chneukirchen.org

MonkeeSage wrote:

Giles Bowkett wrote:

These puns are real howlers, but topics like this are the reason I
haunt this list.

Polar bear walked into a bar and said, "give me a...glass of iced
water".
Bar tender said, "Sure, but why the big pause?"
Polar bear said, "Oh, I was born with them"
Wocka wocka wocka!

Regards,
Jordan

Yeah, they've bruined me for any other mailing list.

I don't have time for that. It wasn't succinct enough :-/

Reprisal wrote:

···

You might consider reading the article.

On Sep 30, 2006, at 12:10 AM, gregarican wrote:

> Isn't there a business rule that postulates that a person can be
> promoted starting at the level of his/her own incompetence? Kind of in
> the same vein. Maybe not. But in terms of succinctness being power as
> Paul Graham article states, I wouldn't jump on that bandwagon for
> sure.
> I could whip up some obfuscated, cryptic Perl line of code that is
> very
> succinct for my company's internal development but if I was to get hit
> by a bus someone would pick up the code and frown menacingly and throw
> their hands up to the heavens (or down to the hells perhaps).
>
> Terse doesn't mean powerful. It means ugly IMHO. I like to use Ruby
> for
> its elegance and readability. If it takes a few more lines of code to
> express myself I still prize those selling points above being a man of
> few words. After all, breaking things down to binary form I could just
> punch a bunch of 0's and 1's. But what fun would that be?
>
> Hal Fulton wrote:
>> Matt Lawrence wrote:
>>> Knowledge is Power
>>> Power Corrupts
>>> Study Hard
>>> Be Evil
>>
>> Knowledge is power.
>> Time is money.
>> Power is work / time.
>>
>> So knowledge = work / money.
>>
>> Therefore, the more you make, the less you know.
>>
>>
>> Hal
>
>

Hi --

···

On Sat, 30 Sep 2006, Christian Neukirchen wrote:

"gregarican" <greg.kujawa@gmail.com> writes:

Terse doesn't mean powerful. It means ugly IMHO. I like to use Ruby for
its elegance and readability. If it takes a few more lines of code to
express myself I still prize those selling points above being a man of
few words. After all, breaking things down to binary form I could just
punch a bunch of 0's and 1's. But what fun would that be?

01000100 01110101 01101110 01101110 01101111 00101100
00100000 01001001 00100000 01101100 01101001 01101011
01100101 00100000 01101001 01110100 00101110 00001010

01010111 01100101 01101100 01101100 00101100 00100000
01111001 01101111 01110101 00100111 01110010 01100101
00100000 01110111 01100101 01101001 01110010

David

--
                   David A. Black | dblack@wobblini.net
Author of "Ruby for Rails" [1] | Ruby/Rails training & consultancy [3]
DABlog (DAB's Weblog) [2] | Co-director, Ruby Central, Inc. [4]
[1] Ruby for Rails | [3] http://www.rubypowerandlight.com
[2] http://dablog.rubypal.com | [4] http://www.rubycentral.org

My good old friend Websters (m-w.com a must for all non native speakers, and
maybe even for the natives :wink:
does not seem to know about the verb "to bruin", could you enlighten a
stupid please?

Cheers
Robert

···

On 9/30/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

MonkeeSage wrote:
> Giles Bowkett wrote:
>> These puns are real howlers, but topics like this are the reason I
>> haunt this list.
>
> Polar bear walked into a bar and said, "give me a...glass of iced
> water".
> Bar tender said, "Sure, but why the big pause?"
> Polar bear said, "Oh, I was born with them"
> Wocka wocka wocka!
>
> Regards,
> Jordan

Yeah, they've bruined me for any other mailing list.

--
Deux choses sont infinies : l'univers et la bêtise humaine ; en ce qui
concerne l'univers, je n'en ai pas acquis la certitude absolue.

- Albert Einstein

dblack@wobblini.net writes:

01010111 01100101 01101100 01101100 00101100 00100000
01111001 01101111 01110101 00100111 01110010 01100101
00100000 01110111 01100101 01101001 01110010

  00100000 01110111 01100101 01101001 01110010 01100100
                                               ^^^^^^^^
- .... .- - .----. ...
.--. .-. --- -... .- -... .-.. -.--
.-. .. --. .... - --..--
-.-- . .- .... .-.-.-

···

--
Christian Neukirchen <chneukirchen@gmail.com> http://chneukirchen.org