Jump to content

    

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

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

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

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

Share this post


Link to post
Share on other sites
26 minutes ago, ViKo said:

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Just now, ViKo said:

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

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

Share this post


Link to post
Share on other sites
3 hours ago, DASM said:

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

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

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

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

Share this post


Link to post
Share on other sites
1 час назад, AlexandrY сказал:

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

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

Share this post


Link to post
Share on other sites
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?

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

 

Share this post


Link to post
Share on other sites
8 часов назад, AlexandrY сказал:

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

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

Share this post


Link to post
Share on other sites
1 час назад, dxp сказал:

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

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

Цитата

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

 

Share this post


Link to post
Share on other sites
8 hours ago, Сергей Борщ said:

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

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

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

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

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

Share this post


Link to post
Share on other sites
7 минут назад, AlexandrY сказал:

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

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

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

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

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

 

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

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

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
24 minutes ago, Сергей Борщ said:

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

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

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

Share this post


Link to post
Share on other sites
3 минуты назад, AlexandrY сказал:

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

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

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

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

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

Share this post


Link to post
Share on other sites
1 hour ago, Сергей Борщ said:

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

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now