Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C++11

9
13 марта 2012 года
Lerkin
3.0K / / 25.03.2003
Не кажется ли вам, что последний стандарт уводит нас в такие гребеня, что разобраться с языком новичку будет совершенно неподъёмно, а опытные ребята поломают мозги на отладке?
Как пример:

 
Код:
struct SomeStruct
{
    auto FuncName(int x, int y) -> int;
};
 
auto SomeStruct::FuncName(int x, int y) -> int
{
    return x + y;
}

Это что такое? Зачем? Тем более, что особой компактности они не добились. Но это ладно. Но вот еще:

Код:
struct BasicStruct {
    int x;
    double y;
};
 
struct AltStruct {
    AltStruct(int x, double y) : x_{x}, y_{y} {}
 
private:
    int x_;
    double y_;
};
 
BasicStruct var1{5, 3.2};
AltStruct var2{2, 4.3};

Ну вот зачем?

Короче, там много всего (примеры взял из вики, что бы не морочиться), но моё мнение, что читабельность кода падает, а стоимость поддержки возрастет.
260
13 марта 2012 года
Ramon
1.1K / / 16.08.2003
Господин Саттер и сотоварищи работают, получают эворды, организовывают конференции, семинары, тренинги, не будем же им мешать.

PS: Кто-то свалил из сих замечательных групп по стандартизации, кто-то помер, нарисовалась полная свобода действий. За них можно только порадоваться.
278
13 марта 2012 года
Alexander92
1.1K / / 04.08.2008
Что сказать... С одной стороны, изменения касаются самых "уязвимых" частей C++, на которые обычно бывает больше всего нареканий. С другой стороны - как по мне, новый стандарт просто приближает C++ к тому же C# и ряду подобных языков, но приближает с довольно-таки неудачным и перенавороченным синтаксисом. Так что практически что совершенно согласен с Lerkin'ом.
341
13 марта 2012 года
Der Meister
874 / / 21.12.2007
Как, ты не любишь обмазываться шаблонами?! :D
245
13 марта 2012 года
~ArchimeD~
1.4K / / 24.07.2006
Списки инициализации - это имхо одна из самых ожидаемых фич, которые давно было пора прикрутить, в первую очередь применимо к контейнерам.
auto - с одной стороны вроде и удобно, с другой - палка о двух концах (имхо).

А вообще, что из того, что пока пригодилось и порадовало:

лямбды
более удобный for по коллекциям
то, что в вики "Ссылки на временные объекты и семантика переноса" (в том числе и косвенно - по сравнению с бустовым shared_ptr, например, стандартный имеет значительное преимущество)
9.7K
13 марта 2012 года
Vitamant
228 / / 07.02.2011
C++ никогда не был читабельным. Новый стандарт, возможно, усугубил этот аспект, однако новички (коих, в общем-то, и не много) от этого не сильно пострадают. Его выход, в первую очередь, привлек внимание к уходящему на второй план языку. Напомнил, что он все еще жив и трепыхается. Мне кажется, что прикладные математики продолжат писать на С\С++, без использования синтаксических нововведений. В конце концов, никто не заставляет их использовать. Что до остальных - быдлокод станет еще интереснее, а нормально документированный не станет в одночасье read-only. Возвращаясь к новичкам, так ли важно - потратят они 5 или 5.5 лет на изучение языка? К тому времени он, как и большинство ныне существующих языков, пройдет очередной виток аппаратного старения и попадет в мир новых решений, менее ресурсозависимых, более шустрых, и, возможно, несовместимых с пережитками 20-го века.
245
13 марта 2012 года
~ArchimeD~
1.4K / / 24.07.2006
9
13 марта 2012 года
Lerkin
3.0K / / 25.03.2003
Цитата: Ramon
Господин Саттер и сотоварищи работают, получают эворды, организовывают конференции, семинары, тренинги, не будем же им мешать.
PS: Кто-то свалил из сих замечательных групп по стандартизации, кто-то помер, нарисовалась полная свобода действий. За них можно только порадоваться.


Мне тоже показалось, что все эти навороты приняты в угоду незначительной группе товарищей. Или же язык полностью отдан им на растерзание, если угодно. Это можно было бы понять, если бы языку было лет 5 и он не нес бы на себе весь груз наработок. А так - ну создали бы ответвление, какой-нить C&& и веселились бы как хотели. Зачем сразу в консерваторию-то?

Цитата: Alexander92
Что сказать... С одной стороны, изменения касаются самых "уязвимых" частей C++, на которые обычно бывает больше всего нареканий.


Не, я согласен, что дыры надо штопать, но как объяснить рекомендуемое использование того же auto в случае, если тип возвращаемого значения неизвестен? Сильно часто такое происходит? Как говорит один товарищ-невролог: "Это ж с ума ...уякнуться можно".

Цитата: Alexander92
С другой стороны - как по мне, новый стандарт просто приближает C++ к тому же C# и ряду подобных языков, но приближает с довольно-таки неудачным и перенавороченным синтаксисом.


Вот в этом и всё разочарование. Поставили в положение инвалида-догоняющего.

Цитата: Der Meister
Как, ты не любишь обмазываться шаблонами?! :D


Если бы шаблонами... А то ведь ни на цвет, ни на запах - это уже не шаблоны.

Цитата: ~ArchimeD~
Списки инициализации - это имхо одна из самых ожидаемых фич, которые давно было пора прикрутить, в первую очередь применимо к контейнерам.


Если говорить о std::initializer_list, то тут уже одуряющий амбре WinApi ощущается. Хотя, конечно, вариант: запихал & передал, может показаться удобным, но код напрочь лишается элегантности. ИМХО!!!

Цитата: ~ArchimeD~

А вообще, что из того, что пока пригодилось и порадовало:

лямбды


Ну, может быть. Не пользовался в полный рост, поэтому не испытывал особенных неудобств.

Цитата: ~ArchimeD~

более удобный for по коллекциям


И менее наглядный. Будут в фаворе программеры с фотографической памятью. :)

Цитата: ~ArchimeD~

то, что в вики "Ссылки на временные объекты и семантика переноса" (в том числе и косвенно - по сравнению с бустовым shared_ptr, например, стандартный имеет значительное преимущество)


Где-то на хабре (вроде) это преимущество частично подтвеждается. Но по сравнению с монструозным boost, это и не удивительно.

9
13 марта 2012 года
Lerkin
3.0K / / 25.03.2003
Цитата: Vitamant
C++ никогда не был читабельным. Новый стандарт, возможно, усугубил этот аспект, однако новички (коих, в общем-то, и не много) от этого не сильно пострадают. Его выход, в первую очередь, привлек внимание к уходящему на второй план языку. Напомнил, что он все еще жив и трепыхается. Мне кажется, что прикладные математики продолжат писать на С\С++, без использования синтаксических нововведений. В конце концов, никто не заставляет их использовать. Что до остальных - быдлокод станет еще интереснее, а нормально документированный не станет в одночасье read-only. Возвращаясь к новичкам, так ли важно - потратят они 5 или 5.5 лет на изучение языка? К тому времени он, как и большинство ныне существующих языков, пройдет очередной виток аппаратного старения и попадет в мир новых решений, менее ресурсозависимых, более шустрых, и, возможно, несовместимых с пережитками 20-го века.


А вот, кстати, они же хотели упростить изучение языка для новичков? Раз позиция пошатнулась, логичнее упростить синтаксис и предложить более ясную (понятную) семантику - и этим самым снизить порог вхождения и поднять массовость. Но тут ребятки малость обдристались.

Короче моё мнение: epic fail.

245
13 марта 2012 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: Lerkin

Короче моё мнение: epic fail.



Щаз придет хардкейс и безапелляционно и заявит нечто вроде "С++ изначально был говном, говном и остался" :)
На самом деле, мне стало несколько проще и удобнее писать код. Не знаю правда, насколько он потом будет проще в сопровождении, но я бы про феил не говорил.
Причем, говорю это с позиции не студента, а человека, который уже почти год, как каждый рабочий день только тем и занимается, что пишет на с++ :)
Я думаю, больше всего подосрало нововведениям стремление сохранить обратную совместимость со старым стандартом. Оно вроде и понятно и хорошо, но и заведомо ставит язык в позицию догоняющего, да. Кстати, если вспомнить, изначально именно обратная совместимость с С убила расово верную объектно-ориентированность языка.

9
13 марта 2012 года
Lerkin
3.0K / / 25.03.2003
Нет. С++ говном изначально не был, как им не был и С до последнего стандарта. Когда появились шаблоны, язык расширился неимоверно, но когда шаблоны объявили религией и панацеей - вот тогда трубу и прорвало. Все последующие изменения только затыкали шаблонные дыры, и вместо развития языка - развивали стандартную библиотеку. Сложно стало объяснять новичку, что язык - языком, но есть еще и либа - а это отдельная (грустная) песня. А теперь язык корячат в угоду стандартной библиотеки, и поплыло понимание - что первичное, а что вторичное.
9
13 марта 2012 года
Lerkin
3.0K / / 25.03.2003
Кста, ~ArchimeD~, а какой(какие) компилятор(ы) юзаешь?
9
13 марта 2012 года
Lerkin
3.0K / / 25.03.2003
Ладно, ну не совсем epic fail.
1. extern templates - годится.
2. noexcept - годится.
3. constexpr - хрен его знает, но пока пойдет.
4. alignment - годится.
5. virtual void foo() const final и override - годится.
6. list<vector<string>> lvs - годится.
7. In-class member initializers - неплохо на первый взгляд.
8. nullptr - для глаз более приятен, чем ни о чем не говорящий 0, мозголомный (void*)0, или "удивительно органичный" NULL
9. Inline namespace - хм, ну наверное, единственная помощь в поддержке завещанного предками.

В остальном пока не определился.
245
13 марта 2012 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: Lerkin
Кста, ~ArchimeD~, а какой(какие) компилятор(ы) юзаешь?


g++, который gcc
4.5.1(много плюшек не поддерживаются) и 4.6.4

9
13 марта 2012 года
Lerkin
3.0K / / 25.03.2003
Частично реанимирую auto :)
 
Код:
template<class T, class U>
auto mul(T x, U y) -> decltype(x*y)
{
    return x*y;
}


Так лучше, согласен. Сталкивался с такой синтаксической пробкой. Стало нагляднее, да.

upd: но все равно, контроль типов - только держись. :)
upd2: И опять же, с multithread'ингом наговнякали. Одна из самых интересных и нужных вещей, и так черезжопно.
245
13 марта 2012 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: Lerkin

upd2: И опять же, с multithread'ингом наговнякали. Одна из самых интересных и нужных вещей, и так черезжопно.



а что с ним не так?

З.Ы. про многопоточность, почитать перед сном

9
13 марта 2012 года
Lerkin
3.0K / / 25.03.2003
Цитата: ~ArchimeD~

а что с ним не так?


Попозжа скажу, чего не понравилось. Надо мысль оформить, тема обширная.
А чтиво читал, да.

260
13 марта 2012 года
Ramon
1.1K / / 16.08.2003
Большенство этих "плюшек" тупо ломают синтаксис языка и привносят то чего ни в нем ни в Ц никогда не было. Особенно прекрасны так называемые лямбды и целый набор радостных новых ключевых слов.

Уход аффтаров в вакуумное метапрограммирование, притягивание функциональщины за уши и ломание основ синтаксиса ни есть подлинный путь. И не надо говорить про х*вый дизайн языка, C++ 2003 вполне себе гармонично ложится на C не ломая синтаксиса. От господ требовалось закрыть дыры в языке аля new int[2] = { 0, 1 } и др. и успокоиться для начала, но длиной органа в таком случае помериться сложно.

PS: Уточняю, йа не против изменений как таковых, но не в том виде в котором они были сделаны. Также наиболее полезным, за иключением мелочей, вида constexpr, являются concepts, но, опять же, не в предложенном виде.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог