Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Насколько С++11 ускорил разработку ПО, по сравнению с обычным С++ 
:(
    Опции темы
zzkoderzzzx
Дата 16.10.2013, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 1.10.2013

Репутация: нет
Всего: нет



Есть ли статистика по указанному вопросу? А раз ее нет, может и не стоит переходить на С++11?

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

Является ли неиспользование фич С++11 (программирование как на обычном С++) признаком плохого программиста?

Это сообщение отредактировал(а) zzkoderzzzx - 16.10.2013, 16:55
PM MAIL   Вверх
bsa
Дата 16.10.2013, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Не удивлюсь, если статистики нет. Так как еще не везде С++11 поддерживается.
Зависит от задания. В принципе, С++11 просто вводит новые плюшки в язык, которые позволяют или отказаться от внешних библиотек (std::thread, std::bind...) или немного оптимизировать код (rvalue-reference). В итоге, результат может быть непредсказуем. Так как в одном случае одни инструменты используются, в другом - другие. Одно можно сказать, что итоговый исходный код в случае С++11 будет несколько проще в дальнейшем развитии (при условии, что программисты нормальные).
Неиспользование С++11 не является признаком плохого программиста. Так как существует куча независящих от него причин, почему он им может не пользоваться (например, компилятор целевой платформы не поддерживает С++11).

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM   Вверх
NoviceF
Дата 16.10.2013, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 13.3.2012
Где: Ростов-на-Дону

Репутация: нет
Всего: 2



Цитата(bsa @  16.10.2013,  17:58 Найти цитируемый пост)
например, компилятор целевой платформы не поддерживает С++11

например, gcc 2.95.3 smile 
PM MAIL   Вверх
vinter
Дата 16.10.2013, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Нет и никогда не будет т.к. никто подобного не собирает. Переходить или нет - решать каждому индивидуально или по-проектно. Скажу за себя, я без C++11 уже не могу писать на C++.
Цитата

Является ли неиспользование фич С++11 (программирование как на обычном С++) признаком плохого программиста?

За отсутствием внешних препонов - да, является.


--------------------
Мой блог
PM MAIL WWW   Вверх
kemiisto
Дата 16.10.2013, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(zzkoderzzzx @  16.10.2013,  15:50 Найти цитируемый пост)
Например если дать одно и то же задание программистам на С++ и программистам на С++11, насколько быстрее оно будет выполнено на С++11? 
Мне кажется, что его выполнят на С++11 менее быстро, т.к. вместо решения задачи будут думать где применить сомнительные фичи, введенные в С++11.

Менее быстро это медленнее что-ли? smile Впрочем, не суть.
По логике, наоборот, быстрее. Или более быстро, если Вам угодно. smile 

Например, в С++11 нет нужды наступать на грабли ручного управления памятью. Это может сэкономить уйму времени даже на небольшом проекте.

А что конкретно за "сомнительные фичи"? 

Цитата(zzkoderzzzx @  16.10.2013,  15:50 Найти цитируемый пост)
Является ли неиспользование фич С++11 (программирование как на обычном С++) признаком плохого программиста?

Это многгогранный вопрос. Если есть куча унаследованного кода и в общем и целом оно устраивает, то "Не чини, коли не поломано". Но если сейчас писать с нуля, то, да, лучше использовать, как минимум, теже умные указатели.




--------------------
PM MAIL WWW GTalk Jabber   Вверх
akizelokro
Дата 16.10.2013, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Замедлил несколько. Потому что пришлось опять что-то учить и осваивать. А потом на форуме стали появляться вопросы по С++11, на которые даже я знаю ответы.  smile  ( минус время на написание ответов )


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
baldina
Дата 16.10.2013, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(kemiisto @  16.10.2013,  17:55 Найти цитируемый пост)
Например, в С++11 нет нужды наступать на грабли ручного управления памятью.

кто не хотел наступать, и раньше не наступал. в С++11 некоторые вещи стало делать проще, а значит - быстрее/безопасней. но функционально мало что изменилось, т.к. синтаксические улучшения кардинально скорость не повысят, а функционал std перетек из boost, который и раньше был доступен.
т.к. проекты не существуют в воздухе и обязательно используют библиотеки (в которых для многих проектов больше половины функционала), С++11 не сделает революции

Добавлено через 4 минуты и 21 секунду
Цитата(zzkoderzzzx @  16.10.2013,  16:50 Найти цитируемый пост)
Является ли неиспользование фич С++11 (программирование как на обычном С++) признаком плохого программиста

вряд ли. короткая дорога - известная. хотя... хороший программист - ленивый программист, и писать for(begin,end) вместо for (x:y) должно уже утомлять
PM MAIL   Вверх
kemiisto
Дата 16.10.2013, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(baldina @  16.10.2013,  17:52 Найти цитируемый пост)
кто не хотел наступать, и раньше не наступал.

Сказки старого леса. smile 

Цитата(baldina @  16.10.2013,  17:52 Найти цитируемый пост)
т.к. синтаксические улучшения кардинально скорость не повысят

Речь шла о скорости разработки, а не исполнения.

Цитата(baldina @  16.10.2013,  17:52 Найти цитируемый пост)
а функционал std перетек из boost

Да ладно? smile А мужики то и не знали.
Или тоже самое и в первом пункте, про тех, кто не наступал?
Если речь об этом, то да, согласен.

Но это несколько некорректное сравнение, согласитесь. Уж если сравнивать два стандарта, то в чистом виде.
И опять же, Boost - оно, может, и хорошо, но когда вещи попадают в стандарт, это способствует их популяризации.
Больше разработчиков знает - больше применяет.

И да, не всё там в этом вашем Boost было. std::unique_ptr, вроде, аналогов не имеет, например.

Цитата(baldina @  16.10.2013,  17:52 Найти цитируемый пост)
т.к. проекты не существуют в воздухе и обязательно используют библиотеки (в которых для многих проектов больше половины функционала), С++11 не сделает революции 

Ошибаетесь. Код любой крупной библиотеки переписывается с нуля один раз минимум в 5-10 лет. Или просто уходит в мир иной и замешается более современными аналогами.
Так что революция, не революция, а лет через 5 все крупные библиотеки будут написаны уже на С++11 (или 14 smile ). Или смерть. Это лишь вопрос времени.

Нет, есть, конечно, исключения. Но это в основном адовое фотрашно-сишечное наследие, например, которое никто желанием переписывать не горит. smile  К С++, впрочем, это отношения не имеет.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
zzkoderzzzx
Дата 16.10.2013, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 1.10.2013

Репутация: нет
Всего: нет



Цитата(kemiisto @ 16.10.2013,  17:55)
Например, в С++11 нет нужды наступать на грабли ручного управления памятью. 

В С++ тоже есть auto_ptr.

Цитата(kemiisto @ 16.10.2013,  17:55)

А что конкретно за "сомнительные фичи"?

Например constexpr. Не совсем понятно куда приткнуть rvalue references. 
Код

constexpr int GiveFive() {return 5;} //ну и зачем такая функция???


Это сообщение отредактировал(а) zzkoderzzzx - 16.10.2013, 20:01
PM MAIL   Вверх
borisbn
Дата 16.10.2013, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(zzkoderzzzx @  16.10.2013,  16:50 Найти цитируемый пост)
Насколько С++11 ускорил разработку ПО

Лично я под разработкой ПО понимаю проектирование, разработку структуры данных и алгоритмов обработки этих данных. И делаю это я на русском, а не на Си++ или на его 11-м развитии. Кодирование на конкретном языке у меня занимает процентов 15-20 от общего времени, поэтому если 11-й стандарт и ускорит кодирование, допустим на 10%, то общая экономия составит сущие копейки. Это совершенно не значит, что его не нужно использовать... Просто не нужно ожидать, что если раньше проект делался за месяц, то с использованием C++11 он будет делаться 2 недели. Не будет. Выйдет тот же месяц. Ну... м.б. за минусом одного дня.
Цитата(zzkoderzzzx @  16.10.2013,  16:50 Найти цитируемый пост)
Мне кажется, что его выполнят на С++11 менее быстро, т.к. вместо решения задачи будут думать где применить сомнительные фичи, введенные в С++11.

Какие фичи ты считаешь сомнительными ? Для меня лично сомнительная фича только одна - строковые литералы.
А по поводу скорости... Ну... во-первых см. первый абзац, а во-вторых, если уж говорить о скорости кодирования, то сравни это:
Код
struct StrIsEq {
    StrIsEq( const std::string & str ) : m_str( str ){}
    bool operator()( const std::pair< std::string, std::vector< std::string > > & p ) const {
        return p.first == m_str;
    }
private:
    std::string m_str;
};
std::string hello = "Hello";
std::vector< std::pair< std::string, std::vector< std::string > > >::const_iterator found = std::find_if( v.begin(), v.end(), StrIsEq( hello ) );

и это:
Код
std::string hello = "Hello";
auto found = std::find_if( v.begin(), v.end(),
    [hello]( const std::pair< std::string, std::vector< std::string > > & p ) {
        return p.first == hello;
    }
);



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
vinter
Дата 16.10.2013, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата

Например constexpr

На данный момент дали возможность улучшить код, который раньше требовал нагромождения шаблонов. Код стал проще. Добавились пользовательские литералы. Да и вообще это одна из фич, чьё применения будет раскрываться со временем, как это уже было раньше. Тем более, что constexpr является отличным подспорьем в concepts lite и, я полагаю, в полновесных concepts в будущем.
Цитата

Не совсем понятно куда приткнуть rvalue references. 

Если Вам, что-то не понятно это не делает фичу "сомнительной". Посмотрите мою статью по теме, может прояснит чего.


--------------------
Мой блог
PM MAIL WWW   Вверх
zzkoderzzzx
Дата 16.10.2013, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 1.10.2013

Репутация: нет
Всего: нет



borisbn,  это поиск подстроки Hello в векторе пар "строка, строка"?
PM MAIL   Вверх
borisbn
Дата 16.10.2013, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



zzkoderzzzx, нет. И то и то - это поиск в векторе пар "строка, вектор строк" на предмет совпадения строки (первой части пары) со строкой Hello.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
zzkoderzzzx
Дата 16.10.2013, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 1.10.2013

Репутация: нет
Всего: нет



borisbn, а обязательно ли вводить дополнительный класс StrIsEq и использовать std::find_if при реализации на чистом С++?
Можно же сделать и в лоб - пройтись в цикле по вектору...
В конце концов сделать typedef на страшную конструкцию 
Код

std::vector< std::pair< std::string, std::vector< std::string > > >

И код получится ненамного длиннее второй реализации.

Это сообщение отредактировал(а) zzkoderzzzx - 16.10.2013, 20:33
PM MAIL   Вверх
baldina
Дата 16.10.2013, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(kemiisto @  16.10.2013,  19:04 Найти цитируемый пост)
Речь шла о скорости разработки, а не исполнения.

и я про скорость разработки

Цитата(kemiisto @  16.10.2013,  19:04 Найти цитируемый пост)
Или тоже самое и в первом пункте, про тех, кто не наступал?

то самое

Цитата(kemiisto @  16.10.2013,  19:04 Найти цитируемый пост)
Уж если сравнивать два стандарта, то в чистом виде.

вопрос был не о сравнении стандартов, а изменении скорости разработки

Цитата(kemiisto @  16.10.2013,  19:04 Найти цитируемый пост)
Код любой крупной библиотеки переписывается с нуля один раз минимум в 5-10 лет

пользователю это не слишком важно, если не меняется интерфейс. а если меняется интерфейс, пользователю оно не нужно.
да и вопрос не про 10 лет вперед, а что сейчас изменилось. имхо - ничего по сути
но все же приведи мне примерчик такой большой библиотеки которая регулярно с 0 переписывается 

Цитата(kemiisto @  16.10.2013,  19:04 Найти цитируемый пост)
лет через 5 все крупные библиотеки будут написаны уже на С++11

имею отношение к паре проектов, в которых используется код (в виде библиотек), которому более 30 лет. 
Цитата(kemiisto @  16.10.2013,  19:04 Найти цитируемый пост)
фотрашно-сишечное наследие

оно самое
и пока необходимости нет (а её нет и не предвидится) трогать его никто не станет. опять же, к новому коду на С++11 и скорости его разработки это не имеет отношения
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1378 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.