-
Notifications
You must be signed in to change notification settings - Fork 2
/
why.txt
21 lines (18 loc) · 1.51 KB
/
why.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Q# : Why? "le rationale"
-------------------------
In the late 90's early 00's I was a C++ developer and made the move to Java.
At first the move was great but over time Java just didn't seem to keep up fast enough.
Poor performance, a lacking classpath and a push for browser plugins were all just bad design from the start.
I tried to learn C# but found that it's performance was 12x slower! Ouch.
Both have a very slow interfacing to native code. (gcj was a great idea but died too young)
But at least the C# language had everything I wanted like unsigned data types. Java didn't which resulted in execessive type casting.
They added Integer.toUnsignedString() but that was too little too late.
Java's bytecode is better than C# though. For example C# uses a generic 'add' IL code for all data types.
This means the JIT has to determine at runtime whether it's a int, float or double add. Another bad design.
Both Java and C# class libraries are somewhat lacking in certain areas.
I thought of switching back to C++ but the complexity of C++ has increased over the years to the point where C++ looks like machine code.
Just look at the Qt headers!
So my solution was to convert C# to C++ and use the amazing Qt library as it's classlib. This was not easy.
I tried many different types of conversions and it seemed like everything was a dead end.
Until I tried one last time using Roslyn's SyntaxNodes and that seems to work fine.
Qt is missing a few components but source code can be found to fill those small holes. (QuaZip, AES, etc.)