Alex Martelli wrote: > The only "single language" I could see fitting that role is Mozart, > deliberately designed to be SUPER-multi-paradigm -- not even Lisp and > Scheme (the only real competition) can compare.
Don't know Mozart. After 5 minutes of googling, it looks like strictly a high-level language. Features like network transparency are jumping the gun for undergrads. But it has potential. > While Mozart appears cool, I really think that a wider variety of > languages would help -- some machine code (possibly abstract a la > Mixal), C (a must, *SO* much is written in it!), at least one of C++, D, > or ObjectiveC, either Scheme or Lisp, either *ML or Haskell, either > Python or Ruby, and at least one "OOP-only" language such as Java, C#, > Eiffel, or Smalltalk. Yeah I agree that more is better. The problem is using a new language every couple courses without bogging down in implementation details. Personally I'd just say "Here's a book, learn it yourself". It's what they gotta do on the job anyway. > For a tipycal CS bachelor course, a set of over > half a dozen languages might be overkill, admittedly (particularly > because these are just the "general purpose" languages -- you no doubt > also want to present XML and friends, possibly XSLT, definitely SQL, and > several other *special*-purpose language classes, too....!!!); too much > time would end up devoted to semirelevant syntax differences... Here's where I disagree. XML? Conceptually (and more elegantly) covered as LISP s-expressions. XSLT? Just a bastardized spawn of Prolog. SQL will be covered in databases. My problem with most domain-specific languages is 1) they're usually too applied for a teaching environment and 2) they're easy to pick up once you master general programming concepts. The one exception that's really invaluable is regular expressions, but those are universal enough they get covered elsewhere. > Absolutely, I'm thinking about CS courses specifically -- for science > and engineering courses, I'd have much different sets (yes, Virginia, > there ARE fields where you still absolutely need to know Fortran!-), for > humanities and soft-sciences other ones yet, and the real world is a > different (and frightening;-) sort of place!-) Yep, I hate how schools lump the CS majors and science majors into one intro programming course. They both need to learn basic programming concepts, but the majors need to understand implementation while the non-majors need productivity. I'd put the majors on something like C and the non-majors on Python (or Fortran if need be). But that won't fly because non-majors who convert would have to retake the class. So maybe put them both on Python and switch languages for the second course. Rougher for the majors, but there's little reason for non-majors to know C/C++/Java/Pascal. Scheme is an interesting option, I'm not sure how that would work out. -- http://mail.python.org/mailman/listinfo/python-list