Functional paradigm taking over

Hi,

just notice there seems to be a trend in industry to include
functional language features everywhere - now it’s even in the new
C++:
http://www2.research.att.com/~bs/C++0xFAQ.html#lambda

JDK 8 will also include lambda support:
http://blogs.oracle.com/henrik/2010/10/java_roadmap_from_javaone_2010.html

It seems that in times of excessive CPU capacity and multiple cores
people turn to features which give more dynamic as well as easier
implementation of concurrent applications (no synchronization needed
when going strict functional). Amazing that Lisp is one of the oldest
languages around still in use and its family seems to be prepared to
finally reach mainstream. :slight_smile:

Cheers

robert

Although a Ruby fan, I must say I’m spending all my time looking at
functional programming at the moment. Not, by the way, deeply
mathematical languages like F#, Haskell etc but a new very simple
easy-to-use language called S#.

Well it’s not new at all. It’s just Excel but you can’t say that at
parties so I had to make up a new name.

People talk about the parallel programming advantages but what I like is

  1. You can easily see what’s going on. Every time you write a line of
    code, you immediately see the consequences of what you’ve written. You
    don’t need to run anything, debug anything. That’s of course a feature
    of Excel in its role as an IDE that autocalculates.

  2. Excel is innately efficient. It can run millions of calculations per
    second.

  3. It’s good fun devising new algorithms. You’ve spent all your life
    thinking in terms of iterations. Now you have to think of evaluating
    variable length data structures and picking out the outcomes after
    they’ve all ‘run’. For example, if you want to service a web request,
    you have to generate both the normal and error pages at the same time,
    as you only have one shot in functional programming.

I got into this accidentally. I was working on using Ruby to script a
spreadsheet to provide insurance quotes. The more I looked at it the
more I could see Excel doing the logic until I wondered whether I could
virtually eliminate Ruby apart from web server handling - capturing the
incoming parameters and translating the output pages into HTML.

Most people would not want to pursue this line of thinking but I mention
it because it seems to me that you should either do functional or
imperative. Languages like Ruby which let you mix paradigms are going to
lead you into difficult decisions about what you use where.

My other feeling is that typical functional languages (like typical
imperative languages) are unnecessily complicated. People struggle to
develop the most terse solution and gain great pleasure from doing so,
but as an old fashioned programmer, I don’t immediately see what they
gain, apart from the sort of pointless satisfaction you get from
finishing a cryptic crossword. It would be nice if any move towards
functional approaches didn’t ignore opportunities to make things easier
as well.

On Wed, Mar 30, 2011 at 06:38:19PM +0900, Mike S. wrote:

Although a Ruby fan, I must say I’m spending all my time looking at
functional programming at the moment. Not, by the way, deeply
mathematical languages like F#, Haskell etc but a new very simple
easy-to-use language called S#.

Well it’s not new at all. It’s just Excel but you can’t say that at
parties so I had to make up a new name.

Wait, I’m confused . . .

Are you saying that you’re creating some kind of stand-alone variant of
VBA (which is what Excel uses for macros), or are you saying that you
use
a spreadsheet application to write “programs” and call it S# to confuse
people (in which case it worked on me)? I’m frankly appalled at the
idea
of people writing “programs” in Excel; it’s three metric tons of VM-like
overhead to produce “software” that is necessarily far too limited to
even have bothered.

If you want a simple, nominally-functional language, try Scheme. Just
don’t expect getting “real world” work done to be very easy as long as
the community’s internal differences of opinion over what constitutes
good language design or how to define “compatible” continue. Scheme is
in effect a great learning language, for now, but not very useful in the
real world unless you’re willing to write your own libraries – but you
seem interested in experimenting with functional programming from what
you said, rather than having an industrial-strength, practical
programming tool, so maybe that’s okay.

People talk about the parallel programming advantages but what I like

I’m pretty sure nobody is talking about the parallel programming
advantages of VBA, either inside Excel or outside of it.

thinking in terms of iterations. Now you have to think of evaluating
variable length data structures and picking out the outcomes after
they’ve all ‘run’. For example, if you want to service a web request,
you have to generate both the normal and error pages at the same time,
as you only have one shot in functional programming.

I got into this accidentally. I was working on using Ruby to script a
spreadsheet to provide insurance quotes. The more I looked at it the
more I could see Excel doing the logic until I wondered whether I could
virtually eliminate Ruby apart from web server handling - capturing the
incoming parameters and translating the output pages into HTML.

