DCS #2 - Algorithmic Mumbo-Jumbo
So one of these days I was watching The Flash TV series (I know it's over the top but it's fun!) and, at some point in the episode, one of the characters said he would "create an algorithm" to track a supervillain, then he spends a few minutes typing stuff on a computer and comes up with this awesome looking interface and their satellite systems magically find the exact location they needed.
That got me thinking. That and other computer science terms always appear in movies and television and they make it seem so cryptic and complex but are never explained. So I bet nothing would suit this first DCS post better than a concept as fundamental as Algorithms.
What the heck is an Algorithm?
Is it something related to lasers? Hacking accounts? Bitcoin millionaire nerds? Well, not really. An algorithm is simply a cake recipe as my teachers would say. It's nothing more than a sequence of steps to do something, it could be anything!
Let's say you want to make an awesome steemit post. Here is an algorithm for that:
1. Navigate to https://steemit.com
2. Log into a steemit account
3. Click on "Post"
4. Write awesome text
5. Make millions of dollars
Feeling like a hacker already?
So what does it have to do with computers?
Well, you might think that computers are really smart and all but, to tell you the truth, they are VERY stupid.
A computer can do things really fast but can only do whatever the programmer tells it to do (let's leave AI and Machine Learning for another post ;) ). That way, algorithms play a huge role on computer science since every computer program is simply a sequence of steps or commands that the computer must follow in order to do something useful (or harmful in the case of malware).
Programmers can do this by using programming languages which are special human readable languages that can be transformed into machine code that computers can understand (like 0s and 1s). Some of these languages have are very low abstraction level which means they issue the most basic comands existent such as adding two numbers or storing a number in memory for later (they almost talk directly to the hardware). Other languages have a high level of abstraction so that few commands can do big complex tasks like downloading an information from somewhere on the internet. Every language have its place and use but they are all some form of explaining to a computer what is the algorithm that you want it to execute.
The most required programming languages by companies in 2017 (Source)
How can I learn this witchcraft?
If you are really interested in learning how to program (and maybe catch some Flash supervillains) there are plenty of resources on the internet for that. Websites like Coding Dojo, Code School or edX can teach you from the very basics.
Another good way to start is by messing with game making, learning how to create simple websites, mobile apps and other types of projects you have interest. There are some tools that provide very beginner-friendly environments for you to start making those things in simplified ways. There are also paid Udemy courses which are usually very cheap and pretty complete and of course, if you find this area to be as awesome as I do you could always try to become a computer scientist and learn not only about coding but much much more!
If you like this post and/or have any suggestions or if I said anything stupid feel free to comment and help me make this content better for everyone!
Til next time,
Anderson