Rust or Go, which one should I choose? This is a question I get quite often. My answer is simple: use Go.
In the last few years, I've had the pleasure to work with a lot of talented Software Engineers. One thing that struck me is, that many of them did not have any working knowledge of
Makefiles and why they are useful. Let's change that!
Recently, I tried to implement a binary tree data structure in Rust. Each binary tree has a root value, a left, and a right subtree. I started from this Python implementation, which is quite straightforward.
I've written most of my code in dynamically typed languages such as Python or PHP. But ever since dabbling with Rust, I've developed a passion for static type systems.
It began to feel very natural to me; like a totally new way to express myself.
When I was around 12, I set myself the goal to become a professional programmer.
I can tell, because at this time I made the conscious decision to use my right hand to control the mouse — even though I'm left-handed.
Let me first point out the obvious: yes, the title is a little sensationalist. Also you might be asking why I should be entitled to talk about the future of Rust. After all, I'm neither part of the Rust core team, nor a major contributor to the Rust ecosystem. To that I answer: why not? It's fun to think about the future of systems programming in general and Rust in particular.
One common Systems Design task in interviews is to sketch the software architecture of a URL shortener (a bit.ly clone, so to say). Since I was playing around with Rocket, why not give it a try?
People look confused, when I tell them about my passion for Algorithms and Datastructures. Most of them understand what a Programmer is doing, but not what Computer Science is good for. And even if they do, they think it has no practical relevance. Let me show you with a simple example, that applied Computer Science can be found everywhere.
Programming has many faces. It is the science of structured thinking.
It is the art of eloquent expression.
It teaches you to be humble when you look at other peoples' fascinating work.
Most of all, it teaches you a lot about yourself.
While the syntax may change, the concepts will not.
As long as I can think, Computer Science has been infected by religious flamewars. Having arguments about technical topics can be healthy but flamewars are not. I'm sick of it. I'm fed up by people telling me that their work environment is oh-so better, faster and so on. That's fine but it doesn't matter. Your equipment only plays a supporting role. You don't even need a computer to do programming. Donald Knuth wrote algorithms on a notepad. Alan Turing wrote the first chess computer on a piece of paper. And it worked. Beat that!
My geography teacher once told the story of her first lecture at University. As an introduction, her professor asked the class to draw a map of Germany without any help and as accurate as possible. To her surprise she was not able to fill the map with much detail. Even the shape of the country was a bit vague.
Great people get shaped by their achievements
I recently talked to a student in my neighborhood about his first programming experiences. They started learning Java at school and it soon turned out to be horrible.
A little code snippet that people need very often. Note: This code is probably outdated. If you use C++11 or newer, look for more idiomatic alternatives!
Text files are the single most important way we can communicate with computers. It's no coincidence that they are also the most important way to communicate with other human beings. What we can achieve with text files is invaluable: Write it once and refer to it whenever you want to get the message across in the future. Write a program (it's just text), save it and let the machine execute it whenever you like. Write another text file which contains the rules for the execution of your program and the computer runs your program exactly as you specified (
cron files do that on Unix).
This short article deals with a serious problem in software development: bit rot. When switching to a new platform (for instance from Windows XP to Windows Vista/7) the programmers need to make sure that old bits of code run flawlessly. There are several ways to achieve this goal that will be discussed during the next paragraphs: