Why do people invent new programming languages? In some cases it's for commercial reasons - they want a share of the cake and really they would be far more efficiently employed elsewhere; I guess that languages such as J++ and C# fell/fall into this category, but then that's a personal view that not everyone might share. For sure, such languages can end up being a success, but often at the expense of a different and perfectly good language that was already around.
Other languages (I think we can call Perl 6 a "new language") are a genuine move to new ground - in the case of Perl 6, taking a language that's coming up to 20 years old and using what's been learnt in those last 20 years to provide something designed for the next 20. When Perl was first written, functions like format and write were a vital part of the language and the "." operator was a natural for string concatenation.
Yet other languages fill niches. PHP is a good example; it's (?) the first language to be truly written to provide web site content rather than simply embedding an existing language in web pages or interfacing it through CGI. And the result? For the niche that it's in, it provides a really excellent solution with little compromise to other wider application area - and it's made it big as a result, now being available on about a third or worldwide domains.
PHP's success is based on the premise that it's a web language
and modifications, developments and enhancements are aimed in that direction. It turns out that it's also very good for certain stand alone use, and I'll even encourage people to use it stand alone in certain circumstances but that's not its main thrust and to add facilities to the language to improve its support for a non-core use at the expense of its core use would be a mistake
. I was, then, very happy to listen to Rasmus Lerdorf talking on this subject last month - to hear him say that the future direction remains the web and that the language is not looking to widen itself into a general purpose computing language. I think he's right; we already have one C and two Perls, and three Perls (one called PHP) would be one Perl too many. (written 2004-11-30, updated 2006-06-05)
|David Corking:||Graham, (serves me right for making a 6 paragraph comment - but Movable Type has trashed all my paragraph breaks)|
Your article was really a technical one but I would like to take an aside and follow up on the social and commercial issues you raised, firstly J++/C# meeting a need or competing for existing market, and secondly the issue of PHP sitting alongside other scripting languages.
You wrote "they want a share of the cake and really they would be far more efficiently employed elsewhere; I guess that languages such as J++ and C# fell/fall into this category"
J++ in my view is not a language - it is just a compiler front-end for an existing language the product team dare not mention by name.
C#'s origins, from my reading, seem a little different.
Academics (funded by a big vendor) came up with an extension to the virtual machine concept. Their machine had a Common Type System, that allowed all types (whether value types or reference types) to be shared across running, multi-threaded and even remote modules and code libraries. Java and C++ can't do this, and the code for event-driven callbacks is uninviting. To them this was the start of a whole new generation of large-scale, distributed, run anywhere applications. It may still come true.
So they saw themselves as designing C# to fill a niche. The niche was a language that exploited the features of their Common Type System and made it easy for programmers to do so. They did this by cutting out things from Java and C that broke the model and added simple syntax for features of their virtual machine model that they saw as most powerful. C# is picked up very quickly by C++ programmers, who seem to have fun learning it. I tip it to fill at least one niche - being the C++ replacement on Windows.
I do take your point that they could have been 'more efficiently employed elsewhere'. If the Java community permitted a Java 3 with these features, then they could have used the free time to create more manageable security models for remoting and web services, or to port MFC to Scheme. However, I bet they had fun making C#.
(comment added 2004-11-30 11:48:41)
Thanks for your comments 6 times over. I wanted to get back with you quickly / yesterday but everything seems to have been happening in the last 24 hour ... so this is really just a holding note. I REALLY WANT to comment back (largely to agree ;-) ) and hope to get a chance in the next 24 hours.
(comment added 2004-12-01 09:42:23)
I've taken 10 times longer than I should to get back with you on this one.
I think we're broadly saying the same thing on J++; it's "just another ..." (perhaps not a language) where time and resources could and should have been better employed elsewhere.
You have an excellent point on C# - with the extension of the Virtual Machine concept - it's not totally a "me too" language that my original post may have implied. I do, though, still wonder at why we need to have both Java and C# and whether time and effort would have been better employed in using resources to come up with a single language rather than coming up with two which are so close. (And, reading on, I think you make a similar point from another angle, "Java 3"). Of course, the instigators / designers of a language will always be fired with enthusiasm for what they're cretaing so they probably won't be the best judges as to whether it's a good idea.
(comment added 2004-12-07 18:35:47)
|David Corking:||I am not a regular blog commenter - but I understand that commenters are not supposed to expect responses from the author. So thank you for so honouring me.|
Your observation, Graham, about language designers not being the best judge about the value of their baby brings us to almost total agreement.
I am not totally familiar with cgi, so I am glad to hear that replacing Perl with PHP on the web gets rid of at least one thing that people hated (cgi that is - not Perl - I don't want to get into that debate.)
(comment added 2004-12-07 20:24:15)
Associated topics are indexed underH101 - Introduction to PHP 
Learning to Program ... in PHP. Course examples. - (2010-11-01) 
PHP Course - for hobby / club / charity users. - (2009-03-22) 
PHP - Parse error: syntax error, unexpected $end ... - (2008-12-23) 
Perl v PHP, choosing the right language - (2008-08-14) 
Q - Should I use Perl or Python? - (2008-07-23) 
From Web to Web 2 - (2007-05-21) 
The HTML++ Metalanguage - (2007-01-22) 
Sludge off the mountain, and Python and PHP - (2006-11-27) 
The LAMP Cookbook - Linux, Apache, MySQL, PHP / Perl - (2006-11-13) 
Syntax checking in PHP - (2006-11-07) 
Is Perl being replaced by PHP and Python? - (2006-08-27) 
Remember a site's non-technical issues too - (2006-07-07) 
Hot answers in PHP - (2006-07-02) 
Why reinvent the wheel - (2006-05-06) 
Testing you Perl / PHP / MySQL / Tcl knowledge - (2006-04-19) 
PHP - London course, Melksham Course, Evening course - (2006-03-14) 
Choosing the right language - (2006-03-01) 
It's REALLY easy to add a little PHP - (2006-02-26) 
Learning to program in Perl or PHP - (2006-01-26) 
FTP - how to make the right transfers - (2005-09-01) 
Central London Courses - Perl, PHP, Python, Tcl, MySQL - (2005-07-18) 
Bridging to the customer requirement - (2005-07-16) 
Happy Birthday, PHP - (2005-06-09) 
Programming languages - a comparison - (2005-05-20) 
Portrait of the author - (2004-11-27) 
PHP v Java - (2004-11-20) 
Case Sensitive? - (2004-10-19) 
Evening classes to learn PHP - (2004-09-19) 
PHP - onwards and upwards - (2004-09-14)
Some other Articles
Just provide a room and the studentsPerl - redo and last without a loopCertification schemesPlease tell usToo many PerlsGeekmas - a brief reviewTcl embedsThanksgiving dinnerSpelling and grammar