Apr 26, 2013

You don't have to "know" any programming languages

The title of this article may strike you, but let me explain. For years, I've had people ask me, "do you know Ruby", "do you know PHP", and things like "I didn't know you knew Haskell"; the big answer to these questions is that it really does not matter! You may be thinking otherwise, but let me ramble on a bit.

The most powerful source of information

I've personally been programming for over half of my life (hehe, I'm part of that generation that can actually say things like that), and I have picked up an incredible amount of knowledge through various mediums like, you guessed it, the Internet and many books of all sorts. Like most programmers, I started programming with C and C++, which luckily are both heavily developed languages backed by a plethora of books filled with information. However, one thing I did have, compared to earlier generations before me, is the most powerful source of "free" knowledge, the Internet.

All programming languages have one thing in common

When I started programming even more, learning languages like PHP, JavaScript, Perl, Bash/Zsh, Objective C, and so on, I quickly realized one thing; all programming languages have something in common: no matter what problem you're trying to solve, the logic remains the same despite the language. So sure, when you think about it, you might be thinking I'm an idiot for even mentioning it, but it seems that people forget that whatever function you're programming in one language, can be done in another. Except, there's one difference...

You don't learn the language, you learn its framework

Sorry for anyone that was forced to write in any machine or assembler language, but luckily, those days are over now that we have plenty of high-level languages on the market. But first, let me define high-level programming:

A programming language, requiring a compiler to translate into a form a particular machine understands, focusing on user-friendly code development by automating core tasks such as accessing memory. Src: Wiktionary

The "automating core tasks" part is all done by the framework of the actual language. For example, Objective-C is the best example of this. In Objective-C, there are many different frameworks that are a part of the Cocoa framework, let's take the NSMutableArray class for example. Even though you can write arrays in straight-up C, most people use the built in functions because they are highly optimized (and very smart). When you use NSMutableArray, you are automatically given the tools to do advanced sorting functions and many others that give you a ton of power with very little code.

When you learn a new language, picking up the overall formatting might be tough (like the tabbed indentation in Python or that lines don't end with a semicolon), but after a few days, you usually have that aced (even though I usually crash my Python programs with a semicolon... first world problems :P). The hardest task, is learning the framework, or the tools you need to use to get something done.

Once you ace logic, you can learn any language

To sum this entire rant up, after you've programmed enough and you are a pro at speccing your application out, logic usually never gets in your way. If you need to figure out how to sort an array in Objective C and you don't want to write a ton of code, you'll most likely Google it and come to this StackOverflow article. After you do that, you'll quickly figure out that the NSComparisonResult class is amazing. Or if you're wondering on how to read a file line-by-line, you can quickly figure it out by using the fileinput.input() function in Python, or the BufferedReader.readLine() in Java, or by using (NSArray *)componentsSeparatedByString in Objective-C.

So long story short, you can learn any programming language easily. As long as you understand logic and how to program in general, it's really easy to pick up another language. You might mess up and have a function return weird, unexpected results (C++ is notorious at it), but for any programmer who has been programming for a while, it's usually easy to debug the program and see what's up.

And like anything else in this world, if you keep on hacking away at it, soon enough you'll become fluent at your programming language of choice without even trying (you don't need to read books to learn another programming language. Just hack away it). The best way to learn a new programming language is to just pick it up and start coding; you'll learn way more from your own mistakes than a book or any online course will ever teach you. But that's an entirely new topic that I can save for another day.


I've personally dabbled in all the front-end web languages (JavaScript, HTML, CSS), PHP, Perl (Django), Ruby (On Rails), Java, Objective-C, C, C++, C#, Visual Basic, .NET, Lua, Bash/Zsh, ActionScript, Flex, ColdFusion, Adobe AIR, and probably more... so I'm far from being dependent on any language. But if you only know one language right now or are just learning on how to program, keep in mind that in the long run, as long as you are learning how to program and how to solve problems, it does not matter what language you choose. There will be languages you love, languages you absolutely hate, but no matter what, there's nothing stopping you from trying another one.


Let @tjasko know on Twitter!

Stalk me on social media! Any other way would just be creepy…