Is julia a good choice for this?

For how to proceed with the code port: See the following post by @tamasgal

One important consideration: When proceeding with the port bottom-up, as suggested above, you will acquire expertise as you proceed. For the top-down way (project architecture first) you need to be an expert at the very beginning.

I must also warn you: It looks like right now you see OOP as the most natural way of representation. After some time of using Julia it would appear rather artificial, with no way back.

In the terms of dog-oriented :slightly_smiling_face: programming:

play(dog, dog)
play(dog, cat)
play(cat, cat)
play(cat, mouse)

- the behavior is not primarily a property of just one object.

2 Likes