Напишите ответ

Введите сообщение и нажмите Отправить
Параметры

Назад

Обзор темы (новое вверху)

Batu
2020-03-26 14:00:39
Watchdog пишет:

Под здравым смыслом мы понимаем то мировозрение которое усвоили в течении жизни и считаем верным, т.е. здравым, а не больным. Здравый смысл может быть очень разным у различных нездравых умов, самовольно и неправильно мыслящих.  cool Но что из слушать - больных; лечить из надо!  lol

Я не пойму к чему ты прицепился, потому повторюсь подробнее..
"Если полное изменение обходится дорого, то надо изменять только то, без изменения чего нельзя обойтись."

Watchdog
2020-03-26 11:14:50
Kaka пишет:

Понятно, то, что приведённые коды идентичны по ресурсам и не отличаются ни на один байт, Вы проверили, убедились, но признать ошибку - не по-пацански. Знакомая позиция.

Да, если это просто синтаксический сахар. Что касается боле содержательных конструкций то все не так однозначно. Вы правы, я пацан для Бьёрна Страуструпа, но в этом деле кое-чего да смыслю. Это не позиция, а мировозрение, присобаченное. lol

Kaka
2020-03-26 11:06:26

Понятно, то, что приведённые коды идентичны по ресурсам и не отличаются ни на один байт, Вы проверили, убедились, но признать ошибку - не по-пацански. Знакомая позиция.

Watchdog
2020-03-26 10:54:40
Kaka пишет:
Watchdog пишет:

А зачем Serial-у GPrint? Это же класс вывода на графисческий дисплей, наследник Print, как и Serial.

Было использовано слово "красиво". Мои представления о красоте - это когда простое изменение работает для всего, в т.ч. и для Serial.

Watchdog пишет:

А опреаторный ввод-вывод, да как и printf / scanf собственно, имеет  достаточно громоздкий механизм реализации, касательно маленьких микроконтроллеров.

Сначала про операторный вывод ... кто Вам сказал. что у него какой-то особый, громоздкий механизм реализации? Вас жестоко обманули! Сравните ресурсы (а если хотите, то ассемблерный код) вот этих двух скетчей и знайте, что использование потокового вывода не стоит ровным счётом ничего!

void setup(void) {
	Serial.begin(115200);
	Serial.print("Quae est ad aliquid");
}

void loop(void) {}
template <typename T> inline Print & operator << (Print &s, T n) { s.print(n); return s; }

void setup(void) {
	Serial.begin(115200);
	Serial << "Quae est ad aliquid";
}

void loop(void) {}

Ну, а про printf. Это общие слова. Любое решение чего-нибудь стоит в плане ресурсов. Потому говорить "вообще" без указания задачи - сотрясание воздуха. Из тех задач для МК, которые я видел и которые делал, в 95% случаев ресурсов за глаза хватает в т.ч. и для printf. А если хватает - чего париться? Используем то, что удобно.

Я больше не буду сторясать воздух, Кака. Но на последок скажу. Во первых, речь не о том чем вы блеснули. Во вторых, в микроконтроллерах приходится считать байты, расходуемые на удобства. А в третьих, задача определмима со слов автора; речь идет о выводе форматированных данных на графический дисплей. Не какайте, пожалуйста, всем на голову, для этого существуют специальные места.

Kaka
2020-03-26 10:27:09
Watchdog пишет:

А зачем Serial-у GPrint? Это же класс вывода на графисческий дисплей, наследник Print, как и Serial.

Было использовано слово "красиво". Мои представления о красоте - это когда простое изменение работает для всего, в т.ч. и для Serial.

Watchdog пишет:

А опреаторный ввод-вывод, да как и printf / scanf собственно, имеет  достаточно громоздкий механизм реализации, касательно маленьких микроконтроллеров.

Сначала про операторный вывод ... кто Вам сказал. что у него какой-то особый, громоздкий механизм реализации? Вас жестоко обманули! Сравните ресурсы (а если хотите, то ассемблерный код) вот этих двух скетчей и знайте, что использование потокового вывода не стоит ровным счётом ничего!

void setup(void) {
	Serial.begin(115200);
	Serial.print("Quae est ad aliquid");
}

void loop(void) {}
template <typename T> inline Print & operator << (Print &s, T n) { s.print(n); return s; }

void setup(void) {
	Serial.begin(115200);
	Serial << "Quae est ad aliquid";
}

void loop(void) {}

Ну, а про printf. Это общие слова. Любое решение чего-нибудь стоит в плане ресурсов. Потому говорить "вообще" без указания задачи - сотрясание воздуха. Из тех задач для МК, которые я видел и которые делал, в 95% случаев ресурсов за глаза хватает в т.ч. и для printf. А если хватает - чего париться? Используем то, что удобно.

Watchdog
2020-03-26 08:47:57
Batu пишет:
Watchdog пишет:
Batu пишет:

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

А зравый смысл окуда? Из учебников, писменных или неписьменных. Есть и другое очевидное. Создать производный (дочерний) класс от Print, переопределив вывод. Что в стиле Ардуино, будет даже красивше.  wink

Здравый смысл из здравого смысла и касается абсолютно всего нуждающегося в изменении.

Под здравым смыслом мы понимаем то мировозрение которое усвоили в течении жизни и считаем верным, т.е. здравым, а не больным. Здравый смысл может быть очень разным у различных нездравых умов, самовольно и неправильно мыслящих.  cool Но что из слушать - больных; лечить из надо!  lol

Batu
2020-03-26 07:39:04
Watchdog пишет:
Batu пишет:

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

А зравый смысл окуда? Из учебников, писменных или неписьменных. Есть и другое очевидное. Создать производный (дочерний) класс от Print, переопределив вывод. Что в стиле Ардуино, будет даже красивше.  wink

Здравый смысл из здравого смысла и касается абсолютно всего нуждающегося в изменении.

Watchdog
2020-03-25 22:17:38
Kaka пишет:

Ну, да. А сериал с этим работать не будет. А как раз об этом. Он же от родного Print, а не от нашего GPrint.

На самом деле, не так красиво (зато дешево и практично), можно присобачить потоки  ( << ) ко всему, в том числе и к встроенному сериалу.При помощи переопределения операции << для Print через внешнее переопределение (в сам Print лезть не надо). Тогда можно просто писать Serial << "n=" << n; Причём это как раз будет работать со всем, что от Print произведено.

Также можно присобачить printf к сериалу (или к чему угодно). Тоже удобно.

Ну, авторитет printf непререкаем. А зачем Serial-у GPrint? Это же класс вывода на графисческий дисплей, наследник Print, как и Serial. А опреаторный ввод-вывод, да как и printf / scanf собственно, имеет  достаточно громоздкий механизм реализации, касательно маленьких микроконтроллеров.

Kaka
2020-03-25 21:22:19

Ну, да. А сериал с этим работать не будет. А как раз об этом. Он же от родного Print, а не от нашего GPrint.

На самом деле, не так красиво (зато дешево и практично), можно присобачить потоки  ( << ) ко всему, в том числе и к встроенному сериалу.При помощи переопределения операции << для Print через внешнее переопределение (в сам Print лезть не надо). Тогда можно просто писать Serial << "n=" << n; Причём это как раз будет работать со всем, что от Print произведено.

Также можно присобачить printf к сериалу (или к чему угодно). Тоже удобно.

Watchdog
2020-03-25 18:33:08
Kaka пишет:
Watchdog пишет:

Что в стиле Ардуино, будет даже красивше.  wink

Не будет, к сожалению. Эти сцуки уже определили глобальную переменную Serial, и ей уже пофиг наши изменения в её родительских классах - ей их не подсунешь (не Питон и Яваскрипт чай. там такое запросто). Так что можно определить своё, но работать будет со всем, акромя предопределённого Serial'а, а это уже не так красиво.

Serial останется как сериал. Никуда от не денется. Как то так:

class GPrint : public Print
{
//...

public:
   GPrint(/*...*/);
//...

   virtual size_t write(uint8_t)
   {
       // your implementation
       // ...
    }
}
Kaka
2020-03-25 18:03:12
Watchdog пишет:

Что в стиле Ардуино, будет даже красивше.  wink

Не будет, к сожалению. Эти сцуки уже определили глобальную переменную Serial, и ей уже пофиг наши изменения в её родительских классах - ей их не подсунешь (не Питон и Яваскрипт чай. там такое запросто). Так что можно определить своё, но работать будет со всем, акромя предопределённого Serial'а, а это уже не так красиво.

Watchdog
2020-03-25 15:05:23
Batu пишет:

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

А зравый смысл окуда? Из учебников, писменных или неписьменных. Есть и другое очевидное. Создать производный (дочерний) класс от Print, переопределив вывод. Что в стиле Ардуино, будет даже красивше.  wink

Batu
2020-03-25 14:34:34

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

Watchdog
2020-03-24 06:58:55
luminofor пишет:
г0сть пишет:
Kaka пишет:

Бред какой-то.

Согласен

Kaka предложил толковую идею, про которую я не знал, а вы могли бы предложить свою или воздержаться.
Покурил я printf - интересная вещица, ща сбацаю все хотелки  lol

Эта толковая идея - классика языка С, неизвестная разве что заядлым курильшикам, прогуливающим уроки. Я вот тоже хотел воздержаться, но передумал. Хочу также предложть вам свою идею, избавящую вас от позра. Не ленитесь читать учебники и справочники. И тогда на вас никто не станет "Какать"!

luminofor
2020-03-24 00:28:44
г0сть пишет:
Kaka пишет:

Бред какой-то.

Согласен

Kaka предложил толковую идею, про которую я не знал, а вы могли бы предложить свою или воздержаться.
Покурил я printf - интересная вещица, ща сбацаю все хотелки  lol

Подвал раздела