exercism / python

Exercism exercises in Python.
https://exercism.org/tracks/python
MIT License
1.75k stars 1.24k forks source link

[Hangman]: Should Exercise be Re-Written or Removed from Track? #2105

Open xxylem opened 4 years ago

xxylem commented 4 years ago

I just completed the Hangman exercise on the Python track. I see from #1690 that you had problems deciding what to do with this exercise. The problem is from a user perspective it looks like the problem specification and the hints are all written by the same person and should be taken together. So the hint:

Please ignore the part regarding FRP library, a third party library is not required for this exercise.

looks like its telling me that Python has inbuilt support for FRP, which it does not. It looks like I should still use FRP but that I don't need a third party library to do it.

After reading the description, I spent a long time reading up on FRP assuming that I was supposed to use it. To be honest, FRP still confuses me, but as far as I can tell, there are Reactive Programming libraries for Python, but not Functional Reactive Programming libraries (Reactive Extensions is not FRP). To implement FRP in Python wouldn't seem to make much sense: you'd have to make everything immutable and you'd be fighting the language all the time. The fact that the exercise was made for OCaml is quite telling, I think. It is a very niche problem.

I understand from the discussion that the problem statement cannot be changed. In that case, I think a clearer hint would be:

PLEASE DISREGARD THE PROBLEM DESCRIPTION. IT IS NOT POSSIBLE TO USE FUNCTIONAL REACTIVE PROGRAMMING (FRP) WITH PYTHON. YOU CAN USE ANY STYLE/PARADIGM YOU THINK IS APPROPRIATE. WE ARE NOT ABLE TO CHANGE THE PROBLEM DESCRIPTION AND IT WAS ORIGINALLY MADE FOR A FUNCTIONAL PROGRAMMING LANGUAGE.

although this is not a perfect fix. It should be in caps because as far as the student is concerned, the problem statement and the hints should be read together as one complete whole, but here the hints are directly contradicting the problem statement.

Ideally the original problem should be changed to avoid requiring a specific paradigm. I have had similar problems in the Javascript track..

Anyway, let me know your thoughts and if I should update something (I haven't contributed here before so I'm not sure of the procedure).

yawpitch commented 4 years ago

Personally I'd remove hangman from the Python track entirely; there's no canonical-data.json, the canonical description.md is fundamentally aimed at languages in an entirely different programming paradigm, and the tests and solution we've created don't attempt to address FRP as it could be done in Python ... moreover without addressing FRP there's really no obvious pedagogic value to the exercise that isn't addressed better in other exercises.

cmccandless commented 4 years ago

I remember implementing this "as-is" exercise was a struggle. Perhaps removing it would be best; I'm going to mark it in my notes for review when we begin the transition for v3.

github-actions[bot] commented 3 years ago

This issue has been automatically marked as abandoned because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

BethanyG commented 2 years ago

Renaming this to be what it is: A discussion on weather or not re heavily revise or just remove hangman as an exercise.