comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: project euler 26
Date: Sun, 10 Sep 2023 10:46:04 +0200	[thread overview]
Message-ID: <udjvoc$gv16$1@dont-email.me> (raw)
In-Reply-To: <87tts2kenf.fsf@bsb.me.uk>

On 2023-09-10 03:20, Ben Bacarisse wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
> 
>> On 2023-09-09 02:25, Ben Bacarisse wrote:
>>> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
> 
>>>> [rant on]
>>>> An Ada programmer would just write a loop.
>>> Yes, that's fine.  Different languages have different objectives.  Just
>>> write the empty range test and the loop you need for each kind of
>>> collection.
>>
>> You can loop in Ada over empty ranges, no problem.
> 
> Yes, but the problem in hand (maximum of F over X) should raise an error
> on an empty X.  I know there are other options, but you chose to
> raise an error so that's the design I was talking about.

It can be done by a Boolean flag.

>>> That was definitely the way things were done in the 80s.
>>
>> Yes, before the Dark Ages of Computing...
> 
> Eh?  There have been repeated updates to the Ada language.  Are they
> taking Ada into the dark ages?  If so, what was the golden age of Ada
> when its design was perfect for numerical algorithms?

I meant the state of computing as a whole.

(Ada is a niche language and "hordes of barbarians" largely missed its 
existence... (:-))

>>>> As I said you think in a wrong direction of abstracting the language
>>>> "finding maximum" rather than the problem space, e.g. generalization to
>>>> other bases, other mathematical structures etc.
>>> Generalising to an arbitrary base is local to the function that finds
>>> the answer for one element.  It's an entirely separate axis of
>>> generalisation to that of where the elements come from.
>>> It's interesting to me that you consider one simply wrong and the other
>>> natural.
>>
>> Because one is a software design artifact and another is the result of
>> problem space analysis.
> 
> Which one the wrong one?

None automatically is. The point is avoiding overdesigning a numeric puzzle.

[...]
> This is probably the closest we can get to a universal solution.
> Vectors don't have a Key function but I am sure I could find out what
> should be provided there.

Vector has To_Index for Key.

In general, note that Ada does not require you to use any library. I 
personally dislike cursors in particular because of their "functional" 
style. I prefer plain element position and loop iteration of ordered 
structures. A container library based on this paradigm would use other 
generic abstraction.

Furthermore, I prefer dynamic polymorphism of tagged types over 
parametric one of generics. Therefore to me Maximum_At should rather be 
a class-wide or primitive operation than a generic.

In Ada you have freedom to choose your way, which also massively reduces 
universality of any abstraction, which will never apply universally.

I would like to have means to deal with this problem by means of ad-hoc 
supertypes, but that will never happen due to lack of interest in 
reworking the language type system and because in "Dark Ages" there is 
virtually no research on fundamental language construction topics.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  reply	other threads:[~2023-09-10  8:46 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-04  9:19 project euler 26 CSYH (QAQ)
2023-09-04 11:06 ` Niklas Holsti
2023-09-04 12:39   ` Dmitry A. Kazakov
2023-09-04 16:01     ` Ben Bacarisse
2023-09-04 19:20       ` Dmitry A. Kazakov
2023-09-04 20:18         ` Ben Bacarisse
2023-09-04 21:00           ` Dmitry A. Kazakov
2023-09-04 23:16             ` Ben Bacarisse
2023-09-05  7:23               ` Dmitry A. Kazakov
2023-09-05 15:18                 ` Ben Bacarisse
2023-09-05 17:08                   ` Dmitry A. Kazakov
2023-09-06  1:10                     ` Ben Bacarisse
2023-09-06  7:06                       ` Dmitry A. Kazakov
2023-09-06 15:16                         ` Ben Bacarisse
2023-09-06 15:54                           ` Dmitry A. Kazakov
2023-09-06 23:32                             ` Ben Bacarisse
2023-09-07  9:02                               ` Dmitry A. Kazakov
2023-09-08  1:32                                 ` Ben Bacarisse
2023-09-08  7:23                                   ` Dmitry A. Kazakov
2023-09-09  0:25                                     ` Ben Bacarisse
2023-09-09  9:32                                       ` Dmitry A. Kazakov
2023-09-10  1:20                                         ` Ben Bacarisse
2023-09-10  8:46                                           ` Dmitry A. Kazakov [this message]
2023-09-10 19:22                                             ` Ben Bacarisse
2023-09-11  6:53                                               ` Dmitry A. Kazakov
2023-09-11 16:13                                                 ` Ben Bacarisse
2023-09-12  7:17                                                   ` Dmitry A. Kazakov
2023-09-13 12:24                                                     ` Ben Bacarisse
2023-09-14  6:33                                                       ` Dmitry A. Kazakov
2023-09-14 14:30                                                         ` Ben Bacarisse
2023-09-08  6:09                               ` G.B.
2023-09-08 21:02                                 ` Ben Bacarisse
2023-09-09  8:13                                   ` G.B.
2023-09-09 21:04                                     ` Ben Bacarisse
2023-09-10  9:11                                     ` Dmitry A. Kazakov
2023-09-05 17:35                 ` moi
2023-09-04 14:23 ` Dmitry A. Kazakov
2023-09-07  7:31 ` Francesc Rocher
2023-09-15  9:07   ` CSYH (QAQ)
2023-09-19  7:59     ` comp.lang.ada
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox