sigmaN 0 18 июля, 2020 Опубликовано 18 июля, 2020 · Жалоба Всем привет! Посоветуйте какое-нибудь годное чтиво по реализации разных протоколов(HDLC, PPP, TCP/IP и т.д.) на С/С++. Какие-нибудь лучшие практики, шаблоны... Конечные автоматы как люди делают в таких случаях(eстественно, с упором на встраиваемые системы. Так то про Boost.msm мы слыхали). Правильная организация буферизации интересует в таких случаях, в условиях многопоточности особенно. Я обычно двойную буферизацию: писатель в пишет в один буфер, читатель читает из другого, ну и в критической секции только переключение этих буферов. В целом какое-то у меня ощущение складывается, что каждый раз как в первый раз изобретаю что-то на эту тему, хочется уже умных людей почитать и окончательно понять как правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rkit 1 19 июля, 2020 Опубликовано 19 июля, 2020 · Жалоба А самому взять да открыть реальную реализацию своего же списка - не судьба? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 19 июля, 2020 Опубликовано 19 июля, 2020 · Жалоба Вот я давича смотрел исходники pppd https://github.com/paulusmack/ppp Что хорошего, светлого и умного можно почерпнуть из них? Такое я и сам накодить могу. ИМХО это стиль девяностых(восьмидесятых??) А чтобы вы лучше поняли мою позицию, я приведу тут чтиво, которое вчера нагуглил и перед сном успел полистать. http://caxapa.ru/thumbs/726398/comms-protocols-cpp.pdf Интересно, познавательно. Возникает желание попробовать, посмотреть, что там за бинарник получается... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rkit 1 19 июля, 2020 Опубликовано 19 июля, 2020 · Жалоба Это чтиво не имеет никакого отношения к реальности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 56 20 июля, 2020 Опубликовано 20 июля, 2020 · Жалоба 19.07.2020 в 02:36, sigmaN сказал: Какие-нибудь лучшие практики, шаблоны... Конечные автоматы как люди делают в таких случаях(eстественно, с упором на встраиваемые системы. Так то про Boost.msm мы слыхали). Так для разных платформ будут разные возможности и ограничения - у кого-то 16 кбайт памяти хватает, а кому и 2 Мб мало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 20 июля, 2020 Опубликовано 20 июля, 2020 · Жалоба 3 hours ago, HardEgor said: Так для разных платформ будут разные возможности и ограничения - у кого-то 16 кбайт памяти хватает, а кому и 2 Мб мало. Не, здесь ноги растут видимо из убежденности в универсальности плюсов. Дескать надо только классы да патерны хорошие придумать и дело пойдет. А то что всякие comms-protocols-cpp не приближают к цели ни на миллиметр, как бы игнорируется. Когнитивное искажение, словом. Помочь тут может только время проведенное за изучением https://github.com/paulusmack/ppp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 20 июля, 2020 Опубликовано 20 июля, 2020 · Жалоба 5 hours ago, AlexandrY said: Не, здесь ноги растут видимо из убежденности в универсальности плюсов. Ноги видимо растут из убежденности в незаменимости голого Си. Дескать все эти классы и абстракции только код раздувают да память жрут.. 5 hours ago, AlexandrY said: А то что всякие comms-protocols-cpp не приближают к цели ни на миллиметр, как бы игнорируется. Ну давайте на чистоту: мне тоже не нравится эта библиотека. Просто потому, что если её притащить в проект, то писать придется уже не на плюсах, а на том домэйн-специфик языке, который эта библиотека предлагает. Но чтиво было интересным. 5 hours ago, AlexandrY said: Когнитивное искажение, словом. Надо бы аргументировать. Создаётся впечатление, что у вас когнитивное искажение в сторону Си) И компилятор вам не друг, а враг. 5 hours ago, AlexandrY said: Помочь тут может только время проведенное за изучением https://github.com/paulusmack/ppp Я провел достаточно времени за изучением именно этого проекта. Выстрелить в ногу там себе можно 18 разными способами в каждом модуле ) Именно из-за отсутствия возможности сделать нормальные абстракции на Си - авторами пришлось повсеместно использовать препроцессор, мэйджик намберы и т.д. На Си повсеместно приходится изобретать то this pointer то vtable то препроцессором костыли вставлять. Я тоже тогда позволю себе дать вам рекомендацию по исправлению когнитивного искажения.. Когда-ниубдь на досуге попробуйте просто взять тот-же pppd и переписать на плюсах. В качестве первого упражнения предлагаю следующее: Если где-то видите, что в группу функций передаётся некое состояние в виде указателя на одну и ту-же структуру - делайте это классом. Структуру эту в класс, функции делайте членами каласса. Спустя какое-то время вы сможете оценить тот факт, что благодаря this поинтеру это то-же самое(можете в ассемблер заглянуть) только лучше;) Лучше потому, что вы устанавливаете и контролируете инвариант в одном месте. Ограничиваете область видимости до нужной. И так далее... Разделяй и властвуй ;) Так, потихонечку можно будет и до свежих стандартов дойти и лично убедиться, что если на платформу есть компилятор с плюсов, то писать на голом си просто даже нет смысла. Нет причин. Кроме, конечно, самоотверженной веры в универсальность и незаменимость Си. P.S. немного не про эмбеддед конечно, но всё-же https://youtu.be/wbZdZKpUVeg Как вам такое? Тут тоже ни на миллиметр люди не приблизились к заветной мечте? ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 20 июля, 2020 Опубликовано 20 июля, 2020 · Жалоба 16 minutes ago, sigmaN said: Ну давайте на чистоту: мне тоже не нравится эта библиотека. Просто потому, что если её притащить в проект, то писать придется уже не на плюсах, а на том домэйн-специфик языке, который эта библиотека предлагает. О, спасибо. Вот так я и хотел написать. А мой любимый язык не С, а вот такой: И думаю что без него вы ни одного юзабельного протокола не создадите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 20 июля, 2020 Опубликовано 20 июля, 2020 · Жалоба Так я же с этого и начинал )) On 7/18/2020 at 10:36 PM, sigmaN said: Какие-нибудь лучшие практики, шаблоны... Конечные автоматы как люди делают в таких случаях(eстественно, с упором на встраиваемые системы. Так то про Boost.msm мы слыхали). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 20 июля, 2020 Опубликовано 20 июля, 2020 · Жалоба 24 minutes ago, sigmaN said: Так я же с этого и начинал )) Не понял только при чем здесь конечные автоматы. Я показал язык диаграм состояний Stateflow. Конечные автоматы забудьте как страшный сон. Stateflow и FSM соотносятся приблизительно как C и ассемблер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 20 июля, 2020 Опубликовано 20 июля, 2020 · Жалоба Т.е. вы просто потом предлагаете автоматически генерировать С/С++ и радоваться жизни? Спасибо, интересно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 12 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба А Вам шашечки или ехать? Если ехать, то скажу как ремесленник: нет времени разрабатывать то, что уже разработано. Никто не оценит красоту Ваших личных исходников, которые Вы подсунули вместо хорошо работающих чужих. Перфекционизм- это от безделья. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба 56 minutes ago, Ruslan1 said: Перфекционизм- это от безделья. Но все-таки, очень хотелось бы иметь более легкий вариант lwIP. Да и для файловых систем что-нибудь поприличней vfat от Чена (хотя бы элементарную реализацию ext2). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 12 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 9 hours ago, Eddy_Em said: Но все-таки, очень хотелось бы иметь более легкий вариант lwIP. Да и для файловых систем что-нибудь поприличней vfat от Чена (хотя бы элементарную реализацию ext2). Разумеется, если в чужом коде что-то объективно не устраивает, его нужно переделывать. Но для этого должны быть более другие аргументы, чем "хочу более правильный", "этот некрасивый", или "свой хочу". Ну и опять же, чтобы писать свое с чистого листа- нужны очень весомые аргументы. Обычно достаточно что-то переписать или дописать несколько новых функций к уже функционирующему организму. Например, про легкий вариант lwip: нужна действительно очень специальная ниша, если его модульности, доступной через систему дефайнов, не хватает. Лично про себя скажу: часто бывает, что неприятие чужого возникает из-за непонимания. Кажется, что все там коряво и не так, и "да я за вечер лучше напишу", а на самом деле просто не понял, как этим механизмом пользоваться или вообще не знал что там это уже реализовано. И еще инструкция рулит, даже к вроде бы очевидным вещам, много интересного можно узнать. Вот, например, медицинские маски- вроде бы тряпочка на веревочках, а и там есть верх-низ, и жесткий обжим для носа. Я уже несколько раз так народ подкалывал- носят неправильно и жалуются что неудобно, им даже в голову не пришло, что у такой простой фигнюшки тоже есть особенности, описанные в инструкции. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 32 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 1 час назад, Ruslan1 сказал: Лично про себя скажу: часто бывает, что неприятие чужого возникает из-за непонимания. Кажется, что все там коряво и не так, и "да я за вечер лучше напишу", а на самом деле просто не понял, как этим механизмом пользоваться или вообще не знал что там это уже реализовано. А еще бывает так, что реализация настолько запутана, что потратить времени, чтобы понять ее нужно столько, что действительно проще написать свою. Да и по протоколам не все так просто, ну вот понадобился мне лет 7 назад протокол поверх RS-485, но с возможностью горячего подключения, автоидентификации, ну и контроля доставки, разумеется. Где такой взять, да был-какой-то монстроидальный протокол, который все-равно не подходил по всем требованиям, но чтобы разобраться в исходниках нужно было не меньше пары месяцев, плюс время на доработки и отладку. Написал свой за 3 недели вместе с тестированием, использую до сих пор, т.к. очень надежный, не устарел и предоставляет удобные функции для модулей расширителей портов. Поэтому не все так однозначно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться