Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I wonder how many of the True Believers know, let's say, five diverse computer languages fluently. I know it's non-zero, but I bet that would cut a lot of them out.

(A "true believer" for my point here isn't someone for whom Rust is their favorite language or their generic first choice; it's someone who gets angry if someone else doesn't choose Rust for some task, and especially gets publicly angry.)

I bet for a lot of the True Believers, they learned some language that isn't very good, like C, or C++-as-taught-by-schools, (which is a very bad language, much worse than C++ as a whole!), or Javascript at its worst, and then encountered Rust. Hey, I get it, that would be a pretty big leap! But you've got a path dependency in your opinions there.

I'd encourage any such person to broaden their horizons a bit. It's OK. Rust really is a pretty good language and you probably won't change your opinion of it much. Plenty of people I know and respect who do know many languages still have Rust as their favorite and general default language. But it is not the only good language in the world, and other languages do offer things Rust does not. Consider trying out the Erlang environment (either via Erlang or Elixir), or Haskell, or Lisp.



C++-as-taught-by-schools, that's a good way to describe it. Now, for a complete beginner, as a first language it's actually not so bad (this was my intro to programming) as long as you realize it's bad. The course structure is basically variables -> loops, conditionals -> arrays -> functions -> references & pointers -> dynamic memory allocation -> i/o files -> structs & classes -> encapsulation, polymorphism & inheritance. Maybe they'll introduce the STL vector, and maybe the smart pointer. After that, you're probably ready for algorithms and data structures: search and sort, stacks and queues and hashmaps and trees and graphs, all taught basically as 'C with classes', the justification being, you need to learn how these things are built under the hood (as if you're going to write C++ libraries for production, which you most likely aren't, but you should be aware, is their argument). Well, it's an education anyway.

Then (now you're about a year in), someone will tell you, you poor thing, you've been abused by being taught that way! Use modern C++ and the STL and never use a raw pointer again. Drop that OOP stuff, learn about lambdas and functional C++ instead. You then read flame war threads about the proper way to do things, which you finally learn to ignore as they're just people with inflated egos throwing things at each other online.

Finally you understand: people write firmware in C because it's about as low-level as you can get without going to assembly, and people write big projects and games in C++ because of all the libraries and the STL and good performance speed-wise, and then there are people who've abandoned C & C++ for Rust because of the memory leak issues and perhaps the convenient build system, and you never ever again write the kind of code you wrote for your assignments in your C++-as-taught-by-schools courses.

Finally, you take a few Python courses and marvel at how much easier it is to code in Python, but you feel a bit better off than those who learned to program in Python, because, you at least know what pointers are. Then someone tells you, hey, learn some Java too, it's easy to get a boring corporate job if you know Java. Anyway, that's what schools are teaching right now in their core intro CS curriculum, more or less.


> Then someone tells you, hey, learn some Java too, it's easy to get a boring corporate job if you know Java. Anyway, that's what schools are teaching right now in their core intro CS curriculum, more or less.

Your description accurate but a little off because most students at least in America learn Java first as part of their AP Computer Science course, and a lot of colleges use Java as an intro language for this very reason.


> Consider trying out the Erlang environment (either via Erlang or Elixir), or Haskell, or Lisp.

Isn't the whole point that Rust is a replacement for C/C++, specifically the whole "close to hardware" and (basically) zero-cost abstractions? If you can afford things like a GC or a VM there are way better languages, that's for sure.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: