1. 16

  2. 3

    I’ve held a similar course a few years back where we had MiniJava (german). It is surprisingly hard to make a subset of a programming language. It took a few iterations/years until the students stopped finding edge cases. It seems the ChocoPy people have some experience already. The acknowledgements provide some hints. An example of such pitfalls is described:

    Not all keywords have special meaning in ChocoPy. For example, ChocoPy does not support async or await. However, ChocoPy uses the same list of keywords as Python in order to avoid cases where an identifier is legal in ChocoPy but not in Python. Consequently, some keywords (such as async) do not appear anywhere in the grammar and will simply lead to a syntax error.

    Python is an interesting choice. Students have to deal with parsing significant whitespace which is a niche topic.

    1. 2

      I kind of love this idea. It makes me wonder what other languages could be improved in some capacity (e.g., performance) by removing from them.

      1. 1

        This is excellent! Do the authors plan to keep the language simple for pedagogical purposes or make it grow in time accepting further things from Python?