|
|
  |
Сложные программы |
|
|
|
Jan 6 2017, 09:54
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Укушенный воблой @ Jan 6 2017, 12:39)  Коллега уже хорошо сказал про такие "рецепты": Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной. Это по Вашему хорошее решение? Типа "болит голова - ампутируем голову"? Я думаю, вы неверно цитируете коллегу по данному поводу. Массив упорядочивает реагирование на внешние сигналы. Например, у меня так сделана работа с панелью управления прибором. Функции имеют названия, соответствующие органам управления. А указатели на них упорядочены в массиве, согласно номеру кнопки на панели. Причем, в массиве есть указатели даже на несуществующие номера кнопок. На пустые функции. А когда понадобилось, добавляю.
|
|
|
|
|
Jan 6 2017, 11:42
|
Частый гость
 
Группа: Участник
Сообщений: 197
Регистрация: 8-07-16
Пользователь №: 92 484

|
Цитата(syoma @ Jan 6 2017, 10:49)  В одном проекте у нас вообще используется EtherCAT Расскажите про EtherCATА то мы в Москве перебрали СОТНИ организаций но так не нашли ни одного толкового спеца по этер кату. Скажите название Вашей организации? Цитата(ViKo @ Jan 6 2017, 10:54)  у меня так сделана работа с панелью управления прибором. Функции имеют названия, соответствующие органам управления. А указатели на них упорядочены в массиве, согласно номеру кнопки на панели. Это не универсальное решение и при том очень простой задачи. Это очередные "костыли". От фундаментальной проблемы (наличие огромного числа "if..then..else" в сложных программах) это не помогает избавиться
Сообщение отредактировал Укушенный воблой - Jan 6 2017, 11:43
|
|
|
|
|
Jan 6 2017, 12:26
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 14-08-16
Пользователь №: 92 949

|
"Буратино", всё таки предложу ещё раз посмотреть книжку Андрей Александреску "Современное проектирование на C++" и всё что с ней связано (у людей уже есть наработки в этой области - приводил выше), Прочитайте стр.17 (предисловие) - написано прямо то что вы хотите. книга
|
|
|
|
|
Jan 6 2017, 13:02
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(Укушенный воблой @ Jan 6 2017, 11:39)  Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной. Это по Вашему хорошее решение? Совершенно наоборот: кодирование логики в номерах функций в случае, когда switch/case-реализация становится запутанной хотя бы из-за ее размера. Недостатки лишь в издержках на вызов функций.
|
|
|
|
|
Jan 6 2017, 13:45
|
Частый гость
 
Группа: Участник
Сообщений: 197
Регистрация: 8-07-16
Пользователь №: 92 484

|
Цитата(ViKo @ Jan 6 2017, 13:47)  Универсальных решений не бывает. Я показал один из примеров. Я и сказал. "Очередной костыль", а не решение Цитата(ViKo @ Jan 6 2017, 13:47)  Условных выполнений у меня хватает, но я не вижу это проблемой. "А слона-то он и не заметил"© Т.е. ФУНДАМЕНТАЛЬНУЮ проблему программирования Вы просто не заметили. вы молодец. Цитата(ViKo @ Jan 6 2017, 13:47)  Вопрос выбора есть всегда, иначе и программировать ничего не придется. То, что вы называете фундаментальной проблемой, на самом деле - реальность мироздания. "Щелкни кобылу в нос..." (с) На самом деле есть методы которые сокращают число IF-ов в программе, которые программист ЛИЧНО, "ручками" должен написать. Взять к примеру повяление ЯВУ в коце 40-х годов прошлого века. Если посмотреть число IF-ов в СИ программе и сгенерированном из неё машинном коде, то можно заметить, что число IF-ов при переходе от разработки программы в машинных кодах к разработке на ЯВУ число IF-ов сократилось как минимум на порядок. За счет чего? За счет того. Что компилятор БОЛЬШИНСТВО IF-ов генерит автоматически освобождая от этой тупой работы программиста. Т.е. чем выше уровень языка - тем меньше IF-ов нужно писать программисту для решения одной и той же достаточно сложной задачи.
|
|
|
|
|
Jan 6 2017, 14:57
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата(AlexandrY @ Jan 6 2017, 12:25)  EtherCAT это и есть коммуникация. А "I/O менеджер" это, как понимаю, у вас простой маппер. Все надо называть своими словами. Не, без сорсов вы только зря тратите время на объяснения. AlexandrY, сорцы высокопроизводительной системы с EtherCAT, VxWorks и прочими плюшками я выкладывать не собираюсь, так как это ни как ни опенсоурс. Только могу сказать, что это работает, хотите верьте, хотите нет. EtherCAT отличается от остальных коммуникаций тем, что работает в real-time, поэтому он и часть I/O Менеджера, и не входит в менеджер коммуникаций. Ему также выделяется отдельный Ethernet порт, в то время как менеджер коммуникаций может реализовать различные протоколы на одном и том же порте. Раньше мы вместо EtherCAT использовали Profibus.
|
|
|
|
|
Jan 7 2017, 19:05
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(syoma @ Jan 6 2017, 16:57)  AlexandrY, сорцы высокопроизводительной системы с EtherCAT, VxWorks и прочими плюшками я выкладывать не собираюсь,... VxWorks есть в наших закромах, так что можете не выклывать раз такой жадный. А вот менеджер если он весь такой абстрактный и платформенно независимый могли бы выложить. Или хотя бы назвать его метрики типа количества строк, функций, модулей, файлов и проч. Но боюсь нет у вас никакого "менеджера", а есть набор функций и промежуточного софта, то что я назвал фреймворком. VxWorks вы уже назвали, там есть и файловая и TCP стек и USB и проч. Стоит это добро дикие деньги. Так что ваша "архитектура" совершенно не вписывается в контекст темы
|
|
|
|
|
Jan 7 2017, 19:37
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(Буратино @ Jan 6 2017, 07:38)  Я с вариантами разберусь, вы уж разберитесь сначала Цитата(Буратино @ Jan 6 2017, 07:38)  а вы пож. не постите ерунду больше. ерунда == писать под восьмибитники
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|