Re[3]: Пора ли переходить на С++11?
От: Tilir Россия http://tilir.livejournal.com
Дата: 25.11.14 02:41
Оценка: 6 (1)
Здравствуйте, ArtK, Вы писали:

AK>Прошу прощения, что вырвано из контекста, но что ты под этим подразумеваешь?


В первую очередь -- связку auto/decltype для передаваемых/возвращаемых значений и всё что вокруг неё накручено.

Но на самом деле конфет там много: и разнообразные облегчающие жизнь хелперы вроде remove_reference и улучшенные шаблоны и пересмотренное метапрограммирование-light и пользовательские литералы и в перспективе -- концепты.
Re[4]: Пора ли переходить на С++11?
От: Igore Россия  
Дата: 25.11.14 07:36
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Ну вот когда мне будут платить за это — тогда и займусь, сразу же.

J>А пока платят за фичи — буду пилить фичи, а апгрейды компиляторов — это все в свободное от пиления фич время.
J>По той простой причине, что апгрейд компилятора сам по себе не принесет конторе больше денег, поэтому надо по крайней мере убедиться, что ты своим апгрейдом не делаешь хуже. И вот наши тесты показывают, что "не все так однозначно" и, стало быть, торопиться с апгрейдом особого смысла нету.
Ммм, если програмисты будут быстрей писать код, и код станет более надежным, то вроде как смысл есть.

J>В С++11/14 много замечательных фишек, но они не критичны, они больше для удобства программера. Того же быстродействия можно добиться и в С++03, пусть и более многословно. тем более что весь наш имеющийся код заточен под максимальное быстродействие в режиме С++03 — так что немедленного выигрыша просто от апгрейда версии языка точно не будет — мы не возвращаем по значению огромные объекты, чтобы rvalue references автоматом все ускорили.

Да, но с ними так приятно, не все фишки можно в С++03 делать, тот же override, меня уже 1 раз спас, а на С++03 в релиз пролезла ошибка из-за переименования метода базавого класа. Понятно что это кривость архитектуры, недостаточность тестов, и т.д., но такова жизнь.

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

Железный аргумент, могу только пожелать удачи в скорейшем переходе .
Re[12]: Пора ли переходить на С++11?
От: niXman Ниоткуда https://github.com/niXman
Дата: 27.11.14 11:49
Оценка: :)
Здравствуйте, AlexGin, Вы писали:

AG>Да, если у меня имеется семейная необходимость, то руководство всегда с пониманием относится к данной ситуации.

AG>И конечно же, если у меня что-либо критическое (тьфу-тьфу), то компания, соответственно, может подкорректировать планы!
наверное со мной что-то не так...
зачем внедрят в себя зависимость, называть ее нормальной повседневной практикой, а потом этой зависимости что-то объяснять и надеться на ее(зависимости) снисхождения?

AG>P.S. К сожалению, мы скатились в офф-топик

ага.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[3]: Пора ли переходить на С++11?
От: Dym On Россия  
Дата: 05.12.14 14:49
Оценка: +1
K>Язык (и любой другой инструмент) не будет писать за вас программу.
Да тут скорее сравнение ручной и электро- дрелей, и та и другая за вас сверлить не будет, однако, работать лучше со второй (хотя, конечно, иногда, может быть, при определенных условиях ручная дрель и будет лучше/удобнее).
Счастье — это Glück!
Re: Пора ли переходить на С++11?
От: Nikе Россия  
Дата: 07.12.14 10:13
Оценка:
Здравствуйте, Went, Вы писали:

W>Здравствуйте. Наверное, мой вопрос затерт и банален, но все же решусь его повторить Я хочу получать код, который без особых костылей компилируется на Win7-8, MacOS, IOS, Android. На что я могу рассчитывать? Речь не о том, какую фичу поддерживает тот или иной компилятор, а об общем тренде — переходят ли на С++11 программисты кроссплатформенных игр?


Мы разрабатываем не совсем игры, но что-то похожее по структуре. Давно перешли.
Нужно разобрать угил.
Re[5]: С++11 в MSVC2010
От: chaotic-good  
Дата: 10.12.14 09:34
Оценка: +2
X>про RVO ты похоже не слышал...
Как и ты. В приведенном примере возвращается копия члена класса, судя по префиксу "m_", RVO в данном случае работать не будет.
Re[2]: Пора ли переходить на С++11?
От: chaotic-good  
Дата: 10.12.14 09:37
Оценка:
J>* Ну и самое главное — не видно пользы на переход в С++ 11, много противников, к примеру, у auto.
А какие есть аргументы у противников auto?
Re[4]: Пора ли переходить на С++11?
От: chaotic-good  
Дата: 10.12.14 09:44
Оценка:
J>В С++11/14 много замечательных фишек, но они не критичны, они больше для удобства программера.

IMO — главная фича там, это как раз r-value ссылки, но не сами по себе, а в связке с std::unique_ptr. Можно вообще не знать про эту вашу move semantics и perfect forwarding но получать бенефиты, в виде простоты и производительности, от использования std::unique_ptr, особенно если код использует исключения. Второе место делят auto и расширеная стандартная библиотека, в которой, по сравнению с С++03 есть куча новых полезностей, те же смарт поинтеры.
Re[5]: Пора ли переходить на С++11?
От: jazzer Россия Skype: enerjazzer
Дата: 10.12.14 10:08
Оценка:
Здравствуйте, chaotic-good, Вы писали:

J>>В С++11/14 много замечательных фишек, но они не критичны, они больше для удобства программера.


CG>IMO — главная фича там, это как раз r-value ссылки, но не сами по себе, а в связке с std::unique_ptr. Можно вообще не знать про эту вашу move semantics и perfect forwarding но получать бенефиты, в виде простоты и производительности, от использования std::unique_ptr, особенно если код использует исключения.


С этим всю дорогу отлично справлялся std::auto_ptr, мир праху его.
std::unique_ptr, безусловно, удобнее, но я именно об этом и говорил выше.

CG>Второе место делят auto и расширеная стандартная библиотека, в которой, по сравнению с С++03 есть куча новых полезностей, те же смарт поинтеры.


Опять же, это 100 лет как есть в Boost.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[6]: Пора ли переходить на С++11?
От: chaotic-good  
Дата: 10.12.14 10:15
Оценка:
J>С этим всю дорогу отлично справлялся std::auto_ptr, мир праху его.
J>std::unique_ptr, безусловно, удобнее, но я именно об этом и говорил выше.

Отлично справлялся?

J>Опять же, это 100 лет как есть в Boost.


Ну вот некоторым нельзя буст, или не хочется буст, зато можно C++11.
Re[3]: Пора ли переходить на С++11?
От: johny5 Новая Зеландия
Дата: 10.12.14 21:01
Оценка: 2 (1) +4
Здравствуйте, chaotic-good, Вы писали:

J>>* Ну и самое главное — не видно пользы на переход в С++ 11, много противников, к примеру, у auto.

CG>А какие есть аргументы у противников auto?

Например фанаты венгерской нотации не переваривают auto.

Лично мне тоже не прельщает 2 два сайдэффекта:
* тип твоей переменной может непредсказуемо измениться (например int -> unsigned) в процессе рефакторинга. По сути ты теряешь в стабильности кода из-за того что твои типы стали плавающие — придётся 7 раз подумать и всё предвидеть.

* теряется читабельность кода, всё больше и больше придётся возюкать мышкой по переменным чтобы понять что там прячется.

Чтобы не пинали ногами вот вам примеры когда это хорошо. Всё это случаи когда мы не хотим знать тип:
* итераторы, мы никогда не хотим знать их тип, лишь бы они предлагали свой интерфейс доступа.
* всякие сложные функторы, порождённые лямбдой, boost::bind и прочей нечистью
Re: Пора ли переходить на С++11?
От: Went  
Дата: 17.12.14 09:40
Оценка: +2
Здравствуйте.

Короче, начал я работать с С++11 и понял, что переходить стоит!
Re[2]: Пора ли переходить на С++11?
От: Dair Россия  
Дата: 17.12.14 10:27
Оценка:
Здравствуйте, Went, Вы писали:

W>Короче, начал я работать с С++11 и понял, что переходить стоит!


Вчера приняли решение о внедрении некоторых возможностей C++1x.
Так что я тоже тут нырнул, и сразу в variadic templates, теперь голову ломаю
Re[3]: Пора ли переходить на С++11?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 17.12.14 12:15
Оценка:
Здравствуйте, chaotic-good, Вы писали:

CG>А какие есть аргументы у противников auto?


Может внезапно измениться тип переменной при перегрузке:
#include <cmath>
....
int x = 0;
auto a = std::abs(x);

Какой тип будет у переменной a?
Правильный ответ — хз.
1. Если больше никаких инклудов нет, то... double!
2. Если где-нибудь явно или опосредованно заинклуден <cstdlib>, то int.
Лично мне такое поведение не нравится.
Re[3]: Пора ли переходить на С++11?
От: Went  
Дата: 17.12.14 13:23
Оценка:
Здравствуйте, Dair, Вы писали:
D>Так что я тоже тут нырнул, и сразу в variadic templates, теперь голову ломаю
Так как я сейчас занят чисто прикладным кодом (база в общем-то давно более-менее устоялась), то шаблонных улучшений пока что не касался. Но и лямбд + auto + range-based loop + initializer lists уже достаточно, чтобы задышалось легче
Re[4]: Пора ли переходить на С++11?
От: johny5 Новая Зеландия
Дата: 17.12.14 21:06
Оценка: :))) :)
Здравствуйте, Nuzhny, Вы писали:

N>Может внезапно измениться тип переменной при перегрузке:

N>
N>#include <cmath>
N>....
N>int x = 0;
N>auto a = std::abs(x);
N>

N>Какой тип будет у переменной a?
N>Правильный ответ — хз.
N>1. Если больше никаких инклудов нет, то... double!
N>2. Если где-нибудь явно или опосредованно заинклуден <cstdlib>, то int.

Мейерс рекомендует тут вот такой синтаксис:
auto a = static_cast<int>( std::abs(x) );


Re: Пора ли переходить на С++11?
От: sunheretic13  
Дата: 21.02.15 18:54
Оценка:
Конечно пора. Перевёл все подконтрольные проекты на VS2013/g++4.8 и ничуть не жалею. Только не забывайте что в VS2013 есть баги с С++11.
Re[2]: Пора ли переходить на С++11?
От: Went  
Дата: 22.02.15 12:00
Оценка:
Здравствуйте, sunheretic13, Вы писали:

S>Конечно пора. Перевёл все подконтрольные проекты на VS2013/g++4.8 и ничуть не жалею. Только не забывайте что в VS2013 есть баги с С++11.

А куда деваться? 15-ая вроде тестовая только.
Re[5]: Пора ли переходить на С++11?
От: Vain Россия google.ru
Дата: 24.02.15 08:14
Оценка: -1
Здравствуйте, johny5, Вы писали:

J>Мейерс рекомендует тут вот такой синтаксис:

J>
J>auto a = static_cast<int>( std::abs(x) );
J>

О, как это по сишному! Сначало придумать фичи, а потом костыли под них
А почему бы тогда не так было сделать?
auto a = int(std::abs(x));

Или сир Мейерс презирает всё чисто-сишное?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[6]: int(...)
От: Qbit86 Кипр
Дата: 24.02.15 08:30
Оценка:
Здравствуйте, Vain, Вы писали:

V>А почему бы тогда не так было сделать?

V>
auto a = int(std::abs(x));

V>Или сир Мейерс презирает всё чисто-сишное?

В чистом Си нет синтаксиса `int(...)`. Можно `(int)(...)`.
Глаза у меня добрые, но рубашка — смирительная!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.