On Sun, Apr 11, 2010 at 21:03, Andrew Harrington <aharrin@luc.edu> wrote:
Well put David.
My choices are always about me and a particular situation. I would not teach J to beginners
I would use the +-*% (+-×÷) subset of J in first grade for arithmetic, alongside Turtle Art (with stack tiles), and Etoys, including Scratch. By third grade, we could introduce programming in J/APL, Logo/LISP, FORTH, Python, and Smalltalk. At some point, we could show how each represents the same internal parse tree in quite different textual forms. What the LISPers call "syntactic sugar". This is a fundamental Computer Science concept.
or to people not crunching a lot of mathematical stuff regularly, but for the professional statisticians and electronic traders I know, J is a fabulous language, and very worth the modest learning curve.
J would enable children to crunch data sets easily, allowing a radical deepening of every subject. The learning curve would be very modest when integrated with arithmetic and elementary science, and applied to languages, history, geography, health, and gym.
J is an interesting case. Iverson did not totally open up the source.
There is a published version of the source for an earlier version of J, without the IDE, graphics, and so on. I have a copy. There has been some talk of creating a Free Software version, but no activity that I know of. However, Iverson's son Eric is considering GPLing some version of J in support of One Laptop Per Child and Sugar Labs. I need to bother him about it again, because I am about to apply for two XO 1.5 units to use in preparing an introductory text on electricity. It will use the built-in digital oscilloscope function (Measure) on the XO, among other things, and will explain how to build and take data from measuring instruments. I would be interested in working with Pythonistas on a version using numpy and scipy.
JSoftware still sells that to big users who want extra insurance for the future of their codebase, but the very powerful language is freely available. The statisticians in my university are talking about dumping traditional massively expensive statistical environments, not for a switch to some Python tool, but to J and its freely available libraries.
I fear I sometimes push Python in ways that can easily be interpreted as meaning for essentially all people and all situations. I know that inside my head I am not thinking about so general a situation, but I think I could often communicate it better.
Andy
On Sun, Apr 11, 2010 at 6:50 PM, David MacQuigg <macquigg@ece.arizona.edu> wrote:
Edward Cherlin wrote:
On Sat, Apr 10, 2010 at 09:33, Christian Mascher <christian.mascher@gmx.de> wrote:
Edward Cherlin wrote:
[sigh]
Do math tables in a math array language.
degrees =. i. 91 NB. 0..90
radians =. degrees * o. % 180
table =. |: degrees, 1 2 3 o./ radians
<snip>
Python is much nearer to standard Math-notation, that is a good thing.
LOL. Math notation is what mathematicians use, not schoolchildren. They are constantly inventing more of it. What you call math notation is known to mathematicians as "arithmetic".
There is no standard math notation.
I think what Christian means to say is that Python is much nearer to a notation (pseudocode) that might be used by scientists and engineers who are trying to express an idea involving computation, without relying on a specific language. Of course, there is no "standard" pseudocode, but if you look at textbooks that are most successful at expressing algorithms this way (my examples would be from engineering - Hachtel & Somenzi on Logic Synthesis, Stinson on Cryptography) what you see is a notation very close to Python.
Pseudocode has to be self-explanatory. There is no introductory chapter on how to read it.
We consider pseudocode "self-explanatory" to those who already know the syntax of a similar language. But it is not so, any more than mousing and icons is "intuitive" for those who have never seen them. I consider my J example _with explanatory comments_ to be simpler than the Python I was starting from, where it must be assumed that students have had a prior introduction to the syntax.
Likewise, an introductory computer language should be close to self-explanatory. It will be difficult to get math and science teachers to accept it, if they have to make extra efforts explaining the notation. Getting math and science teachers to accept computation as a vital part of their curricula is my current focus, so I wouldn't try to push something like your example above.
There are a number of math, science, and Computer Science textbooks in which APL or J is the math notation throughout, being taught only as needed without interrupting the main sequence of ideas. I can give you citations. There is very little done in this manner in any other programming language. (If you have seen some, please send me the information.) I much prefer this approach to the usual one of teaching programming language syntax and semantics in a vacuum, with no systematic application to anything.
Python is just a means to an end, the closest thing we have to pseudocode.
APLers tend to find pseudocode irritating, because the APL is shorter and clearer to those who can read it.
When someone who favors another language (typically Java) asks me why Python, I find the comparison to pseudocode to be the best answer. Specific examples, like the absence of type declarations, tends to invite unthinking reactions. (Students will make too many errors.) Even something as simple as requiring correct indentation is not obvious to someone who hasn't used Python. (Although that one does have some appeal to teachers who have had to read sloppy student code.) Ultimately, it is word-of-mouth, one teacher telling another, that I think will decide which language gets used.
-- Dave
************************************************************ * * David MacQuigg, PhD email: macquigg at ece.arizona.edu * * * Research Associate phone: USA 520-721-4583 * * * * ECE Department, University of Arizona * * * * 9320 East Mikelyn Lane * * * * http://purl.net/macquigg Tucson, Arizona 85710 * ************************************************************ *
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
-- Andrew N. Harrington Director of Academic Programs Computer Science Department Loyola University Chicago 512B Lewis Towers (office) Snail mail to Lewis Towers 416 820 North Michigan Avenue Chicago, Illinois 60611
http://www.cs.luc.edu/~anh Phone: 312-915-7982 Fax: 312-915-7998 gpd@cs.luc.edu for graduate administration upd@cs.luc.edu for undergrad administration aharrin@luc.edu as professor
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
-- Edward Mokurai (默雷/धर्ममेघशब्दगर्ज/دھرممیگھشبدگر ج) Cherlin Silent Thunder is my name, and Children are my nation. The Cosmos is my dwelling place, the Truth my destination. http://www.earthtreasury.org/