Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сложные программы
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9
syoma
Цитата(Буратино @ Jan 6 2017, 09:38) *
Чего мне не хватает так это инструментов для реализации бизнес логики и меня не устраивает не только сложность с написанием ПО, но и самое главное сложности с его модификацией.

Что такое бизнес-логика?

Насчет проблем с модификацией - значит у вас что-то не то с архитектурой. Тот пример, что я привел, как раз позволяет легко модифицировать любую часть программы без риска все угробить. В моем случае это было как раз одной из целей разработки данной архитектуры и было продемонстрировано не в одном реализованном проекте.
AlexandrY
Цитата(iosifk @ Jan 6 2017, 10:10) *
Вот это все было бы хорошо оформить в виде статьи!
...
И к нам, в КиТ...

Не статью писать надо, а в github.com постить.
Нынче так - или вы показываете свои сорсы на github-е или ваши слова про программирование малого стоят.
Когда говорят о такой запредельной абстракции как некий "I/O менеджер" исходники надо показывать в обязаловку.
Я не первый год в программировании, но у меня даже не идей что такое "I/O менеджер"
ViKo
Писать надо туда, где больше заработаешь.
А I/O менеджер и менеджер коммуникаций звучат слишком похоже.
У меня все время висит вопрос, как назвать, к примеру, файл низкоуровневых функций. Типа HAL. HAL называть не хочу. Драйвер пока зову.
А как разобьешь на файлы-папки, как назовешь, так и поплывешь-попрограммируешь.
iosifk
Цитата(AlexandrY @ Jan 6 2017, 12:02) *
Не статью писать надо, а в github.com постить.

Да нет, у каждого издания свои читатели.
КиТ имеет тираж 6,5 тыс экз. И никто не мешает сначала напечатать статью, а потом размещать материалы еще где-то. Тем более, исходники можно выложить в сети и в статье на них ссылаться. потому как статьи - это пожизненно, а тексты из сети лет через 10 могут и удалить.
А для чего нужны статьи я написал в КиТ №11 за 14 год. Они нужны не для того, чтобы все знали о том как писать программы для... А для того, чтобы получать приличную зарплату.
zltigo
Цитата(AlexandrY @ Jan 6 2017, 11:02) *
Нынче так - или вы показываете свои сорсы на github-е или ваши слова про программирование малого стоят.

Слова, слова по любому малого стоят, хоть напечатанные на "github-е" хоть нет. Стоит результат программирования.
Цитата(AlexandrY @ Jan 6 2017, 11:02) *
Когда говорят о такой запредельной абстракции как некий "I/O менеджер" исходники надо показывать в обязаловку.

Запредельные и не очень абстракции много лучше описываются не на языке Cи, а на более высокоуровневых языках, например, русском sm.gif.
iosifk
Цитата(zltigo @ Jan 6 2017, 12:19) *
Слова, слова по любому малого стоят, хоть напечатанные на "github-е" хоть нет. Стоит результат программирования.

Вы не правы.
"результат программирования" - это товар. И инженерный опыт - это тоже товар. И его надо уметь продавать, ибо товар надо превратить в деньги... Для того, чтобы продавать нужны "слова"...
А разговор о том, что "слова по любому малого стоят" - смотрите на время, затрачиваемое на рекламу по телевизору. Как по Вашему это время, затрачиваемое на рекламу " по любому малого стоит"?
Укушенный воблой
Цитата(hsoft @ Jan 4 2017, 13:45) *
и многочисленные switch/case, if/else как виноградные гроздья начали обрывать ствол программы под своей тяжестью.

На самом деле "многочисленные IF/ELSE (SWITCH/CASE)" - это фундаментальная проблема программирования которая пока никак не решена. Даже в том же пресловутом ООП.
А ведь эти "IF/ELSE (SWITCH/CASE)" - есть ГЛАВНАЯ причина трудно модифицируемости программы и появления трудно отслеживаемых ошибок, возникающих при внесении изменений в программу.

Но пока что универсальной пилюли (программирование без if..then..else) не изобрели.
Хотя отдельные попытки предпринимаются.
ViKo
Цитата(Укушенный воблой @ Jan 6 2017, 12:31) *
Но пока что универсальной пилюли (программирование без if..then..else) не изобрели.
Хотя отдельные попытки предпринимаются.

