3 ms·
I feel like Python is too half baked to be a really good language to teach fundamentals. By "half baked" I mean - sort of supports functional programming, but n
by zmmmmm 8y ago
I feel like Python is too half baked to be a really good language to teach fundamentals. By "half baked" I mean - sort of supports functional programming, but not really. Sort of supports object oriented design, but not really. Sort of allows type system theory to be taught, but not really. So many sort ofs. It's a great language if you just want to get someone cranking some code. But if I wanted a language to be a base from which I could explore all the corners of computing I'd think else might make more sense (and having written that I can't really think of a good one - Scala in theory, but in practice it's awfully complex to get started in).
- BerislavLopac 8y agoWait, don't all these "sort ofs" make it actually an ideal tool for teaching the basics? I mean, we're talking about basics, so what you're saying is that you can teach the basics of a number of different paradigms with one language.
- garmaine 8y agoIt's very hard to teach the value of some approach if you can only see it implemented half-way.
- craigsmansion 8y ago> what you're saying is that you can teach the basics of a number of different paradigms with one language. I don't know about Python, but that is one of the delights of SICP and scheme in general. It's not that there isn't a OO implementation in scheme; it's that there are too many. Implementing an OO system is a medium-advanced exercise left to the reader. As a result there are many available, up to the point one wonders if "OO" can be rightfully coined "a paradigm". Constraint based/logic programming? I think it's a chapter in SICP, and covered by one of the SICP video lectures showing how to build a simple prolog-like language to illustrate some other concept Type systems? This one is a little funny. There's a SICP lecture on it (the recordings are from the 80s), and I thought it was an unfortunate choice of name, since "type systems" are a real and important concept now in modern computer languages and the naming would clash, but no, it actually was an implementation of a type system as we now use the term. I think one of the reasons scheme doesn't have "a lot of stuff" is because most stuff, if well understood, is trivial. If it doesn't seem trivial, one simply doesn't have a deep enough understanding of the concepts yet. One of the things about using scheme effectively as a teaching language is that it puts the wizardry in the actual wizard, not in the magic box with the blinkenlights.
- nestorD 8y agoF# would be a good candidate. It covers all dominant paradigms without exploding complexity.
- lozenge 8y agoThe first course doesn't need to touch on every programming style. Python is fine for learning imperative basics (preconditions, postconditions of your loops and methods, etc)