Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > Xah's Edu Corner: The Concepts and Confusions of Pre-fix, In-fix, Post-fix and Fully Functional Notations

Reply
Thread Tools

Xah's Edu Corner: The Concepts and Confusions of Pre-fix, In-fix, Post-fix and Fully Functional Notations

 
 
PofN
Guest
Posts: n/a
 
      03-17-2006
Dinko Tenev wrote:
> If only someone could persuade this guy to stay away from CS...


I still hope that at some point in time he will manage to tender his
nomination for the darvin award. You can't rationalize with that troll,
because there is nothing between his ears capable of catching a clue.

 
Reply With Quote
 
 
 
 
Mike Schilling
Guest
Posts: n/a
 
      03-17-2006

"Roedy Green" <(E-Mail Removed) > wrote in
message news:(E-Mail Removed)...
> On 17 Mar 2006 00:58:55 -0800, "Fuzzyman" <(E-Mail Removed)> wrote,
> quoted or indirectly quoted someone who said :
>
>>Hmmm... it displays fine via google groups. Maybe it's the reader which
>>is 'non-compliant' ?

> I am using Agent. You configure your database with an encoding,
> which is by default the platform encoding, not UTF-8. I have just
> flipped it over to UTF-8. We'll see if that makes Xah's future UTF-8
> messages more readable.


Trust me, it won't help a bit.


 
Reply With Quote
 
 
 
 
Tim Roberts
Guest
Posts: n/a
 
      03-19-2006
Roedy Green <(E-Mail Removed) > wrote:

>On 17 Mar 2006 00:58:55 -0800, "Fuzzyman" <(E-Mail Removed)> wrote,
>quoted or indirectly quoted someone who said :
>
>>Hmmm... it displays fine via google groups. Maybe it's the reader which
>>is 'non-compliant' ?

>
>I am using Agent. You configure your database with an encoding,
>which is by default the platform encoding, not UTF-8. I have just
>flipped it over to UTF-8. We'll see if that makes Xah's future UTF-8
>messages more readable.


Try pressing Ctrl-R when his message is visible. I'm also using Agent, and
that toggles his extended characters from quoted-printable to visible for
me.
--
- Tim Roberts, http://www.velocityreviews.com/forums/(E-Mail Removed)
Providenza & Boekelheide, Inc.
 
Reply With Quote
 
Roedy Green
Guest
Posts: n/a
 
      03-19-2006
On Sun, 19 Mar 2006 02:08:11 GMT, Tim Roberts <(E-Mail Removed)> wrote,
quoted or indirectly quoted someone who said :

>Try pressing Ctrl-R when his message is visible. I'm also using Agent, and
>that toggles his extended characters from quoted-printable to visible for
>me.


that swaps fixed and variable pitch fonts. I gather you have one of
your fonts configured without many chars in it.
--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
 
Reply With Quote
 
Xah Lee
Guest
Posts: n/a
 
      03-19-2006
What is Expressiveness in a Computer Language

Xah Lee, 200502, 200603.

In languages human or computer, there's a notion of expressiveness.

English for example, is very expressive in manifestation, witness all
the poetry and implications and allusions and connotations and
dictions. There are a myriad ways to say one thing, fuzzy and warm and
all. But when we look at what things it can say, its power of
expression with respect to meaning, or its efficiency or precision, we
find natural languages incapable.

These can be seen thru several means. A sure way is thru logic,
linguistics, and or what's called Philosophy of Languages. One can also
glean directly the incapacity and inadequacy of natural languages by
studying the artificial language lojban, where one realizes, not only
are natural languages incapable in precision and lacking in efficiency,
but simply a huge number of things are near impossible to express thru
them.

One thing commonly misunderstood in computing industry is the notion of
expressiveness. If a language has a vocabulary of (smile, laugh, grin,
giggle, chuckle, guffaw, cackle), then that language will not be as
expressive, as a language with just (severe, slight, laugh, cry). The
former is “expressive” in terms of nuance, where the latteris
expressive with respect to meaning.

Similarly, in computer languages, expressiveness is significant with
respect to semantics, not syntactical variation.

These two contrasting ideas can be easily seen thru Perl versus Python
languages, and as one specific example of their text pattern matching
capabilities.

Perl is a language of syntactical variegations. Lisp on the other hand,
is a example of austere syntax uniformity, yet its efficiency and power
in expression, with respect to semantics, showcases Perl's poverty in
specification.

Example: String Patterns in Regex

In Perl, the facilities for finding and replacing a text pattern is
this construct “$myText =~ s/myPattern/replStr/”.

In Python, it is “re.sub( myPattern, replStr, myText , myCount)”,
where the replacement string repStr can be a function, and a max number
of replacement myCount can be specified. If there is a match, and if
replStr is given a function myFunc instead, then a special regex match
object is feed to myFunc and it can return different strings based on
how the pattern is matched.

This is a instance where the language is more expressive. In Python's
regex facilities, there are several other flexibilities not present in
Perl. For example, its regex pattern can be frozen as a compiled object
and moved about. And, when a there is a match, Python returns a special
object that contains all information about the regex, such as the
original pattern, the number of matches, the set of matched strings and
so on, and this object can be passed around, or have information
extracted. These facilities are absent in Perl.

In this case, the flexibilities and facilities of Python's texual
patterns matching's capabilities a instance of superior expressiveness
to Perl's.

For more about Python's Regex machinery, see the Re-written Python
Regex Documentation at:
http://xahlee.org/python_re-write/lib/module-re.html

Example: Range, and Computation with Fractions

In Perl, there's a range construct “(a..b)” that returns a list of
numbers from a to b. However, this construct cannot generate a list
with regular intervals such as (1, 3, 5, 7, 9). Nor would it generate
decreasing lists such as (4, 3, 2, 1) when a > b.

In Python, its range function range(a,b,c) returns a range of numbers
from a to b with steps c. For example, range(3,-5, -2) returns [3, 2,
1, -1, -3]. The arguments can be negative, however, they all must be
integers.

In the Mathematica language, there's also a range function
Range[a,b,c]. Here, the arguments can be either real numbers or exact
fractions. If one of the input argument is a decimal, then the
computation is done as machine precision approximations and the result
list's elements are also in decimals. If all inputs are in fractions
(including integers), returned list's elements will also be exact
fractions.

In Mathematica, the language support fractions wherever a number is
used, and if all numbers are specified as fractions (or integers) in
the code, the result of the computation is also in exact fractions,
with it automatically in a reduced fraction form where common factors
in the numerator and denominator are taken out. (Fractions in
Mathematica is written as a/b with a and b integers.)

This section compares the expressiveness of a particular list
generating facility in 3 languages. But far more importantly, being
able to compute with fractions naturally is a expressibility unheard of
in non-commercial languages.
Example: Rich, Systematic Parameters for Functions

In many languages, there is a function called “map”. Usually it
takes the form map(f, myList) and returns a list where f is applied to
every element in myList. For example, here is a example from Python and
Perl and lisp:

# python
map( lambda x**2 , [1,2,3])

# perl
map {$_**2} (1,2,3);

; lisp
(map (lambda (x) (expt x 2)) (list 1 2 3))

In the Mathematica language, its map function takes a optional third
argument, which specifies the level of the list to map to. In the
following example, f is mapped to the leafs of the list {1,2,{3,4}}.

In[1]:=
Map[Function[#^2],{1,2,{3,4}}, {-1}]

Out[2]=
{1,4,{9,16}}

The expressive power of a language does not solely lies with its
functions taking more options. Such is only a small aspect of
expressibility. However, if a language's functions are designed such
that they provide important, useful features in a consistent scheme,
certainly makes the language much more expressive.

In the functional language Mathematica, there is a host of functions
that manipulate lists, with options that work on the list's structural
level or syntactical pattern. In terms of expressiveness, this is a
superior example.

Example: Symbolic Computation

Lisp differs from most imperative programing languages in that it deals
with symbols. What does this mean?

In imperative languages, a value can be assigned a name, and this name
is called a variable. For example, “x=3”, and whenever this
“name” is encountered, it is evaluated to its value. It does not
make any sense, to have variables without a assigned value. That is,
the “x” is not useful and cannot be used until you assign something
to it.

However, in lisp, there is a concept of Symbols. As a way of
explanation, a “variable” needs not to be something assigned of a
value. Symbols can stand by themselves in the language. And, when a
symbol is assigned a value, the symbol can retain it's symbolic form
without becoming a value.

This means that in lisp, “variables” can be manipulated in its
un-evaluated state. The situation is like the need for the
“evaluate” command in many languages, where the programer can built
code as strings and do “evaluate(myCodeString)” to achieve
meta-programing.

For example, in imperatives languages once you defined “x=3”, you
cannot manipulate the variable “x” because it gets evaluated to 3
right away. If you want, you have to build a string “"x"” and
manipulate this string, then finally use something like
“evaluate(myCodeString)” to achieve the effect. If the imperative
language does provide a “evaluate()” function, its use breaks down
quickly because the language is not designed for doing it. It's
extremely slow, and impossible to debug, because there lacks facilities
to deal with such meta programing.

In lisp, variable's unevaluated form are always available. One just put
a apostrophe ' in front of it. In “x=3”, the x is a variable in the
contex of the code logic, x is a name of the variable in the context of
meaning analysis, and x is a symbol in the context of the programing
language. This Symbols concept is foreign to imperative languages. It
is also why lisp are known as symbolic languages. Such makes
meta-programing possible.

The power of symbolic processing comes when, for example, when you take
user input as code, or need to manipulate math formulas, or writing
programs that manipulates the source code, or generate programs on the
fly. These are often needed in advanced programing called Artificial
Intelligence. This is also the reason, why lisp's “macro”
facilities is a powerful feature unlike any so-called
“pre-processors” or “templates” in imperative languages that
works by processing strings.

Mathematica for example, is sometimes known as a Computer Algebra
System. It too, works with symbols in the language. They can be
manipulated, transformed, assigned a value, evaluated, hold unevaluated
etc.

One way for a imperative programer to understand symbols, is to think
of computing with strings, such as which Perl and Python are well known
for. With strings, one can join two strings, select sub strings, use
string pattern (regex) to transform strings, split a string into a list
for more powerful manipulation, and use “eval” to make the string
alive. Now imagine all these strings needs not to be strings but as
symbols in the language, where the entire language works in them and
with them, not just string functions. That is symbolic computation.

Here we see, a expressibility unseen in non-lisp family of languages.
Expressiveness in Syntax Variability

See: The Concepts and Confusions of Pre-fix, In-fix, Post-fix and Fully
Functional Notations, at:
http://xahlee.org/UnixResource_dir/writ/notations.html

Example: Classes in OOP (in Java, JavaScript, Python)

Coming soon...

----
This post is archived at:
http://xahlee.org/perl-python/what_i...esiveness.html

Xah
(E-Mail Removed)
http://xahlee.org/

 
Reply With Quote
 
Dag Sunde
Guest
Posts: n/a
 
      03-19-2006
"Xah Lee" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) oups.com...
> What is Expressiveness in a Computer Language

<snipped_inane_chatter />
PLONK.

--
Dag.


 
Reply With Quote
 
John Bokma
Guest
Posts: n/a
 
      03-19-2006
"Dag Sunde" <(E-Mail Removed)> wrote:

> "Xah Lee" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed) oups.com...
>> What is Expressiveness in a Computer Language

> <snipped_inane_chatter />
> PLONK.


Don't post PLONK messages you idiot. PLONK in silence instead of adding to
a lot of garbage in serveral groups.

--
John Bokma Freelance software developer
&
Experienced Perl programmer: http://castleamber.com/
 
Reply With Quote
 
Luc The Perverse
Guest
Posts: n/a
 
      03-19-2006
"John Bokma" <(E-Mail Removed)> wrote in message
news:Xns978B9AB65659Ecastleamber@130.133.1.4...
> "Dag Sunde" <(E-Mail Removed)> wrote:
>
>> "Xah Lee" <(E-Mail Removed)> wrote in message
>> news:(E-Mail Removed) oups.com...
>>> What is Expressiveness in a Computer Language

>> <snipped_inane_chatter />
>> PLONK.

>
> Don't post PLONK messages you idiot. PLONK in silence instead of adding to
> a lot of garbage in serveral groups.


Sometimes you need to make a statement about a local troll.

Though I agree - a massively cross posted thread with no one familiar
probably doesn't qualify

--
LTP




 
Reply With Quote
 
Roedy Green
Guest
Posts: n/a
 
      03-19-2006
On 19 Mar 2006 13:03:18 -0800, "Xah Lee" <(E-Mail Removed)> wrote,
quoted or indirectly quoted someone who said :

>One thing commonly misunderstood in computing industry is the notion of
>expressiveness. If a language has a vocabulary of (smile, laugh, grin,
>giggle, chuckle, guffaw, cackle),


Expressive for a natural language refers to the language's ability to
generate precisely generate moods, and move people emotionally in a
minimum of words.

Expressiveness in computer languages refers to the language's ability
to persuade the computer to produce some result in a minimum of words.

Another measure might be how smoothly elements of the language map
onto elements of the problem domain.
--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
 
Reply With Quote
 
Andy Dingley
Guest
Posts: n/a
 
      03-19-2006
On Fri, 17 Mar 2006 11:22:06 +0100, Timo Stamm <(E-Mail Removed)>
wrote:

>Xah's posting was properly encoded and will display fine in every decent
>newsreader.


Well mine killfiled it straight off, which I think is entirely proper
rendering for one of Xah Lee's kookery lessons.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
The Concepts and Confusions of Prefix, Infix, Postfix and Fully Functional Notations Xah Lee Perl Misc 32 10-11-2011 09:35 PM
The Concepts and Confusions of Prefix, Infix, Postfix and Fully Functional Notations Xah Lee Java 30 06-16-2007 05:57 PM
The Concepts and Confusions of Prefix, Infix, Postfix and Fully Functional Notations Xah Lee Python 30 06-16-2007 05:57 PM
Xah's Edu Corner: The Concepts and Confusions of Pre-fix, In-fix, Post-fix and Fully Functional Notations Xah Lee Python 23 03-21-2006 07:02 AM
Xah's Edu Corner: The Concepts and Confusions of Pre-fix, In-fix, Post-fix and Fully Functional Notations Xah Lee Java 22 03-21-2006 07:02 AM



Advertisments