Agreed.
Even if you are a C++ fanatic, you must to realize that some other languages are far more productive than C++ itself, and supporting just one of them would be very valuable for UE4.
Although the solution is not to simply replace C++ by C#, would be a mistake in my opinion.
Each language (C++, C#, Blueprints) have their own advantages and they could perfectly coexists in one single environment.
C++ should be use to develop either on the Engine’s side, to develop plugins, or to simply develop game logic functionality that are very demanding in terms of performances, theses functions could then be exposed to Blueprints and C#afterwards.
C#/.NET should be used by average lambda-coders that simply wish to develop the game logic without having to worry about the limitations of C++. is mostly about getting things done quickly with far much more performance and comfort than with the Blueprints. Should anyone encounter limitations in terms of performances, then simply develop the critical module in C++ and expose it to C# / Blueprints.
One could argue that any other scripting languages would fit for job, however C# with the .NET syntactic sugar would be the most efficient for me in terms of productivity (just try using System.LINQ once in your life and you will understand what productivity means). One could also employ one of the numerous .NET third-party libraries available out there. Python would also be a good contender in my opinion, however I would opt for C# simply because it should perform faster than Python.
Finally, Blueprints should only be used by people who are not comfortable with text-based coding (designers, artists) and still wish to develop games nevertheless. However, anyone with good coding skills would understand why it is not the best solution for them to code in Blueprints…no need to really argue about .
Now what Mono for Unreal suggests is to have those three languages coexisting with each other in UE4, in the exact same workflow as described above.
Also what the plugin essentially does is searching in UE4´s C++ code the functions that have been exposed to Blueprints and exposes it to C# too. means that there is not need to get rid of Blueprints at , simply maintaining it would also indirectly maintain the C# exposed functions.
The only task which is left is maintaining the plugin with new iterations of the Engine and also maintaining the Documentation.
Unity´s decision to have 3 different scripting languages (C#, Js, Boo) is rather silly because there is not clear advantage of choosing one language instead of another. However with the combo C++/C#/Blueprints UE4 would have the potential to reach absolutely every type of person that are willing to make games, and that would clearly be a benefit for both users and also Epic.