Gary Willoughby: "Why Go's design is a disservice to intelligent programmers"
Sönke Ludwig via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Sat Mar 28 15:24:14 PDT 2015
Am 28.03.2015 um 21:51 schrieb Walter Bright:
> On 3/28/2015 1:32 PM, Sönke Ludwig wrote:
>> I/O is crucial of course, but there are also a lot of other important and
>> inherently impure things such as message passing.
>
> If the message channel is passed as a parameter to the droutine, then
> the droutine can still be pure.
Only if the methods of the channel are also pure. But they potentially
have to interact with the system event loop, which involves impure
system API calls.
>> I think such a restriction
>> would go way too far. Both fiber and task local storage can also be
>> very useful
>> at times, so it would be a pity to rule them out completely.
>>
>> You'd also usually have the whole application running on "droutines"
>> and not
>> simply use them as a local tool for occasional parallelism needs. This is
>> especially true for any kind of server application. So effectively such a
>> limitation may in practice end up as a limitation of the entire language.
>
> On the other hand, if purity can make droutines much more practical, the
> tradeoff might be worth it.
If you ask me, they are very practical as they are - in fact much more
practical than if they could move between threads, not just because of
purity or not. I'm for example heavily using vibe.d's tasks for all
kinds of UI, 3D graphics, sound and physics related things. All of these
require calling various C libraries that are not be compatible with such
a scheme.
We could of course add an optional pure+moving mode for those that
absolutely need it, but IMHO we should first have hard evidence for
practical performance improvements before going such a route.
More information about the Digitalmars-d-announce
mailing list