Re[36]: А С++ то схлопывается...
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.11.19 10:11
Оценка:
Здравствуйте, student__, Вы писали:

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


__>При чем тут статическая интроспекция?


Пытаюсь понять, насколько она вообще полезна.
Re[36]: А С++ то схлопывается...
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.11.19 10:12
Оценка:
Здравствуйте, Marty, Вы писали:

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


M>В случае динамической рефлексии описанная ситуация чем-то отличается?


Нет, конечно.
Re[10]: А С++ то схлопывается...
От: Skorodum Россия  
Дата: 06.11.19 10:13
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>Только оптимизируют simd инструкциями и ручным управлением памятью, а вовсе не мув-семантикой.

Да много чем. Вопрос-то не в этом: всегда будут области с ограниченным ресурасами (память/энергия/время) и пока альтернативы для С/С++ для решения таких задач нет. 20 лет назад десктопы были ограничены в ресурсах, а сейчас условно неограниченны, там можно писать хоть на Java/С#/python/electron, они оттуда вытеснили С++, т.к. С++ объективно сложнее, да и не решенных задач там уже особо нет, чаше всего все сводится к новой обертке.

С другой стороны сейчас можно решать задачи которые 15 лет назад требовали полноценного десктопа на чем-то размером в пару квадратных миллимметров и потребляющем всего пару милливат. Это окрывает огромные возможности.
Re[10]: А С++ то схлопывается...
От: Skorodum Россия  
Дата: 06.11.19 10:14
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>FreeBSD, MacOS (?), Android, Google Chrome на Windows — это всё мелкие проекты?

TIL.
Re[15]: А С++ то схлопывается...
От: Skorodum Россия  
Дата: 06.11.19 10:17
Оценка:
Здравствуйте, Marty, Вы писали:

M>По виртуализации в рантайме:

Это ж масло-масленное
Виртуальные функции это полиморфизм времени выполнения по определению.
Re[37]: А С++ то схлопывается...
От: student__  
Дата: 06.11.19 10:33
Оценка:
Здравствуйте, Pzz, Вы писали:
__>>При чем тут статическая интроспекция?
Pzz>Пытаюсь понять, насколько она вообще полезна.
alex_public уже написал — для сериализации данных. К конкретному формату это отношения не имеет.
Re[34]: А С++ то схлопывается...
От: AleksandrN Россия  
Дата: 06.11.19 11:09
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, AleksandrN, Вы писали:


AN>>Шаблоны в 90-х появились. Но злоупотребление метапрограммированием и раньше было, только вместо шаблонов использовались макросы с параметрами.


Pzz>Макросы с параметрами сроду не были тьюринг-полнымы, так что на них было особо не развернуться.


Но некоторые умудрялись делать совершенно монструозные конструкции из макросов, когда внутри одного макроса использовались другие макросы, внутри которых тоже использовались макросы и далее в таком же стиле. А потом к этому добавлялись #ifdef/#ifndef.
Re[10]: А С++ то схлопывается...
От: AleksandrN Россия  
Дата: 06.11.19 11:18
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Здравствуйте, Marty, Вы писали:


M>>С другой стороны — вменяемый человек не будет писать распознавание речи на питоне


S>Пишут, распознования и речи, и изображений.


А библиотеки, которые Питон использует для этого, на нём же написаны или на чём-то другом?
Re[8]: А С++ то схлопывается...
От: B0FEE664  
Дата: 06.11.19 11:19
Оценка:
Здравствуйте, Patalog, Вы писали:

BFE>>Исходя из этого для многих проектов просто запрещается динамическая аллокация памяти. Соответственно выбрасывается всё, что аллоцирует память, начиная с std::vector …


P>А можно подробностей? А то все что я видел "у взрослых пацанов" без динамической памяти — это своя нарукоблуженная вариация хипа поверх статического буфера. Но память они не аллоцируют, ага. И исключений нету =)


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

Однако обычно можно написать код, где вообще не нужна динамическая аллокация, а нужна аллокация только при инициализации. Например, если при старте концигурационные данные не помещаются в статически заказанные буферы, то выдаётся ошибка типа power-up-built-in-test failed.
И каждый день — без права на ошибку...
Re[12]: А С++ то схлопывается...
От: Skorodum Россия  
Дата: 06.11.19 11:21
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Мне кажется, первый десяток можно смело увольнять за то, что они вместо работы в форуме втыкают

У нас, С++-сников, есть железобетонная отмазка — проект компилируется
Re[9]: А С++ то схлопывается...
От: Skorodum Россия  
Дата: 06.11.19 11:28
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>А что значит, нету в принципе? Ты не используешь слово new, или все твои алгоритмы имеют требования к памяти O(1)?

new умеет в custom allocator если надо.
Re[17]: А С++ то схлопывается...
От: Skorodum Россия  
Дата: 06.11.19 11:34
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Зачем здесь виртуальность? Она тут не нужна:

S>>

BFE>template< class  launcher>
BFE>class launcher_commander {
BFE> launcher& launcher_;
BFE>public:
BFE>  void run() {
BFE>    while(...) {
BFE>      if(target_detected()) launcher_.launch_rockets();
BFE>      ...
BFE>    }
BFE>  }
BFE>};

BFE>class vehicle_based_launcher {
BFE>   void launch_rockets() { .... }
BFE>};

BFE>class ship_based_launcher {
BFE>   void launch_rockets() { .... }
BFE>};

BFE>#if VEHICLE_BUILD
BFE>typedef  vehicle_based_launcher TLauncher;
BFE>#else if SHIP_BUILD
BFE>typedef  ship_based_launcher TLauncher;
BFE>#else ...
BFE>#endif

