Cognate and NuTank switch from .Net to Python

So,
Looking again at choices of language for NuTank and Cognate I have decided to switch from .Net C# to Python, TensorFlow, and PyQt5.

There are several overall concerns.

Performance

Multithreading all CPUs or GPUs, getting speed for Cognate Concept Map processing.
I had chosen C# and .Net due to the full threading model in the language.  Python does not do real CPU threads. But, TensorFlow does use all CPUs and GPUs in its underlying C code so is in fact ultra fast at matrix math.
I will need to write custom code into TensorFlow for tensor weighted interpolated transfer (TWIT).  I already wrote that in C# so it should port pretty well. How such code eventually gets into C, C++, or GPU code is to be seen.  I think I can do the C code pretty easily.  I also may discover a way to encode the TWIT as existing matrix functions.

Graphics

NuTank graphics were line vector graphics (GDI ancient graphics routines for DOS). In the new NuTank I want better graphics.  It does not need to be full-on Unreal engine level.  Also the world will be 2D from an overhead view.  Going full 3D can either be just for looks, or can be actual 3D for the Neural Tanks and Neural Processing (Brains).  3D increases the processing burden by large amounts as the neural systems have to deal with a volume instead of a plane.
Possibly in the future NuTank will go full 3D. Or maybe have 3D as a mode.
Meanwhile I want to be able to use pictures with transparency for things like rocks.  I also want the visual sensors to pick up the pixel color around the edge of the rock from the image of the rock.
C#/.Net and Python with Qt are about equal on this level of graphics.  Both can also handle full 3D if needed.
Unreal engine has a python plugin so is still a later option.

Academia

One major goal in Cognate, and to a lesser degree NuTank, is to publish papers and advance the state of AI with the SRS design. This is best done in TensorFlow.

Game World

I want to publish on Steam and both C# and Python have Steam API wrappers.

Programming Efficiency

A major concern is just getting a lot of code written and debugged quickly.  Python and C# are about on par for productivity but I think Python has a small edge.  More importantly for me is that my day job is in python and C++ so not having yet another language to switch between on a daily basis is better. 


Comments

Popular posts from this blog

UE4 Asset Directory Listing Blueprint

Subsumption and Neural Hiding - The 'Object Oriented Paradigm' of Artificial Intelligence

Self Cycling Asynchronous Neural Systems