5 ms·
To be frank, why would one choose a language with a small community over any of the major languages? Beginners have to learn -how- to program on top of the lang
by andrewzah 5y ago
To be frank, why would one choose a language with a small community over any of the major languages? Beginners have to learn -how- to program on top of the language's syntax and toolchain itself, so it helps tremendously to be able to search online when they get stuck. And boy do they get stuck a lot, in my experience.
If you pick something like python, any common beginner problem should have questions answered on stackoverflow, blog posts, etc. With a more boutique language that's not the case. Not to mention the ecosystems are much larger so chances are a library already exists to do something instead of making the beginner do it themselves and overloading them. There will be more tutorials, so people can get unstuck. More documentation around the tooling and just documentation in general exists, and so forth.
---
Of course, you should teach "what you know best", but how hard is it to learn e.g. python (even just for the scope of the course) and just teach that? My favorite languages are Rust and Go, but I'm not going to foist those upon newbies just because I'm more familiar with those than javascript, python, ruby, etc.
The secondary lesson here is that teaching (well) is actually quite difficult. Coming up with a curriculum is hard. Keeping students engaged and unstuck is hard. Knowing how to program doesn't prepare you for any of that.
- WalterBright 5y ago1. D is an easy language to learn. Frankly, one will probably learn better by having to explore a bit here and there rather than having every answer instantly available, no effort required. A big part of effective learning is working to solve a problem yourself. 2. D supports many styles of programming - imperative, meta, OOP, functional, machine code - so one can quickly learn these many styles without having to learn another language. With D's inline assembler, one can even use D to learn assembler without needing to deal with all the boilerplate of setting up an assembler program. 3. Interpreted languages, for example, do a good job of hiding what is actually going on. This leaves gaps in a programmer's knowledge. 4. D has a active and large learn forum. Help is available as needed. 5. Being a D programmer marks one as innovative and willing to try new things. Many employers consider D experience on the resume as a nice plus. 6. D includes a C compiler (ImportC) so if you must use a solution in C, it's easy to access.
- andrewzah 5y agoThere are some misconceptions, I think, here. 1. People learn more than 1 language. What I'm referring to here is complete beginners who need to learn -how- to program. Once they grok that, it's not difficult to move to other languages, obviously with some exceptions. 2. It's not the job of a -language- to teach everything about programming or networking or computers or various protocols. That's the job of a curriculum. 3. There are way more $major_lang jobs than jobs for D, Clojure, Lisp, Crystal, or any of the other languages that are significantly less used. The sky is the limit for how many languages people want to play around with and learn, once they know enough to start learning other languages by themselves. No recruiter is gonna be like "oh, you learned $major_lang... Even though you likely applied to this role because our stack involves $major_lang and that's a language that you know well..." 4. Help, resources, meetups etc for $major_lang are orders of magnitude more plentiful than for D, etc. Imagine telling a student "no, no, you need to prove yourself by making forum posts for <niche language that I personally like and use> instead of having stackoverflow questions or tutorials to follow" in the case of getting stuck. Of course students should strive to do as much as they can themselves, but you would be surprised to see what beginners get stuck on and just need a gentle push to get going again. 5. Being able to be independent is more engaging than having to constantly pester a teacher or a forum. If a student wants to be a go-getter with e.g. python or lua, there are communities and resources to build games or websites, etc. And those already have had common stumbling block questions answered because they have large communities around them. For the goal of teaching someone how to program, any language other than the major ones like python, javascript, ruby, c++ strictly make it more difficult for students because of the smaller ecosystem, lesser amount of documentation, and smaller community in general. I have nothing against D or other niche languages, but I'm against picking languages just because I'm familiar with them. It can be difficult for experienced programmers & power users to remember that there's a sheer amount of information that needs to be learned in. There is no reason to make that more difficult for students.
- WalterBright 5y agoI don't buy learning D is more difficult. Everything needed is available, for free. Once a certain threshold is met, more doesn't add much of anything. It's easier to transition from D to C++, or D to Python, than to transition from C++ to Python or vice versa. You're right, it's not the job of a language to teach everything. But since D supports multi-paradigm, it's easier to use D to teach it.
- gameswithgo 5y agoGo is a fantastic first language imo. It is simple and yet still exposes the concept of pointers without having to worry about being safe with them. Ive taught a course with it which was well received
- xigoi 5y agoI find that searching for help with popular languages will more often than not bring up heaps of clickbait articles with trash code. Do you want newbies to learn from that?
- bachmeier 5y ago> Beginners have to learn -how- to program on top of the language's syntax and toolchain itself, so it helps tremendously to be able to search online when they get stuck. And boy do they get stuck a lot, in my experience. While this is not a crazy argument to make, it applies to people teaching themselves to program. If you're teaching someone else how to program, you're very carefully introducing new ideas, you're teaching them what they need to know, and you're answering the questions when they get stuck. You are referring more to university classes that "teach" programming. That's a little different from this, where the author was actually teaching.
- _8j50 5y agoBecause it is harder. Why do you have brutal bootcamps when you join the military? To eliminate your assumptions and break you, and show yourself your limits and form a foundation upon which you can build something that lasts. One's experience of adopting to new hardships and challenges can either be an uphill battle or downhill. You start with a hard language with manual memory management and small community you are forced to figure things out on your own, learn by helping others and contributing libraries. Then you can appreciate easier languages and learning them would not be as steep of a curve compared to starting off easy.
- girvo 5y agoWhile I 100% agree with your overarching point, I think it's interesting that learning programming myself in the late 90s meant that I had far fewer resources. I got very very stuck, for sure, but it meant that I wasn't just copy-pasting solutions I didn't understand. This was exacerbated by GML (the Game Maker Language) being the first real programming language I learned and used a lot. Idiosyncratic to say the least, but taught me "OOP" in terms of how scripts attach to objects to define behaviour. Fascinating stuff. Game Maker 4 is the reason I'm a programmer two decades on!
- cozzyd 5y agoThe size of the community has not much to do with pedagogy (aren't there a bunch of classes using "teaching languages," for example?).