I wrote about it in frustration a month ago is that it doesn’t take a little longer to be effective in Rust compared to other languages, it takes 10 to 20 times longer
I head that and mostly interpret it as “learning a different paradigm” takes just longer. When I started I used to think that languages are very different from each other but actually the differences between Python and Ruby and Perl are mostly syntactical, switching between C# and Java is for the biggest part dominated by knowing the APIs and where to look for things. Whereas going from Java to Rust ist… a bigger leap. But the leap is roughly the same when learning Haskell, OCaml or becoming proficient in Prolog, APL/Factor etc. This time it is a different way to think about the problem instead of where to put the squiggly parens.
This matches my experience. I’m many months and at least two books worth of reading into my rust journey and I’m still struggling a lot. I think the language actually requires such an enormous change in how I plan my program, which tools I use, and how a program is coded that I might need to just start over and not assume anything. The actual coding process I use in other languages, which is write an iota of code, run it, rinse repeat doesn’t seem to be viable in rust and I need to figure out what the fluent rust coders actually do at an expression-by-expression level of detail.
I’m not a “fluent Rust coder”, but from the Rust I have coded a Haskellish strategy seems to work: write an iota of code, try to compile it, rinse repeat (eventually run when it compiles. sometimes.)
I get into trouble a few minutes later when I realize I used the wrong type for something (like I used String but whoops I should have used Path). Now all of a sudden I’ve got tons of unused import warnings and like 0% of the string API overlaps with the Path API and I have to basically start a fresh project and port the code over based on the dependency graph bit by bit.
I head that and mostly interpret it as “learning a different paradigm” takes just longer. When I started I used to think that languages are very different from each other but actually the differences between Python and Ruby and Perl are mostly syntactical, switching between C# and Java is for the biggest part dominated by knowing the APIs and where to look for things. Whereas going from Java to Rust ist… a bigger leap. But the leap is roughly the same when learning Haskell, OCaml or becoming proficient in Prolog, APL/Factor etc. This time it is a different way to think about the problem instead of where to put the squiggly parens.
This matches my experience. I’m many months and at least two books worth of reading into my rust journey and I’m still struggling a lot. I think the language actually requires such an enormous change in how I plan my program, which tools I use, and how a program is coded that I might need to just start over and not assume anything. The actual coding process I use in other languages, which is write an iota of code, run it, rinse repeat doesn’t seem to be viable in rust and I need to figure out what the fluent rust coders actually do at an expression-by-expression level of detail.
I’m not a “fluent Rust coder”, but from the Rust I have coded a Haskellish strategy seems to work: write an iota of code, try to compile it, rinse repeat (eventually run when it compiles. sometimes.)
I get into trouble a few minutes later when I realize I used the wrong type for something (like I used String but whoops I should have used Path). Now all of a sudden I’ve got tons of unused import warnings and like 0% of the string API overlaps with the Path API and I have to basically start a fresh project and port the code over based on the dependency graph bit by bit.