I had to double check that a Step 1 was not already present before attempting to assign the title to this post, lo and behold it was! Step 1 was simply to think. I encouraged you to spend an increasing amount of time each day contemplating alternatives to your current path. Quite honestly, it doesn’t matter if you’re a college student, tenured employee, or something in-between. Everyone will benefit from developing a loose ‘Plan B,’ just in case things go awry.
No less than a month later I’m ready to dive into Step 2, really learning Java. Anyone with a computer these days knows the name, but Java the software platform (the occasional prompt to update before being able to watch that weird cat video) is a world apart from Java the programming language. Check out Oracle’s About Java page for a brief explanation. Now back to Step 2.
After a great little incident yesterday, which involved me finding a lone Cocoa Programming textbook on the ‘free books’ table of the Informatics and Computer Science building at my university, Step 2 presented itself early this morning. I likely have no more knowledge of Cocoa (the Application Programming Interface (API) used for the Mac OS X operating system) than you do, so I won’t attempt to educate. What’s important is that developing great applications for iOS and OS X, something I’m very interested in, requires a deep knowledge of Cocoa. So, without going too in-depth, developing applications for Mac and iPhone require at least and in no particular order:
- Knowledge of Cocoa, Apple’s API for iOS and OS X applications.
- Proficiency in Objective-C, the programming language in which Cocoa is written and built upon.
- Knowledge of C++, an incredible, low level object-oriented programming language, upon which Java, and other versions of C, are based.
- (Optional) Knowledge of Java, a safe, portable, and universal programming language used in millions of web-based applications.
*Bear in mind that I left out a number of specifics. Such as extensive knowledge of Apple’s Integrated Development Environment (IDE) Xcode, which is required to make use of any of the above abilities.
So of the four general requirements I listed above I’ve decided to further my skills in Java. Why?
Learning a programming language is comparable to learning a spoken language. On top of mastering the structures that a language is built upon (human or machine), one must master the language itself. You probably learned this first-hand in high school foreign language class. Object-oriented programming languages are similar in this sense, but between them share almost the exact same underlying structures. Unlike Spanish and French, the difference between Java and C++ comes from the specific way each utilizes the same set of universal structures. Essentially, once you’ve learned object-oriented programming in one language, you need not re-learn it in another, only the “words” and their meaning within the new language.
The process of learning object-oriented programming is arguably the most difficult hurdle the beginner must clear. Especially since it almost always requires using and learning a new language at the same time. My universities’ CS department chose to introduce object-oriented programming with a language called Scheme. That’s all you’ll hear about Scheme, because I absolutely hated it. Looking back it was probably a better way to introduce the concept than a more massive and complex language like Java, but that’s beside the point. The following semester I was exposed to true object-oriented programming through Java.
For this reason alone I’ve decided the next step is to further my understanding of the Java programming language. While I already have a good grasp on it, I want to take my understanding to the next level. Ultimately, I wanted Step 2 to involve learning C++. But as Java is so closely related to C++, and knowledge of both is encouraged before learning Objective-C, I see no reason to not first expand and refresh my Java skill set.
Big Java, 3rd Edition will serve as my guide through the endeavor. I was familiarized with the text through my course in Java and found it an excellent resource for the beginning object-oriented programmer. Ideally this step will be short and sweet. I don’t plan to write any code unless it proves essential to my understanding of a topic. My hope is that by solidifying my knowledge of object-oriented programming through a familiar language, the process of learning C++ and Objective-C will go much more smoothly.
If you’re at all interested in beginning to program this book is a pretty decent starting point. Albeit, learning any programming language on your own, especially your first, is quite a challenge. The author of Big Java published two similar introductory textbooks titled Big Java: Late Objects and Big Java: Early Objects. As I previously mentioned, grasping the basics of object-oriented programming is more difficult than learning the language itself. Horstmann offers three versions of the text to satisfy different learning goals.
The regular version, pictured here, introduces both Java and objects (the basis of object-oriented programming) at relatively the same speed. For a person with some knowledge of objects, Big Java might be the appropriate route. The alternate versions introduce the concept of objects before (early) or after (late) the introduction to Java itself. Generally, one of these two versions are the best route for absolute beginners. In my academic experience the choice is entirely the professor’s, usually based on his personal opinion of when objects are easiest to understand. I happen to have taken the same Java course twice, with each professor preferring a different version. In any case, objects must be fully understood before proceeding to learn any language. Which method is best for you only experience will determine.
It’s impossible to fully grasp the concept of object-oriented programming until you do it yourself. Languages of any kind are incredibly complex mechanisms for communication. Transforming human thought and action into ‘1’s and ‘0’s that a computer can understand is difficult, but very rewarding. Furthermore, after mastering the basics programming is entirely self-taught. Courses and workshops certainly make the process less time consuming, but the most enthralling aspect of programming (especially to the aspiring entrepreneur) is the means available to learn anything and everything you wish right from your desk.
What began as a simple update has once again evolved into an effort to inspire. I leave you with this: For anyone with which the word ‘entrepreneur’ sparks feelings of excitement, determination, or inspiration, learning a programming language is the first item on your list.
Featured Image: Java Photo By [Shereen M Link to Flickr]