A lot of readers have voiced some interesting thoughts so far and I decided to interject at this point to address some of them. I would like to note not one flame was to be found in my stack o' mail. I had intended to wait until the end of the series for this, but instead chose to address them now as:
As more feedback is sent to me I will continue to put a small feedback section at the beginning of each new article.
I received a lot of mail concerning Perl. mainly to the effect that Perl is a great scripting language and Perl is also a great starter language. The former is definitely true, however, it is worth noting I sort of used "scripting language" ambiguously in the last article. Perl is a programming language, so is Python. Scripting vs. Programming is more of a pragmatic and style issue these days. As for the latter, right now I disagree, I believe Python is currently the best educational language out there, if Python did not exist, I would most likely recommend Perl as a first language.. It is also worth noting I do not believe any one language is the end all language, especially Python.
One astute reader pointed out that I sort of word mucked a point I was making. When I said shell scripting is a must learn I meant it more for the user than as a programming language per se. I frown on using shell programming for any task that would seem greater than a handful of commands, besides, Perl is better at that anyway. Instead, shell scripting is a must know for everyday survival on a UNIX system and to help one to better understand the shell environment. In the words of the reader:
"I use shell scripts to kick off python programs all over the place"
I continue to and encourage feedback on this series so it might be enhanced and refined as it is written. Additionally, anyone with links to good beginner's tutorials, please do let me know and I will add them to the growing resources list.
Without out a doubt the three big (more like three and a half) languages out there today are C/C++, JAVA and Perl.
Perl is an easy to learn, easy to write language that is great at operating on strings of arbitrary length(s). As such the Perl acronym of "Practical Extraction and Reporting Language" has been comically portrayed as "Practically Eclectic Rubbish Lister" or reduced to "awk on steroids." While both may have a ring of truth to them, they do not do Perl justice, not by a longshot.
So what makes Perl so great? Time. As I mentioned, it is arguably as easy to learn as Python, however, it does not have a lot of built in pragmas one should follow. As such sometimes someone else's Perl code can be a bit hard to read.
Perl is also interpreted like Python, so there is no pre compiling done, well, that is not true exactly. The interpreter reads the source file, compiles the executable and then runs it. In a sense Perl more or less cuts out the middle (make) man.
But as many readers pointed out, it is also an awesome scripting language. Systems Administrators (myself included) use Perl every day (either automatically or not) to compile reports, trim/filter logfiles, run filescans and a plethora of other chores that used to be done by shell scripts.
Perl is also robust enough to perform applications programming, especially web applications where standard input is involved - again - string manipulation. One of the great things about Perl is scalability. Not unlike Python, Perl inherently scales rather well from scripting language to all out applications language.
I have to confess I do not know a lot about JAVA. I wrote one of the many famous calculator programs and lost interest. What I can say about it is I am always surprised at the variety of uses and places JAVA seems to be popping up and, in reality, has always been since it popped up on my geek radar. Initally I thought JAVA was another GUI language, the difference between it and other ones being it has the "write once run anywhere" action going.
JAVA has turned up in a number of other places as well. JAVA is used to power appliances and micro devices of all sorts. On fast intranets it makes a great user interface tool that scales rather well. JAVA in addition to many other great languages exudes this ability to scale.
Definitely different languages, but evolved from the same core, C and C++ are the most widely used programming languages to date. The reason is simple, while they may not be "write once run anywhere" like JAVA - they came closer to it sooner than any other programming language for its time.. Especially C which was more or less designed to be easily ported.
Still, many programs from many languages can be ported. Another little item about C in particular that sets it apart is it's easy access to hardware through small, clean interfaces. Hence why so many systems level programs and utilities are written in C or C++. Due to the low to high level nature of C/C++, almost all applications that are multi platform are written in C/C++ (including - other languages).
Last, and definitely not least, resulting executable object code is tiny. C/C++ (again, esp. C) are great for writing small, clean and efficient programs. They are the language of choice for device drivers, utilities and low level programs for that very reason.
So what, prey tell, is the downside to C/C++? Well, I have heard this a million times so I will repeat it;
"With C, we have the ability to write great programs and shoot ourselves in the foot in the process."
" . . . with C++ now we can blow off the whole &^%$ leg."
That was paraphrasing a bit but true. It is easy to cause buffer overflows (without even knowing it) or the most famous, hidden errors. I believe logical errors can be done easily in any language but I have to admit they seem somewhat more prevalent in C/C++. I would also venture to say there are so many problems in C/C++ programs because of wide use.