-
- Жечь напалмом за такой говнокод! CPU load over 9000%. Не для батарейного питания точно. И не для автомобильной тематики вообще, к слову. И чем больше CPU, тем больше такой говнокод сожрёт в амперах. Да и реактивность системы в целом ни к чёрту, fk0легенда(43 знак., 30.07.2013 22:40)
- оглянитесь вокруг. Пока вы экономите милливатты, мега- и тераватты спокойно тратят впустую. Да и распад на солнце и в р/а элементах не остановить. - zeleny(31.07.2013 20:13)
- Думаете, нужно жахнуть? :-) - SciFi(31.07.2013 20:25, youtube)
- Не все, а только те, что могут поступить СЕЙЧАС. Впрочем, согласен. Для батарейки нужно выворачивать автоматы на изнанку и тогда прототредс идут лесом. Cкpипaчпророк(154 знак., 30.07.2013 23:01)
- не нужго ничего выворачивать. В основном цикле ложимся спать. По приходу любого прерывания - просыпание и проворачивание всех задач. - zeleny(31.07.2013 22:14)
- +1. После отработки всея ложимся спать только в одном спецзаточенном месте. После прерывания рулим дальше. Да еще в зависимости от того, что прервало. А вообще, приходится тщательно продумывать взаимодействие с внешним миром. Это дает гораздо Гyдвинволшебник(56 знак., 31.07.2013 22:56)
- Вот и поспорьте с fk0. - Cкpипaчпророк(31.07.2013 22:34)
- не соглашайся. нормально прототридсы с батарейками дружат. для батарейки нужно крутиться вокруг менеджера питания, а не пытаться засыпать где-попало - как пёс лапку задирает. - Vit(31.07.2013 15:40)
- Признаюсь честно, я батареечных приборов не делал. Максимум - с резервированием питания. Но писать "чисто событийно" пробовал. Не понравилось. Cкpипaчпророк(314 знак., 31.07.2013 16:30)
- Вот и отличненько. Удалось значит понять суть: императивный стиль программирования повсеместно вдалбливаемый в (не)окрепший мозг -- суть есть тонкая диверсия. Невозможно писать программы в императивном стиле. Особенно, управляющие программы. fk0легенда(2184 знак., 31.07.2013 16:47)
- "Далее, полезли глюки неопределенных состояний"... и это главная беда. Cкpипaчпророк(750 знак., 31.07.2013 17:03)
- Что за глюки "неопределенных состояний"? Может определить эти состояния и глюки пропадут? Apтём(334 знак., 31.07.2013 17:19)
- "Наизнанку - это как?" Гусары молчать! :) Cкpипaчпророк(334 знак., 31.07.2013 17:30 - 17:40)
- Лучше Miro Samek-а читать - Vit(31.07.2013 22:18, ссылка)
- А можно ссылку, чё читать? А то по вашей ссылке яркие краски, бубенчики и крайне мало текста :( - Cкpипaчпророк(31.07.2013 22:26)
- Переводы некоторых статей там--> - Vit(31.07.2013 22:40, ссылка)
- гуглится Vit(31.07.2013 22:34, ссылка, ссылка)
- ОС для событийного программирования? Проектирование "событийного" автомата радикально менее формализовано, чем проектирование "автомата состояний". И потому более опасно в плане редко возникающих ошибок, примеры которых я привел ранее. - Cкpипaчпророк(31.07.2013 23:14 - 23:31)
- автомат без явного описания состояний это прототридсы. всё Вам опасно и редко возникающе:) - Vit(01.08.2013 00:15)
- А у вас в программе все ошибки - синтаксические, да? :) Cкpипaчпророк(164 знак., 01.08.2013 00:24)
- fk0 в том, что без событийной системы строить мелкожручее, ИМХО, прав. Запускать же адресно автомат (с неформализованным, например, описанием) по событию, которое он ожидает, т.е. описано явно, у Вас почему-то оказывается сложным. Vit(1490 знак., 01.08.2013 10:06)
- Не так. Модель конечного автомата: Cкpипaчпророк(294 знак., 01.08.2013 14:16 - 14:22)
- Возражение не принимается. Работа жесткой логики и программы чуток отличаются. Расставьте всего-лишь 2 входа на разные порты МК и автомат "сам,, в любой момент времени, полностью определить состояние ВСЕХ своих входных сигналов" тупо НЕ СМОЖЕТ и Vit(74 знак., 01.08.2013 16:55)
- Тут я могу возразить. Представьте себе автомат в виде черного ящика, и вы просто не сможете определить как Bill(317 знак., 01.08.2013 18:57)
- Возражайте. По задержкам и гонкам определяется. И расскажите, как примете 16 входов гарантированно одновременно, до того, как состояние на пине любого входа изменится, на AVR, а потом будем обобщать дальше. - Vit(01.08.2013 21:36)
- Одновременно - понятие растяжимое. Тут все зависит от конкретных условий, а не от Bill(29 знак., 02.08.2013 07:23)
- К сожалению нет. Ловить просто уровни это один гипертрофированный случай. По пинам обычно ловятся изменения. Бывает, что их порядок/количество не очень важны, но это опять же редкость. Т.к. для автомата входной сигнал это не пин, а его состояние в Vit(999 знак., 02.08.2013 08:39, ссылка)
- Все правильно, именно это я и имел в виду. Любой синхронный автомат (а именно о них и идет речь) работает Bill(1710 знак., 02.08.2013 10:41)
- C чего вдруг речь о синхронных автоматах? - Vit(02.08.2013 12:10, ссылка, ссылка)
- Вы еще раз внимательно перечитайте ваше сообщение -> - Bill(02.08.2013 12:22, ссылка)
- Вы бы внимательней перечитали сами. Лучше начиная с --> или с начала топика - Vit(02.08.2013 21:04, ссылка)
- Вы еще раз внимательно перечитайте ваше сообщение -> - Bill(02.08.2013 12:22, ссылка)
- C чего вдруг речь о синхронных автоматах? - Vit(02.08.2013 12:10, ссылка, ссылка)
- Цитата: Cкpипaчпророк(767 знак., 02.08.2013 08:55)
- Все правильно, именно это я и имел в виду. Любой синхронный автомат (а именно о них и идет речь) работает Bill(1710 знак., 02.08.2013 10:41)
- К сожалению нет. Ловить просто уровни это один гипертрофированный случай. По пинам обычно ловятся изменения. Бывает, что их порядок/количество не очень важны, но это опять же редкость. Т.к. для автомата входной сигнал это не пин, а его состояние в Vit(999 знак., 02.08.2013 08:39, ссылка)
- Одновременно - понятие растяжимое. Тут все зависит от конкретных условий, а не от Bill(29 знак., 02.08.2013 07:23)
- Возражайте. По задержкам и гонкам определяется. И расскажите, как примете 16 входов гарантированно одновременно, до того, как состояние на пине любого входа изменится, на AVR, а потом будем обобщать дальше. - Vit(01.08.2013 21:36)
- Аргументов не понял, а против основной мысли возражаю. Cкpипaчпророк(132 знак., 01.08.2013 16:59)
- у Вас момент растягивается как хошь - Vit(01.08.2013 17:15)
- Да. И неслабо упрощает прикладное программирование. - Cкpипaчпророк(01.08.2013 17:22)
- я о "кручу-верчу-запутать хочу" - Vit(01.08.2013 21:37)
- Пох, забей :) - Cкpипaчпророк(01.08.2013 23:05)
- я о "кручу-верчу-запутать хочу" - Vit(01.08.2013 21:37)
- Да. И неслабо упрощает прикладное программирование. - Cкpипaчпророк(01.08.2013 17:22)
- у Вас момент растягивается как хошь - Vit(01.08.2013 17:15)
- Тут я могу возразить. Представьте себе автомат в виде черного ящика, и вы просто не сможете определить как Bill(317 знак., 01.08.2013 18:57)
- Для этого предполагатся, что все события могут возникать строго последовательно, и никакой гонки уже быть не может. Порядок возникновения событий во времени придётся сохранить. И вообще не понятно, что мешает автомату самостоятельно проверить fk0легенда(106 знак., 01.08.2013 14:50)
- "Приказом по предприятию запретить отказы и выход из строя оборудования КИПиА" :))) Это к попыткам принять в размышлениях возможность влиять на поток событий. - Cкpипaчпророк(01.08.2013 15:34)
- Можно предположить, что все события не одновременны, а разделены минимальным квантом времени, большим нуля (планковское время, например). Тогда не возникает неоднозначности, если события обрабатываются строго последовательно, в порядке их fk0легенда(281 знак., 01.08.2013 16:09)
- Лучше разделить их символом табуляции. - Cкpипaчпророк(01.08.2013 17:04)
- Можно предположить, что все события не одновременны, а разделены минимальным квантом времени, большим нуля (планковское время, например). Тогда не возникает неоднозначности, если события обрабатываются строго последовательно, в порядке их fk0легенда(281 знак., 01.08.2013 16:09)
- События и входные сигналы это вообще разные сущности. Бывают события, которые вообще невозможно зарегистрировать опросом. А есть входные сигналы, которые не инициируют сами по себе изменение состояния автомата, но могут влиять на переходные =AlexD=(45 знак., 01.08.2013 14:57)
- Подразумевалось, что (изменение) входных сигналов вызывают события. - fk0легенда(01.08.2013 16:10)
- это узкий частный случай - =AlexD=(01.08.2013 21:00)
- +1 - Vit(01.08.2013 16:32)
- Не у Скрипача: "по Шатыло" и "не по Шатыло". Можно делать сколь угодно сложно-комбинированные системы, нельзя скомбинировать только наличие методики и ее отсутствие :) - Cкpипaчпророк(01.08.2013 15:36 - 15:38)
- Методика Шалыто вполне полная. А вот у вас как раз отсутствие методики. Когда не только программы пишутся программистом по наитию, но точно также выдумывается из головы алгоритм управления, зачастую противоречивый и не полный. Автоматы нужны в fk0легенда(273 знак., 01.08.2013 16:14)
- Не смущает. Cкpипaчпророк(250 знак., 01.08.2013 16:53)
- У Шалыто оно уже event driven -- автомат получает события как аргумент функции. И менять ничего-то не нужно. Если речь про то, что при вычислении условий перехода вызываются какие-либо функции (`x') и проверяют входы, например, то ничто не мешат fk0легенда(680 знак., 01.08.2013 17:42)
- То, что "вы" называете "event driven" нечто полностью этому противоположное. Цитата: "факт события использовать только для запуска автомата, в котором уже игнорировать событие и проанализировать входы напрямую". Cкpипaчпророк(238 знак., 01.08.2013 18:39)
- Пример события из ОС: поступили данные в сокет (проявляется в WaitForMultipleEvents() или в select()). Но какие данные -- не узнаешь, пока не прочитаешь. Также и здесь. И таки да, у всех всё работает, кроме Скрипача, который несёт какую-то чушь fk0легенда(697 знак., 01.08.2013 22:28, ссылка)
- И где это я говорю об "одновременности"? Если сами с собой разговариваете, то хотябы на меня не ссылайтесь, бля. - Cкpипaчпророк(01.08.2013 23:02)
- перечитывая классиков:) забил:) - Vit(02.08.2013 00:16, ссылка)
- По ссылке даже слово "одновременно" нету. Cкpипaчпророк(490 знак., 02.08.2013 08:38)
- Сахар лежит в баночке из-под кофе, на которой написано "соль"(С) - Vit(02.08.2013 08:42)
- По ссылке даже слово "одновременно" нету. Cкpипaчпророк(490 знак., 02.08.2013 08:38)
- перечитывая классиков:) забил:) - Vit(02.08.2013 00:16, ссылка)
- И где это я говорю об "одновременности"? Если сами с собой разговариваете, то хотябы на меня не ссылайтесь, бля. - Cкpипaчпророк(01.08.2013 23:02)
- в кононичЬной:) Vit(153 знак., 01.08.2013 21:50)
- Пример события из ОС: поступили данные в сокет (проявляется в WaitForMultipleEvents() или в select()). Но какие данные -- не узнаешь, пока не прочитаешь. Также и здесь. И таки да, у всех всё работает, кроме Скрипача, который несёт какую-то чушь fk0легенда(697 знак., 01.08.2013 22:28, ссылка)
- То, что "вы" называете "event driven" нечто полностью этому противоположное. Цитата: "факт события использовать только для запуска автомата, в котором уже игнорировать событие и проанализировать входы напрямую". Cкpипaчпророк(238 знак., 01.08.2013 18:39)
- У Шалыто оно уже event driven -- автомат получает события как аргумент функции. И менять ничего-то не нужно. Если речь про то, что при вычислении условий перехода вызываются какие-либо функции (`x') и проверяют входы, например, то ничто не мешат fk0легенда(680 знак., 01.08.2013 17:42)
- Не смущает. Cкpипaчпророк(250 знак., 01.08.2013 16:53)
- Методика Шалыто вполне полная. А вот у вас как раз отсутствие методики. Когда не только программы пишутся программистом по наитию, но точно также выдумывается из головы алгоритм управления, зачастую противоречивый и не полный. Автоматы нужны в fk0легенда(273 знак., 01.08.2013 16:14)
- Подразумевалось, что (изменение) входных сигналов вызывают события. - fk0легенда(01.08.2013 16:10)
- "Приказом по предприятию запретить отказы и выход из строя оборудования КИПиА" :))) Это к попыткам принять в размышлениях возможность влиять на поток событий. - Cкpипaчпророк(01.08.2013 15:34)
- Возражение не принимается. Работа жесткой логики и программы чуток отличаются. Расставьте всего-лишь 2 входа на разные порты МК и автомат "сам,, в любой момент времени, полностью определить состояние ВСЕХ своих входных сигналов" тупо НЕ СМОЖЕТ и Vit(74 знак., 01.08.2013 16:55)
- Не так. Модель конечного автомата: Cкpипaчпророк(294 знак., 01.08.2013 14:16 - 14:22)
- fk0 в том, что без событийной системы строить мелкожручее, ИМХО, прав. Запускать же адресно автомат (с неформализованным, например, описанием) по событию, которое он ожидает, т.е. описано явно, у Вас почему-то оказывается сложным. Vit(1490 знак., 01.08.2013 10:06)
- А у вас в программе все ошибки - синтаксические, да? :) Cкpипaчпророк(164 знак., 01.08.2013 00:24)
- я предлагал читать - Vit(01.08.2013 00:10)
- Practical UML? Качаю. У меня сейчас и-нет "походный". Медленно. - Cкpипaчпророк(01.08.2013 00:29)
- там её приаттачил - Vit(01.08.2013 10:10, ссылка)
- Я видел. Начал просматривать, но Cкpипaчпророк(76 знак., 01.08.2013 14:24)
- там её приаттачил - Vit(01.08.2013 10:10, ссылка)
- Practical UML? Качаю. У меня сейчас и-нет "походный". Медленно. - Cкpипaчпророк(01.08.2013 00:29)
- автомат без явного описания состояний это прототридсы. всё Вам опасно и редко возникающе:) - Vit(01.08.2013 00:15)
- ОС для событийного программирования? Проектирование "событийного" автомата радикально менее формализовано, чем проектирование "автомата состояний". И потому более опасно в плане редко возникающих ошибок, примеры которых я привел ранее. - Cкpипaчпророк(31.07.2013 23:14 - 23:31)
- А можно ссылку, чё читать? А то по вашей ссылке яркие краски, бубенчики и крайне мало текста :( - Cкpипaчпророк(31.07.2013 22:26)
- Лучше Miro Samek-а читать - Vit(31.07.2013 22:18, ссылка)
- "Наизнанку - это как?" Гусары молчать! :) Cкpипaчпророк(334 знак., 31.07.2013 17:30 - 17:40)
- Что за глюки "неопределенных состояний"? Может определить эти состояния и глюки пропадут? Apтём(334 знак., 31.07.2013 17:19)
- перевожу: "RTOS рулез" - Mahagam(31.07.2013 16:50)
- На мой взгляд RTOS нужна только для вытесняющей многозадачности в изолированных процессах. Потоки вообще не нужны. Вместо них нужен механизм событийно-ориентированного программирования (в виде C-библиотеки, например), вроде того, что делает fk0легенда(30 знак., 31.07.2013 16:55)
- тут походу RTOS - синоним вытесняющей многозадачности. Mahagam(346 знак., 31.07.2013 16:59)
- Роскошно живете, товарищ! :) - Гyдвинволшебник(31.07.2013 22:26)
- как ни странно, при кооперативке та же фигня:) - Vit(31.07.2013 22:19)
- тут походу RTOS - синоним вытесняющей многозадачности. Mahagam(346 знак., 31.07.2013 16:59)
- На мой взгляд RTOS нужна только для вытесняющей многозадачности в изолированных процессах. Потоки вообще не нужны. Вместо них нужен механизм событийно-ориентированного программирования (в виде C-библиотеки, например), вроде того, что делает fk0легенда(30 знак., 31.07.2013 16:55)
- "Далее, полезли глюки неопределенных состояний"... и это главная беда. Cкpипaчпророк(750 знак., 31.07.2013 17:03)
- Вот и отличненько. Удалось значит понять суть: императивный стиль программирования повсеместно вдалбливаемый в (не)окрепший мозг -- суть есть тонкая диверсия. Невозможно писать программы в императивном стиле. Особенно, управляющие программы. fk0легенда(2184 знак., 31.07.2013 16:47)
- Признаюсь честно, я батареечных приборов не делал. Максимум - с резервированием питания. Но писать "чисто событийно" пробовал. Не понравилось. Cкpипaчпророк(314 знак., 31.07.2013 16:30)
- не нужго ничего выворачивать. В основном цикле ложимся спать. По приходу любого прерывания - просыпание и проворачивание всех задач. - zeleny(31.07.2013 22:14)
- Религиозный фанатик детектед! Ну да, фсе процы фсегда на батарейках, а если нет - сжечь! И про реактивность - тоже лажа: в огромном множестве задач такой подход отлично работает. - SciFi(30.07.2013 22:46)
- Он успешно работает в маленьких проектах и без особых требований к потреблению. - fk0легенда(30.07.2013 22:55)
- Я бы сказал что как раз на БОЛЬШИХ системах такой подход работает лучше, чем событийно-ориентированное программирование. Cкpипaчпророк(125 знак., 30.07.2013 23:15)
- В больших системах множество независимых параллельных процессов. С разными требованиями к времени отклика. И эта тупая проверка условий в каждом цикле сжирает слишком много cpu, чтобы время отклика стало неприемлимо большим, даже если все условия fk0легенда(64 знак., 31.07.2013 00:50)
- есть ресурс. вычислительная мощность. такой цикл автоматически перераспределяет этот ресурс. подразумевается что евентс по прерываниям обрабатываются. больше нагрузка на обработчиках - меньше работает основной цикл. в основной цикл можно заложить Бeлый Жpeц(220 знак., 31.07.2013 16:36)
- Эта "тупая проверка" сжигает так мало, что с экономии на переключении контекстов вытесняющей ОС, инфраструктуры "запуска-остановки задач" и "отправки сообщений" еще и остается :) - Cкpипaчпророк(31.07.2013 00:57)
- В больших системах множество независимых параллельных процессов. С разными требованиями к времени отклика. И эта тупая проверка условий в каждом цикле сжирает слишком много cpu, чтобы время отклика стало неприемлимо большим, даже если все условия fk0легенда(64 знак., 31.07.2013 00:50)
- Ну на БОЛЬШИХ !Ё! БАТАРЕЕЧНЫХ он точно не работает ;о) - Cкpипaчпророк(30.07.2013 23:11)
- Коих (этих проектов) сильно больше половины, я бы сказал. Такшта не надо излишне драматизировать. - SciFi(30.07.2013 23:00)
- Я бы сказал что как раз на БОЛЬШИХ системах такой подход работает лучше, чем событийно-ориентированное программирование. Cкpипaчпророк(125 знак., 30.07.2013 23:15)
- Он успешно работает в маленьких проектах и без особых требований к потреблению. - fk0легенда(30.07.2013 22:55)
- оглянитесь вокруг. Пока вы экономите милливатты, мега- и тераватты спокойно тратят впустую. Да и распад на солнце и в р/а элементах не остановить. - zeleny(31.07.2013 20:13)
- Жечь напалмом за такой говнокод! CPU load over 9000%. Не для батарейного питания точно. И не для автомобильной тематики вообще, к слову. И чем больше CPU, тем больше такой говнокод сожрёт в амперах. Да и реактивность системы в целом ни к чёрту, fk0легенда(43 знак., 30.07.2013 22:40)