Maybe you’d like working with a database management system that offers
some kind of stored procedures or triggered functions capabilities more.
Excel is to DBMSes as those old Power Wheels toys are to actual cars,
after all:

http://www.fisher-price.com/us/powerwheels/

Most people would not want to pursue this line of thinking but I
mention it because it seems to me that you should either do functional
or imperative. Languages like Ruby which let you mix paradigms are
going to lead you into difficult decisions about what you use where.

I disagree. I find myself doing a fair bit of functional style
programming in small pieces within the larger object oriented style
structure of code that I write in Ruby, and my code is better for it.

On Wed, Mar 30, 2011 at 4:49 PM, Chad P. [email protected] wrote:

Wait, I’m confused . . .
That’s usually where the intellectual fun begins. :slight_smile:

Are you saying that you’re creating some kind of stand-alone variant of
VBA (which is what Excel uses for macros), or are you saying that you use
a spreadsheet application to write “programs” and call it S# to confuse
people (in which case it worked on me)? I’m frankly appalled at the idea
of people writing “programs” in Excel; it’s three metric tons of VM-like
overhead to produce “software” that is necessarily far too limited to
even have bothered.

I believe he means that Excel is a processor for dependent formulas
which, by virtue of update event propagation, gives you instantaneous
value updates in all relevant places.

If you want a simple, nominally-functional language, try Scheme. Just
don’t expect getting “real world” work done to be very easy as long as
the community’s internal differences of opinion over what constitutes
good language design or how to define “compatible” continue. Scheme is
in effect a great learning language, for now, but not very useful in the
real world unless you’re willing to write your own libraries – but you
seem interested in experimenting with functional programming from what
you said, rather than having an industrial-strength, practical
programming tool, so maybe that’s okay.

I’d like to throw in Scala here. Although it’s not complete yet as a
language there are some interesting concepts (including functional) -
and you can use the wealth of libraries available for the JVM.

http://www.scala-lang.org/

People talk about the parallel programming advantages but what I like

I’m pretty sure nobody is talking about the parallel programming
advantages of VBA, either inside Excel or outside of it.

I don’t know how Excel works internally but it is completely possible
that evaluation updates are calculated in parallel. This is possible
because Excel knows all the value dependencies between cells. Which
brings me to something I have been wanting to ask: is there something
like a gem containing a DSL for such descriptions? I imagine building
dependency graphs (trees for the start) of tasks where output of
several other tasks can be fed into a task. That then would make
parallel execution pretty easy.

variable length data structures and picking out the outcomes after
Maybe you’d like working with a database management system that offers
some kind of stored procedures or triggered functions capabilities more.
Excel is to DBMSes as those old Power Wheels toys are to actual cars,
after all:

Fisher Price Baby Gear & Toys | Mattel

Hmm, I think I disagree. In parts you can use Excel (or any other
spreadsheet like OpenOffice, LibreOffice…) like a relational
database. But organizing and filtering data is just one part of
Excel’s functionality - and one where it doesn’t shine (once you get
into the 10,000 range of rows at least). But a spreadsheet
application is mostly something different: a smart way to lay out
formulas in 2D to get instant calculations; basically it is a event
processor with user friendly user interface. (Note: in my observation
despite Excel’s amazing capabilities many people seem to feel more at
home with stuffing tons of macros in their sheets where a few smartly
connected cell functions or a pivot table would have sufficed).

Most people would not want to pursue this line of thinking but I
mention it because it seems to me that you should either do functional
or imperative. Languages like Ruby which let you mix paradigms are
going to lead you into difficult decisions about what you use where.

I disagree. I find myself doing a fair bit of functional style
programming in small pieces within the larger object oriented style
structure of code that I write in Ruby, and my code is better for it.

And funnily enough I just posted my observation today, that more and
more languages incorporate functional features. :slight_smile:
→ “[OT] functional paradigm taking over”

Kind regards

robert

Are you saying that you’re creating some kind of stand-alone variant of
VBA?

Unfortunately most people think the words ‘Excel’ and ‘programming’ must
equal VBA. I spent a lot on a book called Professional Excel Development
which hardly mentions Excel itself. I think however in some
circumstances
VBA functions may have to be used eg to call realistic SOAP services.
The key is to keep them as functions ie no calling and waiting. They
should look exactly like in-built functions. Also the accomplished S#
programmer only uses them as a last resort.

it’s three metric tons of VM-like overhead

but seems to load faster than Ruby

I believe he means that Excel is a processor for dependent formulas
which, by virtue of update event propagation, gives you instantaneous
value updates in all relevant places.

Succinctly put

Maybe you’d like working with a database management system that offers
some kind of stored procedures or triggered functions capabilities more.

Your remark is highly relevant. Tedd Codd deliberately designed the
relational model to eliminate the requirement to describe process. SQL
is a very powerful functional programming system. Stored procedures
however are usually…procedural.

Excel is to DBMSes as those old Power Wheels toys are to actual cars,
after all.

I suspect you can do a lot of real world ‘database’ processing in
Excel -just like some folks use ActiveRecord (no - don’t start me off on
ORMs…). On that basis, I guess a simple web site could use a lot of
functional programming functions without resorting to DBMS facilties.

As I said earlier, one of the attractions is you have to think
differently.

On Thu, Mar 31, 2011 at 05:46:05AM +0900, Martin DeMello wrote:

– Mark Jason Dominus, in an interview on “Higher Order Perl”

http://www.theperlreview.com/Interviews/mjd-hop-20050407.html

I think thirty years is unrealistic. We’re probably looking at
something
more like fifteen, at this point. Since it has been six years since
that
quote was made, by my estimation I think he overshot his guess by about
a
decade. I suppose I could be mistaken.

On Wed, Mar 30, 2011 at 12:59 PM, Robert K.
[email protected] wrote:

It seems that in times of excessive CPU capacity and multiple cores
people turn to features which give more dynamic as well as easier
implementation of concurrent applications (no synchronization needed
when going strict functional). Amazing that Lisp is one of the oldest
languages around still in use and its family seems to be prepared to
finally reach mainstream. :slight_smile:

I think the same thing is happening with closures, but we haven’t
gotten as far. It’s still possible to promulgate a language like Java
that doesn’t have practical closures. At the time I started writing,
Python didn’t have closures at all and I heard Guido van Rossum say
that they weren’t important. I think that’s wrong, and that in another
thirty years people will laugh at anyone who tries to invent a
language without closures, just as they’ll laugh now at anyone who
tries to invent a language without recursion.

– Mark Jason Dominus, in an interview on “Higher Order Perl”

http://www.theperlreview.com/Interviews/mjd-hop-20050407.html

martin

On Thu, Mar 31, 2011 at 02:27:13AM +0900, Mike S. wrote:

Are you saying that you’re creating some kind of stand-alone variant
of VBA?

Unfortunately most people think the words ‘Excel’ and ‘programming’
must equal VBA. I spent a lot on a book called Professional Excel
Development which hardly mentions Excel itself. I think however in ome
circumstances VBA functions may have to be used eg to call realistic
SOAP services. The key is to keep them as functions ie no calling and
waiting. They should look exactly like in-built functions. Also the
accomplished S# programmer only uses them as a last resort.

I know that one can use other languages to manipulate data in Excel, but
when you use those other languages, you use those other languages – and
not so much Excel (with its embedded macro language, VBA). When you say
“I’m using JScript with Excel,” that doesn’t mean VBA. When you say
“I’m
using Excel,” though, that to me does mean VBA – or no programming
language at all.

it’s three metric tons of VM-like overhead

but seems to load faster than Ruby

Maybe on MS Windows. I hear rumors Ruby is slower on that platform. On
the other hand, on a dual-boot system, Ruby runs quickly enough for the
limited purposes for which I use it on Win7. It’s faster on the Unixy
side, though.

Perhaps you’re confusing preloaded application being presented to the
user with actually opening the application, though. The default
behavior
for MS Office is to load the whole shebang when the OS starts up, and
just hide it from view until the user clicks the appropriate icon, thus
giving the appearance of very fast loading applications. The truth of
the matter is that it just consumes a lot of RAM even when you aren’t
using it.

Maybe you’d like working with a database management system that
offers some kind of stored procedures or triggered functions
capabilities more.

Your remark is highly relevant. Tedd Codd deliberately designed the
relational model to eliminate the requirement to describe process. SQL
is a very powerful functional programming system. Stored procedures
however are usually…procedural.

By default, it’s a bit more declarative than functional – though with
various procedural extensions to SQL it is quite possible to do some FP
magic as well.