Массив указателей на функции, например.
Укушенный воблой
Цитата(ViKo @ Jan 6 2017, 10:34) *
Массив указателей на функции, например.

Коллега уже хорошо сказал про такие "рецепты":
Цитата(zltigo @ Jan 4 2017, 10:32) *
Рецепт из серии - если у Вас болит зуб - прищемите палец дверью...


Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной.
Это по Вашему хорошее решение?
Типа "болит голова - ампутируем голову"?
syoma
Цитата(ViKo @ Jan 6 2017, 12:11) *
А I/O менеджер и менеджер коммуникаций звучат слишком похоже.

Фундаментальное отличие между ними в том, что I/O менеджер работает в реальном времени и взаимодействует с физическим железом. Причем делать он это может как напрямую - через драйверы HAL, так и через последовательные интерфейсы - CAN, SPI,RSXXX и пр. В одном проекте у нас вообще используется EtherCAT мастер с временем опроса в 100мкс.

Контроллер коммуникаций наоборот, работает не в реальном времени. Например он может работать под обычной операционкой. Его задачей является связь со всеми остальными интерфейсами, которым не нужно реальное время. Например все Ethernet коммуникации типа веб-серверов, ФТП и пр. Обработка клавиатуры, дисплея.

Контроллер коммуникаций является клиентом I/O менеджера - он должен иметь доступ к нужным сигналам, но этот доступ должен быть четко регламентирован, так как он будет проходить через границу между реальным и нереальным временем. Т.е. тут нужно предусматривать буферизацию, очереди сообщений и пр, чтобы не потерять информацию. Хорошо, что это надо сделать только один раз.
ViKo
Цитата(Укушенный воблой @ Jan 6 2017, 12:39) *
Коллега уже хорошо сказал про такие "рецепты":
Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной.
Это по Вашему хорошее решение?
Типа "болит голова - ампутируем голову"?

Я думаю, вы неверно цитируете коллегу по данному поводу.
Массив упорядочивает реагирование на внешние сигналы.
Например, у меня так сделана работа с панелью управления прибором.
Функции имеют названия, соответствующие органам управления. А указатели на них упорядочены в массиве, согласно номеру кнопки на панели. Причем, в массиве есть указатели даже на несуществующие номера кнопок. На пустые функции. А когда понадобилось, добавляю.
AlexandrY
Цитата(syoma @ Jan 6 2017, 11:49) *
о I/O менеджер работает в реальном времени и взаимодействует с физическим железом.... у нас вообще используется EtherCAT мастер с временем опроса в 100мкс.


EtherCAT это и есть коммуникация. А "I/O менеджер" это, как понимаю, у вас простой маппер.
Все надо называть своими словами.

Не, без сорсов вы только зря тратите время на объяснения.
Укушенный воблой
Цитата(syoma @ Jan 6 2017, 10:49) *
В одном проекте у нас вообще используется EtherCAT

Расскажите про EtherCAT

А то мы в Москве перебрали СОТНИ организаций но так не нашли ни одного толкового спеца по этер кату.

Скажите название Вашей организации?

Цитата(ViKo @ Jan 6 2017, 10:54) *
у меня так сделана работа с панелью управления прибором.
Функции имеют названия, соответствующие органам управления. А указатели на них упорядочены в массиве, согласно номеру кнопки на панели.

Это не универсальное решение и при том очень простой задачи. Это очередные "костыли".
От фундаментальной проблемы (наличие огромного числа "if..then..else" в сложных программах) это не помогает избавиться
dm37
"Буратино", всё таки предложу ещё раз посмотреть книжку Андрей Александреску "Современное проектирование на C++" и всё что с ней связано (у людей уже есть наработки в этой области - приводил выше),
Прочитайте стр.17 (предисловие) - написано прямо то что вы хотите.
книга
ViKo
Цитата(Укушенный воблой @ Jan 6 2017, 14:42) *
Это не универсальное решение и при том очень простой задачи. Это очередные "костыли".
От фундаментальной проблемы (наличие огромного числа "if..then..else" в сложных программах) это не помогает избавиться

Универсальных решений не бывает. Я показал один из примеров. Условных выполнений у меня хватает, но я не вижу это проблемой. Вопрос выбора есть всегда, иначе и программировать ничего не придется. То, что вы называете фундаментальной проблемой, на самом деле - реальность мироздания. "Щелкни кобылу в нос..." (с)
aiwa
Цитата(Укушенный воблой @ Jan 6 2017, 11:39) *
Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной.
Это по Вашему хорошее решение?

Совершенно наоборот: кодирование логики в номерах функций в случае, когда switch/case-реализация становится запутанной хотя бы из-за ее размера.
Недостатки лишь в издержках на вызов функций.
haker_fox
QUOTE (jcxz @ Jan 6 2017, 15:52) *
"Что-то аппаратное" есть во всех Cortex-M - MPU. Использую MPU в всех своих проектах на Cortex-M обязательно. А почему собственно его не использовать?
Только предохранить какую-то конкретную переменную с помощью него конечно затруднительно. Зато при отладке MPU очень часто помогает.

Я думал, может в kinetis что-то "сбоку" прикрутили, дополнительно. А вы MPU используете "сами" или в составе тойже FreeRTOS?

QUOTE (jcxz @ Jan 6 2017, 15:52) *
"Что-то аппаратное" есть во всех Cortex-M - MPU

В M0 нету laughing.gif
HardEgor
Цитата(iosifk @ Jan 6 2017, 16:13) *
А для чего нужны статьи я написал в КиТ №11 за 14 год. Они нужны не для того, чтобы все знали о том как писать программы для... А для того, чтобы получать приличную зарплату.

Упс, интересно как мне повысят зарплату за статьи?
Но прочесть не получится: "Статьи последних номеров доступны только в печатном варианте. Вы можете приобрести свежие номера журнала «Компоненты и технологии» в свободной продаже или заказать в редакции. Извините за доставленные неудобства."
Укушенный воблой
Цитата(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-ов нужно писать программисту для решения одной и той же достаточно сложной задачи.



zltigo
Цитата(aiwa @ Jan 6 2017, 15:02) *
Недостатки лишь в издержках на вызов функций.

Для этого функции инлайнятся, и/или макросы использовать. Причем макросы использовать по любому очень широко заменяя ими даже одиночные строчки и давая им осмысленные названия. Размеры switch уменьшаются, читабельность увеличивается. Из самого switch естественным образом выделяется большая функция изменения состояния автомата. В этой функции и отладка и все необходимые действия и установки по переходу В определенное состояние автомата. Количество обозреваемых строк уменьшается и увеличивается глобальная читабельность.
syoma
Цитата(AlexandrY @ Jan 6 2017, 12:25) *
EtherCAT это и есть коммуникация. А "I/O менеджер" это, как понимаю, у вас простой маппер.
Все надо называть своими словами.
Не, без сорсов вы только зря тратите время на объяснения.

AlexandrY, сорцы высокопроизводительной системы с EtherCAT, VxWorks и прочими плюшками я выкладывать не собираюсь, так как это ни как ни опенсоурс. Только могу сказать, что это работает, хотите верьте, хотите нет.
EtherCAT отличается от остальных коммуникаций тем, что работает в real-time, поэтому он и часть I/O Менеджера, и не входит в менеджер коммуникаций. Ему также выделяется отдельный Ethernet порт, в то время как менеджер коммуникаций может реализовать различные протоколы на одном и том же порте. Раньше мы вместо EtherCAT использовали Profibus.
iosifk
Цитата(HardEgor @ Jan 6 2017, 16:35) *
Упс, интересно как мне повысят зарплату за статьи?
Но прочесть не получится: "Статьи последних номеров доступны только в печатном варианте. Вы можете приобрести свежие номера журнала «Компоненты и технологии» в свободной продаже или заказать в редакции. Извините за доставленные неудобства."

Так за 2014 год же доступно все... И там все написано...
Или могу по скайпу перебросить...
jcxz
Цитата(haker_fox @ Jan 6 2017, 16:04) *
Я думал, может в kinetis что-то "сбоку" прикрутили, дополнительно. А вы MPU используете "сами" или в составе тойже FreeRTOS?
"сами"

Цитата(haker_fox @ Jan 6 2017, 16:04) *
В M0 нету laughing.gif
Значит от M3 и выше.
AlexandrY
Цитата(syoma @ Jan 6 2017, 16:57) *
AlexandrY, сорцы высокопроизводительной системы с EtherCAT, VxWorks и прочими плюшками я выкладывать не собираюсь,...


VxWorks есть в наших закромах, так что можете не выклывать раз такой жадный.

А вот менеджер если он весь такой абстрактный и платформенно независимый могли бы выложить.
Или хотя бы назвать его метрики типа количества строк, функций, модулей, файлов и проч.

Но боюсь нет у вас никакого "менеджера", а есть набор функций и промежуточного софта, то что я назвал фреймворком.
VxWorks вы уже назвали, там есть и файловая и TCP стек и USB и проч. Стоит это добро дикие деньги.

Так что ваша "архитектура" совершенно не вписывается в контекст темы
Огурцов
Цитата(Буратино @ Jan 6 2017, 07:38) *
Я с вариантами разберусь,

вы уж разберитесь сначала

Цитата(Буратино @ Jan 6 2017, 07:38) *
а вы пож. не постите ерунду больше.

ерунда == писать под восьмибитники
desh
Цитата(Буратино @ Jan 6 2017, 10:38) *
Чего мне не хватает так это инструментов для реализации бизнес логики и меня не устраивает не только сложность с написанием ПО, но и самое главное сложности с его модификацией.


Присмотритесь
syoma
Цитата(desh @ Jan 7 2017, 23:04) *

Ну зачем так сразу мордой об асфальт? Современным аналогичным инструментом такого вполне являются UML и Matlab/Simulink.
Но ТС так и не сказал, что такое "бизнес-логика" в его программах. А без этого сложно советовать какие-либо инструменты.
TSerg
Сложные программы..
Угу, посмотрел бы я на любителей MCU после того как их ознакомили с современными БИУС.
BackEnd
Цитата(TSerg @ Jan 7 2017, 23:11) *
Угу, посмотрел бы я на любителей MCU после того как их ознакомили с современными БИУС.

Ну ознакомились бы, перестали б в цирке смеяться. Делов-то, не они первые, не они последние...
Буратино
Огурцов, не хамите. Я в этом деле первый после Бога и шансов у Вас ноль в данной плоскости общаться.
Что касается 8ми битников, то для меня этот вопрос на столько же очевиден как и для всех остальных в этой теме. Не нужно открывать глаза на истину, о которой уже всем известно. Однако, во-первых мои задачи с легкостью размещаются в рамках 8ми битников, а во-вторых куда собственно денутся все проблемы о которых я пишу при переходе на кортекс? И еще раз персонально для Вас: я ничего не имею против кортекс и понимаю что это неотъемлемый атрибут современного мира контроллеров. Но не нужно ими тыкать. Это совершенно иной уровень задач: стеки протоколов, ОС, экраны, сложные вычисления.

Что касается данной темы, то я думаю, что максимум для 8ми битника (в моем случае) это:
1. Разбивка кода на части с разделением функциональности в отдельных с файлах.
2. Структуры массивы и указатели
3. Подсистема таймеров. Это когда я могу дать некое имя виртуальному таймеру и работать с этим таймером. Стартовать, проверять значение, сбрасывать. Таких таймеров может быть столько сколько необходимо. ТИк - одна миллисекунда.
4. Подсистема сообщений. Это когда я могу отправить сообщение от одной части ПО к другой. Сообщение может быть "персональное" либо широковещательное.
5. Объекты. Эти программные конструкции которые поддерживают все вышеперечисленное и помогают перейти на несколько более высокий уровень абстракции. Объекты взаимодействуют с окружением используя методы и свойства.
BackEnd
Цитата(Буратино @ Jan 4 2017, 06:47) *
Смотрю в сторону объектно ориентированных принципов построения ПО

Про ООП думаю так: https://electronix.ru/forum/index.php?showt...p;#entry1445527

Цитата(Буратино @ Jan 4 2017, 06:47) *
а также подумываю над идеями из теории ОС

Зависит от требований к изделию. В определенных случаях ОС и ее элементы хороши, в других это может вредить делу. Где целесообразно, там применял ОС-образные подходы для МК и ПЛИС.

Цитата(Буратино @ Jan 8 2017, 08:27) *
Что касается данной темы, то я думаю, что максимум для 8ми битника это:
1. Разбивка кода на части с разделением функциональности в отдельных с файлах.
2. Структуры массивы и указатели
3. Подсистема таймеров. Это когда я могу дать некое имя виртуальному таймеру и работать с этим таймером. Стартовать, проверять значение, сбрасывать. Таких таймеров может быть столько сколько необходимо. ТИк - одна миллисекунда.
4. Подсистема сообщений. Это когда я могу отправить сообщение от одной части ПО к другой. Сообщение может быть "персональное" либо широковещательное.
5. Объекты. Эти программные конструкции состоят из всего вышеперечисленного и помогают перейти на несколько более высокий уровень абстракции. Объекты взаимодействуют с окружением используя методы и свойства.

Пункты 1 и 2 для меня инвариантны относительно выбранного МК. Об организационно-технологических пунктах 3-5 я бы думал после изучения ТЗ на конкретное изделие.
syoma
Цитата(AlexandrY @ Jan 7 2017, 22:05) *
А вот менеджер если он весь такой абстрактный и платформенно независимый могли бы выложить.
Или хотя бы назвать его метрики типа количества строк, функций, модулей, файлов и проч.
Но боюсь нет у вас никакого "менеджера", а есть набор функций и промежуточного софта, то что я назвал фреймворком.
VxWorks вы уже назвали, там есть и файловая и TCP стек и USB и проч. Стоит это добро дикие деньги.
Так что ваша "архитектура" совершенно не вписывается в контекст темы

Вы понимаете вообще разницу между архитектурой и реализацией? Я привел I/O менеджер как некую абстракцию - часть ПО системы управления. Как он будет реализован на практике в конкретной платформе - зависит от множества факторов и я специально этого не касался. Примеры I/O менеджеров для различных систем управления:

8-и битный контроллер - да, обыкновенный маппер с дефайнами и функциями

Система с RTOS, как у меня - описал выше

Промышленный ПЛК - смотри Codesys и МЭК 61131-3 - там есть свой I/O менеджер.

Контроллер управления умным домом - вам непонятный OpenHAB.

І/O менеджер как раз очень платформозависимый, но на уровне архитектуры- абстракции он служит для выполнения одних и тех-же задач, что доя 8-и, что для 64-х битника

Цитата(Буратино @ Jan 8 2017, 11:27) *
Что касается данной темы, то я думаю, что максимум для 8ми битника (в моем случае) это:
1. Разбивка кода на части с разделением функциональности в отдельных с файлах.
2. Структуры массивы и указатели
3. Подсистема таймеров. Это когда я могу дать некое имя виртуальному таймеру и работать с этим таймером. Стартовать, проверять значение, сбрасывать. Таких таймеров может быть столько сколько необходимо. ТИк - одна миллисекунда.
4. Подсистема сообщений. Это когда я могу отправить сообщение от одной части ПО к другой. Сообщение может быть "персональное" либо широковещательное.
5. Объекты. Эти программные конструкции которые поддерживают все вышеперечисленное и помогают перейти на несколько более высокий уровень абстракции. Объекты взаимодействуют с окружением используя методы и свойства.

Это нужно для вашей "бизнес-логики"? Что же это за штука такая? Ну дайте понять где нужно давать имена таймерам и широковещательные сообщения. Напоминает автоматы состояний.
Огурцов
Цитата(Буратино @ Jan 8 2017, 09:27) *
Огурцов, не хамите.

не говорите, что мне делать и я не укажу вам путь

Цитата(Буратино @ Jan 8 2017, 09:27) *
Я в этом деле первый после Бога

каким образом, если вы даже не врубаетесь, что это позволяет не напрягаясь реализовать:

Цитата(Буратино @ Jan 8 2017, 09:27) *
1. Разбивка кода на части с разделением функциональности в отдельных с файлах.
2. Структуры массивы и указатели
3. Подсистема таймеров. Это когда я могу дать некое имя виртуальному таймеру и работать с этим таймером. Стартовать, проверять значение, сбрасывать. Таких таймеров может быть столько сколько необходимо. ТИк - одна миллисекунда.
4. Подсистема сообщений. Это когда я могу отправить сообщение от одной части ПО к другой. Сообщение может быть "персональное" либо широковещательное.
5. Объекты. Эти программные конструкции которые поддерживают все вышеперечисленное и помогают перейти на несколько более высокий уровень абстракции. Объекты взаимодействуют с окружением используя методы и свойства.

agregat
Цитата(BackEnd @ Jan 8 2017, 07:16) *
Ну ознакомились бы, перестали б в цирке смеяться. Делов-то, не они первые, не они последние...

Я может не в той оборонке работал, такое впечатление...

А автору советую взять AT91SAM7 установить на него операционку и тупо делать все дизайны под RTOS. Все проблемы потихоньку рассосутся сами собой.
syoma
Цитата(agregat @ Jan 8 2017, 12:26) *
Я может не в той оборонке работал, такое впечатление...

Может он имел ввиду зарубежные современные БИУС?


-SANYCH-
Цитата
А автору советую взять AT91SAM7 установить на него операционку и тупо делать все дизайны под RTOS. Все проблемы потихоньку рассосутся сами собой.


Под RTOS еще нужно уметь писать. Можно такое намудрить что потом не отладишь.
Как на меня так совет абсолютно не имеет смысла (в плане понимания построения программы).
RTOS ускоряет и облегчает разработку, но главное это понимание как и где его использовать.

Как на меня так было бы очень интересно посмотреть реализацию (кода на C) как люди решают те или инные задачи.
Тут уже говорили про массивы структур, указатели на функции в структурах.

Если у кого есть примеры, или ссылки поделитесь плиз rolleyes.gif

Приведите примеры где это все инициализировать (например массивы указателей )как его использовать (только живой код с примером кратким, но достаточным для понимания).

На мой взгляд это более информативно и полезно чем тысячный раз говорить что нужно роделять код и делать всякие абстракции. Вот только как делать эти абстракции вовсе не понятно, когда их никогда не делал.
AlexandrY
Цитата(-SANYCH- @ Jan 8 2017, 13:32) *
Приведите примеры где это все инициализировать (например массивы указателей )как его использовать (только живой код с примером кратким, но достаточным для понимания).


Эт вы просите разжёванный и положенный в рот учебный материал, а не живой код.

Живой код я показал в первом же ответе в этой ветке.
Вот еще раз ссылка на него

Там есть и RTOS, и как делается мапинг сигналов получаемых по сети CAN c массивами указателей и как сделать 100 машин состояний работающих по скриптам с тактом в 5 мс.
И как при этом управлять устройставми с тактом в 62 мкс. И одновременно осциллографировать сигналы на PC по HS USB и писать в лог на SD карту и т.д. и т.п.

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

А учебный материал стоит дорого. Потому и тех. поддержка RTOS стоит дороже самих RTOS.
Я конечно не имею в виду здесь малофункциональные экзерсисы типа ScmRTOS
Буратино
Огурцов, сори, но Вы не в теме. Просто не понимаете, что я пишу и о чем. Первый после Бога я в смысле навыков хамить! А вот что касается контроллеров то обратите внимание где создана тема и что в ней обсуждается.

еще раз: RTOS это не эта тема. Нужна ОС там где люди работают в том числе с чужими стеками протоколов, с чужими программами и модулями. Вот представьте себе: вам нужен езернет, усб, доступ к файлам на карте памяти и работа с сенсорным экраном. Естественно вы возьмете готовые либы, но кто знает как все это внутри устроено!? А работать то должно все вместеsm.gif Вот тут то и приходит на помощь ОС. Проц занимается последовательно задачами ,ну естесна с приоритетами и прочими фишками. Мне не нужно и не интересно. Пока. Дальше видно будет.
ООП тош интересно. ОЧень, но опять же не здесь и не сейчас.

Я говорю о другом.
Укушенный воблой
Цитата(Буратино @ Jan 6 2017, 07:38) *
меня не устраивает не только сложность с написанием ПО, но и самое главное сложности с его модификацией.

Вам же сказали, что ФУНДАМЕНТАЛЬНАЯ проблема программирования (наличие большего числа "IF...THEN...ELSE" в разных вариациях и формах) пока что не решена.
Отсюда код ТРУДНО модифицируемый. Отсюда баги при модификации.

Нужен инструмент который будет контролировать ЦЕЛОСТНОСТЬ "бизнес-логики" при изменениях программы и синхронность+законченность этих изменений в разных взаимосвязанных частях программы.

Но он пока не изобретен.
Так что если Вам удасться его изобрести - Вы будете первым в мире. biggrin.gif
SlavaV
Буратино,

лично моё мнение, все Ваши проблемы решаются знанием основ системотехники (умением в принципе разрабатывать), а в частности ООП.

Второе Вы считаете, что Вам достаточно 8-ми битников, тогда я Вам завидую, Вы трудитесь в неконкурентной среде.
Поясню: стоимость разработки складывается из элементов (здесь все производители постарались и M0 стоит дешевле вашего 8-ми битника) и времени разработки (что позволяют современные IDE для современных контроллеров Вам уже тоже говорили).
Огурцов
Цитата(Укушенный воблой @ Jan 8 2017, 14:27) *
Вам же сказали, что ФУНДАМЕНТАЛЬНАЯ проблема программирования (наличие большего числа "IF...THEN...ELSE" в разных вариациях и формах) пока что не решена.

ещё раз: выносите каждый then/else в свой камень
это позволяет реализовать задачу один раз и больше к ней не возвращаться

Цитата(Укушенный воблой @ Jan 8 2017, 14:27) *
Но он пока не изобретен.

от чего же ? бизнес-логика должна быть вынесена и скрипты уже называли
Буратино
Цитата(SlavaV @ Jan 8 2017, 17:45) *
Буратино,
лично моё мнение, все Ваши проблемы решаются знанием основ системотехники (умением в принципе разрабатывать), а в частности ООП.

Вот видите, Вы все обо мне знаете: И где я работаю, и чего мне не хватает. Не понял только одного: по теме то есть что сказать? )
В сотый раз: все супер с кортексами, но мне пока хватает классики. И снова подчеркиваю, что никуда вопросы которые меня лично волнуют не денутся при переходе не только на картекс но и на большого брата. А ООП это вообще отдельная тема, сомневаюсь что тут много людей способных пусть даш себе растолковать накой оно им нужно в мире мк.
SlavaV
У Вас название темы "Сложные программы"

