 |
|
| Computers Forum Index » Computer Languages (Misc) » Data Flow languages and programming - Part I... |
|
Page 2 of 4 Goto page Previous 1, 2, 3, 4 Next |
|
| Author |
Message |
| robertwessel2 at (no spam) yahoo.com... |
Posted: Wed Oct 28, 2009 6:22 am |
|
|
|
Guest
|
On Oct 27, 11:32 pm, p... at (no spam) informatimago.com (Pascal J. Bourguignon)
wrote:
Quote: Tim Little <t... at (no spam) little-possums.net> writes:
On 2009-10-28, Pascal J. Bourguignon <p... at (no spam) informatimago.com> wrote:
Now if you need to write a million of source line, then just don't
do it. Use metaprogramming to generate this million of source lines
from a smaller source. And so on, you can add layers of
metaprogramming all you need to compact your sources and always have
something of manageable size.
So, you're saying that *every* programming problem can be solved in at
most a few tens of thousands of lines of code?
Can you not specify all programming problem in less that a few
thousands of lines of specification?
Well sure. I can always write the spec as "Implement the tax code of
the United States." Doesn't actually help that the actual tax code is
somewhere on the order of half a million lines of text.
Plenty of real world problems, and probably including a large fraction
of the ones you can actually get paid to write programs to tackle, are
fundamentally inexpressible in a few thousand lines of specification.
Quote: Well, you can always write more detailed specifications, but I can
assure you that sales peoples will always be able to put the whole
specifications of your software on a 2-page booklet.
Certainly some problems can, but most can't. Metaprogramming is just
a form of compression, and there is no compression system that can
reduce every source below a given size. Some problems really are
irreducibly complex, and demand complex solutions.
Yes indeed. However, assuming a big ontology (eg. take wikipedia, or
even the whole web), wouldn't it be possible to express the needs for
any software in less than ten thousands lines, and let the
sufficiently smart system develop it, filling in the blanks in the
specifications with all the knowledge it can extract from the web?
Well, that's always been the fantasy. More to the point, something
like Cyc might be a more appropriate base for something like that.
Still, we have no idea how to accomplish any of that.
Quote: Or take the problem actually in the other dirrection. Would you trust
any implementation of a system that has orders of magnitude more
than ten thousand lines of specifications? How can you ensure these
specifications are consistent? How can you ensure that they're
effectively implemented?
It's hard, hard, hard. And folks who attempt systems of that level of
complexity fail with a distressingly high frequency. Even the
specification of a simple language like C is on the order of 10,000
lines. The C99 standard for the language - not counting the library,
is about 200 pages of not particularly easy text (and the library is a
similar amount), add to that the specification of the target processor
(just volume 2 of Intel's x86 reference, which is just the instruction
descriptions, and not any of the architectural stuff, is some 1600
pages).
Quote: Wouldn't you be more able to understand and check the specifications
if they were shorter, that is indeed, given the ultimate limits to
compression, if what they specified was less complex or of a more
limited scope?
Without doubt our ability to build big software systems has grown.
It's been pretty slow, but many systems can now be implemented with
many fewer LOCs than say 20 years ago. Much of this is from various
forms of reuse, much is from tools (SCM, automated testing, etc.), and
a lot is just plain hard work and money.
And reuse is really hard too. The SQL statement (select xxx from yyy
where zzz...) is clearly rather more expressive than the single ISAM
statement (read record from file where key is...) in a Cobol program,
but not by nearly the difference in the difficulty of implementing DB2
vs. implementing the ISAM package. And it's hard to count more than a
tiny fraction of most components in a system as effective “reuse” -
most reusable components are massively overengineered for any
particular task (for example, consider a 100,000 line program that
uses the a million line database engine to store the data, vs. a
200,000 line program that uses a 50,000 line ISAM engine to do the
same thing - the database engine is certainly not providing a million
lines of value to the first program). I'm not saying that's wrong -
just that almost any particular use of them uses only a small part of
their functionality.
In a lot of ways the number of LOCs a person or team of a particular
size can write has increased only modestly over the decades. It *has*
increased a bit (mainly because of improvements in the tools), but far
less than we'd like. This was first noticed when the first compilers
came out. It was pretty obvious that the typical programmer could
write x lines of code per day, and it didn't matter if it was
assembler or Cobol or Fortran. Obviously the situations where in
increased expressiveness of the HLL could be used made them a huge win
in programmer productivity. Unfortunately, excepting the big bang
from the first compilers, that increase in expressiveness has been
slow. Although over five decades, the compound increase has been
substantial. It hard to put a number on it, but it's probably been in
the ball park of a 100-fold increase compared to the guys writing
everything in assembler in 1959.
Yet we keep building bigger systems than we can do comfortably,
because we want them to do more. The new Boeing 787 is reported to
have 6.5 million lines of code in the various aircraft systems (not
counting things like the passenger entertainment systems). And I can
assure you that Boeing doesn't have any desire to take on a software
project that big, but rather it's what they needed to do to accomplish
their goals of building a next generation airliner ('course they're
still working on that).
Assuming the trend continues (and I think the evidence is to the
contrary) 50 years from now we'll have teams of half a dozen people
able to reliably tackle today’s million line projects (and
implementing them in a few tens of thousands of lines of code). Of
course then we'll be struggling with what today would be (impossible)
billion line projects.
Quote: If you accept that big systems must be decomposed into small programs,
you should probably also accept that big specifications are as bad as
big program(*), and that they should be short too, to be
understandable and effectively implementable. Then the degree of
automatization in the process of translating the specifications into
executable code is only a matter of advancement of the techniques,
while the size of the executable code is only (roughly) a function of
the number of metaprogramming levels used.
Good specifications are basically of similar difficulty to write as
the actual code. This is the downfall of many formal methods - a
specification complete enough that allows an automated checker of some
sort to verify that the software implements the specification is
basically as hard to write as the software. And as hard to verify
that it's correct.
Decomposition has been understood to be the basis for system
development since, oh, I don't know, the late fifties? The problem is
that decomposing a large and complex system is difficult to do without
fully understanding the whole system. And small errors at that stage
can turn into huge millstones that are extremely difficult to
correct. And then reality keeps rearing its ugly head and tends to
create unpleasant coupling between the neatly decomposed modules.
There have been new fads/methodologies/techniques/technologies/
whatever every few years for decades which have promised order-of-
magnitude gains in productivity. Other than compilers for HLLS, it
simply hasn’t happened. Many of the techniques have proven useful,
and have been added to everyone’s toolkit, but like Brooks said… No
silver bullets. |
|
|
| Back to top |
|
|
|
| Mok-Kong Shen... |
Posted: Wed Oct 28, 2009 12:14 pm |
|
|
|
Guest
|
Pascal J. Bourguignon wrote:
Quote: Tim Little wrote:
[snip]
If you accept that big systems must be decomposed into small programs,
you should probably also accept that big specifications are as bad as
big program(*), and that they should be short too, to be
understandable and effectively implementable. Then the degree of
automatization in the process of translating the specifications into
executable code is only a matter of advancement of the techniques,
while the size of the executable code is only (roughly) a function of
the number of metaprogramming levels used.
I barely know anything in this direction. But isn't it that UML
is supposed to be able to do stepwise refinement of design up
to the point of transition to executable codes? I saw long time
ago also a leaflet advertising a different commercial system
that claims to include even the code generation step.
M. K. Shen |
|
|
| Back to top |
|
|
|
| Mok-Kong Shen... |
Posted: Wed Oct 28, 2009 12:59 pm |
|
|
|
Guest
|
robertwessel2 at (no spam) yahoo.com wrote:
[snip]
Quote: Yet we keep building bigger systems than we can do comfortably,
because we want them to do more. The new Boeing 787 is reported to
have 6.5 million lines of code in the various aircraft systems (not
counting things like the passenger entertainment systems). And I can
assure you that Boeing doesn't have any desire to take on a software
project that big, but rather it's what they needed to do to accomplish
their goals of building a next generation airliner ('course they're
still working on that).
[snip]
Good specifications are basically of similar difficulty to write as
the actual code. This is the downfall of many formal methods - a
specification complete enough that allows an automated checker of some
sort to verify that the software implements the specification is
basically as hard to write as the software. And as hard to verify
that it's correct.
Verification seems to be an inherently unachievable goal. If one
uses a software to do verification, that software itself evidently
has to be verified. So I personally wonder how absolute correctness
could be achieved in practice at all. Anyway, a recent news said that
some 7000 lines of code of the kernel of an operating system has been
verified with a sophisticated verification system plus some 6 man years.
M. K. Shen |
|
|
| Back to top |
|
|
|
| Joshua Cranmer... |
Posted: Wed Oct 28, 2009 4:05 pm |
|
|
|
Guest
|
On 10/28/2009 12:32 AM, Pascal J. Bourguignon wrote:
Quote: Can you not specify all programming problem in less that a few
thousands of lines of specification?
Well, you can always write more detailed specifications, but I can
assure you that sales peoples will always be able to put the whole
specifications of your software on a 2-page booklet.
The PDF 1.6 specification was, if I recall correctly, approximately 1400
pages of text. My draft of C++0 weighs in at a whopping 1314 pages. The
JVM spec is smaller, at only 542 pages. The full x86_64 ISA comes in
volumes; even the ancient MC6800 ISA took 40 pages or so to explain.
Many specifications, to approach the degree of completeness required for
independent implementation, need to drag on for hundreds or thousands of
pages.
--
Beware of bugs in the above code; I have only proved it correct, not
tried it. -- Donald E. Knuth |
|
|
| Back to top |
|
|
|
| user923005... |
Posted: Wed Oct 28, 2009 7:34 pm |
|
|
|
Guest
|
On Oct 28, 10:54 am, c... at (no spam) tiac.net (Richard Harter) wrote:
Quote: On Wed, 28 Oct 2009 17:29:04 +0100, "Dmitry A. Kazakov"
mail... at (no spam) 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
dcor... at (no spam) connx.com> wrote:
On Oct 26, 3:22=A0pm, c... at (no spam) 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.
I made an analogy and never called it an argument.
Quote: It wasn't. He did go on to question whether a
hierarchy of programming languages had value.
I went on to say that we do the same thing with programming
langauges. For instance, in C, I will write simple functions to build
libraries. I will use libraries to build filter programs. I will
pipe filter programs in a chain to accomplish complicated tasks. This
is a metaphor that works pretty well. A lot of computer science seems
to me to be largely mythology. What I mean by that is (for instance)
the notion that OO programming will allow less expensive complicated
systems. It is possible to write complicated systems in OO languages
for a reasonable cost. But empirical studies have shown that the cost
is not lower than writing the same systems in a simple language like C
[1]. So now people are trying other paradigms like Aspect Oriented
programming. I am not saying that alternative paradigms are bad. In
fact, I program almost exclusively in C++ and love the OO metaphor. I
am just saying that a change in paradigm doesn't usually change much.
For instance, in C++, by creating objects we do NOT reduce
complexity. We only hide it.
Quote: However his
subsequent paragraph had no significant connection to his
observation.
Perhaps the connection was only clear to me.
[1] "Productivity Analysis of Object-Oriented Software Developed in a
Commercial Environment" Thomas E. Potok, see: http://portal.acm.org/citation.cfm?id=326103 |
|
|
| Back to top |
|
|
|
| Pascal J. Bourguignon... |
Posted: Wed Oct 28, 2009 7:38 pm |
|
|
|
Guest
|
Mok-Kong Shen <mok-kong.shen at (no spam) t-online.de> writes:
Quote: robertwessel2 at (no spam) yahoo.com wrote:
[snip]
Yet we keep building bigger systems than we can do comfortably,
because we want them to do more. The new Boeing 787 is reported to
have 6.5 million lines of code in the various aircraft systems (not
counting things like the passenger entertainment systems). And I can
assure you that Boeing doesn't have any desire to take on a software
project that big, but rather it's what they needed to do to accomplish
their goals of building a next generation airliner ('course they're
still working on that).
[snip]
Good specifications are basically of similar difficulty to write as
the actual code. This is the downfall of many formal methods - a
specification complete enough that allows an automated checker of some
sort to verify that the software implements the specification is
basically as hard to write as the software. And as hard to verify
that it's correct.
Verification seems to be an inherently unachievable goal. If one
uses a software to do verification, that software itself evidently
has to be verified.
Happily, the verification software may be simplier than the verified
software. Therefore it should be easier to verify. Possibly by a
second order verification software that is itself even simplier to
verify. And so on, until you can have it verified it by hand by as
many human you need to reach the required degree of confidence.
Quote: So I personally wonder how absolute correctness
could be achieved in practice at all. Anyway, a recent news said that
some 7000 lines of code of the kernel of an operating system has been
verified with a sophisticated verification system plus some 6 man years.
M. K. Shen
--
__Pascal Bourguignon__ |
|
|
| Back to top |
|
|
|
| Pascal J. Bourguignon... |
Posted: Wed Oct 28, 2009 7:43 pm |
|
|
|
Guest
|
Mok-Kong Shen <mok-kong.shen at (no spam) t-online.de> writes:
Quote: Pascal J. Bourguignon wrote:
Tim Little wrote:
[snip]
If you accept that big systems must be decomposed into small programs,
you should probably also accept that big specifications are as bad as
big program(*), and that they should be short too, to be
understandable and effectively implementable. Then the degree of
automatization in the process of translating the specifications into
executable code is only a matter of advancement of the techniques,
while the size of the executable code is only (roughly) a function of
the number of metaprogramming levels used.
I barely know anything in this direction. But isn't it that UML
is supposed to be able to do stepwise refinement of design up
to the point of transition to executable codes? I saw long time
ago also a leaflet advertising a different commercial system
that claims to include even the code generation step.
All the techniques developed so far are only one step techniques.
Useless.
What we really need is metaprogramming. The only usable
metaprogramming solution I know is Lisp and its macros. With
metaprogramming, you can implement as many steps you need to keep the
complexity in check.
--
__Pascal Bourguignon__ |
|
|
| Back to top |
|
|
|
| Pascal J. Bourguignon... |
Posted: Wed Oct 28, 2009 7:44 pm |
|
|
|
Guest
|
Joshua Cranmer <Pidgeot18 at (no spam) verizon.invalid> writes:
Quote: On 10/28/2009 12:32 AM, Pascal J. Bourguignon wrote:
Can you not specify all programming problem in less that a few
thousands of lines of specification?
Well, you can always write more detailed specifications, but I can
assure you that sales peoples will always be able to put the whole
specifications of your software on a 2-page booklet.
The PDF 1.6 specification was, if I recall correctly, approximately
1400 pages of text. My draft of C++0 weighs in at a whopping 1314
pages. The JVM spec is smaller, at only 542 pages. The full x86_64 ISA
comes in volumes; even the ancient MC6800 ISA took 40 pages or so to
explain.
Many specifications, to approach the degree of completeness required
for independent implementation, need to drag on for hundreds or
thousands of pages.
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.
--
__Pascal Bourguignon__ |
|
|
| Back to top |
|
|
|
| Richard Harter... |
Posted: Wed Oct 28, 2009 8:08 pm |
|
|
|
Guest
|
On Mon, 26 Oct 2009 17:04:36 -0700 (PDT), user923005
<dcorbit at (no spam) connx.com> wrote:
Quote: On Oct 26, 3:22=A0pm, c... at (no spam) 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.
Similarly human brains are made out of atoms.
Nothing wrong with the argument except that it is not relevant.
As the Jedi Master said, These are not the turtles you want.
Richard Harter, cri at (no spam) tiac.net
http://home.tiac.net/~cri, http://www.varinoma.com
Kafka wasn't an author;
Kafka was a prophet! |
|
|
| Back to top |
|
|
|
| Dmitry A. Kazakov... |
Posted: Wed Oct 28, 2009 8:29 pm |
|
|
|
Guest
|
On Wed, 28 Oct 2009 16:08:06 GMT, Richard Harter wrote:
Quote: On Mon, 26 Oct 2009 17:04:36 -0700 (PDT), user923005
dcorbit at (no spam) connx.com> wrote:
On Oct 26, 3:22=A0pm, c... at (no spam) 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.
Quote: 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.
Quote: 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. As we know it adds nothing to the power, rather subtracts,
since many "higher level" language are not Turing-complete. One can argue
that they provide a better mapping to the domain, but the domain is
actually always in the brain of a human programmer. So it looks rather so
that we cannot adequately communicate to humans. Even considering
multi-paradigm/language approach as a kind of patchwork to cover this
nakedness. It is still not convincing why the patchwork should lay patches
over patches and in so many layers. It won't hold better, it won't make you
warmer...
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de |
|
|
| Back to top |
|
|
|
| Mok-Kong Shen... |
Posted: Wed Oct 28, 2009 8:45 pm |
|
|
|
Guest
|
Pascal J. Bourguignon wrote:
Quote: Mok-Kong Shen writes:
Verification seems to be an inherently unachievable goal. If one
uses a software to do verification, that software itself evidently
has to be verified.
Happily, the verification software may be simplier than the verified
software. Therefore it should be easier to verify. Possibly by a
second order verification software that is itself even simplier to
verify. And so on, until you can have it verified it by hand by as
many human you need to reach the required degree of confidence.
Sure, this is the very philosophy underlying program verifications.
But how "sure" can a human ensure that everything he designs/constructs
is correct? Certain industries, e.g. aerospace manufacturers, chip
manufacturers etc., that critically depend on the correctness of
their design software, have since long invested much resources in
verification. Yet I believe Murphy's Law remains true and human
errors can never be entirely eradicated but only (hopefully) reduced
to tolerable levels. (Or else why disasters did occur e.g. in
a few very carefully designed space missions?)
M. K. Shen |
|
|
| Back to top |
|
|
|
| robertwessel2 at (no spam) yahoo.com... |
Posted: Wed Oct 28, 2009 8:52 pm |
|
|
|
Guest
|
On Oct 28, 10:38 am, p... at (no spam) informatimago.com (Pascal J. Bourguignon)
wrote:
Quote: Happily, the verification software may be simplier than the verified
software. Therefore it should be easier to verify. Possibly by a
second order verification software that is itself even simplier to
verify. And so on, until you can have it verified it by hand by as
many human you need to reach the required degree of confidence.
The main problem isn't the verifier (although verifying it *is* an
issue), but the specification that you're going to verify against.
That won't be all that much simpler that the program to be verified,
and somehow needs to be verified itself.
Not to say there aren't occasional ways around that. An interesting
effort I read a paper on about a dozen years ago (and then never saw a
follow up), was with someone trying an alternative approach to
verifying the correctness of a compiler. As opposed to attempting to
prove that the compiler was correct, and would always produce correct
code, they attempted (and appeared to be making progress) to prove
that any particular output from the compiler met the "specification"
of the input (the source code being a sort of formal specification, of
course). IOW, their scheme was to run the verifier every time the
compiler ran, and complain if the output was flawed. |
|
|
| Back to top |
|
|
|
| Mok-Kong Shen... |
Posted: Wed Oct 28, 2009 8:52 pm |
|
|
|
Guest
|
Pascal J. Bourguignon wrote:
[snip]
Quote: What we really need is metaprogramming. The only usable
metaprogramming solution I know is Lisp and its macros. With
metaprogramming, you can implement as many steps you need to keep the
complexity in check.
I don't like to enter into debates about programming languages,
which tend normally to ahve a flavour akin to religious debates.
For fans of C++ (I am not one of these) would very likely disagree
with you.
M. K. Shen |
|
|
| Back to top |
|
|
|
| Richard Harter... |
Posted: Wed Oct 28, 2009 9:54 pm |
|
|
|
Guest
|
On Wed, 28 Oct 2009 17:29:04 +0100, "Dmitry A. Kazakov"
<mailbox at (no spam) dmitry-kazakov.de> wrote:
Quote: On Wed, 28 Oct 2009 16:08:06 GMT, Richard Harter wrote:
On Mon, 26 Oct 2009 17:04:36 -0700 (PDT), user923005
dcorbit at (no spam) connx.com> wrote:
On Oct 26, 3:22=A0pm, c... at (no spam) 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.
Quote:
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 at (no spam) tiac.net
http://home.tiac.net/~cri, http://www.varinoma.com
Kafka wasn't an author;
Kafka was a prophet! |
|
|
| Back to top |
|
|
|
| Richard Harter... |
Posted: Wed Oct 28, 2009 10:01 pm |
|
|
|
Guest
|
On Tue, 27 Oct 2009 10:54:34 -0700 (PDT), gremnebulin
<peterdjones at (no spam) yahoo.com> wrote:
Quote: On 27 Oct, 00:04, user923005 <dcor... at (no spam) connx.com> wrote:
On Oct 26, 3:22 pm, c... at (no spam) 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 at (no spam) tiac.net
http://home.tiac.net/~cri, http://www.varinoma.com
Kafka wasn't an author;
Kafka was a prophet! |
|
|
| Back to top |
|
|
|
|
|
All times are GMT
The time now is Wed Dec 09, 2009 6:41 pm
|
|