Well, I was poking through the February 2001 issue of Dr. Dobb's Journal when I came across the following in Michael Swaine's Programming Paradigms article entitled "Alternatives to Java". After saying that a number of scripting languages (including Perl) can claim similar portability as Java, he writes:

What they can't claim, as Perl can't, are the benefits of a real, full programming language.

So my questions are:

Why isn't Perl a real, full programming language?

What benefits are we missing by using Perl?

Okay, a compiled binary is one benefit. But what other things is he talking about? This is the kind of thing that I expect from PHBs, but I have (quite a bit) more respect for Mr. Swaine and so now I'm wondering what I'm missing. I've always thought Perl was a real, full, albeit interpreted, programming language. Am I wrong? Is Mike mistaken? Are we both wrong?

You kinda missed my questions. I realize that there are times when Perl isn't the first, best choice. My questions really are "Why isn't Perl a real, full programming language?" and "What benefits (other than the obvious ones in the node you mention) are being missed by folks who program in Perl?" I suspect Michael Swaine was talking about more than just legacy code and Real Time apps and I'm curious if others here share his view.

Yep, fair enough, I thought this was another when ain't it the best thread. I'm with everyone else here - Perl is Turing complete and has plenty of nice feautres on top of that. I've noticed amoung my friends that Perl tends to be put down the hardest by crazed C programmers who feel that a language that mollycoddles it's programmers by making programming easier can't be a real language. So that statement "Why isn't Perl a real, full programming language" probably has a lot of cultural overtones we are missing from the lack of context.

____________________
Jeremy
I didn't believe in evil until I dated it.

Not having read the article, I can't comment on it. "Real"
is one of those words with no real meaning. It's just a funny, squishy,
feel-good sort of word.

About this thread, though... I think it's
pointless to worry about these kinds of comments. Even
experts have their strong opinions and bigotries based on
bad experiences, misinformation, bar conversations,
or stock options.

Gee, I'd like to know what Mr. Swaine has to say to justify that statement. (: It really just sounds like someone who doesn't know much about Perl (I'm not saying that Mr. Swaine knows nothing about Perl, just that the one quote from him that you gave makes him sound like he doesn't).

I find myself missing features of Perl when I write in other languages much more often than I find myself missing features of other languages when I write in Perl.

Strong typing as usually implemented is a lot less useful
than people imagine. See Smalltalk for a language without
it which is very well suited to large projects. (In fact I
have heard as a complaint that it is really only
suited to large projects.)

But yes. Perl is a real language. You can write real
programs in it. They will do real work. You can get a
real job being paid real money for this. Be happy. :-)

I wouldn't sweat M. Swaine's comments. It can be debated
until the end of time what's "real" and what's not, but to
my way of thinking, "real" is whatever gets the job done.
If a language can be used to correctly solve a problem in a
repeatable, timely manner (elegance is always good, too),
then that's real enough.

That sentence looks like a typo more than anything. Maybe a better use of natural language will help Mr. Swaine be more exact.

There is only one programming language. It looks like this when you try to represent it with symbols 11010110101011101000101010000100100010110.

I consider that painful to write and maintain, especially when you consider that cell phones have more RAM in them than the first home computers. Thankfully, so did a lot of other people, who invented various systems to write stuff down, then wrote programs to interpret that stuff into an appropriate set of 1s and 0s.

Every command-line command, every GUI point-and-click, every script, and every compiled C program has to be turned into that stuff before the computer is going to do anything with it.

The interesting question isn't what does Perl lack that makes it less full (although a hardcore compiler would nice, Perl favors a recursive view of the language which means that any free-standing compiled Perl script has to include or link to a full perl executable).

One of the most basic definitions of "what a real programming language is" says that any language which could implement a Turing machine is a "real" programming lanuage. Everything after that is syntactic sugar. (;
so i'd say perl is a "real" language.
-- cat

While I don't know Mr. Swaine's qualifications, it has
always seemed rather pointless to me to worry very much
about what anyone who isn't very familiar with a
language has to say about it. I write most of my code for
work in Common Lisp, Perl, and (just now starting)
Smalltalk, and on the occasions when I might discuss this
with others, it's quite interesting to hear just how many
misconceptions they have about these languages. When it
comes to language advocacy, I think it's much more
appropriate to talk about all the wonderful things one's own
favorite(s) can do than what others can't, if for no other
reason than one is often (though not always) less
knowledgable about those others.

Perl is just as much a "real" programming language as any I have used. It has its strengths - and its weaknesses too - but when used by competant programmers for appropriate purposes, it is just as sound, just as productive as any other programming language. I do not refer to Perl as "a scripting language". It has all the features and power of any programming language. I suspect Mr. Swaine is talking through is arse, as us Aussies would say.

To risk getting caught up in semantics...
First, in defense of Perl:
"Real" programming languages as opposed to "toy" languages
tend to display features including
1. Object oriented capabilities
2. The ability to reference any structure
3. eval
Last time I checked Perl had all of these, so it must be
a "Real" language.
Of course, he may be refering to the fact that Java has
a stricter OO structure, but then again, is it really
necessary to make *everything* an object.
Not that Java is a bad language. It's very well constructed.
But it seems that Mr. Swaine has fallen prey to the same
"my language is better than yours" attitude that so many
people exhibit these days. It's sad people have to be
"Java" or "C" or "Perl" programmers instead of just plain
programmers.
-osorronophris

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other