Actor Framework

Общие принципы, проектирование, модуляризация, темплейты и шаблоны

Re: Actor Framework

Postby Vitekkz88 on 20 Nov 2017, 04:59

Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: Actor Framework

Postby taras_33 on 20 Nov 2017, 15:45

to Vitekkz88 Года три назад у меня было точно такое же мнение, которое координально изменилось, после того как программист от NI преподал мне мастер класс, за деньги компании, где я работаю. Моя жена в прошлом тоже говорила "нафига мне этот смартфон, телефон предназначен в первую очередь что бы звонить, а не...." Теперь попробуй отними у нее ее sony...
AF кстати и есть Producer-Consumer, только продвинутый. Насчет OOP зря Вы так. Впрочем у каждого свое мнение....
То, что мы знаем-------ограничено, а что не знаем------бесконечно!
User avatar
taras_33
advanced
advanced
 
Posts: 157
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 88
CLD

Re: Actor Framework

Postby Vitekkz88 on 20 Nov 2017, 18:36

taras_33, смартфоны и всё такое - это не про то. Что есть продвинутого в Actor-ах для паттерна Produce-Consume, это же всего лишь паттерн. Паттернов проектирования существует множество, Produce-Consumer это лишь частный случай модели программирования , но он отлично ложится на проекты по сбору данных (одна из основных фишек LabVIEW). А что не так с ООП? :D Неужели Actor позволяет реализовать полиморфизм, наследование, инкапсуляцию? Во что это выливается с точки зрения программного представления и сопровождения? Про абстракцию понятно...Я просто интересуюсь у вас, как у более опытного в этом деле, человека. Не ищите в моих словах стёба или желания опустить одни технологии в угоду другим.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: Actor Framework

Postby Kosist on 20 Nov 2017, 20:15

Vitekkz88, Actor - это по-сути класс. Поэтому, он естественно позволяет реализовывать все "фишки" ООП - полиморфизм, наследование, инкапсуляцию, и т.д.
В чем "продвинутость" Actor Framework (AF) по сравнению с Producer-Consumer? Во-первых, AF реализует Command Pattern - это когда каждый стейт стейт машины является классом (обычно, с двумя методами - Send: для посылания комманды; Do - для выполнения). А если это класс, то и для него можно реализовывать ООП "фишки".
Во-вторых, AF - т.к. это фреймворк - при помощи Chanelling Pattern (это когда метод имеет внутри другие методы, которые можно переписать (override), и таким образом гарантируется порядок выполнения алгоритма) реализует обработку стейт машины: прием сообщений (механизм которого тоже можно переписать), выполнение стейтов (или, более правильно, сообщений/команд), и обработка ошибок. Это только стейт-машина. А в целом - AF уже имеет готовую обработку динамического, асинхронного запуска акторов, их остановку; отслеживание работы вложенных акторов, и т.д. То есть все это не нужно создавать/копировать снова и снова.
В третьих, если актор - это класс, который имеет методы, которые могут быть "переписаны" его дочерними акторами/классами, то мы можем унаследовать не просто функционал одного метода, а целую логику модуля; проще говоря - унаследовать целую стейт-машину. И плюс ко всему, добавить к ней функционал. Это, по моему, самое главное в AF - если в просто классе дочерние классы унаследуют методы, то акторы позволяют унаследовать полностью функционал. На словах тяжело объяснить, советую посмотреть конкретные примеры, и презентации.
Таким образом, например, если в методе Handle Errors.vi главного класса имплементировать обработку ошибок (запись в файл, кастомное диалоговое окно, и т.д.), то его дочерние акторы будут иметь тот же функционал. А это уменьшает количество кода, и повышает его модулярность, reusability, и т.д.
При стандартном подходе Producer-Consumer, придется все это делать каждый раз для каждой стейт машишы/модуля. Конечно, можно использовать подпрограммы, копировать код, и т.д. Но все это не эффективно, по сравнению с ООП.
Ну, и т.к. сообщения (команды) к акторам являются классами, как я писал выше, то с ними тоже можно "поиграться" с ООП точки зрения. Например, Zero Coupled Abstract Messages, Low Coupled Abstract Messages - это вообще отдельная тема.
Но, само собой, есть и минуса.
Первое - при неправильной архитектуре в целом, можно здорово запутаться, и акторы будут лишь во вред, а не на благо. Нужно мыслить "объектно", на уровне абстракций. Только тогда можно выжать из акторов максимум. А если рассматривать их только как стейт-машину, то далеко не заехать...
Второе - это количество классов/методов в проекте. Если метод актора должен "отсылаться" на выполнение, то это + класс с 2-мя методами.
На NI форуме есть презентации на тему альтернатив акторам, JKI вообще сделали свою SMO (state machine objects) - где их JKI State Machine используется как ядро класса, и т.д.

Как-то так...

А насчет ООП в :labview: - это Вы зря... Да, по сравнению с "традиционными" языками, такими как С++, Java, Ruby, Python, может :labview ООП реализация не дотягивает до их уровня , но все равно, позволяет создавать отличные вещи. Элементарный пример - HAL, абстракция железа. Вы ее используете в проектах? Если да, то тоже без классов?
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 786
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 236
CLAD I/O VIP students

Re: Actor Framework

Postby taras_33 on 20 Nov 2017, 21:48

Kosist, Спасибо, я бы лучше не написал. Пожалуй единственное, чего лично мне не хватает в LabVIEW-шном ООП, так это множественного наследия, которое в других языках есть. Другими словами у ребенка не может быть двух родителей, поэтому приходится обходится дедушками и прабабушками :D
То, что мы знаем-------ограничено, а что не знаем------бесконечно!
User avatar
taras_33
advanced
advanced
 
Posts: 157
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 88
CLD

Re: Actor Framework

Postby Kosist on 21 Nov 2017, 00:30

Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 786
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 236
CLAD I/O VIP students

Re: Actor Framework

Postby Vitekkz88 on 21 Nov 2017, 06:12

Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: Actor Framework

Postby Kosist on 21 Nov 2017, 09:18

Attachments
af core.PNG
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 786
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 236
CLAD I/O VIP students

Re: Actor Framework

Postby Vitekkz88 on 21 Nov 2017, 10:31

Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: Actor Framework

Postby Kosist on 21 Nov 2017, 12:15

Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 786
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 236
CLAD I/O VIP students

Re: Actor Framework

Postby Vitekkz88 on 21 Nov 2017, 12:40

Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: Actor Framework

Postby Kosist on 21 Nov 2017, 18:51

Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 786
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 236
CLAD I/O VIP students

Re: Actor Framework

Postby Vitekkz88 on 22 Nov 2017, 06:53

Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: Actor Framework

Postby Kosist on 22 Nov 2017, 09:02

Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 786
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 236
CLAD I/O VIP students

Re: Actor Framework

Postby Vitekkz88 on 22 Nov 2017, 10:38

Kosist, разумеется модульность используется, но в виде SubVI . Но в целом проект создаётся новый. Ошибок делаю мало по части забыть убрать дизейбл или кейс. В мире лабвью это пока разговоры и частичный переход именно на ооп. Повторное использование существует давно и успешно всеми применяется , но не через призму лабвьюшного ооп.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Previous

Return to Модели программирования

Who is online

Users browsing this forum: No registered users and 1 guest

cron