BFE>int main() {
BFE>  TLauncher launcher{...};

BFE>  launcher_commander<TLauncher> commander{launcher};
BFE>  commander.run();
BFE>  ...
BFE>}
BFE>

Вы заменили полиморфизм времени выполнения на полиморфизм времени компиляции

BFE>Кстати, #if / #else запрещены для исполняемого кода.

Очевидно, что это только для простоты примера...

Вот использование префиксов типа TLauncher должно быть запрещено
Re[20]: А С++ то схлопывается...
От: B0FEE664  
Дата: 06.11.19 14:16
Оценка: -1
Здравствуйте, so5team, Вы писали:

BFE>>Вообще-то принято считать, что виртуальный метод переопределяет поведение, а определяется поведение методом объекта.

S>Остается надеятся, что вы хотя бы сами поняли, что имели в виду.

BFE>>Где именно?

S>В вопросах run-time полиморфизма.
Я плаваю вопросах run-time полиморфизма? Да я могу даже в шаблонные виртуальные методы на С++. А вы?

BFE>>Тот же самый код можно переписать вообще без объектов, как вы понимаете.

S>Нет, я не понимаю, как можно рассуждать о C++ отказываясь от кода, написанного в стиле C++.
На С можно писать в стиле С++. Не знали?

BFE>>Я тут не стремился показать это, а только то, что виртуальность без динамической аллокации большого смысла не имеет.

S>У вас не получилось. Ожидаемо.
Да ну? Я же переписал вашу вуртуальность на статический полиморфизм без всяких проблем. Не заметили?

S>Потому что вы так и не смогли ответить на вопрос о том, каким боком соотносятся виртуальные функции и динамическая аллокация.

Виртуальные функции без динамической аллокации не нужны.

BFE>>Скажите мне, что именно я не знаю.

S>ООП, как минимум. Хотя бы в рамках классического "инкапсуляция, наследование, полиморфизм".
Вы ещё скажите, что "инкапсуляция, наследование, полиморфизм" невозможны на С.
И каждый день — без права на ошибку...
Re[18]: А С++ то схлопывается...
От: B0FEE664  
Дата: 06.11.19 14:29
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Вы заменили полиморфизм времени выполнения на полиморфизм времени компиляции

Да.

BFE>>Кстати, #if / #else запрещены для исполняемого кода.

S>Очевидно, что это только для простоты примера...
Нет, не всё так просто. Код одного из классов vehicle_based_launcher/ship_based_launcher превращается из-за #if / #else в мертвый код, который не попадает под тест и следовательно должен быть выкинут из проекта. Если мы выкидывает один из классов, то нет никакого смысла делать launcher_ ссылкой, так как остаётся только один класс, а значит его прямо там и можно подставить.
И каждый день — без права на ошибку...
Re[18]: А С++ то схлопывается...
От: B0FEE664  
Дата: 06.11.19 14:39
Оценка:
Здравствуйте, Marty, Вы писали:

BFE>>Всё это хорошо, только вот на практике, ещё на этапе составления спецификации известно что, куда и с какой скорость писать, поэтому такая потребность в абстрагировании оказывается излишней.


M>И? Надо писать и COM-порт и на флешку.

В COM-порт вы будете писать без ответа-подтверждения?
Что будете делать, если на флешке нет места?

M>А еще я хочу, чтобы тот же код работал в утилите на компе, и там уже, куда писать, определяется в рантайме

Тогда надо предоставить спецификацию на комп и тесты для всех видов рантайма.
И каждый день — без права на ошибку...
Re[21]: А С++ то схлопывается...
От: so5team https://stiffstream.com
Дата: 06.11.19 14:40
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Я плаваю вопросах run-time полиморфизма? Да я могу даже в шаблонные виртуальные методы на С++. А вы?


А я могу высказать все, что думаю про человека с отсутствием фантазии, неспособностью к соображению и чрезмерным (даже для меня) самомнением. Но меня попросили грубо не выражаться и не нарушать правил приличий.
Re[17]: А С++ то схлопывается...
От: Ночной Смотрящий Россия  
Дата: 06.11.19 15:02
Оценка: :)
Здравствуйте, so5team, Вы писали:

S>Вы представляете, в C++ можно в одном месте хранить std::chrono::seconds, в другом std::chrono::milliseconds, в третьем std::chrono::minutes


Вместо того чтобы везде хранить все в TimeSpan
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[9]: А С++ то схлопывается...
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.11.19 16:09
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>По качеству генерируемого кода clang пока не дорос до GCC (вроде не один большой проект еше не использоует clang для релизов), но он уже получает очень широкое распространение за счет лучшей архитектуры. Clang-tidy, clang-format, clazy реально облегчают жизнь и улучшают качество кода.


Apple очень активно продвигает clang. Поэтому практически все проекты под макос собраны clang'ом. Из-за этого macos такая глючная
Re[11]: А С++ то схлопывается...
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.11.19 16:10
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Тут основной мотив-лицензия. БСДишники приняли решение выпилить GCC исключительно чтоб отвязать базовую систему от GPL. Clang же сильно сливает GCC во всём, начиная от оптимизации и заканчивая количеством поддерживаемых архитектур.


Говорят, у clang'а диагностика сильно лучше.
Re[5]: А С++ то схлопывается...
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.11.19 16:12
Оценка: +1
Здравствуйте, Basil2, Вы писали:

B>Я здесь не про язык вообще, а конкретно про С++. Он сложнее чем большинство предметных областей. Если человек знает С++, он осилит почти что угодно. Поэтому знание С++ является определяющим, на мой взгляд.


Ну тогда военных пилотов надо до любой профессии без собеседований и сертификатов допускать. Если человек осилил истребитель, он осилит почти что угодно.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.