Subject: Re: Big Numbers
From: Erik Naggum <erik@naggum.net>
Date: Thu, 18 Oct 2001 02:12:39 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3212359955350833@naggum.net>
* Barry Margolin
| Any competent programmer who can't deal with the issues of converting at
| the appropriate interfaces doesn't deserve the title "competent
| programmer".
Ignoring for purposes of the discussion the general absence of competence
among programmers, the most common error in statically typed languages
that have hardware-representation-oriented, disjoint integer types is to
specify too narrow a type, including the increasingly annoying case of
the widest hardware type not being wide enough, as witness the need to
deal with 64-bit file sizes on traditional 32-bit operating systems, not
to mention the many 16-bit limitations that continue to annoy the Unix
world, or the 8-bit limitation on character representation...
There are many ways to specify integer ranges in various languages that
make programmers choose between wasting space and getting wrong results
_quietly_ after overflows, instead of ignoring space issues and getting
the right results always. Some languages elect to raise exceptions upon
overflow, but what are you going to do about it? (Wa have no concept of
"infinity" for integers.)
| I can't imagine this being the deciding factor in choosing a language.
I can imagine it. It does not take more than two languages that differ
only in their bignum support, and considering the proliferation of both
languages and implementations-called-languages, this situation will come
up if it has not already.
| It's a nice feature to have, but how many applications *really* need it?
That depends entirely on how big your integer is.
| Do you think that C's lack of built-in bignums made a significant
| difference (i.e. more than a percent or two) in the difficulty of
| implementing Mathematica?
I have no idea, but considering the work required to get fast bignums,
leaving it to people who know how to do it seems like a good idea.
| I think Lisp is a far better language for implementing this type of
| application because of its better support for complex webs of data
| structures, *not* because of bignums; that's just the cherry on top.
You could say the same about the support for complex numbers, too. There
are a _lot_ of these cherries on top. Take away too many, and you no
longer have a cherry-topped language. I mean, even Scheme got all of
this number stuff right. And if Scheme has it, it cannot be removed
without making the language less than minimal, now can it?
///
--
Norway is now run by a priest from the fundamentalist Christian People's
Party, the fifth largest party representing one eighth of the electorate.