## MATLAB and APL: Meeting Cleve Moler

*June 14, 2012 at 10:11 am* *
4 comments *

I have often described MATLAB as “APL with a normal character set,” but I didn’t actually know anything about how MATLAB came to be or if there was any relationship. Last night, I got to ask the man who invented MATLAB, Cleve Moler, at the IEEE Computer Society Awards Dinner, where Cleve was named a “Computer Society Pioneer.” When I introduced myself as coming from Georgia Tech, he took notice. “Georgia Tech is a big MATLAB user!” We teach 1200 Engineering students a semester in MATLAB.

Cleve developed MATLAB (in Fortran) as a Matrix Calculator (explicitly, a “MATrix LABoratory”) for his students. There was no explicit tie to APL, but he saw the connections. He said that he’s always seen MATLAB as “portable APL” because he used a traditional character set.

It’s not just the character set though. “Iverson showed me J. I wanted MATLAB to be understandable by normal people.” He said that someone once converted a program he’d written in MATLAB into APL. “I asked what that was. They told me, ‘That’s your program!’ I couldn’t recognize it.” APL is about being uniform about everything, but MATLAB “is a mishmosh of all kinds of things.”

Others joined in the conversation. “What do you think about Mathematica?” Cleve responded, “Mathematica is APL for the 21st century. Mathematica has a uniformity about it.”

Cleve’s ideas about what make a language usable “by normal people” are interesting. The success of MATLAB in terms of its use by so many people in so many different contexts, domains, and application areas give him real authority for making such claims. He sees a “mishmosh” as being *easier *for people to understand than uniformity. Marvin Minsky famously said that the brain is likely a “kluge.” Do we actually prefer messy languages, with less uniformity, perhaps as a reflection of our “kluge” nature?

Entry filed under: Uncategorized. Tags: APL, Mathematica, MATLAB, programming languages.

1.alanone1 | June 14, 2012 at 11:04 amWell, our genetic brains prefer case-based remembering and case-based reasoning via simple matching of situations to remembered solutions.

People are not really “understanding” mismoshes, but they can remember them as separate cases.

I think the tradeoffs are interesting here. Most people have to learn how to actually think … and part of this is learning the style of analysis-synthesis used for dealing with combinations of ideas in math, science, and computing.

Staying with what is easy for a beginner vs helping the beginner learn to think in new ways is a terrible education bug that is very prevalent today.

I would posit a goal for “real education” that there should be a transition from cases (which are extremely inefficient in most ways as knowledge increases) to systems of transformations.

A great language lurks somewhere in between the MATLAB type languages and the LISP/APL type languages.

Cheers,

Alan

2.bob therriault | June 14, 2012 at 3:21 pmAlan,

One of the things that I really enjoy about J is that it is a language that expresses mathematical concepts as programming.

The trade off is that you need to relearn how to express mathematical concepts. The reward for learning this new notation is that the computer becomes a partner in the exploration of mathematics. I find these tools affect not just what I think, but how I think.

The reluctance to teach new ways to express acquired concepts is symptomatic of the ‘terrible education bug’ that you describe. How do we teach this? For an adult this is a challenging, because it is literally child’s play. ;)

Cheers, bob

3.alanone1 | June 14, 2012 at 4:03 pmHi Bob

Yes indeed. In the 60s I was a big fan of APL — or “Iverson” — as it was called before APL360.

The difficulties here overlap with the difficulties of getting “real math” taught because too few adults — particularly elementary school teachers — have learned actual mathematics.

“The fault dear Brutus is not is our stars but in ourselves” …

Given that society and social motivation is so critical for such a large percentage of the population, we are faced with a daunting task with regard to the human side of teaching and learning.

The problem also exists in terrible fashion with regard to programming. “Simple brick laying” type programming is somewhat accessible, but is not at all what people should be learning.

Cheers,

Alan

4.bob therriault | June 14, 2012 at 7:29 pmAlan,

We agree on many of these things, but I wonder if it is not possible to use these same social motivations as a way to deliver the information. As formulaic as a television program like ‘Big Bang Theory’ may be, it has made being different and intelligent more socially accessible. I would hope that we can couple the strength of our social instincts with a developmentally appropriate approach to instruction, and progress beyond the understanding of numbers that seems to begin and end with arithmetic for far too many.

For programming I also find it challenging that most platforms are written for “brick laying” languages. This means that as much as I enjoy thinking with J, the practicality of getting things done often rewards the bricklayers and their tools. To bring it around full-circle, I think this is was one of the motivations for creating MATLAB in FORTRAN rather than APL.

You have given me much to consider. Thank you.

Cheers, bob