среда, 13 мая 2009 г.

Мысли о фишках C++0x

Прочитал тут материалы проходящего БустКона и подумалось:

Сейчас много идёт обсуждений о том, что будет реализовано в новом стандарте: лямбды, статические ассерты, концепты, аспектное программирование, rvalue references, variadic templates, новое поведение цикла for  и т.д. и т.п.

Да, все эти вещи хорошо смотрятся и являются фишками стандарта. Можно даже сказать, что они рекламируют и вдыхают новую жизнь в C++. Но если реально  подумать, то наибольшее влияние окажут мелочи, которые будут применятся проще и чаще всего:

  • auto типизация - не морочим голову с тем как же пишется определения возвращаемых итераторов и лямбд, и смерть применению auto для локальных переменных;
  • списки инициализации - наконец-то простое заполнение контейнеров;
  • лямбда-функции и новое поведение for/for_each - перестаём ломать голову с функторами в обощённых алгоритмах;
  • строгая типизация enum - нет извращениям в преобразованиям к целочисленным типам и назад при работе с enum;
  • shared_ptr - garbage collector уже рядом.

Эти "мелочи" за счёт своей легкости применения и чрезвычайно малого порога вхождения окажут наибольшее влияние на пишущих на C++. А вот тяжеловесные "новости" окажут очень слабое влияние - просто потому, что их будут применять чрезвычайно редко. Вон аспекты уже года 4 есть в C# - а как много людей пишет с их применением? Так что простота продолжит управлять миром.

Вот если бы работу с шаблонами сделать ещё проще, то с помощью вариативных шаблонов, можно было бы грохнуть, наконец, макросы, несущие функциональную нагрузку окончательно. А сколько они крови попили...

PS

Вот интересно, как концепты уживутся с range'ами, которые начинает продвигать Александреску?

Комментариев нет:

Отправить комментарий