Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
#1

C++11 в production, да или нет?

29.01.2015, 21:09. Просмотров 813. Ответов 20
Метки нет (Все метки)

Всем привет. Выбил все-таки разрешение юзать С++11 на работе, по мелочи, лямбды вместо предикатов, range-based-for, auto. Сегодня наш тех. директор отключил весь С++11 (всего неделю продержались), ибо не хочет, чтобы код выглядел как на питоне (из-за auto) + к тому на странице gcc написано
Important: GCC's support for C++11 is still experimental. Some features were implemented based on early proposals, and no attempt will be made to maintain backward compatibility when they are updated to match the final C++11 standard.
Соответственно, в аргументы пошло, то, что экспериментальная поддержка в продуктиве - плохо. Как возможно доказать обратное и что auto не зло? И стоит ли это делать? Аналогично, если у вас есть опыт использования в продакшне - поделитесь проблемами с которыми столкнулись или профитом, который принесло использование. Спасибо.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2015, 21:09
Ответы с готовыми решениями:

Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?)
Всем доброго времени суток!) В общем имею такую великолепную чтуку, она должна...

Вывести на экран слова, в которых все символы повторяющиеся, или сообщение «Нет», если требуемых слов нет
Дана последовательность символов, состоящая из слов. Вывести на экран слова, в...

Как найти текст в файле и возвратить 0 или 1 в зависимости от того,найдено или нет?
bool fnd(char* fn,string stf) { string s; ifstream ifs(fn); while...

Вывести True или False в зависимости от того, имеют три заданных целых числа одинаковую четность или нет
Всем привет! Помогите, пожалуйста в решении задачи. Знаю, что задачи...

Опечатка или нет?
class my_class { public: my_class() { a...

20
DrOffset
7586 / 4555 / 1103
Регистрация: 30.01.2014
Сообщений: 7,418
29.01.2015, 21:34 #2
Цитата Сообщение от ForEveR Посмотреть сообщение
Соответственно, в аргументы пошло, то, что экспериментальная поддержка в продуктиве - плохо.
Вообще я не сторонник использования С++11. Но речь не об этом.
А вот процитированный аргумент не терпит критики.
На том же сайте gcc написано следующее:
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software.
Ну что ж, давайте не пользоваться gcc, раз он не дает никаких гарантий.

Цитата Сообщение от ForEveR Посмотреть сообщение
Как возможно доказать обратное и что auto не зло? И стоит ли это делать?
Я тоже считаю, что это зло. Но не сам auto (т.к. это инструмент и ни в чем не виноват), а то как его пиарят. Как будто серебряная пуля какая-то. Уж больно велик шанс неправильного использования.
1
Robar
21 / 21 / 12
Регистрация: 08.01.2015
Сообщений: 64
29.01.2015, 22:00 #3
Цитата Сообщение от ForEveR Посмотреть сообщение
чтобы код выглядел как на питоне (из-за auto)
лол)) Вы сегодня мой герой.
0
nmcf
6259 / 5571 / 2531
Регистрация: 14.04.2014
Сообщений: 23,452
29.01.2015, 22:40 #4
Что не так с auto? Короче же.
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
29.01.2015, 22:50  [ТС] #5
DrOffset,
Ну что ж, давайте не пользоваться gcc, раз он не дает никаких гарантий.
Интересная цитата, спасибо.
Цитата Сообщение от Robar Посмотреть сообщение
лол)) Вы сегодня мой герой.
Ну, это.
Python
1
for (value in values)
C++
1
for (const auto& value : values)
Похоже же. Понятно, что в одном случае динамический вывод типов, в другом статический на этапе компиляции.
Цитата Сообщение от nmcf Посмотреть сообщение
Что не так с auto? Короче же.
Отрыв от контекста видимо, не увидишь с каким типом оперируешь, особенно без IDE.
0
DU
1486 / 1132 / 164
Регистрация: 05.12.2011
Сообщений: 2,279
29.01.2015, 23:05 #6
у меерса в новой книжке написано, что могут быть глюки с использованием auto в
определенных контекстах, в которых используются прокси классы. у вектора булов например
может рантайм еррор возникнуть из-за того, что v[index] возвращает хитрую хитрость вместо
ссылки на буль и бла бла бла. в общем лучше почитать. но все же это редкость. иногда контекста
действительно не хватает. но это не повод отказываться.
1
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
29.01.2015, 23:30  [ТС] #7
DU2, Читал, да. Есть контексты в которых auto может работать не совсем так как обычно, но их можно пересчитать по пальцам.
0
Croessmah
++Ͻ
14365 / 8147 / 1533
Регистрация: 27.09.2012
Сообщений: 20,079
Записей в блоге: 3
Завершенные тесты: 1
29.01.2015, 23:33 #8
Цитата Сообщение от ForEveR Посмотреть сообщение
Сегодня наш тех. директор отключил весь С++11 (всего неделю продержались)
ForEveR, а с move-семантикой тоже не согласен?
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
30.01.2015, 00:40  [ТС] #9
Croessmah, В основном используются shared_ptr на объекты, а учитывая работу с БД, как-то оптимизации копирования особо много не стоят. Хотя про move семантику я не упомянул, когда говорил для чего мы подключили С++11...
0
Croessmah
++Ͻ
14365 / 8147 / 1533
Регистрация: 27.09.2012
Сообщений: 20,079
Записей в блоге: 3
Завершенные тесты: 1
30.01.2015, 01:25 #10
ForEveR, имхо, налегать надо именно на возможности, которые будут необходимы и полезны.
Например, на тоже перемещение или на многопоточность. Согласитесь, что если сам язык поддерживает многопоточность(тот же thread storage duration), то это много лучше, чем втыкание костылей для работы с потоками.
А все эти
Цитата Сообщение от ForEveR Посмотреть сообщение
мелочи, лямбды вместо предикатов, range-based-for, auto
это ведь синтаксический сахар, врядли этим можно аргументировать полезность внедрения C++11.
В конце концов Вы же не станете писать комментарии на французком лишь по той причине, что они будут красиво звучать при прочтении.

Цитата Сообщение от ForEveR Посмотреть сообщение
Как возможно доказать обратное и что auto не зло?
Никак. Добро и зло понятия слишком расплывчатые.
1
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
30.01.2015, 08:47  [ТС] #11
Croessmah, Потоки вообщем-то не используем, только процессы.
Цитата Сообщение от Croessmah Посмотреть сообщение
это ведь синтаксический сахар, врядли этим можно аргументировать полезность внедрения C++11.
Ну, мы вот как раз С++11 хотели внедрить именно из-за удобства разработки, лямбды, вместо предикатов на каждый чих, или range-based-for вместо std::for_each ибо была просьба не использовать чистые for циклы, а использовать STL по максимуму.
0
CheshireCat
30.01.2015, 10:24
  #12

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
Выбил все-таки разрешение юзать С++11 на работе, по мелочи, лямбды вместо предикатов, range-based-for, auto. Сегодня наш тех. директор отключил весь С++11 (всего неделю продержались), ибо не хочет, чтобы код выглядел как на питоне (из-за auto)
Эмммм.... Это как??? У вас в конторе что - нет утвержденного стандарта кодирования? Все делается по личным договоренностям? Может, у вас даже багтрекера нет и VCS нет?

0
ForEveR
30.01.2015, 10:31  [ТС]
  #13

Не по теме:

CheshireCat, Контора небольшая. Попробовали С++11 по личной договоренности. Стандарта кодирования нет. Остальное есть.

0
Voivoid
708 / 280 / 15
Регистрация: 31.03.2013
Сообщений: 1,339
30.01.2015, 14:29 #14
Ох, лол, пора уж на C++14 мигрировать, какой уж там C++11

Цитата Сообщение от ForEveR Посмотреть сообщение
Сегодня наш тех. директор отключил весь С++11
Вангую, что ваш тех. дир. или вообще не программист, или программист откровенно фиговый. Добавили столько-то возможностей в языке для написания более лаконичного, безопасного, выразительного кода, но нет, луддитам это все не нужно, дай им волю, так и продолжали бы педалить код на фортране.

Цитата Сообщение от ForEveR Посмотреть сообщение
ибо не хочет, чтобы код выглядел как на питоне (из-за auto)
лолшто? Хотя в принципе понятно, у человека просто отсутсвут логика, а мышление слаборазвито. И вместо того, чтобы основывать свои суждения на фактах и здравом смысле, он просто принимает на веру некое чужое мнение, на основании которого уже строит ассоциативные выводы.

Цитата Сообщение от ForEveR Посмотреть сообщение
что экспериментальная поддержка в продуктиве - плохо
родуктиве - плохо.
Ну юнит-тестов у вас тоже нет?

Цитата Сообщение от ForEveR Посмотреть сообщение
Аналогично, если у вас есть опыт использования в продакшне - поделитесь проблемами с которыми столкнулись или профитом, который принесло использование
Проблем нет. Юзаем C++14 ( clang 3.4, gcc 4.9 ). Профитов - море, не знаю даже с чего начать, думаю ты сам можешь оценить какой для себе будет профит. Ну а так вообще вот например с помощью variadic templates мне удалось написать довольно интересную обобщенную библиотеку которая позволила избаться от написания кучи ручного кода

Цитата Сообщение от ForEveR Посмотреть сообщение
Сегодня наш тех. директор отключил весь С++11
Ну есть еще вариант, что ему на все пофиг, сам-то он не программирует. А что-то даже чуть-чуть менять ему не хочется, ибо извечный принцип: работает - не трогай, лол.

Добавлено через 10 минут
Цитата Сообщение от Croessmah Посмотреть сообщение
это ведь синтаксический сахар, врядли этим можно аргументировать полезность внедрения C++11.
С такой логикой далеко можно зайти. Этак вообще можно сказать, что C++ не нужен и избыточен, мол просто C вполне достаточно
1
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
30.01.2015, 14:31  [ТС] #15
Voivoid,
Цитата Сообщение от Voivoid Посмотреть сообщение
Вангую, что ваш тех. дир. или вообще не программист, или программист откровенно фиговый.
Программист отличный и не только на плюсах. Нас всего трое программистов на С++ в конторе и он делает большинство работы естесно.
Цитата Сообщение от Voivoid Посмотреть сообщение
Ну юнит-тестов у вас тоже нет?
Есть конечно.
Цитата Сообщение от Voivoid Посмотреть сообщение
Проблем нет. Юзаем C++14 ( clang 3.4, gcc 4.9 ). Профитов - море, не знаю даже с чего начать, думаю ты сам можешь оценить какой для себе будет профит. Ну а так вообще вот например с помощью variadic templates мне удалось написать довольно интересную обобщенную библиотеку которая позволила избаться от написания кучи ручного кода
Спасибо, полезно.
Цитата Сообщение от Voivoid Посмотреть сообщение
А что-то даже чуть-чуть менять ему не хочется, ибо извечный принцип: работает - не трогай, лол.
Постоянно рефакторим код, чтобы он выглядел еще лучше, чем выглядел до этого, так что данный вариант тоже не подходит.

Вообще, он начал разбираться из-за того, что не работала программа, я два дня сидел с дебаггером, функция просто не вызывалась, хотя в коде вызов есть. Оказалось в итоге, что дело все-таки было в С++11 (точнее в том, что некоторые либы собраны с ним, другие без него). Но позиция по auto и т.д. не изменилась конечно...
0
CheshireCat
30.01.2015, 14:40
  #16

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
Оказалось в итоге, что дело все-таки было в С++11 (точнее в том, что некоторые либы собраны с ним, другие без него). Но позиция по auto и т.д. не изменилась конечно...
Хм. Рекомендую завести таки в конторе билд-сервер.
И да, позицию руководителя я хорошо понимаю. Потому что какой денежный поток или доход (business value) будет от применения C++11 - пока неясно, а вот затраты (времени и труда) - уже пошли.....

0
Voivoid
708 / 280 / 15
Регистрация: 31.03.2013
Сообщений: 1,339
30.01.2015, 14:42 #17
Цитата Сообщение от ForEveR Посмотреть сообщение
Программист отличный
Цитата Сообщение от ForEveR Посмотреть сообщение
ибо не хочет, чтобы код выглядел как на питоне (из-за auto)
Ну, не знаю. Я с трудом представляю, как такие вещи могут сочетаться
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
30.01.2015, 14:47  [ТС] #18
Цитата Сообщение от CheshireCat Посмотреть сообщение
Хм. Рекомендую завести таки в конторе билд-сервер.
Есть ci.
Цитата Сообщение от Voivoid Посмотреть сообщение
Ну, не знаю. Я с трудом представляю, как такие вещи могут сочетаться
Ну как-то так.
0
Voivoid
708 / 280 / 15
Регистрация: 31.03.2013
Сообщений: 1,339
30.01.2015, 14:49 #19
Цитата Сообщение от ForEveR Посмотреть сообщение
Есть конечно.
Ну так в чем тогда проблема? Даже если представить, что если что-то и отвалится из-за использования C++11, то юнит-тесты это сразу и покажут
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
30.01.2015, 15:07  [ТС] #20
Voivoid, Отвалился демон. Юнит тестов на него не было. Поведение было крайне странным.
http://stackoverflow.com/questions/2...iour-in-c-code
0
30.01.2015, 15:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2015, 15:07

Полиндром или нет?
#include <iostream> #include <cstdio> using namespace std; int main() {...

Ошибка или нет
Встретился в книге с таким кодом. // Листинг 5.1. Использование прототипов...

Палиндром или нет?
Определить, является ли заданное натуральное число палиндромом, т.е. таким,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru