четверг, 27 мая 2021 г.

[prog.c++] Оказывается, сложность нашего C++ного кода пытаются обсуждать на RSDN...

Вот так сидишь, тихо починяешь примус, а оказывается, что твое "творчество" обсуждают на профильном форуме: http://rsdn.org/forum/job/8017340

Лет семь назад, когда мы начинали активно рассказывать про SO-5 на просторах Интернета, меня достаточно сильно задевали реплики "не понятно", "слишкамсложна", "нахрена столько шаблонов" и "почему нельзя проще".

С годами к этому выработалось более спокойное отношение. Ибо C++ -- это язык, который вряд ли кто-то использует весь полностью. Как правило, выбирается некоторое подмножество, наиболее пригодное для решения задачи, и на нем уже решение и реализуется.

Поэтому в мире C++ сосуществуют и проекты на "Си с классами" и настоящий хардкор с 10-этажными шаблонами и самыми свежими нововведениями. А между двумя этими крайностями еще целый спектр вариантов.

Так что если кому-то кажется, что наши открытые проекты написаны слишком сложно, ну и что из этого?

Можно найти или сделать любую другую альтернативу, написанную так, чтобы вас устраивало и по сложности реализации, и по функциональности. При этом с вероятностью в 100% аналогичные претензии будут кем-то предъявлены и этой самой альтернативе. Как и противоположные по смыслу претензии: слишком примитивно, не гибко и не эффективно по соотношению объема кода к функциональным возможностям.

В общем, пустое это все. Суть же вот в чем: есть проекты, которые можно взять и использовать. Или не использовать. Но взять и оценить можно. Проекты эти есть именно потому, что они написаны вот так. Именно такой подход к разработке софта позволил нам сделать эти проекты нашими более чем скромными силами.

Писать более сложно не получилось бы, не хватило бы мозгов. Писать более примитивно -- не хватило бы ресурсов. Посему имеем что имеем.

И да, важный момент: если взять какой-то кусок кода или проектное решение из нашего OpenSource, то практически всегда можно будет обосновать почему было сделано так, а не иначе. Т.е. из все это было сделано не просто так, не от желания повыделываться или почесать ЧСВ, а с учетом условий и возможностей. Повторюсь, далеко не самых больших возможностей. Так что иногда мы делали максимально хороше решение из тех, что смогли придумать мы сами. А то, что кто-то смог бы придумать лучше, в этом даже сомнений нет.

Если же кому-то не нравится, ну что уж тут поделать. Рынок большой, можно побродить, поискать более подходящие варианты.

3 комментария:

jazzer комментирует...

Самое смешное, что те самые "лет 7 назад" я тебя воспринимал как раз как представителя лагеря "нахрена столько шаблогов" ;)
А потом вижу, все больше и больше в твоих постах метапрограммирования и всего такого :)

eao197 комментирует...

@jazzer
Скорее не 7, а лет 9-10 назад так и было.

Просто то, что в C++11/14 стало делаться достаточно просто посредством штатных средств языка, в C++98/03 требовали гораздо более глубоких познаний и умений. Язык развился до такой степени, что даже моих мозгов стало хватать на использование метапрограммирования. И это вовсе не шутка.

jazzer комментирует...

Я бы сказал, только в С++17 сложность метапрограммирования при использовании только встроенных средств упала до вменяемой, с constexpr if и прочими.
А теперь ещё и концепты подтянулись.
А вот в С++98 рулил буст безальтернативно, и если ты хотел иметь плюшки уже тогда, то вариантов, кроме буста, не было.
В принципе, в плане метапрограммирования на препроцессоре он до сих пор рулит и будет рулить, пока не сделают нормальную интроспекцию и метагенерацию.
Ну и Hana/mp11 тоже никто не отменял.