Re: what programming language should I learn first?
Quote:
|
Originally Posted by Eric_L
I think I've decided to take the plunge and start writing some small programs for fun. I've had a few ideas for simple programs for a while which I'd like to try to implement. I'm not under any illusions about it being easy. I've written some programs in Basic and have fleeting experience in others.
One idea involves simple web animation so I'm thinking about Java.
The other idea is an iPhone strategy game (2D). It would require me to learn Objective C... and maybe some open GL.
So which do you think I should start with? Do you have any books or websites to recommend for a beginner?
I've looked a little at Objective C and it seems nearly all books are written for people with some experience with other C languages (not me). I'm pretty good at filling in the blanks - but I get easily annoyed with books and manuals which make too many assumptions about the readers existing knowledge..
I'm in no real hurry. I think the fun will be in the assembly more than the finished work. Just wondering which/where to start... Thought I'd ask for guidance rather than jump in blindly...
|
Good question and great attitude! I've been developing software for the last 15 years (frig! I'm getting old) and have written in everything from MIPS assembly language to PHP to Eiffel. You've done a good job laying out what you're trying to be able to do, so that should help.
First, I'd like to add some criteria to your list. Since you're learning for fun, let's not convince you to learn a language that hasn't been used since 1982. So that rules out Forth, COBOL, and yes, IMHO Pascal. ;-)
Next on the list, there are a few languages that you could learn very quickly, but they are unstructured and will lead to your ultimate demise (causing you to fall from the rank of "programmer" to the unenviable position of "programmer fodder"). This rules out SNOBOL (if you are reading this post without some sarcastic inflections by this point, go back and start again), ActionScript and, yes, even JavaScript.
Now, you were considering Java because you wanted to do some web animations. Those actually work better with JavaScript at this point, but I wouldn't recommend learning JS as your first language. IMHO, people do learn better if they start to understand how the machine actually works. It makes it hard to learn from languages like JS that are so far from how a processor actually works.
That being said, Java isn't a terrible option to start learning on. It offers fairly strict Object Orientation (when compared to something like C++), it is a C-based language, and it will get you to the point of seeing what you're coding relatively quickly. If you go that route, spend a few minutes with the book in Borders to make sure it doesn't assume you have prior C or C++ knowledge.
On the other hand, a lot of what you're looking for is still in the C-based world. Objective C is really just C + some extensions. C++ is just Object Oriented C. Java is just a better crack at OO C that is platform independent (and slower, but for simple tasks, no one cares). JavaScript is also C-based.
JavaScript probably isn't the best language to learn first, but IMHO it's going to be the best way to write web code. Given that Java is C-based (at least syntactically), learning C or Java would put you in a great position to learn JavaScript quickly and yet still write good code in an unstructured language.
Other languages to consider might include Python. Personally it's not my favorite language, but truly Object Oriented developers seem to love it. The good points for Python are that you can learn it relatively quickly, it has great OO, it's fairly portable, and it has a lot of good GUI libraries. Good GUI libraries means you can probably write something useful fairly quickly in Python. Additionally, python was the language selected by Google for their Android platform. So, you might be able to start quickly on Google phone apps with Python in your pocket. Be forewarned: Python code is white-space sensitive. That part is a little strange, but it does allow me to keep making SNOBOL jokes. ;-)
Good luck to you!