Functional paradigm taking over

On 4 April 2011 14:41, Josh C. [email protected] wrote:

I haven’t gone through it yet, but I have a PDF version I can upload if you
don’t like the html format of that one. It should be understood, though,
that Ruby’s functional support isn’t the same as that of the purely
functional languages. That isn’t to suggest you won’t get insights from that
book, I know a lot of relevant people who have recommended it (ie Uncle Bob,
and Rick DeNetale).

It is not HTML vs PDF, it is the problems inherent in SICP which are
even detailed in some paper.

Basically SICP expects that you take and understand some mildly
advanced math courses before you take the course SICP was written for.

There are chapters with quite obscure examples which could be instead
constructed of problems easier to understand and more accessible to
the general public.

Some also argue that the book suffers from one awesome feature of LISP

  • it does not differentiate between data and code.

While the feature is interesting and useful it may make the coding
more confusing for newcomers and make some of the examples needlessly
difficult and hard to understand due to quoting.

Thanks

Michal

On Mon, Apr 04, 2011 at 08:19:42PM +0900, Robert K. wrote:

in here. In fact, discussions comparing features of Ruby with other
programming languages’ features (boy, did I get the plural right?)

Yes.

On Mon, Apr 04, 2011 at 02:55:04PM +0900, Phillip G. wrote:

Though, Microsoft Research is a different beast than MS proper (as much
as a “MS proper” can exist with such a corporation), and doesn’t have
to toe the party line as much as the Office Business Unit would have
to, for example.

This is true, of course – but there is still an influence there where
research publications will surely be expected to serve some end
Microsoft
executive policy finds worth of approval. After all, if Microsoft
Research consistently failed to serve Microsoft’s bottom line in some
way, it would be shut down.

in, and in pretty much all of them the business rules are too complex,
or too much of a moving target, to make programming in the more
traditional sense feasible.

You’re not making the same claim here that was originally made. The
original claim was that MS Excel is a “programming language” – not
that its functionality includes a domain specific language (which is a
much narrower claim than the original, in addition to “is” being a whole
different animal from “includes”).

And that’s why MS provides OLE Automation, and makes it relatively easy
to develop Office add-ins for specific needs.

Sure. That doesn’t change what was actually said prior to this,
however.
Reorienting the pro-Excel argument so that it agrees with things others
(including me) have already said does not make the preceding pro-Excel
arguments any less wrong.

On Mon, Apr 04, 2011 at 07:00:19PM +0900, Phillip G. wrote:

B) Define “accessibility”. Surely you aren’t saying that the UI of a
program is related to which language it was written in. If you mean
issues like maintainable code, isn’t a strictly logical, mathematical
structure preferable, especially if it can be analyzed (tooling is our
friend) with the help of other programs? If, indeed, the code can be
proven to be correct (proven in the mathematical sense)?

I believe the ability to pick up the basic syntax of the language, and
grasp the basic semantics of it with relative ease, so that one need not
be a lifelong student of the language to be able to pick up an average
program and understand it well enough to maintain it in fairly short
order, is important to the intent of Mike’s preceding statement, which
is
not addressed in this commentary about accessibility. More about that
in
a moment.

C) Why should someone with less capability be taken care off by going
onto their levels, instead of helping them to reach new heights (we
could call such an effort “No Coder Left Behind”)? Maths isn’t hard,
nor is programming. So this smells like the plot of “Harrison Bergeron”
to me.

I agree this is, all else being equal, a good approach to take.

D) Wouldn’t a person with less capability be aided by code that follows
simple, logical rules?

I agree that, all else being equal, this point is relevant and
meaningful
here.

The thing is . . . I don’t think that matters much. Mike seems to be
trying to make the argument that functional paradigm software
development
techniques somehow necessarily make programming a more opaque, arcane
process than some other approach. I disagree quite strongly with that
assumption. What characteristic of functional programming techniques
could possibly render the whole exercise of programming so difficult to
fathom that we cannot present the user with a friendly syntax?

How does providing the developer with the ability to write a recursive
function that can be easily grasped by someone who bothers to learn a
bare minimum of the language’s syntax – as an alternative to forcing
developers to write do-while loops in C that require a page and a half
of
code – in any way make the language less understandable?

. . . and let’s not even approach the problem of how one would create an
event loop to scale up to millions of simultaneous requests in MS Excel
minus the capability of using callbacks for asynchronous I/O.

On Mon, Apr 04, 2011 at 07:15:03PM +0900, Johnny M. wrote:

Maths isn’t hard

As someone doing his math homework as we speak, I beg to differ :stuck_out_tongue:

Some problems are hard (generally by virtue of being complex
compositions
of mathematical operations that are, taken individually, quite simple).
This does not mean the math itself is hard. The same can be true of
writing programs in Ruby.

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

This is true, of course – but there is still an influence there where
research publications will surely be expected to serve some end Microsoft
executive policy finds worth of approval. After all, if Microsoft
Research consistently failed to serve Microsoft’s bottom line in some
way, it would be shut down.

There’s more to the bottom line than, well, the bottom line. That can
be, for example, public relations, or staying on the cutting edge of a
market. I doubt that something like Microsoft Surface will ever be
produced. OTOH, MS research created .NET, PhotoSynth, and Kinect.

But that doesn’t matter: The paper linked in this thread credits two
researcher from non-MS institutions.

You’re not making the same claim here that was originally made.

That could be because I’m not making the same the claim. OTOH, your
statement was drifting too much into the opposite direction (i.e.
spreadsheets being useless without a proper programmer, to exaggerate
a bit).

Sure. That doesn’t change what was actually said prior to this, however.
Reorienting the pro-Excel argument so that it agrees with things others
(including me) have already said does not make the preceding pro-Excel
arguments any less wrong.

Considering that I am making the same argument I always have in this
threat (that Excel isn’t the best choice of tool, and is highly
specialized), that isn’t all that surprising. :wink:

I’m not, nor have I ever been, a member of the Commu^W^W^W^Wproponent
of Excel as a language VM.


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 Mon, Apr 04, 2011 at 09:29:13PM +0900, Johnny M. wrote:

Sorry, what with all the bullshit I forgot to provide any evidence of
this fact:
http://zem.fi/~fis/fungot.b98.txt

Holy cow – some of that actually looked like ASCII art.

I have not seen “befunge” as a euphemism for brainfuck before. Is that
common?

I have not seen “befunge” as a euphemism for brainfuck before. Is
that common?

It’s a different language, befunge is a 2d language. Your text file is
like a grid. IIRC, among the commands > < ^ v change direction right,
left, up and down, respectively. So this would be an infinite loop:

v
^<

The link was to an IRC bot, I think it runs in perl’s Inline::Befunge
module, but I really don’t know. If you wanted to track it down, I’d
recommend asking at #esoteric on freenode. Also, see this for more on
befunge http://esoteric.voxelperfect.net/wiki/Befunge

Hey, I don’t know if there’s a ruby interpreter for it! Making
one would definitely be a fun evening with a beer.

Nor seemingly does there seem to be an interpreter in excel…
actually I think Excel would be great for this sort of thing, seeing as
it’s a 2d grid.

You could have one part of the sheet containing the program
instructions, and have another part of the sheet contain the registers
(I think it uses registers?) and the 2-dimensional program counter.

The formula would just have to update the state based on the position
of the program counter and the instruction at that point. Then it
would have to update the program counter…

On Mon, Apr 04, 2011 at 08:31:08PM +0900, Everett L Williams II wrote:

*You have restated my point in much more pleasant language, and with
crutch for dealing with DB’s is Alpha 5, but there are dozens of such
solutions out there.

If the best tool for the job is not a programming language, feel free to
use it to solve your problem. Please don’t suggest this tool that is
not
a programming language actually is a programming language just because
you can solve problems with it, though. A pointy stick in one’s hand is
not a snare, even if it can be used to acquire a rabbit for dinner. A
handheld sickle is not a combine, even if it can be used to harvest
grains.

Denigrating another person’s choice of tools will certainly not make
that person likely to seek your advice again, nor consider you helpful.

I don’t think anyone is denigrating the use of spreadsheets for problems
best solved by spreadsheets. People just object to describing MS Excel
as a better programming language than Ruby – a pretty tall order, given
it is woefully inadequate to many tasks for which programming is done,
and is not in fact a “language” by any definition short of the sort of
mental gymnastics necessary to discuss 4GLs with a straight face.

On Tue, Apr 05, 2011 at 12:16:39AM +0900, Phillip G. wrote:

market.
I never said otherwise. What does this (dis)prove?

But that doesn’t matter: The paper linked in this thread credits two
researcher from non-MS institutions.

What does matter is that everything I said about the situation applies
to my central point: argument from authority proves nothing,
especially
when your chosen authority works for the maker of whatever you’re trying
to talk up.

You’re not making the same claim here that was originally made.

That could be because I’m not making the same the claim. OTOH, your
statement was drifting too much into the opposite direction (i.e.
spreadsheets being useless without a proper programmer, to exaggerate a
bit).

