Language Niches (long)

Paul Prescod paulp at ActiveState.com
Sun Jul 29 13:52:18 EDT 2001


Robin Becker wrote:
> 
> ...
> I believe that well designed languages define their own niche.

I can give you many examples of beautiful languages that fell into
disuse. Sather, Modula-X  and Objective-C jump to mind. The eternally
minor languages like Common Lisp, Scheme, Eiffel and Smalltalk are also
worth consideration. 

Now let's examine some of the other languages out there:

 * For a long time, C was the only way to do system programming for Unix

 * C++ was promoted by Microsoft as the standard way to do GUIs on
Windows

 * Java was the only way to do client-side graphics and then evolved
into "Servlets" and "EJBs"

 * Perl was the defacto way to do sysadmining when sed and awk ran out
of steam

 * Perl was also the defacto way to do CGI in the early web

 * PHP hopped on the dynamic web content revolution after the "masses"
decided CGI is too hard and too inefficient

 * Visual Basic and Tcl were the only easy way to make GUIs for their
respective platforms for a long time

 * Ruby is the only scripting language that Japanese programmers can
count on to have a strong Japanese community

So that leaves Python ... the Zope scripting language? Not really ...
Zope users do not dominate the Python community.

I consider it an amazing achievement that Python is pulling itself out
of obscurity purely on technical merit with no help from a growth
platform like Unix or Linux or the Palm. Judging by history, that should
be impossible. I think Python's only conceivable "niche" is
cross-platform general-purpose rapid application development. Moore's
law is slowly making type declarations irrelevant so there is a need for
a language that allows coding faster than Java and yet can be used for
the same big projects. Smalltalk has the taint of age and Ruby has the
taint of youth.

Nevertheless, this is a somewhat precarious position to be in. Let's say
that either of Ruby or Python were adopted as the "offical scripting
language" for .NET or WAP or whatever the next dominant "platform" is.
The boost given to that language might be enough to essentially wipe out
the other one. "I have to learn language X to work with WAP anyhow. Why
should I go to the extra effort to learn Y?" That's what happend to
Objective-C (versus C++) and various text-hacking languages like Snobol
versus Perl and various GUI environments versus Visual Basic etc.

(note that I reject the polyanish notion that all languages can survive
and thrive -- the closer two languages are in features, the more they
are in competition)

> ... A
> language that constantly needs changing is clearly bad. 

*All* of the scripting languages change constantly. I guess they are all
bad.

Changing syntax all of the time is a sign of youth. It is also a sign
that the user base is small enough and friendly enough to tolerate it.
There is a lot of crap in C and C++ that the inventors of those
languages would like to change but it is too late now. Guido is trying
to avoid that fate. As an aside, Perl users seem remarkably accepting of
change considering the installed base of the language.

> ... That's not to
> say that programming languages shouldn't evolve. The Pascal family, the
> B family each had something. Perhaps the Python family will develop,
> perhaps not. Constant syntax change for a programming language is a sign
> of weakness not strength.

I would much rather see Python evolve than to see Python#, Jython,
Python++ and various other variants split off while our community is
still so small. But really, the int/int->float thing is not really a way
of avoiding a fork. It is more a way of doing *the right thing*
technically in the opinion of Guido and many others. The type/class
stuff is more of a competitive advantage.
-- 
Take a recipe. Leave a recipe.  
Python Cookbook!  http://www.ActiveState.com/pythoncookbook




More information about the Python-list mailing list