Charles Hartman wrote: >> Actually, I am using Matlab, which is dynamically typed as well, in >> some of my courses and I know it works well until types become >> important.
Matlab is a far cry from Python, as a programing language. Indeed, until recent versions, it was not the least bit dynamically typed, every variable was a matrix of doubles. It had some tricks for interpreting them as integers, booleans, or strings in some cases, but that was all there was. More recent versions do support other "real" data types, but the it's really more "weakly typed" than dynamically typed. Python's dynamic type system, is in fact, quite strongly typed. A given Python object is one type, and one type only and will not be interpreted differently depending on context. NAMES are not typed, but OBJECTS are. There can still be a bit of confusion when the same name refers to different objects of different types at different places in the code, but it's not as bad as Matlab. As for Matlab vs. Python: Anyone using Matlab, but feeling like it's not a "real" enough language for more powerful use, or to teach more about programming, should really look into using numpy (and SciPy). It gives you a powerful flexible array data type, similar to Matlab's but more powerful. And it gives you all the power and flexibility of Python. Numpy arrays are essentially statically typed: when they are created you define the size, shape and data type, so they can really teach a lot about data typing. >> Sometimes they claim that the program >> (the interpreter) isn't working right. and people also wonder why: x = 0.0 while x != 10.0: x + 0.1 never terminates. In any language. It's an opportunity for teaching. In fact, if you make a data type mistake in C, you get a segfault, or totally bogus results. People don't blame the compiler, because they expect C to be hard. The fact that users blame the interpreter is because most of time things do work as expected! I agree with another poster (and Joel Spolsky), that really learning about things like data types, pointers, recursion, etc, is critical to being a computer scientist, or a truly versatile programmer. However: 1) A lot of people can benefit from knowing how to do some programming that are not ever going to be computer scientists or professional programmers: Python gives them a very useful tool for a wide variety of programming needs, without the painful learning curve. 2) Even if someone is going to become a computer scientist or professional programmer, why do they need to learn all those painful details first? I think Python provides an excellent introduction to a lot of what programming is about, and it can be later supplemented with a course in Lisp, or C, C++ ,or even JAVA, later. Frankly, I wouldn't call anyone a "real" programmer that has only used one language. Any one language. In some ways, JAVA is the worse choice: you don't learn about the nitty gritty details of pointers and memory management that you get from C, and you don't get the high-level power and flexibility or Python either! -Chris Does that help? -- Christopher Barker, Ph.D. Oceanographer NOAA/OR&R/HAZMAT (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception [EMAIL PROTECTED] _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig