Comments (9)
@kuza55 I'm still at work, so I can't address this at the moment, but I saw that you closed it. Did you find an answer somewhere else?
from rust.
Ok, done for the day.
Exercism absolutely does aim to create a pathway to mastery in each language--but the tracks are community contributed, and it often takes a bit of time (and feedback!) to figure out how to smooth out the rough edges and improve the exercises.
Usually when launching a new language track the exercises are based off of exercises in other language tracks--thing can be a useful way to get started, but it also means that there's a good chance that some things won't really show off the language features really well, or that something that is easy in one language is harder in another.
In languages like haskell, elixir, go, and ruby, we've tweaked and re-arranged. Rust, PHP, and Java are still very new, and so it's more likely to not quite have found a good balance.
Here's the current progression: https://github.com/exercism/xrust/blob/master/config.json#L7-L29
We're grateful for suggestions on how to rearrange things to improve the experience.
from rust.
I closed it since I felt like I was just complaining with no real point.
I have some more concrete things:
a) Rust's string handling is pretty crappy; lots of the exercises require lower casing things, and the library support for this is pretty terrible, if you check out the anagram solutions you'll see that it takes at least 4 functions, or two nested loops to lower case a string. You can see the steep drop in completion rates (35 -> 10), though I'm not sure if that's typical
b) The Allergies exercise is particularly non-obvious since you need to realise that you need to add #[derive] declarations to your enum for equality and casting to work. Again there's a drop in completion from 8 -> 10
c) In general, the tests do not give function signatures. Eventually you figure out what the tests are looking for, but this seems completely backwards, in one case making the definition was actually interesting (specifying lifetimes), but mostly it's trying to figure out what types the tests are expecting from their implicit type usage.
d) Nucleotide Codons is particularly badly documented. The mappings should be explicit.
Out of all the exercises I have done (15 so far), the grade-school one has been the most enlightening, not because of any code I wrote, but because of code I was not able to write. I tried to write a test that would result in a data race with my implementation, but Rust wouldn't let me. I'm not really sure how to capture this here though.
from rust.
Regarding nucleotide-codons, that was a bit of an oversight on my part. I meant to add a link to the relevant wikipedia page but forgot that. Should be fixed soon.
from rust.
I don't think you should link to the wikipedia page, you should put all the details there, I don't care to have to learn anything about DNA when I'm trying to learn rust. Just put the shortcode mappings right there.
from rust.
I would say that isolating the technically important bits from a problem statement and background information is part of the skills you need to be a programmer. As exercism aims to teach programming and not just "how to do X in language Y" making you practice this skill is sensible.
from rust.
Fine, maybe I'm not your target audience, but I would point out that I get enough of that in my day job, I just want to learn about rust specifically.
from rust.
You're absolutely welcome to contribute exercises, or modifications to exercises, that you feel would do a better job introducing someone to Rust. Exercism is all community sourced after all. One of the best ways to learn something is to (attempt to) teach it. I've gotten a lot of value out of building out the Haskell track and providing code review.
In the first pass of implementing most of these exercises I found it much quicker and easier to do a shallow port from one language to another, rather than reconsidering the design to suit the language. It takes the efforts of people like you to take it to the next level and make specific suggestions or pull requests to improve the track.
from rust.
The same happened in the Ruby and Go tracks. At first it was completely slap-dash, and then as people got stuck or frustrated or bored we moved things around and made them more rubyish or goish, or just more interesting.
from rust.
Related Issues (20)
- Test in CI that we're in sync with problem-specifications HOT 2
- Simply linked list test error HOT 1
- Pin test runner to a specific version HOT 1
- Document / reconsider `topics` field in track config HOT 1
- Improve example solution testing scripts
- CamelCase test unintentionally removed from acronym exercise HOT 2
- Building a training set of tags for rust HOT 25
- Tests fail with no output HOT 16
- Tests don't pass when sending Cargo.toml with optional dependency HOT 1
- Remove all util functions from test files HOT 6
- Test in CI that stubs don't generate clippy warnings HOT 1
- Move more CI tests to rust tooling
- Concepts for this track are not displayed HOT 1
- word-count: change interface from u32 to usize
- test type_override fails even when correct solution is made in macros lesson HOT 1
- Performance issue about the Isogram problem approach HOT 1
- Add test that templates match generated test suite HOT 5
- One of two-bucket's test case is wrong HOT 3
- Improve exercise order HOT 1
- new test case for Phone Number HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rust.