Greetings!
Home page
Topics
Contacts
Пейнтбол - полезная игра. Загляните в наш клуб и убедитесь в этом. | ручная шелкография | ккм москва
What Programming Language Should I Learn?

People are always asking me this question, "What programming language should I learn?" Sometimes I hear this from computing professionals who want to expand their skillset by learning a programming language. Other times, I am being asked by a new computer science student who is wondering what programming classes to enroll in. Of course, the answer really depends on who is asking and how they want to use their programming skills.

Different languages are good for different things, and there are several factors that control this. Some languages are well suited to certain kinds of tasks or ways thinking. Other languages produce programs that run fast. Some languages can produce programs that run on a variety of platforms. Today there are languages for a variety of applications on the World Wide Web.

Professional Programmers

Most serious programmers know at least a few languages. They should choose languages for which there is high demand in the employment market. But for their first language, it is critical that they learn the concepts of programming. A language which has specific, difficult nuances can distract a student from the more universally important things they must learn.

There was a language invented specifically for the purpose of teaching programming: Pascal. It is a clean, vanilla language that lacks most of the confusing idiosyncracies found in many other languages. An instructor can teach all of the concepts of procedural languages and structured programming. A student can learn the general concepts of programming without stumbling over the difficult issues inherent in more specialized languages.

Pacal's strength is also its weakness. By avoiding spectacular capabilities, the language is not particularly strong for any given purpose (other than learning). When presented with any problem, I have always found that there is another language out there which is better suited to the challenge than Pascal. This means that, if Pascal is the first of several languages that you will learn, you will have spent time learning a language you won't use.

On the other hand, there is nothing to stop you from using Pascal for actual applications. During the eighties, it was quite common to come across a program that had been written in Pascal. People wrote programs in Pascal because they knew Pascal. That phenomenon has diminished since the advent of Microsoft Windows, but Pascal compilers still exist for many platforms, including Unix/Linux.

Standard Pascal is not object oriented. Object Oriented Programming (OOP) is a method of programming as well as thinking about your program. OOP came into its own during the nineties in large part due to the fact that it is well suited to graphical windowing applications. It is possible to use the concepts of OOP in a language that has no object oriented features, but it is usually more tedious to do so. Borland did add object oriented features to their Pascal compiler, but most implementations of Pascal still do not do this.

This is a disadvantage to someone learning to program. Today, a programmer is severely limited if he or she does not understand the concepts of object oriented programming. Most modern languages involve object oriented concepts. A programmer must learn OOP, but learning Pascal will not give them this knowledge, and they must learn OOP afterwards.

System Administrators

It is my belief that the most effective system administrators are also programmers (maybe that's because I'm a programmer). Many of the problems facing an administrator would be easy to solve if a simple program existed to perform some task. A programmer solves the problem by writing a program. A non-programmer tries to find some other program that can be made (no matter how difficult and ugly) to work around the problem.

For system administration, it is probably most productive to learn some kind of scripting language. On Unix/Linux there are shell scripts. Perl is predominantly for Unix/Linux, but it is also available for Microsoft Windows. MS Windows can also make use of VBScript. These are often not thought of as programming languages (Perl is downright nasty), but they fit a useful role for system administrators and provide most of the control a real programming language provides.

Administators of systems for which a lot of open source software exists (namely Unix and Linux) often find themselves compiling programs from source code. In many cases, there is a minor problem with the compilation process, and the administrator needs to fix it. Being unfamiliar with the language that the program is written in makes it very difficult to handle these little problems. Most open source software for Unix/Linux is written in C.

Knowing C is also very helpful in understanding Unix. The C programming language was invented so that Unix could be written in it. I was once told, "If you know C, you know Unix." This is because they are so complementary. C and Unix grew up at the same time, at the hands of the same developers. A serious Unix or Linux system administrator should eventually learn C.

Web Developers

To paraphrase one of my favorite authors (Douglas Adams), the World Wide Web has become the whole of the computer industry. Countless technologies have sprung up around the Web, and many of those are programming languages. Some of them run on web servers, others run on web browsers. In today's computer industry, it is foolish to not be thinking about learning some of these technologies.

On web servers, there is PHP, ASP (with JavaScript and VBScript), JSP (Java Server Pages), Cold Fusion, and dozens of other things. These languages can all be used to control the information available on web servers. My personal favorite is PHP. It is simple, flexible, and powerful, and has a syntax similar to C. PHP is also open source, and runs on Unix, Linux, and MS Windows web servers.

On web browsers, there is JavaScript, Java, ActionScript (part of Shockwave Flash), as well as several proprietary Microsoft solutions (such as C# and VB .NET). These languages can be used to control the user's experience, how information is presented and manipulated. Each of these languages play a different role on the browser, and your choice really depends on what you are trying to accomplish.

It is worth noting that Java has a wide variety of uses. Java first gained acceptance on the browser in the form of Java Applets. Java can also be used for full-fledged applications on the workstation. Java now enjoys quite a bit of popularity on web servers, running JSP (Java Server Pages) or Java Servlets. Because of Java's strengths, it is starting to become a popular langauge for non-Internet applications as well. Java is a clean, formal, object oriented language, derived from C++ and refined. Java programs can be run on nearly every platform in existance, including MacOS and even PalmOS.

I would also like to say that HTML is not a programming language. The 'L' in HTML stands for "language", but you cannot use HTML to write programs. Don't think you are learning to program if you learn HTML. On the other hand, even the most novice web developer should learn HTML. It is simple to learn, and is a necessary stepping stone when applying any web programming language.

What is Popular?

A significant factor in choosing programming languages to learn is how marketable a skill you will end up with. It might be fun to learn a language like PL-1, but don't expect anyone to pay you to write programs with it. Open up the employment section of the newspaper. Which languages are mentioned the most? Which jobs pay the most?

C and C++ are always good solid choices. There is an incredible demand for Java these days, but will that always be the case? Visual Basic is well suited to many applications today, and as a result there are many job openings for VB programmers. Costly, high-end solutions like Oracle often come with high salaries for its programmers. Programmers of entrenched languages like COBOL and RPG find that they are in high demand because new programmers are not learning these older languages.

If you are using the want ads as your source of in-demand programming languages, do a little research on them before you jump in. You don't want to be limited to a special purpose language like Oracle. Sooner or later, you will need to produce a solution that that language is a poor choice for. A well rounded programmer knows some general purpose languages and some special purpose languages. Find out if the language you are considering will still be here in five years.

The Bottom Line

As I've said, ultimately your choice of a programming language depends on who you are and how you want to use your programming skills. When evaluating a language, look at where it is commonly used and what its advertised strengths are -- and its weaknesses. Find out how this language will look on your resume.

Talk to people. Talk to other programmers you know. If you are enrolling in school, talk to your professors. Of course, if you ask me, I'll just refer you to this web page.


© 2003-2005 BestCode.org.