Перейти к содержанию
    

Нетиповой вариативный шаблон класса. Помогите написать.

Мне не нужен экземпляр класса. Только функции из него. 

Однако, вряд ли получится. Скорее всего, сделаю несколько классов, под разные количества пинов.

Цель моя - никаких лишних команд и объектов в результате компиляции. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26 minutes ago, ViKo said:

Мне не нужен экземпляр класса. Только функции из него. 

Однако, вряд ли получится. Скорее всего, сделаю несколько классов, под разные количества пинов.

Цель моя - никаких лишних команд и объектов в результате компиляции. 

эти шаблоны (если вдуматься - это очень продвинутые макросы) крайне плохо парсятся IDE, что логично (впрочем как и макросы). Так что если цель - получить в лоб от того, кто будет потом смотреть этот код (и самому себе тоже можно в лоб дать) - то она будет с таким усердием непременно достигнута. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, стратегическая цель другая - избавиться от макросов #define, используя шаблоны. Макросы уже имею, без накладных расходов. Теперь перевожу на новые рельсы тот же состав.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, ViKo said:

Нет, стратегическая цель другая - избавиться от макросов #define, используя шаблоны. Макросы уже имею, без накладных расходов. Теперь перевожу на новые рельсы тот же состав.

та я и говорю, теже макросы. Тоже замудрил на шаблонах много чего в прошлом проекте, не подумав. А проца всего 128 кил флеша было. Правда я достаточно объемные ф-ции параметризировал. В итоге всю флеш и подзабил однообразным кодом, отличающимся только типами. Лучше бы указателями на функции пользовался, или, как модно сейчас говорить, лямбдами. Ну да и ладно, все равно пора rust учить, а не на этом ущербном языке кодить, который уже Страуструп не знает толком, по его же признанию ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, DASM said:

 как модно сейчас говорить, лямбдами. 

Не, лямбды - это просто анонимные функции, т.е. реализуемые в том же месте где и вызываются и по этому не требующие  имени. 

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

Но факт в том что юзать С++ под embedded будет оверхедом и мисюзингом.
А вот под десктоп C++ сейчас в самом тренде.
Микрософт даже отказывается от мечты создать кроссплатформенный .NET с индифферентным к языку компилятором в пользу WinRT на Win10 с поддержкой  всех фичей C++.
Так что стало уже можно покинуть Delphi и перейти на  C++ c VCL, STL, Boost и проч.  Экосистема созрела. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, AlexandrY сказал:

Но факт в том что юзать С++ под embedded будет оверхедом и мисюзингом.

Вы в приличном месте, постарайтесь не выражаться - выглядит дешевым бахвальством. Я понял только первое слово, но даже в этом вы не правы. При грамотном использовании накладных расходов ни капли не больше, чем при использовании "голых" Сей, а удобств и преимуществ - море. Сдуру, конечно, можно и хрен сломать, но тут уж каждый сам себе злобный Буратина.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 hours ago, DASM said:

эти шаблоны (если вдуматься - это очень продвинутые макросы)

Гм... также можно сказать, что Си++ - это ооооочееееень продвинутый ассемблер, а поезд Сапсан - продвинутый паровоз, что не умаляет преимуществ Си++ и этого поезда. Цель - унизить шаблоны с Си++?:biggrin:

6 hours ago, DASM said:

Так что если цель - получить в лоб от того, кто будет потом смотреть этот код

Грамотное использование шаблонов упрощает программирование, ну, например, вы пишете всего одну функцию (в тексте), но она работает с бесконечным множеством типов данных (конечно, эти данные должны поддерживать общие операции, используемые в этой функции). Да, на машинном коде будет создано то количество функций, сколько типов данных вы используете. Ну так ведь это бы пришлось вручную делать.

6 hours ago, DASM said:

Лучше бы указателями на функции

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

6 hours ago, DASM said:

Ну да и ладно, все равно пора rust учить, а не на этом ущербном языке кодить

А есть эффективные компиляторы с Rust в машинный код популярного семействва Cortex-Mx?

И чем этот язык так хорош в сравнении с Си++?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, AlexandrY сказал:

Не, лямбды - это просто анонимные функции, т.е. реализуемые в том же месте где и вызываются и по этому не требующие  имени. 

В С++ лямбды - это не функции вообще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, dxp сказал:

В С++ лямбды - это не функции вообще.

Стивен Прата вас не поддержал бы.

Цитата

Лямбда-функции 
Поначалу понятие лямбда-функции  (или, как их еще называют,  лямбда-выражения 
либо просто лямбда) может вам показаться не относящимся к одному из тех дополнений C++l l , 
которые призваны  помочь  начинающим программистам. Увидев, как в 
действительности  выглядит лямбда-функция, вы сочтете,  что  подозрения только  подтвердились - и вот пример: 
[&count]  (int  х)  { count  +=  (х  %  13 == 0); }  

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 hours ago, Сергей Борщ said:

Вы в приличном месте, постарайтесь не выражаться - выглядит дешевым бахвальством. Я понял только первое слово, но даже в этом вы не правы. При грамотном использовании накладных расходов ни капли не больше, чем при использовании "голых" Сей, а удобств и преимуществ - море. Сдуру, конечно, можно и хрен сломать, но тут уж каждый сам себе злобный Буратина.

Вы даже не поняли в чем оверхед, и даже не попытались уточнить. О чем можно тогда говорить с вами? И при чем тут ваш хрен?  Давайте метафоры поскромнее. 

А оверхед в количестве времени затраченном на продумывание сценариев которые никогда не будут использованы. Плюсы провоцируют к этому на каждом шагу. 
Те же шаблоны требуют обдумывания возможного поведения при всех возможных типах. А будут применены  один или два. 
Т.е. оверхед оптимизации реюзинга.
Хуже тормоза чем это даже трудно представить. Человек лучше ничего не сделает чем сделает то, что придется переделывать.

Опять же универсальные шаблоны требуют документации - это еще один тормоз. Поскольку без центрального хранилища документации такие шаблоны просто забудут и снова будут создавать те же шаблоны. Т.е. оверхед в перспективе.
Шаблоны хороши когда они сделаны другими, в виде поддерживаемых либ и с интегрированным хелпом в мощной IDE. На десктопах это есть.  Там с плюсами все Ок.
А в embedded нет.  

ООП вообще щас гнобят как изжившую себя концепцию. 
      

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, AlexandrY сказал:

Те же шаблоны требуют обдумывания возможного поведения при всех возможных типах.

Нет, не требуют - это личная инициатива конкретного программиста. Не нравится хрен - есть еще поговорка про дурака, которого заставляют Богу молиться. Поэтому огульно отказываться от всех преимуществ языка только потому, что вам кажутся неидеальными некоторые его части - по меньшей мере недальновидно.

13 минут назад, AlexandrY сказал:

Т.е. оверхед оптимизации реюзинга.

Не ругайтесь.

 

11 минут назад, AlexandrY сказал:

ООП вообще щас гнобят как изжившую себя концепцию. 

А вам надо обязательно быть на острие моды. Собака лает, а караван идет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 hours ago, haker_fox said:

И чем этот язык так хорош в сравнении с Си++?

 

Да просто хуже уже некуда ((

Совершенно нечитабельные плюсы стали, особенно в последних стандартах. Не, я не спорю, если вариться в кровавом энтерпрайзе, митапить тимлидить монадить мокать стабить паттернматчить и очковтиратить - супер язык. А если драйвер для USB написать надо.. "да пошел ты в Ж, насяльник"

48 minutes ago, AlexandrY said:

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

это точно

48 minutes ago, AlexandrY said:

такие шаблоны просто забудут и снова будут создавать те же шаблоны. Т.е. оверхед в перспективе.

+5

48 minutes ago, AlexandrY said:

Шаблоны хороши когда они сделаны другими, в виде поддерживаемых либ

+105

48 minutes ago, AlexandrY said:

ООП вообще щас гнобят как изжившую себя концепцию.

30 летний развод и натягивание сов на глобусы

Вся суть универсальных библиотек в одной картинке

 

12356559.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 minutes ago, Сергей Борщ said:

А вам надо обязательно быть на острие моды. Собака лает, а караван идет...

Вопрос только в том чей караван. И не идет, а ведет. 
И тогда картина полностью меняется. 
Тут мне понравился сегодняшний перевод на хабре  - https://habr.com/ru/post/479642/

Думайте шире чем где ставить скобочки и точки.  
Язык программирования сам должен угадывать что вы хотите, а не вы должны угадывать что хочет язык программирования. 
Отсюда как бы намек что язык без IDE и фреймворка - вообще не современный язык.   
  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, AlexandrY сказал:

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

К сожалению, пока еще не придумали языка, состоящего из одной-единственной кнопки "Хочу!".

4 минуты назад, AlexandrY сказал:

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

Для этого достаточно знать этот язык на необходимом уровне. Пенять языку за недостаточность своих знаний - глупо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Сергей Борщ said:

К сожалению, пока еще не придумали языка, состоящего из одной-единственной кнопки "Хочу!".

Зато целую архитектуру придумали - SISC (Single Instruction Set Computer) с единственной командой - DWIM (Do what I mean)

Вот только реализовать пока не получилось :acute:

А вы тут о каких то 'языках' ....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...