Go is not only a good teaching language, it’s an excellent one for first time programmers, including children.
I’m becoming skeptical of this “teaching language” thing. At this point, I’ve seen someone claim (through their own experiences) that language X is a great teaching language, for all languges. Maybe the truth is all languages are pretty much the same when you don’t know any language.
I’ve spent a lot of time teaching people of all ages to program.
One thing I’ll say about teaching kids: they respond way better to learning HTML + CSS than any other language I’ve done it with. They’re then much more excited to learn another language once they see how they can make their sites more dynamic.
I think the issue is more one of “will what you don’t know bite you?” and “how much must you know to recover from the bite?”.
In this, Golang itself being a small language is a definite win. The “will bite you” is kept to specific domains where the libraries can’t entirely shield you from, eg, “HTTP has error codes”, and you can learn those issues piecemeal without jeopardizing everything.
Everyone’s different; some people are fine learning to program with C++. I suspect that the number of people for whom that is true is far smaller than the number who can learn fine with Go, or Python. So there’s a continuum of suitability of a language for learning, and it’s not a straight line because it’s parameterized by the type of mind the student has, but you can find a “most suitable for the most people” language, of the pool of those languages available. Go makes sense here.
Maybe! I think your response is missing my point. You’re making all these assumptions based on what you think are important for learning a language but these are just things you think and not necessarily reflective of reality. I’ve seen “evidence” for pretty much every language backing up the claim that it’s a good teaching language and people rationalizing why the langauge is good just like you’ve done. Maybe the reality is every language is equal when it comes to teaching because it’s all entirely arbitrary in the first place to a new person.
Potentially of interest is my coauthor’s article, “Teaching Haskell to a 10 year old”
Kid’s all about Haskell now and can’t wait to do more of the book (he hasn’t had access to a computer for awhile and will resume soon).
I’ll soon start a shared journey with a 12 years old and I think the get excited part is quite important, so I’m choosing processing (for creating visual art applications quickly) and html + css.
I’m with @apy on this one. I’ve seen articles talking about Java, Python, Ruby, C, and I think even Haskell all being great teaching languages. I’ve never seen any kind of attempt at scientifically quantifying the effectiveness each one though.
I love go as a language, don’t get me wrong, but overall I tend to call B.S. on these types of claims. As @philpennock said, everyone learns differently.
I love go as a language, don’t get me wrong, but overall I tend to call B.S. on these types of claims.
You’ve basically cherry picked out a small and inconsequential part of the OP and called it BS. The point of the OP wasn’t to lay claim to what “good teaching language” means. The point of the OP was to share a valuable experience. That, is certainly not BS. Indeed, the experience is not invalidated because the OP decided to pick a combination of words that apparently invited pedants to quibble over.
Yes, I know you didn’t say anything bad about the actual experience relayed, but my gosh, do you really think the OP was trying to draw a line in the sand on the phrase “teaching language”? Reading the comments in this thread would certainly suggest so!
I went and re-read the post, and it does seem that’s the main point of the post? Yes, the author is relaying an experience, but the point of the post is to at least tentatively propose a generalization of personal experience to a claim that: 1) Go is a good language to use for teaching programming; and 2) there are a specific set of language/tooling features that make it good for that purpose (left-to-right syntax, small set of keywords, go fmt, the go tool and workspace, etc.).
It’s an experience report with a sample size of 1 and lots of first hand experience. I see little to no value in calling that BS.