Best Language
[1/4] from: reichart::prolific::com at: 11-Dec-2002 10:05
A friend of mine posted this in a tech (but not necessarily programming) ML
I belong to:
If I might drag y'all into my dark alley for a moment...
Here's a question I'm presently pondering in my pursuit of
the perfect programming language. I'm curious what answers y'all might
have, and not just in "programming language" terms but in whatever terms
suit your way of looking at it (i.e., no programming background required!) :
What representational system, besides English, is good at expressing
the following three (characteristic) statements, and how would these
statements be represented in that system?
1) L is a list of Foobles.
2) L is a list of Glorps of Foobles. (Assume G(f) maps Foobles to
Glorps)
3) L is a list of Foobles such that each Fooble is H() of
the one before it. (Where H(f) is a function mapping
Foobles to Foobles.)
Perhaps I should rephrase the question slightly -- while I am asking
for a concrete representation, I am specifically after one that mirrors
however it is that you represent the above statements in your head (i.e.,
how you "understand" them as opposed to just seeing a string of words). So,
bonus points for representations that feel "natural". But all answers
appreciated.
And to programmers: note that the above are more type or structual
definitions than mappings. A function which *creates* the L in each case is
not addressing the question -- I want a representation which
*characterizes* the L, as the English statements do.
I could say more but would rather not lead the question. Thoughts,
anyone?
Be useful.
Reichart...
[Reichart--Prolific--com]
www.Prolific.com "The crazy place I work."
www.SereneScreen.com "A cool thing we make."
www.ProGadget.com "Something brewing in the kitchen."
www.SafeWorlds.com" "The Alternative Messaging Environment."
[2/4] from: joel:neely:fedex at: 11-Dec-2002 13:54
Hi, Reichart,
Interesting questions!
Reichart wrote:
> What representational system, besides English, is good at expressing
> the following three (characteristic) statements, and how would these
> statements be represented in that system?
>
> 1) L is a list of Foobles.
>
One of the following
L :: [Fooble]
or
L = {f | f (- Foobles}
(where the "(-" is really a lowercase epsilon!)
> 2) L is a list of Glorps of Foobles.
> (Assume G(f) maps Foobles to Glorps)
>
This one is a little harder, because there are two different issues,
in my mental model:
L :: [Glorp]
or
L = {g | g (- Glorps}
express the idea that L is a list of Glorps (without worrying about
where they came from). If I *need* to worry about the Foobles used
to "manufacture" the specific Glorps in question, I'd probably write
L = {G(f) | f (- Foobles}
> 3) L is a list of Foobles such that each Fooble is H() of
> the one before it. (Where H(f) is a function mapping
> Foobles to Foobles.)
>
As the construction becomes more complex, I tend to fall back on more
and more formal notation. If I want to focus on the pairwise element
relationships, I might write
(A i,j : 0 < i < N : L.i = H.L.(i-1))
or, if I think for a few seconds about the implications of the above,
L.i = H^i.f0 | f0 (- Foobles
or, if I just want a high-level description,
L contains the iterates of H over f0
depending on the need of the moment.
-jn-
--
----------------------------------------------------------------------
Joel Neely joelDOTneelyATfedexDOTcom 901-263-4446
[3/4] from: g:santilli:tiscalinet:it at: 11-Dec-2002 21:19
Hi Reichart,
On Wednesday, December 11, 2002, 7:05:15 PM, you wrote:
R> What representational system, besides English, is good at expressing
R> the following three (characteristic) statements, and how would these
R> statements be represented in that system?
Mathematics.
I = {1, ..., length(L)}
1) For each i in I L(i) in Foobles
2) For each i in I exists f in Foobles so that L(i) = G(f)
3) length(L) > 1 and for each i in {2, ..., length(L)} L(i) = H(L(i - 1))
(Not too far away from English, but I think a good notation should
not be too far from English anyway.)
Regards,
Gabriele.
--
Gabriele Santilli <[g--santilli--tiscalinet--it]> -- REBOL Programmer
Amigan -- AGI L'Aquila -- REB: http://web.tiscali.it/rebol/index.r
[4/4] from: brett:codeconscious at: 12-Dec-2002 10:48
I am ignoring "..the pursuit of the perfect programming language." and
ignoring the "What representational system, besides English, is good..."
bits. Just answering the "...however it is that you represent the above
statements in your head...", ie a representation that makes sense to me (no
claim for making sense to others). No it is not REBOL, or maybe it is but
that is not the point, or maybe it is.
1)
L: [Fooble1 Fooble2 ... FoobleN]
2)
L: [ G Fooble1
G Fooble2
...
G FoobleN
]
3)
L: [Fooble1 Fooble2 ... FoobleN]
Fooble2: H Fooble1
Fooble3: H Fooble2
...
FoobleN: H FoobleN-1
Using the : notation was something I was doing before REBOL came along.
Though, prior to REBOL I would have used "(" and ")" instead of "[" and
]
- and I might have drawn a little arrow with an H above it as in:
H
Fooble1 ----> Fooble2
I don't really have a specific representation I always use, though habit
usually dictates what it will be. I use various representations, it depends
on the problem as to what I will use and of course reflects my specific
experience. I most often make representations of problems using marks on A3
bits of paper. They will often contain some very visual elements so that I
can explore relationships and ideas in a much more free way than just
textual notations.
Regards,
Brett.