Author

Topic: What are the pros and cons of coding an alt-coin in C#? (Read 2410 times)

legendary
Activity: 3108
Merit: 1359
C# is much better these days about cross platform compatibility and open source. It's only going to get better too from what I can tell from observing Microsoft's path thus far. They've changed their strategy a lot.

Check this out: http://techcrunch.com/2015/04/29/microsoft-shocks-the-world-with-visual-studio-code-a-free-code-editor-for-os-x-linux-and-windows/
It's linked with glibc 2.14. My system has only 2.13, so their blob doesn't work for me Roll Eyes
legendary
Activity: 826
Merit: 1002
amarha
C# is much better these days about cross platform compatibility and open source. It's only going to get better too from what I can tell from observing Microsoft's path thus far. They've changed their strategy a lot.

Check this out: http://techcrunch.com/2015/04/29/microsoft-shocks-the-world-with-visual-studio-code-a-free-code-editor-for-os-x-linux-and-windows/
legendary
Activity: 2142
Merit: 1010
Newbie
C# is a higher level language than C++, which means more programmer productivity - at the cost of some performance, of course.

Lose some performance (assuming JIT compilation doesn't work) but gain security. This is a no-brainer.
legendary
Activity: 1666
Merit: 1020
expect(brain).toHaveBeenUsed()
Why do people not understand, that a coin is not the program but the protocol. It doesn't matter, which language you use.
Anyone can rewrite the code in another language and use it in the same chain (see XT, its the same language, but wouldn't need to). The only problem is, if you change the protocol...
legendary
Activity: 3108
Merit: 1359
newbie
Activity: 59
Merit: 0
You wouldn't be able to use Bitcoin's source code as a starting point without major work and you won't be able to easily implement improvements made to Bitcoin. Performance may be an issue, C# uses garbage collection, which introduces unnecessary overhead. There are ways to use C++ classes in a C# program, this might be an option but I don't have experience mixing C# and C++ to know if it's a good idea.
donator
Activity: 1274
Merit: 1060
GetMonero.org / MyMonero.com
That's like saying assembly can do what C does, so why use C?

C# is a higher level language than C++, which means more programmer productivity - at the cost of some performance, of course.

Personally, I go as high level as possible (python,awk,lisp,etc) until I need more non-I/O performance. Then you look down the list toward java/C# and finally C/C++ if you really need it for time critical pieces of code. If you lean towards high level languages, you'll get stuff done waaay faster and with fewer bugs

- a former/reformed C++ fanatic

True, but since we're talking about an alt-coin, why bother? Why reinvent the wheel, when there is an existing codebase you can work off of and improve?
donator
Activity: 853
Merit: 1000
I don't really see the use - C++ can do the same as C#, but on more platforms.

That's like saying assembly can do what C does, so why use C?

C# is a higher level language than C++, which means more programmer productivity - at the cost of some performance, of course.

Personally, I go as high level as possible (python,awk,lisp,etc) until I need more non-I/O performance. Then you look down the list toward java/C# and finally C/C++ if you really need it for time critical pieces of code. If you lean towards high level languages, you'll get stuff done waaay faster and with fewer bugs

- a former/reformed C++ fanatic
sr. member
Activity: 415
Merit: 250
I don't really see the use - C++ can do the same as C#, but on more platforms.
legendary
Activity: 1176
Merit: 1036
Dash Developer
I was just thinking about this for a coin I am considering making... I think it's a good idea for the following reasons.

* Primecoin started out very low performance and the community took it upon themselves to improve it.
* If the coin is a really good idea, people will adapt your c# to cython/c/c++ to gain an advantage and after the advantage is leaving they would open source it

I think this would basically add 1 extra step to the arms race that happens with new coins. I.e, Bytecode, machine code, GPU, ASICs, etc.
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
This is a bit off topic, but I'm not a programmer.  What differs between C++ and C#?

They are completely different languages (try some internet searching if you are actually interested).
sr. member
Activity: 476
Merit: 250
What do you call a fish with no eyes? A Fsh!
This is a bit off topic, but I'm not a programmer.  What differs between C++ and C#?
full member
Activity: 146
Merit: 100
It boils down to cross-platform compatibility. Bitcoin / Litecoin and this current generation of alt-coins is based off of C++ and uses the QT framework for GUI elements. That makes it a lot easier to compile on various platforms. I haven't dabbled in C# in ages, but if you're able to build the daemon and GUI with C# on Windows, Linux and Mac OS X, I don't see why not if that's your area of expertise.
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
You should consider whether a C# solution is going to go down well with Linux users (of which there are many on this forum).

Basically Mono is the only C# IDE for Linux and I don't think it is installed by standard in most distros (although for that matter neither is boost so maybe that isn't a big deal in itself).
newbie
Activity: 40
Merit: 0
I'm working on a new alt-coin called Flexcoin.   My work has been in C# since it was first introduced way back around 2001.    So this is my area of strength.  I putzed around in C++ back when it first came out in 1985.   I know things have changed with C++ over the years, namely things like smart pointers and the like.   But I still see C# as having a huge advantage in programmer productivity.   So for me, I'm strongly considering branching Novacoin to create a starting point for Flexcoin but then using C# as much as possible for new development.   

I see one big con of this being that users installs would be larger (requiring Mono if they are not on Windows).  Requiring Xamarin if they are on android or iOS.    But is this really so terrible?   Am I completely barking up the wrong tree and should I learn C++, Java, and objective C?   
Jump to: