On Thu, Aug 22, 2002 at 12:20:19AM +0900, Yukihiro Matsumoto wrote:
> |To Andrew Hunt and David Thomas:
> |
> |I think in the book "The Pragmatic Programmer", one of the advices is to
> |learn a new language at least once a year.  Probably for the year 2001 it
> |was Ruby.  Now we are already in August 2002.  Is there any language
> |candidate for this year?
> 
> I remember Dave once said his language for the year 2001 was Japanese.

Come on... He's a Pragmatic Programmer, not a Utopian one :-)
Japanese would be more like "one language per decade" :) (and I probably
fall short)

You'll soon have to answer such things as "is it worth switching to
Japanese if I know Ruby" or "can Japanese be embedded in a C application";
the responses could arguably be yes in both cases :-)

Maybe we should have a FAQ:

* Who's behind it? Is it ready for prime-time? 

Japanese is a time-proven, industrial-strength language. It is actively
used by more than 120 million people worldwide. It is little known out
of Japan but it is much more used there than Python, Perl and even C/C++!
It is also a very general language, suitable for any application you can
think of!

We don't know who's the current maintainer, but who needs one, anyway?

* I've heard Japanese supports OOP, is it true?

 Yes; basic OO features such as classes, inheritance, etc have been used
for a long time. Moreover, advanced concepts such as mix-ins and
iterators can also be expressed in Japanese.
 
* Is Japanese more OO than Python?

Yes and no. Everything can be thought of as an object, but Japanese is
multi-paradigm. You can think OO, functional, logical, whatever!
But in a way it is more OO as you can extend all values. Methods and
objects can easily be protected or made private.

* What are its more interesting features?

 - it is multi-paradigm: dataflow, functional, logical, procedural, OO...
 - dynamically typed: variables (references) are type-less, but the values they
     point to have their own type. For performance and/or other reasons,
     you can specify the expected type with the type markers: "-chan",
     "-kun", "-san", "-senpai", "-sensei", etc... Values ares very often
     promoted, for example from "-chan" to "-kun". This dynamic typing
     allows you to use the same value in different contexts (try
     pointing to an unknown value as "-chan" and watch the result!) This
     is however quite an advanced feature, unsuited for newbies
 - HUGE library of already-made, fully-debugged classes
 - access to these classes is done via "Kanji" in Japanese terminology,
   of which there is an ENORMOUS number

* What platforms can I use it with?
 
 Japanese has been used near Windows(TM). It can also be used in Un*x
 and POSIX-compliant systems. Just about anywhere there's people,
 Japanese can work!

* So if it's so advanced, is it for me, the Pragmatic Programmer?

Forget it. You'll never be proficient enough with Japanese. Its design
is too alien for us and very few people outside of Japan have been able
to learn it. Use BrainF*ck instead.

-- 
 _           _                             
| |__   __ _| |_ ___ _ __ ___   __ _ _ __  
| '_ \ / _` | __/ __| '_ ` _ \ / _` | '_ \ 
| |_) | (_| | |_\__ \ | | | | | (_| | | | |
|_.__/ \__,_|\__|___/_| |_| |_|\__,_|_| |_|
	Running Debian GNU/Linux Sid (unstable)
batsman dot geo at yahoo dot com
  
Linux: Where Don't We Want To Go Today?
	-- Submitted by Pancrazio De Mauro, paraphrasing some well-known sales talk