Uh . . . what? I never said anything like that. My entire involvement
here has been focused on the core fact that MS Excel is not a
programming
language, and should not be used as one.

Sure. That doesn’t change what was actually said prior to this,
however. Reorienting the pro-Excel argument so that it agrees with
things others (including me) have already said does not make the
preceding pro-Excel arguments any less wrong.

Considering that I am making the same argument I always have in this
threat (that Excel isn’t the best choice of tool, and is highly
specialized), that isn’t all that surprising. :wink:

I don’t recall you making that argument.

I’m not, nor have I ever been, a member of the Commu^W^W^W^Wproponent
of Excel as a language VM.

Interesting. A lot of what you said seemed to lean in that direction,
unless you have a name substantially similar to someone else who was
making such statements and I missed the distinction.

On 4 April 2011 17:42, Johnny M. [email protected] wrote:

I have not seen “befunge” as a euphemism for brainfuck before. Is
that common?

It’s a different language, befunge is a 2d language. Your text file is
like a grid. IIRC, among the commands > < ^ v change direction right,
left, up and down, respectively. So this would be an infinite loop:

v
^<

OMG yeah, this explains the ASCII art style.

And it makes it at least as much or more twisted as using Excel for
programming.

Awesome thing to show people :wink:

Thanks

Michal

Oops. There was a transition from one person telling me Jones is right
to call Excel the world’s most popular functional language to another
telling me that there’s no reason to dispute the relevance of such a
statement here. Please excuse my slip-up there.

On Tue, Apr 05, 2011 at 12:42:20AM +0900, Johnny M. wrote:

I have not seen “befunge” as a euphemism for brainfuck before. Is
that common?

It’s a different language, befunge is a 2d language.

Thanks for the clarification.

Your text file is like a grid. IIRC, among the commands > < ^ v change
direction right, left, up and down, respectively. So this would be an
infinite loop:

v
^<

Would this produce an infinite loop as well?

v>
^<

Hey, I don’t know if there’s a ruby interpreter for it! Making one
would definitely be a fun evening with a beer.

Nor seemingly does there seem to be an interpreter in excel…
actually I think Excel would be great for this sort of thing, seeing as
it’s a 2d grid.

That makes sense – and could be another fun evening with a beer. Just
don’t ask me to use it to write a Web application for any purpose other
than to demonstrate being able to do so. Actually, don’t even ask me to
do it for that reason.

On Tue, Apr 05, 2011 at 05:50:53AM +0900, Iain B. wrote:

Argument by authority is not an absolute fallacy and would only apply
if he was using that authority to overrule any other view than his, and
regardless, the point being made was by comparison/contrast. Having
studied physics at that level does show a certain ability in
concentration, mathematics, and abstract thought, and would (hopefully)
mean that you’d be able to pick up things in fields where those
abilities are useful.

On the other hand, I’ve met some physicists in my time who are complete
clods when it comes to anything involving even mildly technical
proficiency with a computer. I don’t just mean they were unskilled; I
mean they were unteachable.

I’d be interested in the pdf formatted version. Thank you.

you a programmer. Nor does it make you particularly smart nor stupid,
or gives you the mindset a programmer should have. It makes you a
physicist, nothing more. That’s kind of like saying that a bookkeeper
is a programmer because (s)he uses spreadsheets.

Argument by authority is not an absolute fallacy and would only apply if
he was using that authority to overrule any other view than his, and
regardless, the point being made was by comparison/contrast. Having
studied physics at that level does show a certain ability in
concentration, mathematics, and abstract thought, and would (hopefully)
mean that you’d be able to pick up things in fields where those
abilities are useful.

I liked using Haskell for a while, and I found producing code that
looked beautiful and dealt with things that were (usually) hard in other
languages was easy. Getting it to do anything easy was (sometimes) very
difficult though.

YMMV, I dropped out of my physics degree (partially) because it was too
difficult :slight_smile:

And I like recursion! (Though Ruby’s recursion too often fails me to
bother with it for anything that shouldn’t fail*)

Regards,
Iain

  • which is almost everything

On Tue, Apr 5, 2011 at 10:58 AM, Stu [email protected] wrote:

I’d be interested in the pdf formatted version. Thank you.

http://dl.dropbox.com/u/4294562/15556326-Structure-and-Interpretation-of-Computer-Programs-SICP.pdf

Here you go. :slight_smile:

And before anyone asks: SICP is Creative Commons licensed.


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.

thank you very much!

