Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: MIT2K on February 20, 2018, 10:54:52 AM



Title: I want to learn coding / with blockchain whats the best language?
Post by: MIT2K on February 20, 2018, 10:54:52 AM
I want to start learning coding but am not sure what would be a good language to learn?

With a passion for cryptos and blockchain is there a language that is best to master that could help me understand the programming better and logistical process?

Thanks!


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: HeRetiK on February 20, 2018, 12:49:13 PM
Start off with JavaScript or Python. Most cryptocurrencies are written in more complex languages such as C or C++, however I'm not sure whether I would recommend these as a starting point to a beginner. If you're serious about getting into software development you'll be learning multiple languages anyway, so you might as well start off with some of the easier ones.

Once you got a basic grasp you can do fun code exercises such as the cryptopals crypto challenges:

https://cryptopals.com/

Crypto not as in cryptocurrencies but as in cryptography, which is knowledge you will need either way :)


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: joaco on February 21, 2018, 12:58:11 AM
You could learn Solidity and develop smart contracts on Ethereum network... It's like JS, pretty ease to learn.

Do you have experience coding?


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: hgbing on February 21, 2018, 02:20:30 AM
I want to start learning coding but am not sure what would be a good language to learn?

With a passion for cryptos and blockchain is there a language that is best to master that could help me understand the programming better and logistical process?

Thanks!
I'm a programmer with more than 10 years experiences. i would like to talk programming skill . is anyoneelse interested in programming  skype robert_hgb


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: alia on February 21, 2018, 03:59:34 AM
Python and JS are great for beginners; also take a look at Solidity if you want to start building contracts on Ethereum.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: johniadeluca on February 21, 2018, 04:05:16 AM
If you have NO experience start with HTML and CSS, slowly work your way into JS. Once in JS, Solidity should come fairly easy to you


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: nullius on February 21, 2018, 05:03:39 AM
Preliminary note:  This is a recurrent question on this forum, a genuine FAQ.

I want to start learning coding but am not sure what would be a good language to learn?

With a passion for cryptos and blockchain is there a language that is best to master that could help me understand the programming better and logistical process?

Thanks!

First, realize that you have a profound responsibility when you write code which handles Other People’s Money (https://bitcointalk.org/index.php?topic=2940686.msg30295658#msg30295658).

I am all for helping more people become Bitcoin users.  But we do not need more coders.  We need fewer and better coders working on Bitcoin and “cryptos”.  Whereas most people are innately incapable of ever becoming good coders, just as I myself am innately incapable of ever becoming an Olympic gymnast.

Do I discourage you?  I intend to!  You should be discouraged from learning to code machinery which handles Other People’s Money, unless you have such a keen ability that nothing I say could possibly discourage you.  People who have such an ability always do know themselves that way.

If you think you’re up to it, and you want to take on an awful responsibility:  First, learn much, much more about computing generally.  Read up on the fundamentals of applied cryptography.  Then, learn Bitcoin technical concepts inside and out.  By the time you get through all this learning, you won’t need to ask for advice on picking a language:  You’ll know enough to do that yourself.

I do not recommend selecting a “beginner’s language” for anything whatsoever to do with Other People’s Money.  Use a “beginner’s language” if you want to do casual programming, making little games or performing little practical tasks on your own computer.  If you want to handle Other People’s Money, then you need to be a serious programmer.  Serious programmers usually don’t start with a “beginner’s language”; certainly if they have the aptitude, they don’t need to.  If you read up on the concept of, say, pointer arithmetic, and you feel that little light bulb go on in your head—then why wouldn’t you start by playing with pointers?


If you have NO experience start with HTML and CSS, slowly work your way into JS. Once in JS, Solidity should come fairly easy to you

This is how we eventually obtain such threads as, “Bad Code Has Lost $500M of Cryptocurrency in Under a Year (https://bitcointalk.org/index.php?topic=2940686.0)”.  See especially the discussion downthread of Ethereum.

If that’s how you need to learn to code, then YOU SHOULD NOT BE CODING.  Most of all, you should stay the hell away from Other People’s Money.

Think:  Would you trust a surgeon who started his formal studies by doing “surgery” on pineapples with a kitchen knife, then worked up from there?

We will stop getting “Bad Code Lost XYZ” threads, when people take the coding of financial software as seriously as they take the practice of medicine, engineering of bridges and tunnels, and other professional tasks where errors result in PEOPLE GETTING HURT.



Edit:  Cross-reference:  Re: Bad Code Has Lost $500M of Cryptocurrency in Under a Year (https://bitcointalk.org/index.php?topic=2940686.msg30732427#msg30732427)


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: zonezICO on February 21, 2018, 06:40:49 AM
@MIT2K - I second what HeRetiK recommended as the first time I ever looked at C++ code, it looked like ancient hieroglyphics to me but after becoming familiar with the syntax and patterns of higher level languages such as Python, JS, (and my personal faves Clojure and Elixir) made it much easier to comprehend what Satoshi wrote (NOT easy but easier).  With that being said, Nullius' concerns are warranted in that if you're going to be serious about writing code that handles money, there's a whole level of responsibility that goes light years above your basic html/css/JS that's found in regular websites that you'll need to be cognizant of.

What helped me start was understanding the core fundamentals of programming in general vs focusing ONLY on the clerical aspects of any one language.  At the end of the day, we're all just talking to a computer and each language is a tool that was developed for specific use cases since a computer only understands 0's and 1's (assembly language).  And anybody who knows assembly language is just a OG pimp in my eyes.

Here's a free video by Bob Martin who is a funny yet brilliant teacher:
https://cleancoders.com/episode/programming-101-episode-1/show

And the entire clean coder series is great but most of it is in Java although some of it is in Go (programming language by Google and I believe what Ethereum was written in?)
https://cleancoders.com

Regarding fundamentals, there's this former martial arts teacher, Stefan Mischook, whose teaching style I personally liked when I started.   
https://www.youtube.com/watch?v=sRj1dMkoyOw
(Warning: He is NOT a blockchain/bitcoin expert like some of the gentleman on this board but for a beginner, gives a good foundation)

I might add (and I know I might get criticized for this but someone taught me this) that if possible, try to learn, or even understand the basics of a functional language FIRST, before learning JS or Python since you'll develop habits that will help organize your thoughts in a way to avoid messy coupling that could lead to bugs.  Mutable state will fuck you up man and even the new language that ppl are hyped about, Simplicity, is a functional language that has NO loops.  If I have time, I even want to try and pick up a little bit of Haskell which Simplicity borrows from I believe.

@Joaco @alia - I wanted to try to learn Solidity awhile back also but after of all the problems Ethereum had been having, I've been reluctant to invest in something that's not solid (pun intended).  What's your opinions of Solidity?

@hgbing - I'm game.  How about maybe setting up a Slack?  If not, I'll Skype ya.





Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: HeRetiK on February 21, 2018, 10:09:12 AM
I do not recommend selecting a “beginner’s language” for anything whatsoever to do with Other People’s Money.  Use a “beginner’s language” if you want to do casual programming, making little games or performing little practical tasks on your own computer.  If you want to handle Other People’s Money, then you need to be a serious programmer.  Serious programmers usually don’t start with a “beginner’s language”; certainly if they have the aptitude, they don’t need to.  If you read up on the concept of, say, pointer arithmetic, and you feel that little light bulb go on in your head—then why wouldn’t you start by playing with pointers?

I have to partially disagree with you here. You can write great code in JavaScript or Python. You can write exceptionally shitty code in C or C++.

While I agree with your sentiment that "serious programmers" should heavily focus on computer science fundamentals I still believe there's nothing wrong with starting with more accessible languages as long as you are willing to move on and are aware of the limitations of the technology you use and especially your own skill level. That is to say, gather experience and knowledge before you even think about handling people's money, regardless of which programming language you start with.


If you have NO experience start with HTML and CSS, slowly work your way into JS. Once in JS, Solidity should come fairly easy to you

This is how we eventually obtain such threads as, “Bad Code Has Lost $500M of Cryptocurrency in Under a Year (https://bitcointalk.org/index.php?topic=2940686.0)”.  See especially the discussion downthread of Ethereum.

This I fully agree with.


Think:  Would you trust a surgeon who started his formal studies by doing “surgery” on pineapples with a kitchen knife, then worked up from there?

Surgeons don't start their formal studies on human bodies either though. Point being, you need to start somewhere and that's okay as long as you're willing to continue learning and are aware of your own skill level.

Regardless of everything stated above I do agree with your sentiment that most people tend to vastly underestimate what it takes to become a software engineer that is actually able to handle money.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: aplistir on February 21, 2018, 11:30:59 AM
Python is the best. There are many easy to use libraries for python, that do all the hard stuff easily.

And I say this even though I have many years of experience in coding C++ and muh less in python.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: J_CCreate on February 21, 2018, 12:53:29 PM
Yep, start with anything, but one thing you need to understand is the logic of the language. It`s popular now to do the Ether smart contracts, so try to watch how are they coded and slowly start to make your own. It will be difficult, but you`ll understand it deep


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: hatshepsut93 on February 21, 2018, 11:31:51 PM

I have to partially disagree with you here. You can write great code in JavaScript or Python. You can write exceptionally shitty code in C or C++.

While I agree with your sentiment that "serious programmers" should heavily focus on computer science fundamentals I still believe there's nothing wrong with starting with more accessible languages as long as you are willing to move on and are aware of the limitations of the technology you use and especially your own skill level. That is to say, gather experience and knowledge before you even think about handling people's money, regardless of which programming language you start with.


I agree with your first statement, for example Lightning App and Zap desktop clients are written in Javascript and Electrum is written in Python. Also, Node.js is widely used for servers, so it's very wrong to mark high-level languages and "useless for serious applications".
But I think it's actually more correct to start with basics like low level languages, information theory, computer science, cryptography and first of all math and then moving on to high-level languages. Because even if they abstract away from low level concepts to make programming easier, it's still important to understand what's going on under the hood to be a better programmer overall.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: HeRetiK on February 22, 2018, 12:08:48 AM
But I think it's actually more correct to start with basics like low level languages, information theory, computer science, cryptography and first of all math and then moving on to high-level languages. Because even if they abstract away from low level concepts to make programming easier, it's still important to understand what's going on under the hood to be a better programmer overall.

Point taken. I'd still argue that starting with a top level language and working your way down is an equally valid approach, alas I can't claim this to be more than my own personal opinion.

I fully agree though that it's incredibly important to get a holistic understanding of whatever technology you are working with. However that's knowledge that takes years to built regardless of whether you are approaching your studies from the top down or bottom up. (studies in the broadest sense of the world, if you ever stop learning as a developer you are likely doing your job wrong)

Apart from theoretic fundamentals, one thing I also find important is to learn new programming languages every now and then. You may never use the language in production, but being exposed to new paradigms and design philosophies can vastly increase your toolset for future endeavours.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: without on February 22, 2018, 12:19:39 AM
I can recommend you C#. Its easy to learn and is much more valuable than learning JS for example.

Start by learning the language basics and then move on to creating your own crypto related project to gain some experience.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: polang on February 22, 2018, 01:45:10 AM
I like python and go. It is simple but powerful


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: nullius on February 22, 2018, 02:10:33 AM
I request that this not become a “generically list your favourite languages” megathread technically unsuitable (https://bitcointalk.org/index.php?topic=1334019.0) even for Off-Topic.

If you propose a language, please explain substantively why you think it will meet OP’s needs.  Better still, suggest an approach for learning that language.  Best of all, explain why picking a language is not the way to start.  —Also best of all, discuss others’ substantive posts.0  See upthread for examples of all these things.

Thank you.


(0. And I do hope to reply to some of the better posts upthread.)


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: Seattle2k on February 22, 2018, 02:43:49 AM
Ivan just posted a video to get you started with Python + Bitcoin
https://www.youtube.com/watch?v=BRgpf97h0eI (https://www.youtube.com/watch?v=BRgpf97h0eI)


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: hatshepsut93 on February 23, 2018, 01:29:12 AM

Point taken. I'd still argue that starting with a top level language and working your way down is an equally valid approach, alas I can't claim this to be more than my own personal opinion.


Well, maybe it matters less how a person starts learning and more how dedicated and passionate they are.


Apart from theoretic fundamentals, one thing I also find important is to learn new programming languages every now and then. You may never use the language in production, but being exposed to new paradigms and design philosophies can vastly increase your toolset for future endeavours.

Sometimes this can be harmful when people try to learn too many languages and end up being a very mediocre programmer with no specialization. As for paradigms, a lot of modern languages have both object-oriented and functional capabilities, so programmers can learn multiple paradigms without the need to learn a new language.

I hope my posts are not drifting too far away from the topic, as I want to add one more advice based on personal experience.

Nowadays there's a lot of courses, online lessons, tutorials that try to teach programming and while they can be great entry points for begginers, I feel like their educational value quickly decreases as soon as a person grasps on the basics of programming. I think the best way to learn is by trying to solve progressively harder problems, reading docs and good technical articles.


Title: Aptitude, the right approach, & “UNIX and C by immersion”
Post by: nullius on February 23, 2018, 02:46:27 AM

Point taken. I'd still argue that starting with a top level language and working your way down is an equally valid approach, alas I can't claim this to be more than my own personal opinion.


Well, maybe it matters less how a person starts learning and more how dedicated and passionate they are.

Also, how able.  Innately.  People are pressured to shy away from that fact, nowadays.  I gave the analogy upthread:  No matter how dedicated and passionate I may be, I will never in this life become an Olympic gymnast.  So as for most people and programming, electrical engineering, theoretical physics...  No, not everybody can be a rocket scientist.

I hope my posts are not drifting too far away from the topic, as I want to add one more advice based on personal experience.

A bit of my own:

As I was forced to admit when gmaxwell showed up in a thread, I have inadequate formal foundations.  Quoting my reply to gmaxwell:

I myself will not try implementing such things, even the “really easy” ones.  I don’t have the CS background.  After tinkering for years, I learned programming by reading FreeBSD kernel code until I thoroughly understood almost everything except the CS-heavy subsystems (vm, scheduler, etc.).  I think you see that my code reflects the style you’d expect from that experience.  Otherwise, as in all else, I take pride in knowing enough to know the limits of my own knowledge.

Many years ago, I started out as a self-described “power user”; though in retrospect, that seems a joke.  I was the guy who could always make the computer work; non-technical people thought I had magic powers.  Also, I always had a strong interest in cryptography.  Read books about it.  Used PGP, etc.  Did cypherpunk stuff.  I had some odd personality quirks; if I wanted to understand how e-mail worked, I would read some RFCs even though I wasn’t implementing anything, and didn’t know how to.

I had always wanted to learn programming; but tutorials didn’t get me beyond what I would call an “advanced beginner” level.  (That is to say:  I could tinker with existing code, and write small programs which did not segfault.  I always did like pointers.)  As a related issue, I wanted to escape Gatesland to a realm with no Windows.  My attempts at that also had the usual results.

Finally, I did the equivalent of natural-language immersion:  Built a new machine, installed FreeBSD on it, and left myself nowhere else to go.  Thence ensued an intense time of pain and joy.  manpages and /usr/src became my best friends.  Also, some very old gems in /usr/share/doc; see the usd, psd, and papers subdirectories.

For assistance in this strange new land, I also had a copy of the C standard, some good old-fashioned FAQs, etc.  One would not learn a new tongue without a dictionary, either.  But mostly, I just read—and read—and read—then experimented, then read some more.  For about a year, one of my biggest passions was simply reading C code until I understood it.

I’ve intended to write up a story of my “UNIX and C by immersion” experience, and post it in Off-Topic.  The foregoing is the abbreviated version.  Perhaps it may suffice...

I’ve also tried to brush up on maths and CS.  Either I need formal instruction for formal rigour, or I’m too lazy, or I lack the innate aptitude.  I probably do know more about computer science concepts than many working “programmers” (a/k/a code monkeys).  This scares me, because I only really know enough to semi-competently choose between algorithms and between implementations of algorithms.

Apropos the topic:  Learning to code is not where to start.  For example:  Before I ever wrote printf("Hello, world!\n");, I knew that I wanted to manage my own memory; and I had an adequate understanding of why this was an important issue.  Learning to code is certainly not the place to start exercising a “passion for cryptos”, per OP.  If passionate about “cryptos”, first learn the basics of applied cryptography.  Most of all, learn generally about computing!  And how do I know OP does not already know these things?  Well, as I said:  By the time you reach the point of picking a language, you should know enough to pick one yourself.



(Sorry this is rough.  I am outside my usual forum access environment (https://bitcointalk.org/index.php?topic=3001981.0).)


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: Vod on February 24, 2018, 03:51:53 AM
^ ^ ^

Awww geez... I think that's a good post, a two merit post.  Nice job!

I geez because I hit the back button on the page and accidently resent the same post merit again.

There is no way that is a four merit post!   ;)


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: nullius on February 24, 2018, 04:19:59 AM
Awww geez... I think that's a good post, a two merit post.  Nice job!

I geez because I hit the back button on the page and accidently resent the same post merit again.

There is no way that is a four merit post!   ;)

Code:
#ifdef	OFFTOPIC
Don’t feel bad.  A rare +4 from you inadvertently places you in good company with other known merit-ultraconservatives, including +10 from Lauda (https://bitcointalk.org/index.php?topic=2934774.msg30155663#msg30155663) (twice (https://bitcointalk.org/index.php?topic=2876160.msg30280286#msg30280286)), +3 from gmaxwell (https://bitcointalk.org/index.php?topic=2905590.msg29896057#msg29896057), and +1 from gmaxwell (https://bitcointalk.org/index.php?topic=2816944.msg29765018#msg29765018).
Code:
#endif /* OFFTOPIC */

Apropos the topic, Vod, I think your advice would likely be meritorious on the subject of learning to write code which handles Other People’s Money.  Such a post by you would also repair the cosmic imbalance caused by your erroneous profligacy with merit.  Please, Vod Sir, help readers become enlightened by your experience on the topic.

I here stand guilty of high-quality-post farming and begging.  Why, I am so heinous that I offer to trade merit for a high-quality topical post!  Let the bizarro DD (Default Distrust) scammers and spammers now red-tag me.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: kamaevoleg on February 24, 2018, 11:06:37 AM
I would prefer JavaScript too. Lisk for example will implement their sidechains in the near future (Q3 this year). Once they did, you can write your own code for your own blockchain. Check out their new website https://lisk.io/.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: ridertiger on February 25, 2018, 12:13:53 PM
I see from your answers that you are a programmer and you have 10 years of experience. I think that makes all the other answers trying to scare you invalid.
You can learn Solidity to come up with a token, which is the most logical thing to do at this point because Solidity developers are highly sought out these days and they are very expensive.
I find this to be a good source of information to start with:
https://medium.com/@ConsenSys/a-101-noob-intro-to-programming-smart-contracts-on-ethereum-695d15c1dab4
Here is a sandbox for you to play with, which I find easier than reading pages and pages of documents:
https://remix.ethereum.org/#optimize=false&version=soljson-v0.4.19+commit.c4cbbb05.js
And finally, here is a smart contract you can copy and paste, and you can change the stuff from there:
https://etherscan.io/address/0xeb9951021698b42e4399f9cbb6267aa35f82d59d#code

Alternatively, you can generate tokens using the neo platform with C++ but they are not really popular yet.



Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: KeithHopkin on February 25, 2018, 09:37:40 PM
you should learn programming languages first i.e python and js


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: gua86402 on March 02, 2018, 11:05:05 PM
I recommend four languages for reference only!

JAVA development language

C++ development language

GO development language

Solidity development language.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: Durison on March 03, 2018, 07:47:49 AM
I would say coding is a very special skillset at this very moment of time. Crypto is the greatest shift of wealth since mankind in my opinion. I thought it was interesting that some coders figured out how to prevent hacking in this specific article. The future for blockchain is incredible security :)

https://news.bitcoin.com/hack-proof-security-centric-phone-built-in-bitcoin-wallet/?utm_source=OneSignal%20Push&utm_medium=notification&utm_campaign=Push%20Notifications


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: mattcode on March 03, 2018, 09:20:36 AM
You could learn Solidity and develop smart contracts on Ethereum network... It's like JS, pretty ease to learn.

Solidity is an awful language, both for beginners and experienced developers. It is full of traps and strange quirks. See the Parity multisig bug (https://www.theregister.co.uk/2017/11/10/parity_280m_ethereum_wallet_lockdown_hack/). If one of Ethereum's founders can't get it right, how is anybody else meant to?


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: taichiswag on March 06, 2018, 04:26:25 PM
Initiate your learning with JS it is easier than others and more flexible


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: nicosey on March 09, 2018, 10:21:49 AM
Python more or less looks likes the English language...


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: darkarchon88 on March 11, 2018, 05:59:57 PM
I think most programming language can be used to create blockchain. Easy language such as JS/Python is recommended, but I suggest you to learn a little bit about C/C++ and you also need to learn about hashing Algorithm.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: pawanjain on March 12, 2018, 05:32:37 PM
I have recently joined an IT firm and through my experience I can say you that if you have the passion to learn coding then it won't be difficult for you to understand how its done. The first and foremost thing you need to do is learn the basics of coding and the logic needed ro solve problems. Once you do this, you can select any of the languages of your choice to start coding and practice the problems level by level. I would suggest you to start with python and then c followed by c++ and then java. Once you learn all these you will know what to do next. It will surely take time, at least 6 months for you to get on the track.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: lionelho on March 13, 2018, 08:22:29 AM
Go or C. Considering using a more modern language, I will prefer to GO between these two.


Title: Re: I want to learn coding / with blockchain whats the best language?
Post by: Valuyet on March 13, 2018, 02:24:55 PM
These days, most programming language can be used to create blockchain. Easy language such as JS/Python is recommended, but personally i recommend you to learn more complex language such as C++ or C# to have better programming knowledge and you could have easier time when you want to learn another language. You also need to learn at least basic cryptography knowledge.

Also, if you have plan to make blockchain which is similar with Bitcoin, i strongly recommend you to read this book Mastering Bitcoin, 2nd Edition (http://shop.oreilly.com/product/0636920049524.do).

In my college days, learning C/C++ at the start will equip us on better understanding the structure of programming languages, so, if you do start learning C/C++ - learning another programming languages are very easy like JS, Phyton, C# and anything.
Blockchain are well constructed with C++ and Phyton and C# for the front end.