Sunday, February 23, 2014

How to Get into Programming

I found it extremely difficult to break into the world of programming when I first started during my freshman year of high school because it was so very different from anything else that I had seen before and every tutorial that I looked at either wanted to give me a semester long course in computer science theory and history before they taught me anything at all or assumed that I was already well acquainted with all of the basics and never really helped me move through the easy stuff. This tutorial (and the subsequent tutorials) will hopefully ease the absolute beginner into the world of computer science without confusing them too much, while at the same time allowing them to experience the magic of programming.

Some Basic Terminology and Theory

In this section I will just describe some just enough terminology so that I can clearly and concisely communicate with you, dear reader, but not enough to really bog us down. If you aren't really into this sort of thing right now, feel free to skip ahead to the next section.

Computer Science Theory is a very lofty and arduous phrase that altogether just describes the generalized concepts that make programming and related software applications possible. There have been some very intelligent people that have figured out these extremely tricky bits so that the rest of us can come in and create awesome shit.

compiler: A compiler is a program that turns computer code into what is called machine code. Machine code is the crazy binary that you see flash around in the matrix during transitions. Machine code is generally unreadable to most (sane) humans, as it is abstracted to a point that computers can very precisely understand what they are to do. Read more here if interested.

programming language: There are seriously a lot of programming languages, and most were created with a certain application or development style in mind. For instance C and C++ are extremely low-level programming languages that allow you to make everything exactly as you want to. The problem with this is that you have to make everything exactly how you want to, which takes a lot of time. On the other hand, Python has most of the common (and not so common) operations built in, so coding in Python can significantly less time. While some programming languages are related, each has distinct semantic and syntactical rules that govern what makes sense and what doesn't. More on this later.

source code: Code is the set of instructions that a programmer writes in order to instruct the computer in what it should do. Below is a picture of a Python program that converts a sqlite3 database file into a csv (comma separated values) file.

IDE: IDE stands for Integrated Development Environment. A good IDE is a program that makes the process of programming, compiling, testing, and debugging an easier and more painless process. An IDE will often include various tools to that will allow you to isolate and fix problems with your code.

How to Get Started
I would first like to welcome back the other readers that have skipped our introductory section. Your level of studiousness is breathtaking. The first thing that you will need to decide when trying to get into programming is what language you would like to learn. While that often depends on what you want to do with your soon to be gained programming prowess, it is often better to learn the basics on an introductory language that is more beginner friendly before heading off into deeper waters. 

Web Dev: The current industry standards are Ruby, JavaScript, PHP, HTML5, CSS, and sometimes some other crap sneaks in there. Most of those languages are fairy modern and therefore fairly easy for beginners like yourselves to get into. Web development is not my area of expertise nor is it my field of interest, so instead of trying to keep pretending like I know much of anything at all, I will point my finger unto the experts. 
  • Code Academy: An excellent website that guides an absolute beginner through the beginning concepts of computer science and web development. It has courses on CSS, JavaScript, PHP, and Ruby.
  • TryRuby: A really in-depth and well done set of tutorials that helps someone with some amount of computer science experience through the initial stages of learning Ruby.
  • W3Schools: Excellent tutorial sets on nearly every web dev language out there. 
Mobile: The mobile scene is pretty fragmented at the current moment, with three main platforms (4 if you count Ubuntu Mobile) and each requires that their apps be coded in different programming languages. 
  • Android: Java with the Android SDK and XML.
  • iOS: Objective-C and Cocoa Touch API with the iOS SDK.
  • Windows Phone: C# with the Windows Phone SDK
  • Ubuntu Mobile: QML and JavaScript or HTML5.

Not Web Dev or Mobile: For everything else that doesn't run in the browser or on a phone, there is a lot of freedom, but in some cases you are confined to what operating system you have. I will be writing most of these tutorials from the perspective of Windows and on occasion OS X. 

  • Check back soon for more tutorials


Food for thought, my friends.
 ~V 1.0~