On 2/27/2013 12:04 AM, Bill Rowe wrote: > On 2/26/13 at 1:11 AM, email@example.com (Richard Fateman) > wrote: > >> And for people without much Mathematica experience, or who are not >> adventuresome and just use the syntax they learned in a math class >> and maybe from Pascal or C, these things will remain mysterious >> indefinitely. > > And? Are you arguing Mathematica should be more accessible? I'm not arguing here that Mathematica should be free, if that's what it means to be accessible. (I suppose such an argument could be made, but that's not the point here.) Let's refer now to the programming language. I'll use a shorthand EF.
> Easier to learn? I'm not even arguing that. I'm saying that EF as it exists is hard to understand, and that there are other languages that are easier. Understanding one of them (e.g. Lisp) may be sufficiently easier, and would have sufficient "overlap" that learning Lisp might make using EF easier. I think that was the gist of the original question.
Or are you suggesting one should not have to > spend time with Mathematica to be come reasonably proficient?
I think that becoming proficient in the use of EF requires more time than would ordinarily be expected for using a system occupying a similar technological niche. Or said another way, the EF language is harder than necessary to learn. > > Consider some one who has some math background and whose > programming experience is Fortran. If they then needed to move > to C or C++, wouldn't pointers be rather mysterious indefinitely > if they didn't spend effort to study C or C++?
Pointers can be fairly easily explained by analogy with array indexes into memory. The subtleties of course can be subtle, but I don't think they would be mysterious indefinitely.
Why should it be > different for Mathematica?
EF is quite different. It uses pattern and matching and is rule based. It has stuff like Hold and friends. Something I haven't mentioned recently, I think... It has peculiar precedence and unusual symbols and peculiar lexical rules. Like the difference between (3+x)/.3->4 and (3+x)/. 3->4 and 3+x/.3->4 etc.