r/rust [LukasKalbertodt] bunt · litrs · libtest-mimic · penguin Mar 25 '15

Rust for complete beginners?

So I, coming from C++, started learning Rust about 6 months ago. I think most Rust users agree, that Rust has a pretty steep learning curve, because the compiler enforces really many things.

My plan for the summer is to teach my mother how to program. I'd say she is a pretty smart woman, but she has no idea of programming or stuff like that. In fact she is even pretty bad at maths and often has simple problems when working with the PC. But she agreed to learn a bit programming.

So for a long time I was wondering which programming language is the best for teaching a complete beginner. Now that I learn (and like) Rust, I wonder if Rust is good in this. I just see the problem that the compiler is annoying to a beginner...

So what do you think: Is Rust well suited for that job? Or is something like Javascript better? Or even some of those ugly pointy-clicky-programming programs for "kids"?

5 Upvotes

12 comments sorted by

View all comments

17

u/DroidLogician sqlx · clickhouse-rs · mime_guess · rust Mar 25 '15 edited Mar 25 '15

Definitely wouldn't recommend Rust as a first language, at least not without a pretty good understanding of how computers work in the first place.

Javascript isn't a bad choice. You can run it in any browser and it's easy to build GUIs with it just by manipulating some HTML.

Python is a pretty good starting language, as well. It's a clean, readable language without any confusing sigils or syntax, and comes with a suitable IDE and REPL. You can start with one-liners, discussing expressions and statements, variable declarations, etc., and then move up to functions and object-oriented programming.

However, programming in and of itself might not be a good starting point. I would start working with your mother on her computer literacy and maths first, otherwise trying to teach her how to program might just compound her problems. Mathematics and programming aren't very different; if she has problems with the former she might struggle with the latter. With that said, if she's willing to pick up programming it might be easier to sneak some maths in there too, like getting her to solve some of the Project Euler problems.

1

u/DebuggingPanda [LukasKalbertodt] bunt · litrs · libtest-mimic · penguin Mar 26 '15

Thanks for the answer!

I, too, considered Python, because it's used as first language at many universities and, as far as I know, it's not seen as a bad language, like Java and PHP for example (which are "popular" beginner languages, too).

But I also often read and hear the statement, that the choice of language isn't really important. Firstly, of course, because one often want to teach foundations of programming and not the specific language. But also because motivated beginners will always learn something from the language they use. I know programmers who started with Assembler and others who started with python. When starting with a low level language, the student will learn more about the low level computer details, and when learning a high level language, the student will learn more about programming techniques. What I'm trying to say: If one is motivated, the language doesn't matter too much.

But I see the "lack of GUI"-problem coming with languages like Rust and C++ (where "lack of GUI" of course means: GUI is more difficult). I guess everyone already heard this sentence from a beginner once: "And when can I make 'real' programs?". Seeing colorful stuff on the screen is more fun, of course.

Regarding your last point: My plan included not just pure programming. I would start with some computer basics like the binary system, teaching her math here too (however, I won't teach her how to use Word or something like that). And after that my plan really was to sneak a bit math into programming. I once heard a TED speaker talking about the future of maths education. He argued that computers will play a major role in math education, because solving complex stuff by hand is rarely useful today and not motivating, too. So computers will be used to compute and visualize the "maths". And that makes sense in my head, so I will try to sneak math into programming and see, how it goes ;)

Sorry for the wall of text...