3 ms·
I'm a bit skeptical, as the author seems to be comparing to languages which are rarely used for teaching children. Comparing "go run" to makefiles, for instanc
by keypusher 11y ago
I'm a bit skeptical, as the author seems to be comparing to languages which are rarely used for teaching children. Comparing "go run" to makefiles, for instance, indicates that Go might be easier to teach that C, which isn't saying much. If the author was previously using a different language and it took the children 30 minutes to complete a simple task which now takes only 20 minutes with Go, that sounds great but perhaps there are other languages even better suited to teaching where they would pick it up in 5 minutes. Specifically, most of the points raised in favor of Go could be applied to Python, which seems to be the most common teaching language right now. I would be interested to know if there are reasons Go is a better teaching language than Python.
- _yosefk 11y agoThe biggest one of his points which doesn't apply to Python is static typing. The trouble is that the drawbacks and the benefits of both static and dynamic typing are almost invisible in small programs. So you might say types help kids develop their reasoning or that the lack of static types helps them get up to speed more quickly and it would sound plausible in both cases... The fact is that for toy programs it hardly matters.
- wiremine 11y ago> I would be interested to know if there are reasons Go is a better teaching language than Python. I don't know if it is _better_, but Go has a number of programming concepts you don't see in Python: - Static typing - dealing with pointers and dereferencing - building binaries vs. using an interpreter - Non-class based OOP I can see these being helpful to get under your belt sooner rather than later. Go wouldn't be my first choice, but I found the write-up helpful. I'm predisposed to think interpreted languages like Python are "easier" for kids. Good to see something that shakes that up a bit. EDIT: bullet points layout
- icebraining 11y agoYou can add the first three using Cython, which is a small step from Python. As for struct-based OOP, why would you want to teach that?
- aaron-lebo 11y agoPython is a much bigger language than Go. Metaclasses, decorators, list comprehensions. I could list feature after feature. Granted, some of these are rather advanced features, but their very existence only adds complexity. Go, because it is so (even overly) simple works really well in this domain. It's also nice because with type deduction it feels dynamic, but it still has some very C-ish features. You could easily go "up" to Python or "down" to C from Go. Even after years of Python programming, there's a lot of concepts from low-level languages which you never touch.
- pcwalton 11y agoIn place of metaclasses and decorators, Go has some combination of "go generate", the reflect module, magic anonymous structure embedding, and structure field tags, all of which add up to a good deal of complexity and none of which Python has. Similar story with list comprehensions vs. Go's magic builtin for loop syntaxes. I think Go probably does have simpler semantics overall than Python does, but not by that much.
- mcphage 11y ago> but their very existence only adds complexity Not when you're just teaching programming to children. You stick with a subset of the language that makes sense for the age group you're teaching; the existence of features beyond that doesn't matter, because they won't come up.
- 0xdeadbeefbabe 11y ago> it took the children 30 minutes to complete a simple task which now takes only 20 I think children would do fine and learn stuff by doing machine language, and some nicely tactile binary input system. They'd take much longer to do anything they could do in 30 minutes in go though, which implies the metric is not so good.
- keypusher 11y agoIf the metric implies that assembly language is a bad first language for kids, it seems quite accurate to me.