On 2009-11-13, at 22:51, Alf P. Steinbach wrote:
> It's sort of hilarious. <g>
It really is, see below. 

> So no, it's not a language that is slow, it's of course only concrete 
> implementations that may have slowness flavoring. And no, not really, they 
> don't, because it's just particular aspects of any given implementation that 
> may exhibit slowness in certain contexts. And expanding on that trend, later 
> in the thread the observation was made that no, not really that either, it's 
> just (if it is at all) at this particular point in time, what about the 
> future? Let's be precise! Can't have that vague touchy-feely impression about 
> a /language/ being slow corrupting the souls of readers.
Because `language is slow' is meaningless. 

An earlier post of mine listed four examples where the common wisdom was `XXX 
is slow' and yet where that 
turned out not to be the case.

Some others. 

1. I once owned a Commodore 64. I got Waterloo Pascal for it. I timed the 
execution of some program 
(this was 25 years ago, I forget what the program did) at 1 second per 
statement. Therefore: `Pascal 
is slow'. 

2. Bell Labs produced a fine programming language called Snobol 4. It was slow. 
But some folks at 
IIT in Chicago did their own implementation, Spitbol, which was fast and 
completely compatible. 
Presto: Snobol 4 was slow, but then it became fast. 

3. If you write the following statements in Fortran IV (the last version of 
Fortran I learned)

   DO 10 I=1, 1000000
     DO 10 J=1, 1000000
       A(I, J) = 0.0
10 CONTINUE

you would paralyze early virtual memory systems, because Fortran IV defined 
arrays to be stored 
in column major order, and the result was extreme thrashing. Many programmers 
did not realize 
this, and would naturally write code like that. Fortran cognoscenti would 
interchange the two 
DO statements and thus convert Fortran from being a slow language to being a 
fast one. 

4. When Sun released the original Java system, programs ran very slowly, and 
everybody said 
`I will not use Java, it is a slow language'. Then Sun improved their JVM, and 
other organizations 
wrote their own JVMs which were fast. Therefore Java became a fast language. 

> Actually, although C++ has the potential for being really really fast (and 
> some C++ programs are), the amount of work you have to add to realize the 
> potential can be staggering. This is most clearly evidenced by C++'s standard 
> iostreams, which have the potential of being much much faster than C FILE i/o 
> (in particular Dietmar Kuhl made such an implementation), but where the 
> complexity of and the guidance offered by the "design" is such that nearly 
> all extant implementations are painfully slow, even compared to C FILE. So, 
> we generally talk about iostreams being slow, knowing full well what we mean 
> and that fast implementations are theoretically possible (as evidenced by 
> Dietmar's)  --  but "fast" and "slow" are in-practice terms, and so what 
> matters is in-practice, like, how does your compiler's iostreams 
> implementation hold up.
OK, let me work this one out. Because most iostreams implementations are very 
slow, C++ is a slow 
language. But since Kuhl did a high-performance implementation, he made C++ 
into a fast language. 
But since most people don't use his iostreams implementation, C++ is a slow 
language again, except
for organizations that have banned iostreams (as my previous employers did) 
because it's too slow, 
therefore C++ is a fast language. 

Being imprecise is so much fun! I should write my programs this imprecisely. 

More seriously, when someone says `xxx is a slow language', the only thing they 
can possibly mean 
is `there is no implementation in existence, and no likelihood of an 
implementation being possible, 
that is efficient enough to solve my problem in the required time' or perhaps 
`I must write peculiar
code in order to get programs to run in the specified time; writing code in the 
way the language seems
to encourage produces programs that are too slow'. This is a very sweeping 
statement, and at the very
least ought to be accompanied by some kind of proof. If Python is indeed a slow 
language, then Unladen 
Swallow and pypy, and many other projects, are wastes of time, and should not 
be continued. 

Again, this doesn't have anything to do with features of an implementation that 
are slow or fast. 
The only criterion that makes sense is `do programs run with the required 
performance if written 
in the way the language's inventors encourage'. Most implementations of every 
language have a nook 
or two where things get embarrassingly slow; the question is `are most programs 
unacceptably slow'. 

But, hey, if we are ok with being imprecise, let's go for it. Instead of saying 
`slow' and `fast',
why not say `good' and `bad'?

-- v
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to