[Zope-dev] PHP is to Perl as Java is to C++

Don Hopkins xardox@mindspring.com
Tue, 23 Apr 2002 17:09:40 -0700


In the same way that Java was a reaction to the wicked corruption of C++,
PHP is merely a reaction to the wicked corruption of Perl.
Any language whose design is based on imitating another crippled language is
at a disadvantage to a language like Python that was well designed in the
first place.

PHP may seem like a good idea to someone who's only ever programmed in Perl
and is sick of suffering, but compared to Python it's a toy.
The same goes for Java: it only seems like a good idea when compared to C++,
without considering language like Python or Lisp.
But neither Perl nor Java are serious about easily interfacing to other
languages and libraries, as Python is.

Java's biggest problem is that it's intended to be as a weapon in the war
against Microsoft, more than a programming language.
So it's purposefully designed not to get along with other languages. The
slogan "100% Pure Java" smacks of intolerance and racism.
PHP doesn't suffer from such a debilitating political agenda as Java does,
but it's even more of a toy language, no good for programming in the large,
and it doesn't even have much of an advantage over JavaScript.

Dr. Dobb's Journal covered the Lightweight Language Workshop at MIT:
http://ll1.mit.edu
http://www.ddj.com/documents/s=2287/ddj0202a/0202a.htm

PHP wasn't represented at the workshop, since it's not usually considered an
interesting language by people who know more than one.
The Perl people in attendance made fools of themselves and were not taken
very seriously, because what they said demonstrated their amateur grasp of
language design.
(I've included an excerpt from the article demonstrating that below.)

I understand the argument that all Turing complete programming languages are
equivalent in what they can compute.
But programming language design goes far beyond Turing completeness:
Language design is user interface design, because programmers are language
users.
Languages like Perl and C++ that ignore the important tenants of user
interface design are badly designed languages.

It's unethical to evangelize badly design languages, even if it's simply out
of ignorance, and especially if it's in the name of job security through
code obscurity.
The fact that sombody's invested years in learning C++ or Perl is no
justification for spreading the disease, when there are better more
appropriate solutions available for free.

    -Don

====
http://www.ddj.com/documents/ddj0202a/

Most of the talks were relatively uncontroversial. However, during the Simon
Cozens and Dan Sugalski presentation on Perl 6, the clash of cultures
quickly became apparent. Cozens and Sugalski gave an excellent summary of
Perl 6's run-time engine, but their interaction with the audience was
awkward, and the ensuing discussion, although reasoned, was heated.

Several attendees noted during the talk that the Perl community seemed to be
reinventing the wheel in areas such as virtual-machine implementations and
garbage collection. At times, the feedback included some not-so-subtle
barbs. To their credit, Cozens and Sugalski accepted this feedback
gracefully, requesting URLs so that they could examine the appropriate
papers themselves.

Unfortunately, they occasionally inadvertently incited the crowd with their
flippant remarks. Sugalski, for example, explained that Perl's run-time
engine needed to support a number of high-level programming concepts, and he
showed a slide that listed some of them. When coming across "continuations"
on his slide, he said, "Let's skip that. I don't really understand them."
Gasps were heard throughout the room, as Sugalski's blunt confession seemed
to be proof that "Worse Is Better" communities were indeed ignorant of
computer science.

Sugalski also stated that, for academics, "Perl is not very interesting."
Although several members of the audience nodded in agreement, it was an
unfortunate claim to make, because it was clear that neither Sugalski nor
Cozens really knew what academics were interested in.

====