Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: Bearil on December 18, 2017, 12:04:39 PM



Title: Choosing language for blockchain
Post by: Bearil on December 18, 2017, 12:04:39 PM
Hi! Let's have a think about what programming language is more convenient, faster and easier to create blockchain based solutions (from 0 point). Please evaluate according to the following criteria:
1) number of usefull libraries (for block-chain dev.);
2) the complexity of language learning, ease of development;
3) stability;
4) skill requirements;
5) number of developers on employment market.

All the reasoned answers are welcome!


Title: Re: Choosing language for blockchain
Post by: Colorblind on December 19, 2017, 11:42:41 AM
define "blockchain based" solutions.

If you are making your own blockchain C++ is way to go. If you creating service on top of existing BC - all of your options and some more can be viable depending on your utility. Programming language selection is too much dependent on the problem you trying to automate/solve.


Title: Re: Choosing language for blockchain
Post by: kooler1 on December 19, 2017, 01:10:01 PM
It looks like C++ is the dominant language in cryptocurrency/blockchain world, so it will be the best way to go since there are already quite some libraries and opensource projects to look into.

Not the easy one though, but definitely good from the point of performance.


Title: Re: Choosing language for blockchain
Post by: MJunioR on December 19, 2017, 06:37:13 PM
C++, more developers are used to it, support is easier and there's more open source content out there.

Rust is interesting tho.


Title: Re: Choosing language for blockchain
Post by: divyasdm11 on December 19, 2017, 06:52:02 PM
 If you would like to develop your own blockchain, I would say that you need to learn C++. Instead of developing something from scratch, you might want to consider forking out of some of the opensource projects like Open source private blockchain platform, Bitcoin, or Ethereum.

If you want to develop smart contracts on top of Ethereum, you need to learn solidity. A good tutorial to get you started with developing dapps on solidity is: How to write your first smart contract in solidity

For Hyperledger fabric, you need to learn GO. Most of the chaincode (smart contracts in Fabric’s world) programming is done in Go. They also have a Java SDK at the moment.

Also, blockchain is just the underlying technology. You would always need some sort of frontend to give to your users to be able to interact with your applications. For that Javascript is probably the most important language to learn.


Title: Re: Choosing language for blockchain
Post by: malikusama on December 19, 2017, 08:41:55 PM
I think you have got the majority opinion that C++ is the best option to create blockchian but to only suggest is not enough we should elaborate the reason that why I am saying it.
Well I am going to vote for C# because it has much more features than C++.
So I am here to explain you some reasons why C# will be a good option to use for blockchain creation.
1. C# is a merger of C and C++ and a new language with many modified features.
2. Having rich function library than others.
3. Very closely related to C++ and JAVA, so it can be easy to understand by both type of developers.



Title: Re: Choosing language for blockchain
Post by: TechPriest on December 19, 2017, 10:30:29 PM
It's good to use C++ for programming blockchain, 'cause it helps to understand bottom levels of crypto.
i would highly not recommended to use high levels language like Java, Solidity or others. Because you can't understand the essence of cryptocurrencies.

Maybe you can try Python (but after C++) for Bitcoin blockchain.


Title: Re: Choosing language for blockchain
Post by: gabbie2010 on December 20, 2017, 05:24:43 AM
Hi! Let's have a think about what programming language is more convenient, faster and easier to create blockchain based solutions (from 0 point). Please evaluate according to the following criteria:
1) number of usefull libraries (for block-chain dev.);
2) the complexity of language learning, ease of development;
3) stability;
4) skill requirements
5) number of developers on employment market.

All the reasoned answers are welcome!
I will go with C++ because the core of  a blockchain is written in C++ and the bitcoin tree is also written in C++ meanwhile the wallets can be written in languages like python, Java and JavaScript, knowledge in C++ will make it easier to modify bitcoin source code


Title: Re: Choosing language for blockchain
Post by: HALLASTERA on December 20, 2017, 07:42:40 AM
I think any object programming language + one scripts language, with this combo you can development. But if you want to create something new in cryptocurreny should be cryptography knowledge


Title: Re: Choosing language for blockchain
Post by: Bearil on December 20, 2017, 08:40:35 AM
If you would like to develop your own blockchain, I would say that you need to learn C++. Instead of developing something from scratch, you might want to consider forking out of some of the opensource projects like Open source private blockchain platform, Bitcoin, or Ethereum.

If you want to develop smart contracts on top of Ethereum, you need to learn solidity. A good tutorial to get you started with developing dapps on solidity is: How to write your first smart contract in solidity

For Hyperledger fabric, you need to learn GO. Most of the chaincode (smart contracts in Fabric’s world) programming is done in Go. They also have a Java SDK at the moment.

Also, blockchain is just the underlying technology. You would always need some sort of frontend to give to your users to be able to interact with your applications. For that Javascript is probably the most important language to learn.

Thanks for you're reply. Our team is already in progress of developing on C++, but we has some dispute about other alternative technologies for making own modified dPoS solution.


Title: Re: Choosing language for blockchain
Post by: redigaffi on December 20, 2017, 09:36:05 AM
Firstly of all, Why C or C++? just because bitcoin was the first coin and it's written in C++? is it really a convention? ...

Just think, C++ is old, it's heavy, the learning curve is really big. C++ is a great, powerful low-level language, but that doesn't mean that it's the best choice for everything.

There are plenty of great languages out there, that are powerful, easy to learn, and just abstract low-level stuff, and you accomplish your goal in less with a lot of less code, and easier.

I think people should focus on delivering high-quality code, easy to understand, and easy to extend. I think if you're a NodeJS, PHP, or Java Developer, it's a lot easier to switch to C# or Java, to accomplish what you want, why just messing around with low-level CPU and memory stuff if you just interested in developing a coin? That has nothing to do with the coin, and if you're interested in learning all that stuff, then go with C++.

As a self-learner point of view you have 2 options:
- Just want to code a Coin to learn how all the stuff works in the background and get a solid background of what blockchain is and maybe publish it fast.
- Learn C++, learn low level stuff, learn blockchain, code a coin (long time)

As a business point of view:
- Deliver what I want as fast and cheap possible.


Title: Re: Choosing language for blockchain
Post by: Cy80rG on December 20, 2017, 10:12:31 AM
Well I am going to vote for C# because it has much more features than C++.
So I am here to explain you some reasons why C# will be a good option to use for blockchain creation.
1. C# is a merger of C and C++ and a new language with many modified features.
2. Having rich function library than others.
3. Very closely related to C++ and JAVA, so it can be easy to understand by both type of developers.
Hello!
I like C#, but what about crossplatform open source crypto, network and other libraries for C#?
What about crossplatform products creating with C#? And development with linux?
Thanks!


Title: Re: Choosing language for blockchain
Post by: redigaffi on December 20, 2017, 12:07:55 PM
And adding a point to my message, C++ is good for an os, for ASIC (specific hardware) were you have limited resources, today with the law of Moore, getting powerful computer is cheap, and it's getting, even more, cheaper every time, it makes no sense to use C++ to "optimize", on a PC it will never be a critic point using only the "necessary resources". If you start with coding with optimization in mind, that's called premature-optimization and will lead to bad code, and bad optimization. You can accomplish what you want with any other language, and whats the problem? Using Java or C# 200mb more of ram for the VM?

Getting better performing computer is cheap and will be cheaper, anyway, having dedicated servers with 128gb of ram is cheap too, cloud hosting...

No need to think about using 100mb less ram in your code