Functional paradigm taking over

Not that I’ve been following this thread, but I saw the comment at the
end regarding Excel as a programming language and thought I’d supply an
example.

Not that it’s terribly practical, it’s a fascinating use of Excel as a
tool to me:

http://www.gamasutra.com/view/feature/3563/microsoft_excel_revolutionary_3d_.php

On Thu, Apr 7, 2011 at 10:51 AM, Everett L Williams II
[email protected]wrote:

Excel is being denigrated here, and that is foolish.

I haven’t seen it denigrated at all, I’m honestly surprised that people
have
been as accommodating as they have.

Many people use spreadsheets all day long to accomplish their work. They
are good with spreadsheets and comfortable with them. What is being said
here is that they should throw away all that goodness and go to Ruby or
something like Ruby, because it is better for some classes of problems.

Certainly no one said what you just paraphrased, all anyone has done is
to
reject the claims that Excel is a programming language (named S#) that
should be used for everything (including web applications), that we
don’t
need real programming languages and that recursion is always harder and
inferior to “a more linearly coded function”.

But, we’ve also said that you are free to show us how Excel could be a
programming language – I even went and tried to find an example, and
offered several suggestions of programs I had written this semester that
you
could duplicate in Excel to prove your point.

On Fri, Apr 08, 2011 at 10:26:44AM +0900, Alex S. wrote:

Not that I’ve been following this thread, but I saw the comment at the
end regarding Excel as a programming language and thought I’d supply an
example.

Not that it’s terribly practical, it’s a fascinating use of Excel as a
tool to me:

http://www.gamasutra.com/view/feature/3563/microsoft_excel_revolutionary_3d_.php

I agree it’s a fascinating use of Excel, as a toy test of how much the
application can be abused. I don’t think that qualifies Excel as a
language of any kind, though. It is still an end-user spreadsheet
application that has a macro language. The macro language qualifies as
a
(somewhat limited) programming language, though.

Chad P. wrote

you found a 4GL very useful within its narrow domain of
intended applicability

Chad , you have a rather prejudiced view of languages that don’t look
like what you’re used to.

For a few decades of my career, 4GLs paid the mortgage for me. I did a
North Sea Oil system in ADS/On-line. Focus (with a touch of Rexx) ran
the second biggest direct insurer in the UK for a while. It was the most
efficient and fast-moving corporate IT department I’ve ever worked in.
Focus provided ETL and data warehousing for the biggest card aquirer in
the UK - hundreds of million of transactions per month. It managed loans
of hundreds of millions to the biggest corporations in the World. What
have your precious ‘proper’ programming languages done?

I cut my teeth in IT before the advent of the Object-oriented Era.
Everyone was excited when OO arrived. However what I often see from
people taught OO from the cradle is a kind of religiousity, arrogance,
intolerance - this is is the only true path to righteousness; every
thing else should be burned. It’s not really as black and white as that.
You need to live-and-let-live.

Your argument stinks. You’re saying that Excel is a programming
language, because you made money using similar tools.

My sister is a dentist. She makes lots of money. Therefore, by
your logic, dental surgery constitutes a programming language. WTF?!

Just because your particular career didn’t involve much proper
programming doesn’t change the fact that teeth aren’t algorithms, Excel
is a spreadsheet application, that many careers actually do!

I think the guys who wrote Excel program for a living too.

It’s as if you’re trying to convince people on this list that they would
be better giving up their jobs, giving up their study and going to work
in an insurance broking making excel spreadsheets.

Well thanks for the offer of employment advice, but it’s not what I
want to do.

Thanks
Johnny

On Fri, Apr 08, 2011 at 12:14:35PM +0900, Mike S. wrote:

Chad , you have a rather prejudiced view of languages that don’t look
like what you’re used to.

[snip a bunch of irrelevancies]

It’s clear you are so unwilling to accept the idea that a language is a
language, and a not-language is not a language, that nothing I say will
ever find an ear willing to listen. You completely overlook the fact
that my statements are consistent with the specific purposes for which
4GLs and end-user spreadsheet applications were designed, and assume
that
saying “it’s good at what it was designed to do, and less so at other
stuff” is directly translatable to “these tools suck in every way,
probably because you use them”.

I’m not interested in listening to you twist my words that way any
longer, nor in reading any more of your commentary about how you’ve done
lots of stuff for a long time and are thus superior in all ways to me
who
dares to notice that special-purpose 4GLs and end-user spreadsheets are
not general purpose programming languages.

*Mike,

As attractive a tool as Ruby is, with the attitudes being evince here, I
think that I will take my playtoys elsewhere. Ruby has some of the best
features of a whole group of current languages, but it is not well
standardized and it does not offer the level of leverage offered by even
the fairly mediocre 4GL’s. Ruby is just a free version of some things
that would otherwise cost money, and it has not even achieved the level
of acceptance of some of the other free tools. Unfortunately, the best
of languages that I have seen out there are commercial and almost or
completely proprietary. That would be Eiffel and MainSAIL. Both are far
more powerful than Ruby, and both offer better diagnostic facilities as
well as a far tighter development cycle. I think that until I have some
project that just cries out for some facility only available in Ruby
(and I cannot imagine what that might be), I will drop out of this
forum. You might consider just how important Ruby is to you with this
set of attitudes being displayed.

Everett L.(Rett) Williams II
*

Everett

Generally speaking it’s a calm, friendly, rational community, so don’t
leave Ruby behind just because of tbis thread.

I’ve just learnt that with strangers - don’t get into discussions about
sex, religion, politics or programming languages :slight_smile:

On Mon, Apr 4, 2011 at 8:07 PM, Chad P. [email protected] wrote:

That makes sense – and could be another fun evening with a beer.
It was IIRC :wink:
http://rubyquiz.strd6.com/quizzes/184-befunge

Cheers
Robert

On Fri, Apr 8, 2011 at 4:04 PM, Mike S. [email protected]
wrote:

I’ve just learnt that with strangers - don’t get into discussions about
sex, religion, politics or programming languages :slight_smile:

Or spreadsheets ;)~

One more thing the SQL programming language as it currently exists was
in
fact designed to allow people who were not programmers by trade or
training
to be able to comprehend the system. (Look on Wikipedia you can find a
PDF
of the original proposal.) It is the reason that the syntax took the
form
that it did.

Aren’t all programs languages as the program describes a particular
problem
or set of problems? It seems that saying that a program is not a
language
is a bit of an artificial distinction. Mathematics is a language. Ruby
or
C++ are languages that can be used to construct entirely new languages.
Even pictures can form the basis of language. Every program that
exists
possesses the vocabulary to deal with a given problem domain, so why
bother
trying to claim that something like Excel does not have these qualities?
Aside from adherence to useless jargon of course.

As for issues like terseness, it isn’t really a virtue at all. That you
can
say or do more with less is not very important if people have a distinct
bit
of trouble understanding what is being communicated. The goal should be
clarity, not trying to condense everything into the fewest possible
symbols,
ultimately to say that you could.

On Tue, Apr 12, 2011 at 8:22 AM, Kevin [email protected] wrote:

One more thing the SQL programming language as it currently exists was in
fact designed to allow people who were not programmers by trade or training
to be able to comprehend the system. (Look on Wikipedia you can find a PDF
of the original proposal.) It is the reason that the syntax took the form
that it did.

Just to refresh everyone’s memory what an INSERT statement looks like:

INSERT INTO table (column1, column2) VALUES (value1, value2);

Compare to UPDATE:

UPDATE table SET column1 = data WHERE column1 = NULL;

Contrast with SELECT:

SELECT column1, column2 FROM Table WHERE column1 = column2;

Not to put too fine a point to it: Well meant isn’t well done.


Phillip G.

Though the folk I have met,
(Ah, how soon!) they forget
When I’ve moved on to some other place,
There may be one or two,
When I’ve played and passed through,
Who’ll remember my song or my face.

On Tue, Apr 12, 2011 at 8:18 AM, Kevin [email protected] wrote:

Aren’t all programs languages as the program describes a particular problem
or set of problems?

Programs are solutions to problems.

It seems that saying that a program is not a language
is a bit of an artificial distinction. Mathematics is a language. Ruby or
C++ are languages that can be used to construct entirely new languages.
Even pictures can form the basis of language. Every program that exists
possesses the vocabulary to deal with a given problem domain, so why bother
trying to claim that something like Excel does not have these qualities?
Aside from adherence to useless jargon of course.

You are confusing computer science with linguistics.

As for issues like terseness, it isn’t really a virtue at all. That you can
say or do more with less is not very important if people have a distinct bit
of trouble understanding what is being communicated. The goal should be
clarity, not trying to condense everything into the fewest possible symbols,
ultimately to say that you could.

That isn’t a problem of terseness, but a problem of semantics, and how
well something can be understood and learned.


Phillip G.

Though the folk I have met,
(Ah, how soon!) they forget
When I’ve moved on to some other place,
There may be one or two,
When I’ve played and passed through,
Who’ll remember my song or my face.

No I’m not confusing them, all programs provide the vocabulary (Means of
expression. Look it up if you don’t believe me.) necessary to deal with
a
particular problem or problem domain. Furthermore what you said hardly
distinguishes computer programs from every other language humans have
ever
or will ever create. All of those solve particular problems just as
much as
computer programs do. What a program is, is a system as opposed to a
singular object like a table or a chair. The system is itself the tool
and
the system exists solely to allow humans to express their will to
machines.

Terseness is a problem the moment it causes people to prioritize it
above
superior semantics. It might be a great idea to use the mathematical
symbol
for lambda to refer to a lambda function but it is not necessarily a
great
idea to use an ellipsis to refer to an exclusive range like we do in
Ruby.
Both use very few characters to get the job done, but one is not only
much
more distinct, it is far easier to explain since it matches a subject
more
people are likely to associate correctly with very little in the way of
explanation. (Though I think that Ruby explains things nicely without
getting into the whole lambda/closure thing right out of the gate.) Why
the
ellipsis is used for excluding the last number in a range is not readily
explainable, the use of the lambda symbol to refer to lambda functions
however is.

On Tue, Apr 12, 2011 at 3:11 AM, Phillip G. <

On Tue, Apr 12, 2011 at 9:47 AM, Kevin [email protected] wrote:

No I’m not confusing them, all programs provide the vocabulary (Means of
expression. Look it up if you don’t believe me.) necessary to deal with a
particular problem or problem domain.

That doesn’t make them languages, or languages useful for everything.

Or do you really believe the Egyptians spoke in little pictures of
birds, eyes and waves?

Furthermore what you said hardly
distinguishes computer programs from every other language humans have ever
or will ever create.

The difference between the two is so obvious, I don’t think it needs
to be spelled out (The Latin and Asian languages suffer from a
distinct lack of looping constructs, as well as disambiguity, for
example).

All of those solve particular problems just as much as
computer programs do.

Human languages don’t solve problems. They facilitate communications
which, considering the circumstances, enables problem solving in
groups.

Very different thing from programming languages which exist to solve
problems (there are of course levels of abstractions with languages
providing richer or poorer semantics to deal with particular problems,
or to provide other trade offs).

What a program is, is a system as opposed to a
singular object like a table or a chair. The system is itself the tool and
the system exists solely to allow humans to express their will to machines.

Superficially correct, but programs exist to do stuff. Be that data
storage, data analysis, or whatever, but programs don’t impose a
user’s will on a machine. They enable users to accomplish a task
easier and faster (ideally), than the lack of a tool would allow.

Terseness is a problem the moment it causes people to prioritize it above
superior semantics. It might be a great idea to use the mathematical symbol
for lambda to refer to a lambda function but it is not necessarily a great
idea to use an ellipsis to refer to an exclusive range like we do in Ruby.
Both use very few characters to get the job done, but one is not only much
more distinct, it is far easier to explain since it matches a subject more
people are likely to associate correctly with very little in the way of
explanation.

Again, not a problem of terseness but a problem of semantics.


Phillip G.

Though the folk I have met,
(Ah, how soon!) they forget
When I’ve moved on to some other place,
There may be one or two,
When I’ve played and passed through,
Who’ll remember my song or my face.

What we’ve seen here is some people - but not all - have a fixed frame
of reference about what qualifies as a language.

If you are religious the terms ‘good’ and ‘evil’ have a very clear and
self-evident meaning. If you are an atheist they seem to be two sets of
rather similar things that appear to be rather arbitrary. The Christian
Old Testament said ‘evil’ was marrying people from other ethnic groups,
whereas killing them and their animals was ‘good’. The Christian New
Testament changed those set memberships a bit.

Ruby is a very powerful language that also has the merit of being able
to express complexity in an elegant way. However if you don’t
particularly need all that power then you shouldn’t write off languages
which do some things easily but become contorted when you try and
replicate complex Ruby capabilities.

‘Domain Specific Language’ is a perjorative term. It’s just saying I
can’t conveniently do certain things I’m used to doing in the way I
prefer. To say that matters, you need to show that typical domains
definitely require such capabilities. My point earlier was not that I
was a superior being (I don’t know where that came from) but that from
my experience in the oil, banking, insurance, corflakes and fragances
business, most programming is using quite basic features. OK, that might
not extend to nuclear fission reactors, but let’s keep a sense of
proportion here.

There certainly is an argument that functional languages are more easily
mapped to multi-core computers. If I buy one of those S-word platforms,
I get sophisticated parallel processing built in for free. For Ruby, I
would have to carefully program that as Ruby has no general purpose
model/vocabulary/semantics for conveying or deducing dependancies.

Or has it?

On Tue, Apr 12, 2011 at 03:18:01PM +0900, Kevin wrote:

Aren’t all programs languages as the program describes a particular
problem or set of problems? It seems that saying that a program is not
a language is a bit of an artificial distinction. Mathematics is a
language.

A program is more like an essay or book written in a language. One does
not write Japanese in English, after all; one writes The Ruby Way in
English, instead. By the same token, one does not write Python in Ruby;
one writes portupgrade in Ruby, instead. (One could probably write a
Python interpreter in Ruby, but that’s not the same as writing
“Python”
itself in Ruby).

By your implied definition of “language”, my laptop is a “language”, my
television is a “language”, my motorcycle is a “language”, my Walther
PPS
is a “language”, my pair of scissors is a “language”, my electric bass
is
a “language”, my IRC dicebot is a “language”, “print substr(‘Just
another
Perl hacker’, 0, -2);” is a “language”, and an article I wrote for
TechRepublic about writing command line filter utilities is a
“language”.

Mathematics is a “language” in that it is a system of symbols used to
describe and communicate a “set of problems” and their solutions. A
program is not a language any more than “1 + 1 = 2” is a language,
because that’s not a system of symbols used to describe and communicate
a
“set of problems” and their solutions; it’s just a description of
problem
and solution. It is more akin to a sentence written in English than to
English itself.

Ruby or C++ are languages that can be used to construct entirely new
languages.

Last I checked, Ruby and C++ could be used to construct
implementations
of new languages. There is a difference between a language and its
implementation. Anyway, the fact that C++ can be used to implement a
language does not mean that everything implemented in C++ is a language,
any more than the fact paper can be used to create a crane means that
everything created with paper is a crane.

(Look, ma – no car analogies!)

Even pictures can form the basis of language. Every program that
exists possesses the vocabulary to deal with a given problem domain, so
why bother trying to claim that something like Excel does not have
these qualities? Aside from adherence to useless jargon of course.

Pictures can serve as statements; they are not the language themselves.
Your analogy between picture and language is flawed.

Jargon, by the way, is not useless. It is specialized (domain-specific)
language used to facilitate communication about a given subject. When
you corrupt the meaning of the terms used in common jargon parlance, you
damage the ability to communicate ideas within that domain.

As for issues like terseness, it isn’t really a virtue at all. That you
can say or do more with less is not very important if people have a
distinct bit of trouble understanding what is being communicated. The
goal should be clarity, not trying to condense everything into the
fewest possible symbols, ultimately to say that you could.

What the heck does whether terseness is a virtue have to do with this
discussion?

On Tue, Apr 12, 2011 at 03:22:21PM +0900, Kevin wrote:

One more thing the SQL programming language as it currently exists was in
fact designed to allow people who were not programmers by trade or training
to be able to comprehend the system. (Look on Wikipedia you can find a PDF
of the original proposal.) It is the reason that the syntax took the form
that it did.

. . . and, in the end, the design ended up so non-obvious that even many
programmers have difficulty navigating nontrivial SQL.

On Tue, Apr 12, 2011 at 04:47:17PM +0900, Kevin wrote:

No I’m not confusing them, all programs provide the vocabulary (Means
of expression. Look it up if you don’t believe me.) necessary to deal
with a particular problem or problem domain. Furthermore what you said
hardly distinguishes computer programs from every other language humans
have ever or will ever create. All of those solve particular problems
just as much as computer programs do. What a program is, is a system
as opposed to a singular object like a table or a chair. The system is
itself the tool and the system exists solely to allow humans to express
their will to machines.

I guess, by your phrasing, we simply do not “understand” your
“language”,
because the “language” you are making is “spoken” upon “semantics” that
do not exist in anyone else’s “metalanguages”.

Put another way, we do not “agree with” your “argument”, because the
“argument” you are making is “predicated” upon “premises” that do not
exist in anyone else’s “experience”.

I don’t think taking your approach to labeling everything under the Sun
a
“language” really aids communication.

Your attempt to bend software into the shape of a language by calling it
a “system”, then contrasting the fact it basically has moving parts with
the case of tables and chairs to say it’s not just a “singular object”,
is flawed. Recliners and collapsible card tables are not “languages”
just because they are complex systems of moving parts any more than my
mail user agent is a “language” for the same reason.

Terseness is a problem the moment it causes people to prioritize it
above superior semantics. It might be a great idea to use the
mathematical symbol for lambda to refer to a lambda function but it is
not necessarily a great idea to use an ellipsis to refer to an
exclusive range like we do in Ruby.

Really? What’s wrong with using ellipsis points to stand in for a
range?
Are you saying that software would be easier to read and write (and
understand) if we had to type every single number between 1 and 1000
into
a program to create an array containing all those numbers? What if we
want to exclude number 347? I think this:

foo = ((1...347).to_a + (348..1000).to_a).flatten

. . . is much easier to quickly read and properly understand than the
alternative:

foo = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16     # . . . and so on

Of course, in this case the exclusive ellipsis is probably not the best
option, and instead my example of using ellipsis points should look like
this instead:

foo = ((1..346).to_a + (348..1000).to_a).flatten

There are times that three ellipsis points are more appropriate, though.

Both use very few characters to get the job done, but one is not only
much more distinct, it is far easier to explain since it matches a
subject more people are likely to associate correctly with very little
in the way of explanation. (Though I think that Ruby explains things
nicely without getting into the whole lambda/closure thing right out of
the gate.) Why the ellipsis is used for excluding the last number in a
range is not readily explainable, the use of the lambda symbol to refer
to lambda functions however is.

It’s easy to explain how ellipsis points work in Ruby:

Three points are “up to”; two points are “through”. If you want “one
through ten”, use two points, because the last number in the series
essentially is the third point. If you want “one to ten”, use three
points, showing that it ends with that third point. It’s a pretty
simple
rule and, while it may not match with exactly what you expect, it is
still consistent and meaningful, and easily explained.

Also . . . is there any chance we can get you to stop top-posting
everything? TOFU posting is kind of annoying.