About semantic differences in markup

Сделал неожиданный для себя вывод: для разработчика, реализующего БЭМ, семантика классов и семантика элементов являются конкурирующими.

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

А вот для пользовательских агентов интерес представляют только элементы. Возникает вопрос, а надо ли этот интерес удовлетворять? Надо. Да, это философский вопрос.

В итоге получается, что код должен быть написан и для людей и для роботов, и легкого пути не будет, а так хотелось)