[Curious] Integer division => fraction

Andreas Raab andreas.raab at gmx.de
Thu Jun 12 02:16:05 UTC 2003


Hi Dan,

Thanks for this interesting response. One more question on "historical"
grounds: I was wondering if there actually had been any (reasonably good)
floating point point operations on the hardware you were dealing with. These
days, floats are a zillion times faster to compute than fractions but this
hasn't always been the case - so I wonder if "back then" fractional
arithmetic was at essentially the same speed as floating point arithmetic
(which, from my POV, would be a clear reason to use fractions instead of
floats as you don't buy anything with floats in this case).

Cheers,
  - Andreas

PS. Of course what "most people" think is always hard to estimate - but
that's exactly why I'm soliciting responses and both Johns and your reply
give valuable insights ;-) I'm hoping for more.

> -----Original Message-----
> From: squeak-dev-bounces at lists.squeakfoundation.org 
> [mailto:squeak-dev-bounces at lists.squeakfoundation.org] On 
> Behalf Of Dan Ingalls
> Sent: Thursday, June 12, 2003 3:39 AM
> To: The general-purpose Squeak developers list
> Subject: Re: [Curious] Integer division => fraction
> 
> 
> "Andreas Raab" <andreas.raab at gmx.de> wrote...
> 
> >Just had an interesting discussion with Dean (over on 
> e-Lang) about integer
> >division semantics. He pointed out (and I agree) that most 
> people tend to
> >find it it confusing that "3/4" results in a fraction rather 
> than coercing
> >to Float by default.
> >
> >My questions: What do you think about this issue? Are you personally
> >surprised if you get a fraction back? Has it bitten you in unexpected
> >places? Have you actually ever had the need for coercing to fractions
> >instead of floats? Can you think of "typical" applications 
> that would be
> >harmed by coercing to floats?
> 
> There is of course no assurance that a simple and consistent 
> design will be what "most people expect".  I mean, most 
> people expect C or Java or Basic.  That said, I think there 
> are interesting underlying issues here.
> 
> I think I agree that "most people" think about arithmetic as 
> operator-based, and not as object-oriented (ie dependent on 
> who is receiving the message).  This was NOT how we thought 
> about it when we first asked ourselves "Hmm, here we have a 
> world of objects; how should they behave" back in the early 
> 70's.  In those days (for a while) 3 + 0.14 gave you a 
> different result from 0.14 + 3.  This caused a LOT of 
> confusion, and so we introduced coercion.  The current 
> coercion scheme fits pretty well with what "most people 
> expect" in spite of giving full receiver control over semantics.
> 
> On the eve of the Smalltalk-80 release, we had a lot of 
> serious discussion about the various arithmetic operations -- 
> integer division, real division, how modulo works with 
> negative numbers, etc., etc.  While I participated, it was 
> others (Peter, Glenn, Ted, Adele, and anyone with traditional 
> math sensitivity) who made the final decisions on these.  The 
> question here is one of definition.  What does "/" mean?  In 
> St-80 it is supposed to mean "exact" division, not "give me 
> the best you can" (except for Floats who can't do anything else ;-).
> 
> However, I think that "most people" have come to accept "give 
> me the best you can" for "/" because "most systems" don't 
> offer fractions and so, in their own desire to approximate 
> what "most people expect" they deliver floating point results.
> 
> Now, unfortunately IMO, for "most people" acceptance becomes 
> expectation (a human tendency), while the definition of "/" 
> in Smalltalk has not changed, and 355/113 is not pi, even 
> though in a lot of systems you might think so.  That's the 
> purist perspective, which John Sarkela articulated in a lot 
> less words.  I know the tension you feel, and yet I don't 
> think we have to feel ashamed of our position.
> 
> Besides simply remembering and advertising that "/" means 
> exact division, there are a couple of other possibilities, of 
> course.  One is to have a preference to print fractions as 
> floats.  Another is to change "/" to mean produce a float.  
> If anyone opts for this, then I would certainly  agitate for 
> SOME other operator that means exact division.
> 
> I would be interested to hear what the MathMorphs folks would 
> have to say about this, or anyone familiar with, eg, MathLab 
> or the good Lisp math libraries.
> 
> 	- Dan
> 



More information about the Squeak-dev mailing list