There are multiple programming languages that you could focus your efforts on and it will depend on which cryptocurrency you would like to use as a base platform for plug and play functionality.
It would also be important for you to consider what the top programming languages are in 2015/2016, published by IEEE here, and TIOBE. To establish a strong crypto programming foundation, I would suggest concentrating on first learning C++ by using a few beginner books (if you are on a tight budget, you can actually purchase many of these books from a nearby Goodwill or used book store for 1/20th of the price), and then begin to experiment with Node.JS, Python, Perl, and other relevant languages as these are typically compatible/accepted/supported in activate crypto environments.For specifically programming with crypto technology, you can focus on C/C++ with OpenCL / Cuda for GPU programming.
As there is a tremendous amount of capital and funding approved and dedicated now to crypto technology infrastructure and architecture (and rightfully so, brick foundation is crucial), you can secure a high ROI by focusing on those areas as well as wallets, mining services and rigs (C or C++). Also, you should definitely learn about the autonomy, decentralization, fault tolerance, and scalability of distributed hash tables (DHT):
A few great books I personally highly recommend you have in your library:
- Amazon.com: Mastering Bitcoin: Unlocking Digital Cryptocurrencies eBook: Andreas M. Antonopoulos: Kindle Store and it is also available free: https://github.com/aantonop/bitcoinbook
- Amazon.com: Blockchain: Blueprint for a New Economy eBook: Melanie Swan: Kindle Store
List of the major cryptocurrencies and base programming languages:
- Bitcoin: core programming is written in C++; David Derosa’s guides are useful in providing a simple introduction, 1) Bitcoin Script Language (1) and (2) and 2) standard scripts being used.
- Programming the Blockchain in C# is a free book published on GitBook; you can download pdf, epub, mobi versions.
- This comes with a test console app that helps you build a blockchain app in only a few minutes: GeorgeKimionis/BitcoinLib
- BitcoinCore development community is very active: https://bitcoin.org/en/development
- Blockchain University is growing: Home
- Programming Bitcoin Reading Lists and associated Projects: jashmenn/bitcoin-reading-list
- Ethereum: as an open source decentralization environment, it offers multiple options, but for the most immediate impact and usefulness I would suggest learning Go as well as mastering everything related to decentralized applications (Dapps). How to best learn Dapps?:
- If you are completely new to software development, Codeacademy has free “Learn Java” introductory modules that will teach you the basic principles of Javascript, covering conditions and control flow, object-oriented Java, and data structures; Javascript is the language that Solidity is using to build on the Ethereum Virtual Machine (EVM). Once you learn the fundamentals of it you can then port over your knowledge and begin contributing to Solidity. Check out the Solidity Documentation. Note that Homestead was recently released for the Blockchain platform.
- Ether.fund has a directory of Solidity smart contracts that could help you come up with more innovations.
- The Ethereum Github has a great list of useful resources to help with Dapps development: ethereum/wiki
- This article from Consensys provides a useful introductory tutorial on programming Dapp based smart contracts.
- And finally, user jjms from Ethereum stack exchange (works for Ledger Labs) wrote an "Intro to Dapp Development" tutorial here, which “walks the reader through installing Geth, running a local node, a basic contract design, and a more advanced auction contract example.”
Bitcoin API and enterprise software platforms:Once you are ready, you can explore the sandbox at Chain.com, which delivers the power of a “production-grade Chain Core in a simplified development environment, designed for rapid iteration” and it accepts/offers SDKs for: Ruby, Java, Node.JS and aside from having a unified interface, multi-language support, tutorials and sample code, and implementation guides, Chain offers a Virtual Hardware Security Module (VHSM); this is critically important because it is a device that protects and organizes digital keys for secure authentication and provides cryptoprocessing services. With the recent exploitation of security vulnerabilities, this is essential to any crypto platform.Aside from Chain, there are many other Bitcoin APIs that you could learn about: Blockcypher, Bitcoin API and More, Coinbase, and BitPay.The Blockchain has inspired software that is already being tested and experimented with by enterprise technology companies for multiple commercial applications (albeit most of them being private Blockchain based, yet still effective). If you focus your efforts and time on tracking which applications will pick up the most momentum, and then making sure to become an expert in those programming languages, you should create a very competitive profile for yourself for multiple decades to come.
Recent commercial examples that are trending (some excerpts from Wiki):
- Deloitte and ConsenSys announced plans in 2016 to create a digital bank called Project ConsenSys.
- The R3 Project, which connects 42 banks to distributed ledgers built by Ethereum, Chain | Enterprise Blockchain Infrastructure, Eris Industries, Intel and IBM running on Microsoft Azure.
- IBM ADEPT, an IoT system using Ethereum for smart contracts support.
- Microsoft Visual Studio is making the Ethereum Solidity language available to application developers.
- Ethereum Blockchain As a Service (EBaaS) on Microsoft Azure, which provides enterprise clients and developers with a cloud-based blockchain developer environment.
- SafeShare Insurance offers blockchain-based insurance for the sharing economy, underwritten by Lloyd's of London.
If you are interested in learning more, I blog occasionally on Blockgram.com. You can join the newsletter to receive updates.
Happy crypto programming!
If you intend to do smart contracts I would suggest languages like Haskell or Ocaml. Avoid C++ because it's really hard to deal with. Rust beats C++ in memory handling and security features.
The language you choose should be based on your familiarity. Dan Larimer is very good with C++ so he works with C++ because it's a high performance high risk language but the key is high performance. If you know how to write code really well and you develop strategies to mitigate the risks then go with C++ but do not go with C++ if you're trying to have secure smart contracts that any developer can write.
Solidity is not any better than straight C++ from what I've seen so far.
Completely agree! Well said