Excel is to DBMSes as those old Power Wheels toys are to actual
cars, after all.

I suspect you can do a lot of real world ‘database’ processing in Excel
-just like some folks use ActiveRecord (no - don’t start me off on
ORMs…). On that basis, I guess a simple web site could use a lot of
functional programming functions without resorting to DBMS facilties.

You can also do a lot of real world traveling with one of those Power
Wheels toys, but it’s slow, inefficient, burdened with a frustratingly
limited set of controls, and notably lacking on ability to scale to high
loads. Being able to do something with a given tool by no means
suggests
it’s a good tool for the job.

As I said earlier, one of the attractions is you have to think
differently.

Sometimes, I like to pretend I’m writing software meant to run in 128KB
of RAM, too.

On Thu, Mar 31, 2011 at 12:19:25AM +0900, Robert K. wrote:

I believe he means that Excel is a processor for dependent formulas
which, by virtue of update event propagation, gives you instantaneous
value updates in all relevant places.

Option 2, then.

okay.

I’d like to throw in Scala here. Although it’s not complete yet as a
language there are some interesting concepts (including functional) -
and you can use the wealth of libraries available for the JVM.

http://www.scala-lang.org/

I have heard good things about both Scala and Clojure, though they both
suffer the limitation of requiring the JVM. I plan to give them both a
look this year, as well as Haskell, but have not gotten around to it
yet.

I’m pretty sure nobody is talking about the parallel programming
advantages of VBA, either inside Excel or outside of it.

I don’t know how Excel works internally but it is completely possible
that evaluation updates are calculated in parallel. This is possible
because Excel knows all the value dependencies between cells.

Oh, I’m sure it does – but Excel is not a programming language, so I’m
not sure it’s meaningful to say that Excel’s features as a functional
programming language provide any parallelism benefits.

Which brings me to something I have been wanting to ask: is there
something like a gem containing a DSL for such descriptions? I imagine
building dependency graphs (trees for the start) of tasks where output
of several other tasks can be fed into a task. That then would make
parallel execution pretty easy.

I’m curious about that as well, now.

database. But organizing and filtering data is just one part of
Excel’s functionality - and one where it doesn’t shine (once you get
into the 10,000 range of rows at least).

That was sorta my point.

But a spreadsheet application is mostly something different: a smart
way to lay out formulas in 2D to get instant calculations; basically it
is a event processor with user friendly user interface. (Note: in my
observation despite Excel’s amazing capabilities many people seem to
feel more at home with stuffing tons of macros in their sheets where a
few smartly connected cell functions or a pivot table would have
sufficed).

That pretty much amounts to utilizing a minimal subset of the
capabilities of a proper DBMS plus some code that maps to the contents
of
a DB table – or, in DBMSes, plus some stored procedures (or stored
functions, or whatever). Is there something I’m missing?

On Thu, Mar 31, 2011 at 1:24 AM, Chad P. [email protected] wrote:

Oh, I’m sure it does – but Excel is not a programming language, so I’m
not sure it’s meaningful to say that Excel’s features as a functional
programming language provide any parallelism benefits.

Not a Turing-complete language, anyway.

It’s basically a(n econ) math and statistics library lacking a decent
programming language.

That pretty much amounts to utilizing a minimal subset of the
capabilities of a proper DBMS plus some code that maps to the contents of
a DB table – or, in DBMSes, plus some stored procedures (or stored
functions, or whatever). Is there something I’m missing?

Authentication and authorization, and table/row/cell locking.


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 Thu, Mar 31, 2011 at 10:49:54AM +0900, 7stud – wrote:

Chad P. wrote in post #990079:

I have heard good things about both Scala and Clojure, though they
both suffer the limitation of requiring the JVM. I plan to give them
both a look this year, as well as Haskell, but have not gotten around
to it yet.

I don’t know if you’ve seen the Pragmatic Programmer’s book “Seven
Languages in Seven weeks”. It gives brief overviews of Ruby, Io,
Prolog, Clojure, Scala, Erlang, and Haskell.

Actually, I have it. In fact, I had it on pre-order for an awfully long
time, through something like three or four publication delays, before it
was finally shipped. That book is the reason I expect to get through
some brief introductions to Clojure, Scala, and Haskell this year.

I’m not getting through it all in seven weeks, though. I’ve done the Io
stuff so far (and read the section about Ruby first, of course). I’ve
got some other stuff I need to do before I get back to that book and
pick
up the next language in the queue.

On Thu, Mar 31, 2011 at 12:30:07PM +0900, Phillip G. wrote:

On Thu, Mar 31, 2011 at 1:24 AM, Chad P. [email protected] wrote:

Oh, I’m sure it does – but Excel is not a programming language, so
I’m not sure it’s meaningful to say that Excel’s features as a
functional programming language provide any parallelism benefits.

Not a Turing-complete language, anyway.

It’s basically a(n econ) math and statistics library lacking a decent
programming language.

I don’t think it really qualifies as a language at all. It’s more like
an extensible set of cupboards with (non-graphing) calculators from the
early '90s built into them.

That pretty much amounts to utilizing a minimal subset of the
capabilities of a proper DBMS plus some code that maps to the
contents of a DB table – or, in DBMSes, plus some stored procedures
(or stored functions, or whatever). Is there something I’m missing?

Authentication and authorization, and table/row/cell locking.

Err . . . are you saying this is some kind of feature Excel has and
DBMSes that do stored functions/procedures, like PostgreSQL and Oracle,
do not?

Chad P. wrote in post #990079:

On Thu, Mar 31, 2011 at 12:19:25AM +0900, Robert K. wrote:

I believe he means that Excel is a processor for dependent formulas
which, by virtue of update event propagation, gives you instantaneous
value updates in all relevant places.

Option 2, then.

okay.

I’d like to throw in Scala here. Although it’s not complete yet as a
language there are some interesting concepts (including functional) -
and you can use the wealth of libraries available for the JVM.

http://www.scala-lang.org/

I have heard good things about both Scala and Clojure, though they both
suffer the limitation of requiring the JVM. I plan to give them both a
look this year, as well as Haskell, but have not gotten around to it
yet.

I don’t know if you’ve seen the Pragmatic Programmer’s book “Seven
Languages in Seven weeks”. It provides brief overviews of Ruby,
Io(prototype based inheritance-like javascript),
Prolog, Clojure, Scala, Erlang, and Haskell.

I’m leaning towards Erlang after bombing out of Haskell at chapter 5 of
“Real World Haskell”. What a horrible book. The Haskell fan boys
gave their new book five stars–then the beginners weighed in.

On Thu, Mar 31, 2011 at 7:44 AM, Chad P. [email protected] wrote:

Authentication and authorization, and table/row/cell locking.

Err . . . are you saying this is some kind of feature Excel has and
DBMSes that do stored functions/procedures, like PostgreSQL and Oracle,
do not?

The opposite. Definitely the opposite!


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 Thu, Mar 31, 2011 at 07:08:36PM +0900, Mike S. wrote:

Chad P. wrote in post #990130:

I don’t think it really qualifies as a language at all. It’s more
like an extensible set of cupboards with (non-graphing) calculators
from the early '90s built into them.

You may be interested in this
http://www.programmingforums.org/thread15823.html which shows Excel
solving Dijkstra’s Algorithm.

You could also manage your home budgeting in Brainfuck, but that doesn’t
make Brainfuck a spreadsheet any more than it makes Excel a language.

Chad P. wrote in post #990130:

I don’t think it really qualifies as a language at all. It’s more like
an extensible set of cupboards with (non-graphing) calculators from the
early '90s built into them.

You may be interested in this
http://www.programmingforums.org/thread15823.html which shows Excel
solving Dijkstra’s Algorithm.

Excel is probably Turing complete (opinions differ) if you exclude the
notion of infinite sets.

If you consider a web site that collects user details, generates an
insurance quote and takes payment, then my initial assessment (I’ve not
built it yet) is Excel has the required features, including
authentication, logging, cookies etc. You would need a web server to
launch each Excel ‘program’, and you would need a module that converts
formatted Excel pages into HTML. Some functions like calling web
services and HTML formatting might practically have to be implemented as
non-Excel code (eg VBA or Ruby) but as these would require only simple
configuration they could be viewed as extensions to the inbuilt
functions and would not require programming ability on the part of the
user.

The issue (sometimes called the Turing Tarpit) is that Excel is a
programming alnguage but without many of the sophistications you see in
the likes of Ruby, and therefore may be unnecessarily awkward to program
in.

Nevertheless I think it is instructive. If you can imagine solving
practical problems in Excel then you should be able to solve the same
problems in the more accepted functional languages without being tempted
to slip back into imperative habits.

I guess my little bit of tinkering with this leads me to ask “Why should
I have to instruct the computer how to navigate data structures and code
my own error capturing? Why can’t I just define what I want to see, and
then look at whether it turns out as I expected?”

On Thu, Mar 31, 2011 at 5:08 AM, Mike S. [email protected]
wrote:

Excel is probably Turing complete (opinions differ) if you exclude the
configuration they could be viewed as extensions to the inbuilt
problems in the more accepted functional languages without being tempted

Coding everything in Excel might be an interesting paradigm to play
with. It
might even reveal new ways of looking at problems that you hadn’t
previously
considered. But does it really warrant a title like “lambda shambda” and
the
suggestion that it is easier than real languages like Haskell? It might
be
possible (I’m skeptical) to write a web app in Excel, but is this really
something you’d want to do for anything other than an exercise?

I’m having a hard time telling whether you’re just a little too excited
about this idea, trolling, or legitimately serious.

On Fri, Apr 01, 2011 at 03:56:01AM +0900, Phillip G. wrote:

On Thu, Mar 31, 2011 at 7:44 AM, Chad P. [email protected] wrote:

Err . . . are you saying this is some kind of feature Excel has and
DBMSes that do stored functions/procedures, like PostgreSQL and
Oracle, do not?

The opposite. Definitely the opposite!

Okay, thanks for clarifying. You had me worried for a moment there.

Josh C. wrote in post #990579:

is this really something you’d want to do for anything other than an
exercise?

Excel is somewhat incidental to this discussion. It is not like
functional languages people normally think of. What I was saying is it
is interesting to think of new algorithms/patterns.

However, since you ask: Excel is by far the World’s most widely used
programming language. We recently had someone on this channel asking how
to build an application to compare performance of schools. Something
like Rails is a huge jump for a newby. Leveraging Excel knowledge could
make this kind of thing so much more accessible.

But the other point is why does everybody make languages so difficult
these days? I have a degree in Physics but couldn’t face trying to
unravel F# or Haskell. Don’t tell me trying to fathom out complex
recursive functions is a good way to spend your day.

Of course, you have to encourage people to invent Lambda Calculus and
then turn it into a computing language but such university thesis ideas
shouldn’t be seen as the model for real world products.

On Sun, Apr 3, 2011 at 7:29 AM, Mike S. [email protected]
wrote:

However, since you ask: Excel is by far the World’s most widely used
programming language.

As Carl Sagan once said: Extraordinary claims require extraordinary
evidence.

Excel is an automation tool, certainly, but I wouldn’t call a finance
sheet, sales report, or statistical analysis of data in a diagram
“programming”.

We recently had someone on this channel asking how
to build an application to compare performance of schools. Something
like Rails is a huge jump for a newby. Leveraging Excel knowledge could
make this kind of thing so much more accessible.

But is the resulting product of similar quality as one done in an
actual programming language?

Across the metrics of code maintenance, compatibility (just hope that
MS doesn’t ever change the behavior of a function your spreadsheet
happens to rely on, and that your spreadsheet works on all Excel
variants your clients might be running, since shelling out for a new
Excel version ain’t cheap, nor is a corporate roll out easy to do),
and speed of development?

What about non-trivial applications, like a stock trading agent?

But the other point is why does everybody make languages so difficult
these days? I have a degree in Physics but couldn’t face trying to
unravel F# or Haskell. Don’t tell me trying to fathom out complex
recursive functions is a good way to spend your day.

Argument from authority. That you have a physics degree doesn’t make
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.

And really, if you have problems with recursiveness, I dare say that
you didn’t enjoy college, considering the importance of maths in the
natural sciences. Just plain ol’ acceleration is a recursive function:
changes of velocity over time are easiest calculated by recursion,
wouldn’t you say?

Functional programming requires a particularly, let’s say
anal-retentive, mindset, given the importance of type safety, and that
variables, usually, aren’t variables. On the flipside, it makes
concurrency easier, and is a boon for critical code (you know,
robotics, MRI scanners, &c.).

Of course, you have to encourage people to invent Lambda Calculus and
then turn it into a computing language but such university thesis ideas
shouldn’t be seen as the model for real world products.

Yet there were ~7000 LISP machines sold (at, say, 100 000 per unit,
that’s still quite a bit of revenue):


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.