Re: Language design

2015-07-13 Thread Michael Zedeler
 Darren Duncan wrote 

 On 2015-06-16 2:15 PM, The Sidhekin wrote:
  On Tue, Jun 16, 2015 at 10:52 PM, Michael Zedeler mich...@zedeler.dk 
  wrote:
  ...and unpredictable performance is a cost you're willing to pay?
 
     I don't write performance-critical applications, but even if I did, why 
 would
  I prefer getting the wrong answer faster?
 
 I agree with Sidhekin and similar mentalities.
 
 On the range between safety/correctness and speed, a good programming 
 language / 
 tool should always default to the most safe/correct option when the user 
 doesn't 
 specify where on the range they want, and leave it to the power users to 
 explicitly make the trade-off when they know what they're doing.
 
 In this case, people who explicitly want floats because of performance rather 
 than exact rationals do indeed count as power users.

I'd still pull out the argument that you want the least surprising behavior. Of 
course, I would prefer being able to add two rational numbers with very large 
denominators and have the underlying machinery shorten the result for me, but 
the performance hit is easy to great. Am I missing something here, or wouldn't 
most people expect addition to be a constant time operation?

Imagine a really simple operation: a script that takes a spread sheet, parses 
it and writes out the weighted average of some of the columns. Anyone would 
expect that if 40,000 rows takes 1 second to process, then 80,000 takes 2. With 
Perl 6 not do much. You'd have to switch to power user mode to get that kind 
of predictability.

 Normal people are more interested in not being surprised by the answers they 
 get 
 to what should be common-sense questions, such as when adding 10.3 to 14.2.

So far, almost every other language has behaved this way, and it has worked. I 
can see that Rats do solve a problem, but if you'd claim that it is very severe 
then I'd disagree. This is a minor nuisance that I'd only pay a small price to 
fix.

 I should also point out that finance / anything to do with money is an 
 extremely 
 common use case that cares very much about math being exact, its not just 
 esoteric science applications.

I doubt that Rats is a complete solution to the problems you have to solve when 
it come to represent monetary values. My take is you'd need very specific 
rounding algorithms when you convert to a fixed number of digits.

I believe my example with the spread sheet is much more mundane.

 This all being said, I draw the line where implementing is much more 
 complicated 
 to serve esoteric cases.  So for example while exact precision rationals 
 absolutely should be default / part of core, something like symbolic values 
 eg 
 exact representations of irrational numbers, are perfectly valid to, and 
 probably shouldn't, be part of core.  Exact rationals are not particularly 
 complicated.  Its perfectly reasonable to expect in the core that if someone 
 does math that is known to deal with irrationals in general, that loss of 
 precision then is acceptable.

Just to be sure that we are taking about the same thing:

An ideal Rat implementation should be able to always output the least possible 
denominator, right?

And if I happen to add some rational numbers that involve, say, very very large 
prime numbers (intentionally or not), it's clear that the result probably can't 
be shortened much, but the run time of the underlying algorithm may explode.

..and that is acceptable behavior?

..or did I miss something?

M.
-- 
Michael Zedeler
70 25 19 99
mich...@zedeler.dk

dk.linkedin.com/in/mzedeler |twitter.com/mzedeler | github.com/mzedeler

Re: Language design

2015-07-13 Thread Jan Ingvoldstad
On Tue, Jul 14, 2015 at 12:04 AM, Michael Zedeler mich...@zedeler.dk
wrote:

 So far, almost every other language has behaved this way, and it has
 worked. I can see that Rats do solve a problem, but if you'd claim that it
 is very severe then I'd disagree. This is a minor nuisance that I'd only
 pay a small price to fix.


People who use your lovely example – spreadsheets – tend to disagree.

There was a LOT of noise about how Excel handled numbers in a very
surprising manner, every time a new problem came up.

There are a gazillion articles about how to avoid it, and people who deal
with spreadsheets spend inordinate amounts of time to get around it.

Or they take the performance hit for asking for the precision of numbers
as displayed.

For more information, please see here:

https://support.microsoft.com/en-us/kb/78113

The minor nuisance is not so minor out there in the real world, where
people use actual applications where they _expect_ WYSIWYG numbers.

Now, what Rats solve for us programmers, is that it makes it easier for us
to avoid these pitfalls, and thereby makes it easier for us to cater for
our users.
-- 
Jan