From: Richard Harter on
On Wed, 28 Oct 2009 17:29:04 +0100, "Dmitry A. Kazakov"
<mailbox(a)dmitry-kazakov.de> wrote:

>On Wed, 28 Oct 2009 16:08:06 GMT, Richard Harter wrote:
>
>> On Mon, 26 Oct 2009 17:04:36 -0700 (PDT), user923005
>> <dcorbit(a)connx.com> wrote:
>>
>>>On Oct 26, 3:22=A0pm, c...(a)tiac.net (Richard Harter) wrote:
>>>> SHOULD IT BE TURTLES ALL THE WAY UP?
>>>>
>>>> In the famous anecdote, the little old lady replies to the noted
>>>> philosopher, "It's turtles all the way down." =A0When it comes to
>>>> writing software many writers on software design and many
>>>> programming language creators seem to believe that it is turtles
>>>> all the way up.
>>>>
>>>> What do I mean by "turtles all the way up"? =A0By this I mean the
>>>> thesis that the techniques and programming language concepts that
>>>>
>>>> are used in the small can be extended indefinitely to programming
>>>>
>>>> in the large. =A0In other words if we use language X for 100 line
>>>> programs and 1000 line programs we can also use it for 1000000
>>>> line programs. =A0We may have to add some extensions and new
>>>> features along the way, but we can increase the size of the
>>>> programs we write indefinitely using the same ideas.
>>>
>>>I've never seen a convincing argument to show that this is wrong.
>>>
>>>We can use a 26 letter alphabet to make little words.
>>>We can use a 26 letter alphabet to make bigger words.
>>>We can use a 26 letter alphabet to make little paragraphs.
>>>We can use a 26 letter alphabet to make bigger paragraphs.
>>>We can use a 26 letter alphabet to make little books.
>>>We can use a 26 letter alphabet to make bigger books.
>>>We can use a 26 letter alphabet to make entire libraries.
>>
>>>Why isn't the same thing true of programming languages?
>>
>> It is. We can use 1's and 0's to build software.
>
>Yes, but that is the machine language. When communicating ideas about
>software to other people we are using natural languages.
>
>> Similarly human brains are made out of atoms.
>
>So is the ink used to print books. This is an invalid comparison. Atoms is
>the "language" of the Universe, considering the latter as a machine. Human
>brain does not operate atoms, its language is different.

True enough, which was the point.
>
>> Nothing wrong with the argument except that it is not relevant.
>> As the Jedi Master said, These are not the turtles you want.
>
>The argument is that it is not clear what a hierarchy of programming
>languages adds.

You are missing the point. He made an observation and called it
an argument. It wasn't. He did go on to question whether a
hierarchy of programming languages had value. However his
subsequent paragraph had no significant connection to his
observation.

[snip rhetoric]


Richard Harter, cri(a)tiac.net
http://home.tiac.net/~cri, http://www.varinoma.com
Kafka wasn't an author;
Kafka was a prophet!
From: Richard Harter on
On Tue, 27 Oct 2009 10:54:34 -0700 (PDT), gremnebulin
<peterdjones(a)yahoo.com> wrote:

>On 27 Oct, 00:04, user923005 <dcor...(a)connx.com> wrote:
>> On Oct 26, 3:22 pm, c...(a)tiac.net (Richard Harter) wrote:
>>
>>
>>
>> > SHOULD IT BE TURTLES ALL THE WAY UP?
>>
>> > In the famous anecdote, the little old lady replies to the noted
>> > philosopher, "It's turtles all the way down." When it comes to
>> > writing software many writers on software design and many
>> > programming language creators seem to believe that it is turtles
>> > all the way up.
>>
>> > What do I mean by "turtles all the way up"? By this I mean the
>> > thesis that the techniques and programming language concepts that
>>
>> > are used in the small can be extended indefinitely to programming
>>
>> > in the large. In other words if we use language X for 100 line
>> > programs and 1000 line programs we can also use it for 1000000
>> > line programs. We may have to add some extensions and new
>> > features along the way, but we can increase the size of the
>> > programs we write indefinitely using the same ideas.
>>
>> I've never seen a convincing argument to show that this is wrong.
>>
>> We can use a 26 letter alphabet to make little words.
>> We can use a 26 letter alphabet to make bigger words.
>> We can use a 26 letter alphabet to make little paragraphs.
>> We can use a 26 letter alphabet to make bigger paragraphs.
>> We can use a 26 letter alphabet to make little books.
>> We can use a 26 letter alphabet to make bigger books.
>> We can use a 26 letter alphabet to make entire libraries.
>>
>> Why isn't the same thing true of programming languages?
>
>what do you make libraries into?
>
>At each stage in your
>list some extra organising structure is introduced. A library
>has shelves and indexes, it is not a single gigantic book or trillion-
>word sentence.
>
>So the answer to "why not" is "we have reached the highest organising-
>pricniple
>allowed by the language, and we still have more to organise". (what do
>you make libraries into? )
>
>Currently we are struggling to cope with applications spread accross
>multiple nodes and processores, a situation which was not forseen
>in most traditonal HLLs.

