I learnt both Go and Python through porting an application from one to the other; I found the experience enlightening to the point that when I need to learn a new language for some purpose I now port one of my portages to it.
For me the main point of porting is to get new code into a language’s ecosystem. There are plenty of languages where you could have a dependency on a compiled C library (dll, so, dylib, etc.) but having the same code as a native-to-the-language library has lots of advantages. For example, a simpler build process. That’s also why lots of C/C++ libraries come with a single .h/.c setup.
I ported the SGI’s OpenGL tessellator code to C# [1] a while ago and it’s been of great help to many projects. Mainly that was because it’s now in native C# and can be used in Unity projects for example without requiring a native plugin which is a pain to setup in Unity.
I learnt both Go and Python through porting an application from one to the other; I found the experience enlightening to the point that when I need to learn a new language for some purpose I now port one of my portages to it.
For me the main point of porting is to get new code into a language’s ecosystem. There are plenty of languages where you could have a dependency on a compiled C library (dll, so, dylib, etc.) but having the same code as a native-to-the-language library has lots of advantages. For example, a simpler build process. That’s also why lots of C/C++ libraries come with a single .h/.c setup.
I ported the SGI’s OpenGL tessellator code to C# [1] a while ago and it’s been of great help to many projects. Mainly that was because it’s now in native C# and can be used in Unity projects for example without requiring a native plugin which is a pain to setup in Unity.
[1] https://github.com/speps/LibTessDotNet