On Tue, Apr 5, 2011 at 4:12 AM, Phillip G.

Chad P. wrote:

Denigrating another person’s choice of tools will certainly not make
that person likely to seek your advice again, nor consider you helpful.

I don’t think anyone is denigrating the use of spreadsheets for problems
best solved by spreadsheets. People just object to describing MS Excel
as a better programming language than Ruby – a pretty tall order, given
it is woefully inadequate to many tasks for which programming is done,
and is not in fact a “language” by any definition short of the sort of
mental gymnastics necessary to discuss 4GLs with a straight face.

*Somebody earlier suggested listening to Robert Martin’s address to the
RailsConf, and I did. It speaks to what can destroy a language, and it
pretty much delineates the types of attitudes that are being brought
forward here. Excel is being denigrated here, and that is foolish. 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.
That’s a little like taking a jackhammer out to get rid of the spots on
your garage floor. Since most of these people will never need to program
something that they cannot do in Excel, even if awkwardly, that seems
foolish. Because of their familiarity with the tool they use most often,
they can accomplish more with it in an hour than they could in days
working with Ruby. No matter what tools you use to work with Ruby, it is
a complete paradigm shift, and that is difficult for the average person
who does not consider themselves a professional programmer. It may have
taken them years to learn how to do what they now do in Excel, and Excel
is only a stalking horse for a wider point here.

If your current tools, whatever they may be, are slowing or blocking you
sufficiently that you must go to a new tool, or if you need an excellent
tool for future work, something like Ruby makes all the sense in the
world, but every advocate of something like Ruby should realize that
Ruby is not an endpoint. In the fairly near future, we are going to
progress to machines that never turn off and never reboot, and that do
not distinguish applications. Ruby nor any other current language is
equipped to deal with that type of environment. Things like genetic
programming and fuzzy logic and really, machines that “think” like we do
are the goal. Now I realize that eyes are rolling and so forth, but what
I am trying to say is that Ruby is not nor will it be in that world, and
that future is coming far faster than most imagine. If you get your nose
so stuck down to the grindstone that all you can see is Ruby, then you
will eventually suffer the same criticism as is being thrown at the guy
who is using Excel at the moment. Working like the devil to make Ruby
better, and to make it more accessible, are worthy expenditures of
energy. Being offensively defensive about it and parsing definitions
about what is and is not a programming language are complete wastes of
time, and are self defeating.

At the moment, Ruby is not threatening to displace even COBOL and
ForTran, much less C/C++ and Assembler, and there are hosts of simple
tasks that really should not be done in Ruby or anything but a 4GL, you
know, that target of a derisive earlier comment. I used one of the very
first 4GL’s, Easytrieve, and it allowed me to do in 15 minutes, what
COBOL programmers were taking weeks or months to accomplish (note that I
did not say good COBOL programmers). For reasonably complex data changes
or for reports, it was literally an order of magnitude or two better
than COBOL, and there are days that I would give my right arm to still
have it. It is commercial and costs more than I can afford for my
purposes. In the mean time, I really don’t want to write reports in
Ruby, though I realize that it is quite possible, and simple data fixes
in Ruby, especially on new files for which I don’t have schemas, aren’t.

Everett L.(Rett) Williams II


On Fri, Apr 08, 2011 at 12:51:35AM +0900, Everett L Williams II wrote:

definition short of the sort of mental gymnastics necessary to discuss
4GLs with a straight face.

*Somebody earlier suggested listening to Robert Martin’s address to the
RailsConf, and I did. It speaks to what can destroy a language, and it
pretty much delineates the types of attitudes that are being brought
forward here. Excel is being denigrated here, and that is foolish. Many
people use spreadsheets all day long to accomplish their work. They are
good with spreadsheets and comfortable with them.

You clearly didn’t read a word I said.

I haven’t listened to Martin’s address (yet), but something tells me he
was not talking about the idea that pointing out some tools are better
for certain jobs than others as an attitude that can destroy a language.
I’m pretty sure he never said that calling something what it is – a
spreadsheet application, as opposed to a language – is in any way toxic
to a community. Maybe we should start calling Ruby a DBMS, and
PostgreSQL a spreadsheet, too. Would that make you happier? Of course,
then we’ll no longer have any names for different types of tools that
carry any meaning, because the names will all be interchangeable.

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.

What is being said is that for some classes of problems Ruby is a better
choice – and, in fact, for some classes of problems Excel is no choice
at all. For other classes of problems, Ruby is no choice at all.

Why do I think you’d dispute the notion that people should use Ruby for
all spreadsheet tasks, even if you get up in arms if someone disputes
the
notion that Excel should be used for all programming tasks?

That’s a little like taking a jackhammer out to get rid of the spots on
your garage floor. Since most of these people will never need to
program something that they cannot do in Excel, even if awkwardly, that
seems foolish.

Where are you getting the crazy idea that anyone said everybody who uses
Excel should stop using it for anything at all, and use Ruby instead?
Your straw men are looking pretty shabby.

you sufficiently that you must go to a new tool, or if you need an
excellent tool for future work, something like Ruby makes all the sense
in the world, but every advocate of something like Ruby should realize
that Ruby is not an endpoint.

I don’t think anyone said otherwise. You’re responding to points nobody
made.

In the fairly near future, we are going to progress to machines that
never turn off and never reboot, and that do not distinguish
applications. Ruby nor any other current language is equipped to deal
with that type of environment.

I think a lot of people would disagree with that remark. In fact, Alan
Kay once likened turning off a computer, ending a process, et cetera, to
metaphorical murder (I’m pretty sure it was Kay, anyway – someone
correct me if I misremember). The idea was thata lot is invested in
each
set of running state, and throwing all that away just to restart it
again
later was a criminal waste of resources. Continuity can offer
substantial rewards to not only resource usage, but also the development
of more productive computational models. Object oriented programming
offered the beginnings of a solution to that problem, where objects are
effectively perpetual until one of them is truly, utterly unneeded
thereafter, and the ephemeral needs of the system are served by message
passing instead of by creating, manipulating, and destroying collections
of operational state.

This, to me, sounds like Ruby may be on the right track toward serving
exactly the sorts of needs you imply here – far better than any
spreadsheet application, at least.

Things like genetic programming and fuzzy logic and really, machines
that “think” like we do are the goal. Now I realize that eyes are
rolling and so forth, but what I am trying to say is that Ruby is not
nor will it be in that world, and that future is coming far faster than
most imagine.

Ruby in its current form . . . maybe not. It’s a step in that
direction,
though. What do you have against Ruby that you want to throw it away
before it has given birth to all the more-advanced children it has the
genetic material to spawn? What does this have to do with the laughable
idea that MS Excel is a language? Oh, sure, Excel is surely the world’s
most popular end-user spreadsheet application, and for a number of good
reasons, but that doesn’t mean you get to start calling it a language,
an
operating system, or a microwave oven without people giving you funny
looks.

If you get your nose so stuck down to the grindstone that all you can
see is Ruby, then you will eventually suffer the same criticism as is
being thrown at the guy who is using Excel at the moment. Working like
the devil to make Ruby better, and to make it more accessible, are
worthy expenditures of energy. Being offensively defensive about it and
parsing definitions about what is and is not a programming language are
complete wastes of time, and are self defeating.

  1. I’m looking at lots of things – not just Ruby.

  2. I’ll probably be using something else more than Ruby in three years
    (Go, maybe?).

  3. There’s nothing offensive about pointing out that MS Excel is not a
    “language” any more than there is in pointing out that my laptop is not
    a
    cloud storage service, nor about pointing out that Excel is a better
    spreadsheet application than Ruby but a worse general purpose
    programming
    tool.

  4. If we do not differentiate between different types of tools
    (programming languages vs. spreadsheets), we will suffer for our
    inability to discuss our tools meaningfully.

At the moment, Ruby is not threatening to displace even COBOL and
ForTran, much less C/C++ and Assembler, and there are hosts of simple
tasks that really should not be done in Ruby or anything but a 4GL, you
know, that target of a derisive earlier comment.

I don’t disagree with any of that. There are many tasks for which I
would never use Ruby. That doesn’t mean that something that has no
systemic grammar a “language”, though – even if that thing is better
for
certain tasks than something that is a language, like Ruby. I
wouldn’t
use a language to hit a baseball, after all, but that doesn’t make a
baseball bat a “language”.

The thing that makes 4GLs most laughable is the idea that they’re
“fourth
generation”. Think for the moment about what “generation” means.
Someone really jumped the gun assigning the term “fourth generation
language” to what amounts to GUI wrappers for macro languages, probably
assuming that somehow the approach taken to designing these things would
ultimately lead to the ability to write operating system code without
having to know anything about operating systems some day.

which I don’t have schemas, aren’t.
I’m not really sure what you’re trying to say about what is and isn’t
possible in Ruby with the end of that last sentence, and I don’t know
what the fact you found a 4GL very useful within its narrow domain of
intended applicability proves that might be contrary to anything I said.