Pages:
Author

Topic: What languages do I need for blockchain programming? (Read 659 times)

brand new
Activity: 0
Merit: 0
I will suggest you learn Pyhton to build custom Blockchain as you mentioned.

Both Bitcoin and Ethereum have them python version for ref.

You can find it on the github.
member
Activity: 252
Merit: 10
Thanks for all the info!
member
Activity: 374
Merit: 53
Telegram @keychainX
I am trying to get into blockchain programming from having no programming experience, right now I am slowly learning C++, once I feel a little comfortable with it I am going to start learning blockchain development from courses regardless of the languages they use (which shouldn't be a problem because learning C++ is to give me the knowledge of programming in general and to apply C++ as well). But I see all of these different githubs and courses that use javascript and javascript derived languages (node.js, react.js, etc), those that use c++, those that use python, those that use GO, and I am at a loss. What should I learn exactly? Do I need to know all of these languages for not too complex blockchain applications?

My plan was to just learn c++ and then start studying the blockchain programming while learning the syntax of other languages as I need them, but how can you make a blockchain, cryptocurrency, explorer, wallet, etc utilizing all of the languages above? Do I need to?

First decide WHAT you want to build. There are so many things to start, the easiest would be just to look at explorers or fork a piece of code on Github.

Dont make the project to big, start small, have it made to work and work your way up.

Udemy has great blockchain courses https://www.udemy.com/the-basics-of-blockchain/

its a good start
/KX
legendary
Activity: 2688
Merit: 1468
I am trying to get into blockchain programming from having no programming experience, right now I am slowly learning C++, once I feel a little comfortable with it I am going to start learning blockchain development from courses regardless of the languages they use (which shouldn't be a problem because learning C++ is to give me the knowledge of programming in general and to apply C++ as well). But I see all of these different githubs and courses that use javascript and javascript derived languages (node.js, react.js, etc), those that use c++, those that use python, those that use GO, and I am at a loss. What should I learn exactly? Do I need to know all of these languages for not too complex blockchain applications?

My plan was to just learn c++ and then start studying the blockchain programming while learning the syntax of other languages as I need them, but how can you make a blockchain, cryptocurrency, explorer, wallet, etc utilizing all of the languages above? Do I need to?

Language is not important but I would not pick anything other than C and/or C++.

Start with an undergrad course in data structures, followed by a course in cryptography.

Learn C then C++, write some apps in it, build your own b-trees, lists, hash tables in it, write your own encryption tools etc.

Then take a look at the bitcoin source code, study it, see how blocks are constructed, validated and linked.

Write an app to read the wallet file, dump contents of a specific block from the blockchain etc.

jr. member
Activity: 87
Merit: 5
I am trying to get into blockchain programming from having no programming experience, right now I am slowly learning C++, once I feel a little comfortable with it I am going to start learning blockchain development from courses regardless of the languages they use (which shouldn't be a problem because learning C++ is to give me the knowledge of programming in general and to apply C++ as well). But I see all of these different githubs and courses that use javascript and javascript derived languages (node.js, react.js, etc), those that use c++, those that use python, those that use GO, and I am at a loss. What should I learn exactly? Do I need to know all of these languages for not too complex blockchain applications?

My plan was to just learn c++ and then start studying the blockchain programming while learning the syntax of other languages as I need them, but how can you make a blockchain, cryptocurrency, explorer, wallet, etc utilizing all of the languages above? Do I need to?

Your best shot is to register with github and take a look at a few different repos, if you are new to programming, then python would be easiest to start as it is simple to learn and there is alot of good repos on github.

like this repo https://github.com/etotheipi/BitcoinArmory

or this repo https://github.com/jgarzik/python-bitcoinrpc is a good start

C++ is faster and more complex and has a bigger learning curve. Im just talking out of my own experience

Good luck
Bartek
sr. member
Activity: 279
Merit: 435
for starters bitcoin's script is not meant for writing smart contracts since bitcoin is a currency and doesn't really need that kind of contract capability. in fact majority of the current OP codes are unnecessary.
Bitcoin is a programmable currency, I think it needs this capability

additionally if we ignore the capability power, writing a script in bitcoin can be very easy only if you design a simple "wrapper" for it like a user friendly GUI that translates your purposes into scripts!
I've seen this which is closer to what you are talking about : https://ivy-lang.org/bitcoin. However it is not what I meant, I said that Script syntax is close to the internal operation of transactions and in order to use it you have to know how they work, or you cannot do anything. Then I said that Solidity on Ethereum put a higher level of abstraction which leads to issues creating by dev not knowing how the EVM works. I made this comparison because we were talking about C/C++ and Python/JS.
legendary
Activity: 2898
Merit: 1823
OP, you can also take any free introductory course on Python, and then take Justin Moon's "Buidl Bootcamp" blockchain course, https://buidlbootcamp.com/

But it's not free though.
legendary
Activity: 3472
Merit: 10611
In order to link this to the subject of the thread, I think it is the same with Bitcoin/other cc networks : a concrete example is Solidity. Before Solidity people who wanted to do smart contracts had to use Script and in order to do so, understand how transactions work on Bitcoin. With Solidity people without a real understanding of what's going on under the hood on Ethereum are building smart contracts obviously insecure without even noticing it.

it is a bad example for multiple reasons, in my opinion.
for starters bitcoin's script is not meant for writing smart contracts since bitcoin is a currency and doesn't really need that kind of contract capability. in fact majority of the current OP codes are unnecessary.
additionally if we ignore the capability power, writing a script in bitcoin can be very easy only if you design a simple "wrapper" for it like a user friendly GUI that translates your purposes into scripts!
newbie
Activity: 17
Merit: 2
There are many languages of programming on which you can focus your efforts and the choice of digital money you want to use can serve as a basis for fit and usefulness. It is also essential that you reflect on the best programming dialects of 2015/2016, distributed here by IEEE and TIOBE.

To create a strong cryptographic programming environment, I would recommend focusing on the first learning of C ++ using a few learner books (if you are on a tight spending plan, you can really buy a considerable number of these books from an adjacent store). Goodwill or library used for 1 / twentieth of the cost), and then start trying different things with Node.JS, Python, Perl and other applicable dialects as they are normally perfect / recognized / enhanced under initial cryptographic conditions.

For explicit programming with crypto innovation, you can focus on C / C ++ with OpenCL / Cuda for GPU programming. As there is a massive capital and subsidy measure now asserted and devoted to crypto-innovation framework and engineering (and all is well, block establishment is vital), you can get a return on investment high by focusing on these regions and administrations and devices (C or C ++).
sr. member
Activity: 279
Merit: 435
<...>
Did you read my answer ? I don't have the absolute truth but these journalist-marketing-like affirmations are not accurate.

I just noticed your answer darosior, yes you are right and your response is great helpful. I was just trying to help OP by referring to my own researches as i also keep asking about where to start learning how to code for blockchain. And afaik, c/c++ are mandatory to start programming for newbies as it for professionals, are guides and tutorials helpful to master such a complicated language? what do i also need to start learning c/c++ ?? I still think there is a difference gap between free courses and paied ones. The question stil remain the same; where to start?
According to me, and it's only my opinion, C/C++ are the better language to start because there is less abstraction and I think a beginner needs to know what's going on when he does something, or he'll ending up doing things wrong. C is not so complicated and I would even say it is easier to understand than Python or Javascript : these two language put a high level of abstraction (Python is my favorite language I'm trying to be objective) and sometimes you'll have issues you won't even understand because of these abstractions, or worse issues that you could not see and someone with a better understanding can exploit.. In return you will be able to build great things with less effort and faster with these languages.

In order to link this to the subject of the thread, I think it is the same with Bitcoin/other cc networks : a concrete example is Solidity. Before Solidity people who wanted to do smart contracts had to use Script and in order to do so, understand how transactions work on Bitcoin. With Solidity people without a real understanding of what's going on under the hood on Ethereum are building smart contracts obviously insecure without even noticing it.

PS : I saw that your pseudo is in French so if you want guides you can checkout zeste de savoir or openclassrooms. But please open a new thread if you want to discuss this, in order to not be out of the scope of this thread.

EDIT : Of course, links I gave you provide free courses. Knowledge is free, please don't do the mistake of paying for courses selling dreams.
jr. member
Activity: 137
Merit: 3
<...>
Did you read my answer ? I don't have the absolute truth but these journalist-marketing-like affirmations are not accurate.

I just noticed your answer darosior, yes you are right and your response is great helpful. I was just trying to help OP by referring to my own researches as i also keep asking about where to start learning how to code for blockchain. And afaik, c/c++ are mandatory to start programming for newbies as it for professionals, are guides and tutorials helpful to master such a complicated language? what do i also need to start learning c/c++ ?? I still think there is a difference gap between free courses and paied ones. The question stil remain the same; where to start?

You can go on Udemy for courses, there are so many great ones and it’s pretty much the only place I go for courses. Right now I’m taking a 40 hour course in c++ specifically for those with no experience in programming. They also have tons of blockchain programming courses. Also they are pretty much all on sale all the time for like $10.
jr. member
Activity: 137
Merit: 3

In no way am I confused, by blockchain programming I mean I want to program a blockchain. I’m not asking what a blockchain is as I’ve known for a long while, I want to be able to build custom blockchain solutions. Meaning I want to be able to program and run a blockchain, block explorer, wallet, and cryptocurrency. With this I’m sure I could work on established networks as well and I plan to learn solidity for smart contract programming.


I believe your right, I will keep learning the basics and intermediates of c++ to learn how to program and it's fundamentals, from there I will focus on learning how to build blockchain applications and pick up which languages I need to learn and how to apply them along the way. And thanks for the crypto challenges, I will surely use those.

What Heretik suggested is not learning blockchain applications, but learning blockchain fundamentals that aren't programming language.  I made a thread a while ago : Books about bitcoin/blockchain

If you're not proficient in C++, learn using it. Program applications, ANY applications. Blockchain programming shouldn't be something you use to learn a language, you already need to have mastered the basics and you should be able to program anything using your chosen language. (Hence why a lot of people pick javascript in their github blockchain projects because it's "easy"..)

Once you control the language, you then spend time familiarising yourself with the blockchain technology. You understand cryptography, you understand elliptic curves, you understand the satoshi white paper, basically you get an idea about everything needed for you to code the blockchain FROM SCRATCH.

Of course if you actually follow this road, it's not going to be easy. The non-programming aspect of this shit is fckin hard, even for us coders. But believe me, anyone that didn't do this couldn't ever dream of adding anything new or ever coming up with something innovative. People who self-title themselves as "blockchain programmers" while they barely know the surface of the technology and can only clone projects like some github parrots, rather than be able to understand it so well they can contribute with their own ideas, those are no blockchain programmers in my eyes. You can always be one of those if you prefer, it's easy to keep using trial and error and code a shitload of clones until you "understand" how to code a bitcoin clone Smiley

I’ve been with the blockchain industry for a while and I actually disagree. You don’t need to be able to program blockchain solutions to be able to contribute innovation to the industry. Also I’m not going to completely master c++ or any programming language if I don’t need to, that takes years, and if I don’t need to to be able to build blockchain solutions from scratch then I’m not going to. I have the many many resources for help at my disposal to be able to build these solutions such as articles, specific guides, and forums such as this one and stackoverflow. So if I get stuck I don’t need to just rely on my knowledge with every mistake I’ll learn from it.
member
Activity: 265
Merit: 14
Nina
<...>
Did you read my answer ? I don't have the absolute truth but these journalist-marketing-like affirmations are not accurate.

I just noticed your answer darosior, yes you are right and your response is great helpful. I was just trying to help OP by referring to my own researches as i also keep asking about where to start learning how to code for blockchain. And afaik, c/c++ are mandatory to start programming for newbies as it for professionals, are guides and tutorials helpful to master such a complicated language? what do i also need to start learning c/c++ ?? I still think there is a difference gap between free courses and paied ones. The question stil remain the same; where to start?
sr. member
Activity: 924
Merit: 452
Check your coin privilege

In no way am I confused, by blockchain programming I mean I want to program a blockchain. I’m not asking what a blockchain is as I’ve known for a long while, I want to be able to build custom blockchain solutions. Meaning I want to be able to program and run a blockchain, block explorer, wallet, and cryptocurrency. With this I’m sure I could work on established networks as well and I plan to learn solidity for smart contract programming.


I believe your right, I will keep learning the basics and intermediates of c++ to learn how to program and it's fundamentals, from there I will focus on learning how to build blockchain applications and pick up which languages I need to learn and how to apply them along the way. And thanks for the crypto challenges, I will surely use those.

What Heretik suggested is not learning blockchain applications, but learning blockchain fundamentals that aren't programming language.  I made a thread a while ago : Books about bitcoin/blockchain

If you're not proficient in C++, learn using it. Program applications, ANY applications. Blockchain programming shouldn't be something you use to learn a language, you already need to have mastered the basics and you should be able to program anything using your chosen language. (Hence why a lot of people pick javascript in their github blockchain projects because it's "easy"..)

Once you control the language, you then spend time familiarising yourself with the blockchain technology. You understand cryptography, you understand elliptic curves, you understand the satoshi white paper, basically you get an idea about everything needed for you to code the blockchain FROM SCRATCH.

Of course if you actually follow this road, it's not going to be easy. The non-programming aspect of this shit is fckin hard, even for us coders. But believe me, anyone that didn't do this couldn't ever dream of adding anything new or ever coming up with something innovative. People who self-title themselves as "blockchain programmers" while they barely know the surface of the technology and can only clone projects like some github parrots, rather than be able to understand it so well they can contribute with their own ideas, those are no blockchain programmers in my eyes. You can always be one of those if you prefer, it's easy to keep using trial and error and code a shitload of clones until you "understand" how to code a bitcoin clone Smiley
legendary
Activity: 2982
Merit: 2113
While there are wallet clients that are written using JavaScript / Node.js, getting deep into the matter will likely nonetheless require solid c/c++ knowledge though (or Go or Rust if you feel especially fancy today).
not necessarily.
i dare say in 90% of the times you just have to be familiar with A programming language. as someone who has looked at a lot of source code i have to say it is not hard reading them, you may not know 100% of what they are doing but you can see what is happening.

I meant for writing the code (or maintaining a project) Smiley As far as reading the code is concerned I fully agree with you.
legendary
Activity: 3472
Merit: 10611
you are basically asking a question that has been nearly as old as computer programming languages. you are asking which programming language is best! and it has nothing to do with bitcoin. and the fact that bitcoin core is written using C++ doesn't change that. you can start with any programming language and then learn blockchain technology. for example i don't know anything about C++ and i have been learning a lot.
know that every programming language has its own pros and cons. it is not like one of them is superior to others and if you learn that then you can do anything! i have seen programs that are written in C++ that perform poorly while the same thing in another language is performing a lot smoother and better. or vice versa. in the end it (most of the times) comes down to the developer itself.

since you have already started with C++ then i'd say continue on that path, it is a hard path though. learn the basics and when you finished the "beginner" level then move on to going though some intermediate code (like open source projects) and read them to increase your experience. then finally move on to advanced topics including blockchain, cryptography,...
the good news is that when you reach bitcoin you will have a very good source code to look at (bitcoin core) which can teach you a lot of things.

While there are wallet clients that are written using JavaScript / Node.js, getting deep into the matter will likely nonetheless require solid c/c++ knowledge though (or Go or Rust if you feel especially fancy today).
not necessarily.
i dare say in 90% of the times you just have to be familiar with A programming language. as someone who has looked at a lot of source code i have to say it is not hard reading them, you may not know 100% of what they are doing but you can see what is happening.
jr. member
Activity: 137
Merit: 3
Honestly? If you want to attain the skills of working on your own cryptocurrency (or whatever else you want to build around a blockchain or distributed ledger) knowing your way around consensus algorithms, cryptographic standards and general application security is much more important than the question of which programming language too choose. Knowing c++ inside out won't prevent disaster if your security knowledge is lacking, especially in this field. And in the right hands even JavaScript can become an incredibly powerful tool.

In terms of getting started with programming I'd probably recommend JavaScript or Python, as both are relatively easy to get into, with JavaScript being ubiquitous to boot. Especially for anything web related (eg. block explorers) you won't get around using JavaScript (unless you fork an existing solution with little to no changes). While there are wallet clients that are written using JavaScript / Node.js, getting deep into the matter will likely nonetheless require solid c/c++ knowledge though (or Go or Rust if you feel especially fancy today).

But to repeat -- choosing the "right" programming language is secondary to having a firm grip on the theory. Also keep in mind that starting in one language won't keep you from specializing in another, so try not to overthink your starting point.


Here's some fun crypto related programming challenges to get you started, by the way. Regardless of which language you choose:

https://cryptopals.com/

I believe your right, I will keep learning the basics and intermediates of c++ to learn how to program and it's fundamentals, from there I will focus on learning how to build blockchain applications and pick up which languages I need to learn and how to apply them along the way. And thanks for the crypto challenges, I will surely use those.
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
This looks like XY problem to me since OP's goal is vague

OP, what is your goal? If you simply want to make blockchain/cryptocurrency services on small-medium scale (such as wallet & block explorer), you can use existing open-source library or application which require some to little programming knowledge.
But if you want to make your own cryptocurrency/services which use blockchain, then you should consider darosior and HeRetiK advice.

Also, first learned programming language is controversial topic. Few says complex or static programming language is better while few other said simpler or dynamic programming language is better.
legendary
Activity: 2982
Merit: 2113
Honestly? If you want to attain the skills of working on your own cryptocurrency (or whatever else you want to build around a blockchain or distributed ledger) knowing your way around consensus algorithms, cryptographic standards and general application security is much more important than the question of which programming language too choose. Knowing c++ inside out won't prevent disaster if your security knowledge is lacking, especially in this field. And in the right hands even JavaScript can become an incredibly powerful tool.

In terms of getting started with programming I'd probably recommend JavaScript or Python, as both are relatively easy to get into, with JavaScript being ubiquitous to boot. Especially for anything web related (eg. block explorers) you won't get around using JavaScript (unless you fork an existing solution with little to no changes). While there are wallet clients that are written using JavaScript / Node.js, getting deep into the matter will likely nonetheless require solid c/c++ knowledge though (or Go or Rust if you feel especially fancy today).

But to repeat -- choosing the "right" programming language is secondary to having a firm grip on the theory. Also keep in mind that starting in one language won't keep you from specializing in another, so try not to overthink your starting point.


Here's some fun crypto related programming challenges to get you started, by the way. Regardless of which language you choose:

https://cryptopals.com/
legendary
Activity: 4354
Merit: 3260
C++ is a poor choice for someone just starting out. Start with a simpler language such as Python, Java, or Javascript. Learning software development is the most important goal. Learning a specific language is secondary, since once you understand how software works you can pick up any language fairly quickly. Take my word for it. I have been doing software development for more than 20 years and I have used a dozen different languages.
Pages:
Jump to: