I wrote a post over a week ago that has seen more traffic than this blog gets over the course of months. I have Digg to thank for that traffic. That post was regarding what programming language I recommend to people new to software development. Once Digg gets a hold of a story, the comments flow rapidly. I normally like to respond to comments on this blog, but I skipped that post because of the general volume. Instead, I figured a general explanation of my thinking was in order.
First, I completely dropped the ball on Apple/Mac/iPhone development. I had it in my notes, but somehow completely forgot to add it. I do not currently develop for these platforms, but my understanding (and the understanding of some of the commenters) is that you need to learn Objective-C. My apologies for missing this one.
Regarding the comments that HTML, CSS and XML (and any other tools or markup languages mentioned) are not programming languages, I am well aware of that. Was the post titled inappropriately? Maybe, but I needed to give it a title and “programming languages” was the main focus, so I went with it. The other side of this is that this is just a small blog. This is not the New York Times or some other bastion of objective journalism. This is my blog with my opinions and biases. There was even a comment regarding my pro-Microsoft bias, which is laughable. Anyone who knows me can tell you that I am no lover of Microsoft. I have even been called a Microsoft basher at times. However, I do believe that there is an appropriate tool for every job, and sometimes Microsoft tools are most appropriate.
Another fun group of comments were regarding the scalability of PHP. I know major web applications use PHP and they get massive amounts of traffic. However, my focus was on the front-end prototyping aspect, and PHP is great for quickly whipping up a site. The people that use PHP with heavy traffic likely use various tools to ensure that their site scales well. PHP for the front end is a good solution for any site, but if you are using it for the server side you really need to know what you are doing. This also applies to almost every programming language that you can choose. When it comes to real scalability, get some experienced help.
Lastly, I wanted to respond to the “how could I not include C/C++” comments, and there were lots of them. The post was focused on someone knew to software development. This meant that I wanted to focus on languages that people could learn in a fairly short amount of time without a huge amount of pain. At one point in my career, I have taught courses and assisted with courses about C and C++. These are not languages that provide a gentle introduction to programming. They are languages that provide power in the hands of experienced and knowledged developers. I would never recommend them to someone trying to break into the industry. Java, C#, PHP and Python are much simpler to learn and can get people into the industry quicker. If they want to pursue a career in game programming, device driver development, real-time systems or embedded systems, then they will need to learn C and C++. But that is not something you start with, you start slow and when you get enough experience, that is when I would recommend learning these two languages.
Hopefully, this will clear up any confusion I created about what I was thinking or how I could think such blasphemy.