Skip to content

VAK-53/anti-turing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

anti_turing - программа моделирования на Erlang решения квадратного уравнения в потоке данных на основе альтернативной парадигмы.

Описание программы.

Внешние функции модуля движка называются start_a/0, start_b/0 и start_c/0 в соответствии с названиями входных параметров a, b и c. В них же производится инициализация данных a, b и c атомом (начального значения) undefined. (Все потоковые данные инициализируются значением атома undefined.)

При запуске  программного модуля в начале строится дерево потока данных в соответствии с деревом решения.

Входные параметры a, b и c считываются с терминалов асинхронно циклически.

Содержательная часть программы, реализующая алгоритм потока решения, соответствует дереву потока данных. Работа алгоритма реализована через механизм посылки сообщений от узла к узлу, а доступ к memo–данным x1–memo и x2–memo канонически скрыт оберткой в виде экспортируемой функции get().

Гонка входных аргументов на вход процесса решается простой проверкой отсутствия среди входных данных экземпляра со значением undefined. После срабатывания процесса в узле всем входным аргументам снова присваиваются значение undefined для выполнения новой итерации расчетов.

Memo–данные x1–memo и x2–memo хранятся в виде переменных состояния в процессах с хвостовой рекурсией. (Собственно говоря, все процессы в программе являются процессами с хвостовой рекурсией.) Внешний несвязанный процесс запускается в отдельном узле, запрашивает memo-данные и выводит полученное значение на экран.

Запуск программы

Для испытания программный модель Анти–Тьюринг запускается три терминальных окнах для задания входных данных:
    erl -sname a@localhost,
    erl -sname b@localhost,
    erl -sname c@localhost 
и окно проверки результатов решения:
    erl -sname out@localhost.

Не забудьте скомпилировать модуль, если он ещё не скомпилирован, в первом окне после запуска Erlang:
    c(anti_turing).

В первых трех окнах вводятся числа с плавающей запятой.
Результаты считываются запросами в третьем окне:
    anti_turing:get_x1().
и
    anti_turing:get_x2().

About

Modeling the solution of a quadratic equation in a data stream in Erlang

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages