STEM Spotlight: low-level languages, blockchain and algorithms for dummies

What the hell is an algorithm?

This article will focus on explaining the concepts behind low-level programming and algorithms, more specifically what their implementation looks like in real world professional use cases. The target audience for this article is novice, it is intended to give a newcomer a general understanding behind the key concepts that make up this confusing and complicated new world. We will also dive into the world of STEM, what is it, and what role someone looking to specialize in blockchain technologies might expect to find both in the academic, technical side and with real world examples of what problems blockchain sets out to solve.

First things first, lets address the elephant in the room, what exactly is an algorithm anyway? If you’re exposed to social media to any extent I’m sure you’ve heard the term in reference to how the site feeds you content, but what actually is it? We need to understand this concept before we can move forward. Merriam-Webster defines algorithm as:

a procedure for solving a mathematical problem (as of finding the greatest common divisor) in a finite number of steps that frequently involves repetition of an operation broadly : a step-by-step procedure for solving a problem or accomplishing some end

Let’s break this down: in simpler terms, an algorithm is just an operation that you have to do over and over again to receive a result. The main benefit of these types of operations is that they scale very effectively, meaning they’re able to handle lots of information at once which the human brain isn’t very good at doing. Let’s take a very simple mathematical operation and extrapolate it to see how algorithms can make our lives easier.

Say you’re given a spreadsheet full of numbers and told to find the total sum of a column in that spreadsheet. You can go the oldschool route and count one by one and, after a really long time, you will have reached a total number. This approach doesn’t really scale. What if you wanted to know the totals of every column in the whole spreadsheet, the time complexity (the amount of time it will take you to complete a task) will go through the roof! A simple algorithm would allow us to automate this task.

Without even writing a single equation or line of code let’s think of how we can solve this. First we need to know if we’re done counting (if we’ve reached the end of the column), so we can set this as the end condition to cause our algorithm to stop. While we haven’t reached that condition we should take the value of the next row and add it to what we currently have. We start counting at 0 and add row by row until our end condition is met. Congratulations, you’ve made your first algorithm! Hopefully this example has served for you to better understand that algorithms are just fancy ways of making long, tedious processes more automated and efficient.

Ok, so what the hell is a blockchain?

If we take our previous example of algorithms, we can see how humans think in a broader, simpler way. The algorithm we created is only focused on one thing at a time. This is a good analogy for understanding the difference between high-level and low-level. High-level simply means “closer to how humans think” while low-level means “closer to how computers think”. This is a very general answer but to give a simple example: a computer thinks in 0s and 1s. If you’re able to use human words like “print” and the computer understands what you want to do, that computer is operating at a high-level. In contrast if you had to figure out how to tell the computer, in 0s and 1s, what “print” is and how it should go about doing that, that is a low-level approach.

Many developers in various STEM fields work specifically in this low-level field. Let’s take a step back and define what STEM is. STEM is an acronym for Science, Technology, Engineering, Mathematics and people who work in STEM are experts in one or several of those fields. For the purpose of explaining this quickly I will choose a field which requires knowledge of all of these fields at the same time: blockchain.

Blockchain is an interesting and unique new world as it takes the ideas behind how algorithms work and combines it with complex mathematics and automation in order to take advantage of the ever-growing power of computers to create a new tool: a modern solution to modern problems. Primarily it is an interesting and unique new way of thinking of consensus. You may ask: “how does blockchain developing compare to other STEM positions”? Given how it’s a new field that combines many of these topics, there really isn’t a comparable job that exists, it really is it’s own thing. It combines key aspects of other STEM disciplines, but always under the lens of decentralization and consensus. That is what makes this field so new, so interesting and why I’m excited to carve a place in it for my future.

Blockchain challenges

Now that we better understand how algorithms and blockchain work, let’s get a better idea of their role in STEM. Someone choosing to specialize in blockchain and low-level algorithms must be prepared to have knowledge of low-level programming languages. Bitcoin, one of the most famous implementations of blockchain technology, is written entirely in C++, a slightly more high-level version of the original C programming language from the 70s. However there are also some newer, more user friendly ways to work with blockchain such as Solidity, a javascript based programming language which focuses on smart contract protocols running on the Ethereum blockchain.

Another important tool to understanding and writing blockchains are hash functions. Blockchain faces a challenge that we vaguely hinted at earlier which is consensus, or “how exactly does my computer and your computer agree on this data?”. There are many approaches to solving this issue, and one that I find particularly interesting is by forcing your computer to solve hash functions (increasingly complicated mathematical puzzles) and having other computers verify the result. Once enough computers agree and all reach the same answer, we have consensus!

The fact that blockchain technology changes essentially how we agree on things is a game changer and brings forth many interesting and innovative implementations of the tech.

Real world examples

Blockchain has already begun to disrupt the world and gain fame through the invention and development of cryptocurrencies. These play into the idea of consensus that we talked about earlier. If you think about “what is money?” or “what gives this dollar value?” both of those can be answered with: consensus. A dollar is valuable because we all collectively agree and trust that it has value. This consensus, and the fact that there’s a big military behind it willing to make enforce that trust, is what gives money, or at least the US dollar value. Cryptocurrencies (some of them at least) take that idea and say “what if we didn’t need to trust. Don’t trust, verify.”

Increasingly we’re seeing how blockchain developers are targeting other aspects of the legacy financial systems. New protocols are being created constantly that try to provide modern solutions to old problems. Problems such as borrowing and lending, banking, trading, investing. There seems to be a new blockchain protocol every day created to facilitate and modernize some aspect of this financial world. And that’s just limiting ourselves to finance for the sake of this article, the implementations of blockchain in other fields are limited only by the creativity of human imagination. There truly are endless possibilities of implementation of this new technology.

That leads us to some of it’s negatives. Given it is such a new field, regulation is scarce. The market is in a frenzy for all these new blockchain developments and this causes many scams and illegitimate projects to slip through the cracks. We have seen time and time again many blockchain protocols that claim to have good intentions and that will bring some innovative solution to a problem receive ample support and funding only for the creators to take the money and run, leaving the investors and customers with nothing. This is one of the biggest challenges of blockchain development at the moment: sifting through the massive amount of start-ups and “life changing” tech to find what truly is a project worth working on vs which are solutions looking for a problem to solve.

In conclusion

In this article we attempted to achieve a very broad goal: to take a person who doesn’t know anything about algorithms, low-level programming or blockchain and explain to them the basics of this nascent field. Further, we set out to paint a better picture of what an up-and-coming blockchain developer might expect entering the STEM field, what challenges they may face, what tools they may rely on and what obstacles remain to be overcome. Finally we attempted to clarify what exactly is the role of blockchain technology, not only within the world of STEM professionals, but for everyday people. Overall I hope you are as excited as I am for this new and interesting technological realm, and I hope this article helped shed some light on this dark and mysterious new field.

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Implications of skipping Application Performance Testing

one should not skip Application Performance Testing

List of Useful Git Commands

Is AWS lightsail good fit for your usecase?

Networking in Linux : Routing Table and much more …….

Over the past 48 hours I have proposed this idea to the CEOs

1 Minute To Become A Better Developer (#18)

Nugget: Enabling Persistence and Logging for your Mosquitto MQTT Broker Docker Container without…

Introduction to Polkaweb

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Gabriel Vazquez

Gabriel Vazquez

More from Medium

Merkle Trees in the Blockchain

Blockchain Consensus Mechanisms

Model retraining

History of coding language