назовите пожалуйста единственную причину появления ООП

PS Всё, что я написал относиться к вашей теме непосредственно.
gerber
Цитата(Укушенный воблой @ Jan 8 2017, 16:27) *
Нужен инструмент который будет контролировать ЦЕЛОСТНОСТЬ "бизнес-логики" при изменениях программы и синхронность+законченность этих изменений в разных взаимосвязанных частях программы.

Но он пока не изобретен.
Так что если Вам удасться его изобрести - Вы будете первым в мире. biggrin.gif

Почитайте что-нибудь про юнит-тесты.
Укушенный воблой
А вообще, ИМХО, топикстартер просто не специалист в программировании отсюда программирование ему кажется таким сложным. Поэтому решение для него - просто нанять толкового программиста и не заниматься не своим делом.

Я вообще не понимаю: какие могут быть сложности в "ногодрыганье" к которому сводится программирование МК?
В то время как написание даже простейшего парсера - на порядок более сложная для "железячника" задача. А для программиста "раз плюнуть".

Поэтому повторюсь: наймите программиста.
Буратино
детский сад.
HardEgor
Цитата(Буратино @ Jan 8 2017, 19:34) *
еще раз: RTOS это не эта тема. Нужна ОС там где люди работают в том числе с чужими стеками протоколов, с чужими программами и модулями.

Вы несколько путаете следствие и причину - ОС нужна для разделения ресурсов несколькими задачами. А также она дает единый интерфейс задачам, что позволяет абстрагироваться от реализации ресурсов, что как следствие создает удобство при использовании чужих модулей/программ. Но не наоборот sm.gif Так-то чужие модули/программы отлично работают и без ОС.

Я так и не увидел в чем ваши сложности, если не получается выразить словами, то приведите примеры кода.
У меня сложилось впечатление, что все ваши программы это один большой main.c и вам надоело переписывать его каждый раз заново, вот и спрашиваете как упростить написание....
aiwa
Цитата(Буратино @ Jan 8 2017, 14:34) *
Естественно вы возьмете готовые либы, но кто знает как все это внутри устроено!?

Можно выбрать либы с открытыми исходникми, чтобы знать как внутри устроено.
Цитата(Буратино @ Jan 8 2017, 14:34) *
Вот тут то и приходит на помощь ОС. Проц занимается последовательно задачами ,ну естесна с приоритетами и прочими фишками. Мне не нужно и не интересно.

Аналогично: взять операционку с открытими исходниками и лезвие Оккамы. И оставить лишь то, что интересно.
Эдди
Как по мне, так ртось как раз и надо бритвой Оккама вырезать!
TSerg
Для меня и Windows NT - тоже RTOS.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.