LINUX.ORG.RU

Откуда идет эта модель вычислений?


0

1

Что то я чувствовал, инстинктивно, порочное в этом вашем программировании, но не понимал что именно. А сегодня (с бодуна) начало доходить. Возврат управления в точку вызова, в самом широком смысле. Есть код

instruction1;
instruction2;
...
пока не исполнится instruction1; instruction2; не начнет выполнятся, обычно так, по-дефолту. А должно быть все асинхронно. Управление никуда не должно возвращатся. Любую хрень можно передать через переменную. Так по-дефолту все должно работать, а если надо обеспечивать порядок выполнения, это реализовывать отдельно.

Сейчас, частично к этому приходят, например в JS, асинхронщина щас рулит, но как-то по уродски это все сделано, через колбеки, а надо чтоб по дефолту это было везде.

Традиционная модель должна быть deprecated и considered harmful. Я вообще не понимаю, откуда это все взялось-повелось, идиоты сидели у истоков CS, очевидно.



Последнее исправление: avtoritetniy-expert (всего исправлений: 1)
Ответ на: комментарий от tailgunner
-module(mm).
-export([start/1]).

start({0, _, _}) ->
  io:format("читай книжки, умник~n", []);

start({A, B, C}) ->
  spawn(fun () ->
    apply (fun(D) when D < 0 ->
      io:format("корней иванович чуковский нет~n");
        (0) ->
      io:format("x = ~w~n", [-B/2/A]);
        (D) ->
      io:format("x1 = ~w, x2 = ~w~n", [(-B-math:sqrt(D))/2/A, (-B+math:sqrt(D))/2/A])
        end,
          [
            begin
              Parent = self(),
              Parent2 = spawn (fun() ->
                receive
                  AC4 ->
                    Parent ! B*B -AC4
                end end),
              spawn (fun() ->
                Parent2 ! 4*A*C end),
              receive
                Det ->
                  Det
              end
            end])
  end).

правда они всё равно последовательно работают. Что бы ъ-асинхронно, надо что-то вроде рекурсивных лямбд, но это перебор уже ящитаю)

nanoolinux ★★★★
()
Ответ на: комментарий от nanoolinux

Что бы ъ-асинхронно, надо что-то вроде рекурсивных лямбд, но это перебор уже ящитаю)

В этом топике нужно больше асинхронного ада.

tailgunner ★★★★★
()
Ответ на: комментарий от nanoolinux

А на Оккаме это было бы как-то так:

PROC solve(CHAN OF float ch_a, ch_b, ch_c, ch_x1, ch_x2)
    FLOAT a, b, c, d
    SEQ
        PAR
            ch_a ? a
            ch_b ? b
            ch_c ? c
        PAR
             t1 := b*b
             t2 := 4*a*c
        d := t1-t2
        PAR
             ch_x1 ! (-b + sqrt(d))/(2*a)
             ch_x2 ! (-b - sqrt(d))/(2*a)
tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 2)
Ответ на: комментарий от tailgunner

моя твоя не понимать.

а с присваиванием t2 это опечатка или синтаксис такой?

Думаю на vhdl код получилось бы ещё асинхронее )

nanoolinux ★★★★
()
Ответ на: комментарий от nanoolinux

а с присваиванием t2 это опечатка или синтаксис такой?

Исправленная опечатка.

Думаю на vhdl код получилось бы ещё асинхронее )

Наверное. И еще отвратительнее, чем на Erlang %)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

А ты неплохо транслируешь код. Может тебя компилятором взять? Пойдешь ко мне в комп, вместо моего gcc, за еду?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.