Just so. I should have pointed that out in the original. We get
more speed and power by distributing processing. The price is
that we have to deal with distributed programming.

A useful paper in context is "The Problem with Threads" by Edward
A. Lee. The URL is
http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.pdf


Richard Harter, cri(a)tiac.net
http://home.tiac.net/~cri, http://www.varinoma.com
Kafka wasn't an author;
Kafka was a prophet!
From: Ray on
Pascal J. Bourguignon wrote:

> Why should you care about the detail of the micro-instructions of your
> MC6800? Cannot you write a specification for a microprocessor in two
> lines? Let the system care about the details itself.

Problem: you have a few thousand binaries written for this
CPU that nobody produces anymore; you need to write software
that runs them in emulation.

No "two-line specification" is going to contain enough
information to allow you to write software that will emulate
that CPU sufficiently well that all these programs work.

Likewise, if your aim is to produce a C compiler, you will
need *ALL* of the specification of the C language as part
of your specification.

Likewise, if you need a stress analysis of the Eiffel Tower,
you will need a complete schematic of the tower - its parts,
their exact dimensions, and the way they fit together.

Specifications simpler than the problems they intend to
solve exist, certainly; but they incorporate, implicitly
or explicitly, additional information whose retrieval and
interpretation I know of no way to automate. If your
boss (or the salesguy) hands you a specification that
you must provide a program that does foo, he is relying
on you the human to know (or be able to find out) what
foo is and how foo is done. And that information, even
though he didn't provide it, is part of the specification
of the problem.

Bear


From: Pascal J. Bourguignon on
Ray <bear(a)sonic.net> writes:

> Pascal J. Bourguignon wrote:
>
>> Why should you care about the detail of the micro-instructions of your
>> MC6800? Cannot you write a specification for a microprocessor in two
>> lines? Let the system care about the details itself.
>
> Problem: you have a few thousand binaries written for this
> CPU that nobody produces anymore; you need to write software
> that runs them in emulation.
>
> No "two-line specification" is going to contain enough
> information to allow you to write software that will emulate
> that CPU sufficiently well that all these programs work.
>
> Likewise, if your aim is to produce a C compiler, you will
> need *ALL* of the specification of the C language as part
> of your specification.

Instead, you could use Scheme. R5RS, the specifications of scheme is
only 50 pages, and this includes a formal specification!

The point is that there is a lot of artificial complexity that has no
fundamental, or existential reason to be. We can live without a
200,000-book tax code.


> Likewise, if you need a stress analysis of the Eiffel Tower,
> you will need a complete schematic of the tower - its parts,
> their exact dimensions, and the way they fit together.

I wouldn't take the Eiffel Tower as an example of a complex structure:
it was designed "by hand", on paper, and without automatic computers.

> Specifications simpler than the problems they intend to
> solve exist, certainly; but they incorporate, implicitly
> or explicitly, additional information whose retrieval and
> interpretation I know of no way to automate. If your
> boss (or the salesguy) hands you a specification that
> you must provide a program that does foo, he is relying
> on you the human to know (or be able to find out) what
> foo is and how foo is done. And that information, even
> though he didn't provide it, is part of the specification
> of the problem.

Indeed. The question is what part of the system must take
responsibility for the details of foo.

In the case of assembly language instructions, we leave that up to the
compiler. With higher level tools, why couldn't we leave it up to the
adequat level system part, to find out about the details of foo, and
how to implement them using lower level system parts?

Granted, until we've automatized these levels, we need to implement
them ourselves, and this is the bad situation we are in. What I say
is that the solution is not in trying to improve what we're doing at a
given level, it is in not doing ourselve that level job; instead,
write a meta-tool, that will do our job at this level in its own way,
automatically and systematically, therefore eventually in a debugged
or proved way.

--
__Pascal Bourguignon__
From: Joshua Cranmer on
On 10/28/2009 02:46 PM, Pascal J. Bourguignon wrote:
> I wouldn't take the Eiffel Tower as an example of a complex structure:
> it was designed "by hand", on paper, and without automatic computers.

You must have absolutely no experience with civil engineering, then. The
designs of buildings easily run into the 100's of pages, and yes, even
when they're drawn by hand. After all, you have to worry about the
structural components, mechanical components, electrical, plumbing, etc.
Even the structural components of a "simple" steel tower are complex,
especially if it's the input to a physical modelling program.

I think one of the diagrams I had dedicated 10 pages for the structural
part of a building which is just a single large enclosed room with one
floor.

--
Beware of bugs in the above code; I have only proved it correct, not
tried it. -- Donald E. Knuth