It’s as easy as “3 ,2 ,1”.reverse
I’ve been learning languages for a while. Technically since I was born, I’ll have you know. Picking words up as I go along. Noticing patterns. Getting taught…a lot. And the summation: I can speak one language fluently, one near-fluently, two almost-not-at-all.
I’ve decided, why not one more?
But this time, with my recent focus on making games, I’ve decided to learn a programming language.
In the past, I’ve tried with little success to learn anything programming-related. Even though I’ve worked on games, I see myself more in the director/writer role, delegating the programming task to someone or something else. RPG Maker comes with a pretty built-up editor, and the community helps to fill in most of the gaps.
This approach isn’t without its problems though. Obviously, relying on a program and a community means that I’m never completely independent. While no one is completely independent, for sure, the ability to create what I’d like to create and not rely on someone, especially when working on experimental systems, is invaluable.
An added benefit to understanding programming languages is understanding the difficulty of programming problems. In a team-based environment, having a solid understanding of how to program allows you to get a feel for how difficult a task is. At an advanced level, it allows cooperative work and suggestions for problems. However, even a basic level helps determine how much time a task might take and whether or not help is needed. Whether I ever become a full-time programmer or not, it’s not a longshot to suggest that the field of games is connected to programming, no matter what job you do.
Like starting Chinese, having the basis in Japanese was a nice edge and helped ease me into it. I’ve looked into some good practices with code and touched code before, so it’s not entirely foreign to me. No matter which programming language I pick up, it will likely help me learn the next one too.
I had a lot of debate about where to start.
From what I’ve seen and read, C# and C++ are very commonly used in the game industry. I’ve also seen it suggested that Java is nice and lets you jump in quickly. Python, a friend of mine’s favorite next to Go, was also a consideration.
Where I’m starting, however, is Ruby.
Why? RPG Maker is done in Ruby. It is the language I’ve had the most experience reading and editing, even if I have little experience making anything from scratch. Almost as importantly, as RPG Maker has a wealth of tools, it also acts as a wealth of well-written code. Like a spoken language, having examples and seeing them work in action is instrumental in understanding how to use it.
When I become proficient enough to be able to read and understand the code in RPG Maker, I think I’ll move to either creating (which, if nobody helps on this current project, will be necessary) or starting another language (Python or C++/C# were my next runners up).
Programming Languages and Spoken Languages
I’m certainly not the first nor the last to make the claim that there are lots of similarities between coding languages and more traditional ones, like Japanese. I’m almost certain that the inclination to call them a “language” was based on their similarity to existing languages, and how there is a grammar and syntax to them. And perhaps, about the fact that you’re communicating with a computer.
Obviously, there are hard conventions and soft conventions in both. Hard conventions are things like how certain phrases are interpreted, where making a mistake will confuse the code itself, making it unusable. Soft conventions are things like indentation, where it won’t confuse the code, but people within the community will find it hard to understand. While the former isn’t too common in spoken languages (using words from another language is the only thing I can think of that will be completely unworkable, like using only Spanish words when talking to someone who only speaks Urdu; even using Urdu grammar won’t make you understandable), soft conventions are what spoken languages are all about. We can fumble a lot in something like Japanese and be understood most of the time, as long as you’re using Japanese words. But putting things in a way that Japanese people can understand (Japanese grammar) allows for easier communication.
One similarity: learning one language seems to help the acquisition of others. Whether you’re learning Portuguese or Arabic, having studied another language tends to help people learn another, even if they’re unrelated language families. Just having that understanding of how you learn and what you need to study generally helps. Even if Python and C++ are very different, someone who has studied one has a much better chance to acquire the other compared with someone who has never studied a programming language before.
Another similarity: Languages are best learned by looking at examples and experimenting, rather than by looking at rules. Nobody who is fluent in a language has been perfect. Mistakes are made, and you learn from them. A perfect programmer also doesn’t exist. But a good programmer has probably made a thousand more mistakes than a bad programmer.
I’m hopeful that this will pan out. So far, I’ve been having fun, but I’m sure there will be tough roads ahead, especially as someone who has never been especially skilled in mathematics.
Part of the reason I mention this, and why I mention half the things on this blog, is to keep me motivated. To put it out there. Because the more I’m held accountable, the more likely I am to finish.
Not to mention that if anyone has any suggestions, or stories about how they learned programming, I’d love to hear them.