Single conceptual tasks are split across multiple Task fields (there are 13 tasks sections in the instructions, while in reality only four tasks are asked of the student).
Trying to pass the tests (online editor, can’t access CLI atm) I get this error:
Errors occurred during startup!
Found an unclosed tag while registering test case 'alarm_control: works
correctly for pointer' at /tmp/speedywagon/speedywagon_test.cpp:37
make[2]: *** [CMakeFiles/test_speedywagon.dir/build.make:70: CMakeFiles/test_speedywagon] Error 1
make[1]: *** [CMakeFiles/Makefile2:111: CMakeFiles/test_speedywagon.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
Errors occurred during startup!
Found an unclosed tag while registering test case 'alarm_control: works
correctly for pointer' at /tmp/speedywagon/speedywagon_test.cpp:37
make[2]: *** [CMakeFiles/test_speedywagon.dir/build.make:70: CMakeFiles/test_speedywagon] Error 1
make[1]: *** [CMakeFiles/Makefile2:111: CMakeFiles/test_speedywagon.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
That was my fault. I trusted our CI tools on github too much after an edit.
I made a PR to fix that problem shortly afterwards, but for the Cpp repository, I need another maintainer to review, before I can merge it.
Thanks to another PR, we can fix the bug, but not the formatting that I borked with incompatible markdown.
My co-maintainers are unavailable at the moment, so there was nothing I could do but wait and ping people
Thanks for the approval, I was able to add my corrections.
The exercise is now working as intended. At least my test worked fine.
@NachoGoro, @renatalucia, @senarclens and @ambaiste., I hope it is okay to ping you. I think you solved the exercise already.
As I made up that exercise, it is not a very high standard of good or bad to solve it myself. So I am very interested to hear your thoughts about it.
Hi @vaeng,
thanks for asking. I’m writing this from the top of my head, I sincerely hope that any contained criticism doesn’t come over as offensive.
First of all, I like the exercise (like I enjoy most exercises on exercism).
As I don’t yet know coding standards and guidelines used on exercism, feel free to dismiss the following if they are ok by exercism’s standards.
the line length of the README.md is fairly long and depending on the environment used, it might be easier to read if the lines were re-wrapped at a defined max. length
imho part of C++ greatness is that programmers are spared from using raw pointers most of the time; maybe adding a line or two in the README explaining that while pointers can be very useful, they can also cause serious trouble when used incorrectly might be a good improvement
you could consider recommending passing const pillar_men_sensor* whenever the the pointed to object isn’t changed; that would also mean adjusting uv_light_heuristic to expect a const pointer to vector
Either way I’m very thankful for your addition to the C++ exercise collection and concepts!
Exercism uses one-sentence-per-line in the markdown files. The markdown files are rendered and displayed on the website; they aren’t meant to be read by users.
I’ll leave the track-specific comments alone, since I don’t know C++ ;)
Thank you, it’s a pleasure to spread the knowledge. I will try to discuss your ideas. For the long sentences, it is my fault. The coding guideline for markdown has it on one line, but I make them long
There are passages in the docs, to steer people away from pointers. I hope that would be enough
There is a PR to implement a smart-pointer exercise. If you want to read the related teaching material, you can: Smart Pointers in C++ on Exercism. They have been online for a while, but I wanted to have a good raw-pointer exercise to have a progression.
For context, I’m an experienced C++ engineer with a career dating back to using raw pointers in production code, and I thought the exercise was a fun little iteration and throwback. I think it was a little more ‘exploratory’ in structure than many on exercism, and I would probably have prefered a 1:1 mapping of “task” to function, but exploration is a useful learning tool and development is done better with a broad, holistic approach.
In terms of C++ pointer content it’s a good introduction I think. Perhaps a little more deliberate probing of pass-by-value vs pass-by-reference would benefit learners, but that could just as well form the meat of another follow-on exercise. Likewise the nullptr trap is a good fundamental, but it might be nice to build on it - perhaps something like a function which takes a pointer to an object, returns a reference to that object or throws an exception if its null (though exceptions are probably still controversial in the performance-critical code where you might consider using raw pointers). There are also the subtelties of const and pointers to explore in the future: the difference between T const, and T const for example. Raw pointers are in an interesting place in C++ these days, with smart pointers seemingly ubiquitous in real world use from what I’ve seen.