| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Насколько С++11 ускорил разработку ПО |
| Автор: zzkoderzzzx 16.10.2013, 16:50 |
| Есть ли статистика по указанному вопросу? А раз ее нет, может и не стоит переходить на С++11? Например если дать одно и то же задание программистам на С++ и программистам на С++11, насколько быстрее оно будет выполнено на С++11? Мне кажется, что его выполнят на С++11 менее быстро, т.к. вместо решения задачи будут думать где применить сомнительные фичи, введенные в С++11. Является ли неиспользование фич С++11 (программирование как на обычном С++) признаком плохого программиста? |
| Автор: bsa 16.10.2013, 16:58 |
| Не удивлюсь, если статистики нет. Так как еще не везде С++11 поддерживается. Зависит от задания. В принципе, С++11 просто вводит новые плюшки в язык, которые позволяют или отказаться от внешних библиотек (std::thread, std::bind...) или немного оптимизировать код (rvalue-reference). В итоге, результат может быть непредсказуем. Так как в одном случае одни инструменты используются, в другом - другие. Одно можно сказать, что итоговый исходный код в случае С++11 будет несколько проще в дальнейшем развитии (при условии, что программисты нормальные). Неиспользование С++11 не является признаком плохого программиста. Так как существует куча независящих от него причин, почему он им может не пользоваться (например, компилятор целевой платформы не поддерживает С++11). Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Насколько-С11-ускорил-разработку-ПО-id525e99c7ae20154579000000#findElement_E7045_525e9b7fae2015dd6d0005ea_0 |
| Автор: NoviceF 16.10.2013, 17:07 |
например, gcc 2.95.3 |
| Автор: vinter 16.10.2013, 17:17 | ||
Нет и никогда не будет т.к. никто подобного не собирает. Переходить или нет - решать каждому индивидуально или по-проектно. Скажу за себя, я без C++11 уже не могу писать на C++.
За отсутствием внешних препонов - да, является. |
| Автор: akizelokro 16.10.2013, 18:01 |
| Замедлил несколько. Потому что пришлось опять что-то учить и осваивать. А потом на форуме стали появляться вопросы по С++11, на которые даже я знаю ответы. |
| Автор: baldina 16.10.2013, 18:52 | ||||
кто не хотел наступать, и раньше не наступал. в С++11 некоторые вещи стало делать проще, а значит - быстрее/безопасней. но функционально мало что изменилось, т.к. синтаксические улучшения кардинально скорость не повысят, а функционал std перетек из boost, который и раньше был доступен. т.к. проекты не существуют в воздухе и обязательно используют библиотеки (в которых для многих проектов больше половины функционала), С++11 не сделает революции Добавлено через 4 минуты и 21 секунду
вряд ли. короткая дорога - известная. хотя... хороший программист - ленивый программист, и писать for(begin,end) вместо for (x:y) должно уже утомлять |
| Автор: kemiisto 16.10.2013, 19:04 | ||
Сказки старого леса. Речь шла о скорости разработки, а не исполнения. Да ладно? Или тоже самое и в первом пункте, про тех, кто не наступал? Если речь об этом, то да, согласен. Но это несколько некорректное сравнение, согласитесь. Уж если сравнивать два стандарта, то в чистом виде. И опять же, Boost - оно, может, и хорошо, но когда вещи попадают в стандарт, это способствует их популяризации. Больше разработчиков знает - больше применяет. И да, не всё там в этом вашем Boost было. std::unique_ptr, вроде, аналогов не имеет, например.
Ошибаетесь. Код любой крупной библиотеки переписывается с нуля один раз минимум в 5-10 лет. Или просто уходит в мир иной и замешается более современными аналогами. Так что революция, не революция, а лет через 5 все крупные библиотеки будут написаны уже на С++11 (или 14 Нет, есть, конечно, исключения. Но это в основном адовое фотрашно-сишечное наследие, например, которое никто желанием переписывать не горит. |
| Автор: zzkoderzzzx 16.10.2013, 19:57 | ||||||
В С++ тоже есть auto_ptr.
Например constexpr. Не совсем понятно куда приткнуть rvalue references.
|
| Автор: borisbn 16.10.2013, 20:05 | ||||||
Лично я под разработкой ПО понимаю проектирование, разработку структуры данных и алгоритмов обработки этих данных. И делаю это я на русском, а не на Си++ или на его 11-м развитии. Кодирование на конкретном языке у меня занимает процентов 15-20 от общего времени, поэтому если 11-й стандарт и ускорит кодирование, допустим на 10%, то общая экономия составит сущие копейки. Это совершенно не значит, что его не нужно использовать... Просто не нужно ожидать, что если раньше проект делался за месяц, то с использованием C++11 он будет делаться 2 недели. Не будет. Выйдет тот же месяц. Ну... м.б. за минусом одного дня.
Какие фичи ты считаешь сомнительными ? Для меня лично сомнительная фича только одна - строковые литералы. А по поводу скорости... Ну... во-первых см. первый абзац, а во-вторых, если уж говорить о скорости кодирования, то сравни это:
и это:
|
| Автор: vinter 16.10.2013, 20:07 | ||||
На данный момент дали возможность улучшить код, который раньше требовал нагромождения шаблонов. Код стал проще. Добавились пользовательские литералы. Да и вообще это одна из фич, чьё применения будет раскрываться со временем, как это уже было раньше. Тем более, что constexpr является отличным подспорьем в concepts lite и, я полагаю, в полновесных concepts в будущем.
Если Вам, что-то не понятно это не делает фичу "сомнительной". Посмотрите мою http://scrutator.me/post/2011/08/02/rvalue-refs.aspx по теме, может прояснит чего. |
| Автор: zzkoderzzzx 16.10.2013, 20:13 |
| borisbn, это поиск подстроки Hello в векторе пар "строка, строка"? |
| Автор: borisbn 16.10.2013, 20:16 |
| zzkoderzzzx, нет. И то и то - это поиск в векторе пар "строка, вектор строк" на предмет совпадения строки (первой части пары) со строкой Hello. |
| Автор: zzkoderzzzx 16.10.2013, 20:31 | ||
| borisbn, а обязательно ли вводить дополнительный класс StrIsEq и использовать std::find_if при реализации на чистом С++? Можно же сделать и в лоб - пройтись в цикле по вектору... В конце концов сделать typedef на страшную конструкцию
И код получится ненамного длиннее второй реализации. |
| Автор: baldina 16.10.2013, 22:17 | ||
и я про скорость разработки то самое вопрос был не о сравнении стандартов, а изменении скорости разработки
пользователю это не слишком важно, если не меняется интерфейс. а если меняется интерфейс, пользователю оно не нужно. да и вопрос не про 10 лет вперед, а что сейчас изменилось. имхо - ничего по сути но все же приведи мне примерчик такой большой библиотеки которая регулярно с 0 переписывается имею отношение к паре проектов, в которых используется код (в виде библиотек), которому более 30 лет. оно самое и пока необходимости нет (а её нет и не предвидится) трогать его никто не станет. опять же, к новому коду на С++11 и скорости его разработки это не имеет отношения |
| Автор: bsa 16.10.2013, 23:16 |
| Но и не намного короче первой. |
| Автор: o2n3e 17.10.2013, 00:19 |
Модератор: Сообщение скрыто. |
| Автор: o2n3e 17.10.2013, 00:23 |
Модератор: Сообщение скрыто. |
| Автор: o2n3e 17.10.2013, 00:26 |
Модератор: Сообщение скрыто. |
| Автор: o2n3e 17.10.2013, 00:36 |
Модератор: Сообщение скрыто. |
| Автор: akizelokro 17.10.2013, 07:46 | ||
Ну ты и фуфла нанёс. Чтобы ты не впадал в очередную ересь, обратись к первоисточникам. Принципиально язык программирования высокого уровня от программирования на калькуляторе или работы с математическими формулами ничем не отличается. И вот там основной упор. Дальше уже дополнительные накрутки, вызываемые элементарным усложнением процесса |
| Автор: vinter 17.10.2013, 08:09 | ||
Qt; нельзя сказать, что с нуля, но между мажорными версиями отличия значительные. |
| Автор: kemiisto 17.10.2013, 09:02 | ||||||
Полудурок, ты внимательно прочитал, что цитируешь?
Ахахаха, пиши есчо! Я где-то говорил, что Fortran - конкурент С? Я их сравнил только в том плане, что есть куча библиотек на этих языках, которые никто переписывать в ближайшее время не будет. Ибо ain't broke.
Ей богу, лучше бы ты продолжал молчать. |
| Автор: bsa 17.10.2013, 10:17 |
| Граждане, игнорируйте высказывания o2n3e, не кормите троля. Почти все его посты скрываются модераторами при первой возможности. |
| Автор: o2n3e 17.10.2013, 11:05 |
Модератор: Сообщение скрыто. |
| Автор: borisbn 17.10.2013, 11:06 | ||||
Согласен. Я специально оставил без него, чтобы показать удобство auto. Даже по сравнению с typedef'ом. find_if - это первое, что пришло в голову. Сравни, например, это без 11-го:
Или это:
|
| Автор: o2n3e 17.10.2013, 11:15 |
Модератор: Сообщение скрыто. |
| Автор: o2n3e 17.10.2013, 11:17 |
Модератор: Сообщение скрыто. |
| Автор: o2n3e 17.10.2013, 11:27 |
Модератор: Сообщение скрыто. |
| Автор: akizelokro 17.10.2013, 11:59 | ||
Если смотреть философски на всю твою писанину, то надо вспомнить, что С/C++ пока ещё живой (изменяющийся) язык. А это означает, что возможны ошибочные или малополезные изменения ( как-то один вид пойнтеров, экспорт шаблонов и будет ещё что-то новое). И <tuple> тебе в помощь! ("Эксперт - любой человек не из нашего города" (следствие из закона Мэрфи)) Код плохой или хороший - уж всяко не соответствием какому-то стандарту определяется Кстати, в том же гугл стандарте употребления кода, раз ты гугл надыбал, библиотеку потокового ввода-вывода рекомендуют не применять. |
| Автор: codemonkeys 17.10.2013, 12:05 |
| В С++11 до сих пор не догадались включить в стандарт pragma once. А в принципе ведь можно и автоматически отслеживать повторное включение вообще без лишних слов! Но все продвинутые кодеры вынуждены продолжать как обезьяны писать ifndef/define, и отслеживать, чтобы этот макрос не совпал с другим из какой нибудь далекой жо*ы. |
| Автор: o2n3e 17.10.2013, 12:32 |
Модератор: Сообщение скрыто. |
| Автор: o2n3e 17.10.2013, 12:39 |
Модератор: Сообщение скрыто. |
| Автор: o2n3e 17.10.2013, 12:55 |
Модератор: Сообщение скрыто. |
| Автор: xvr 17.10.2013, 14:18 |
| С++11 является всего лишь следующим стандартом С++, а никак не отдельным языком. Поэтому выбор между С++11 и С++ (именно как языками) бессмысленен - это одно и то же Неиспользование фич С++11 может быть оправданно чисто организационными причинами. Это не значит, что это какие то очень частные случаи, например отсуствие поддержки С++11 на целевой платформе - это именно организационная причина, но на данный момент очень и очень важная |
| Автор: o2n3e 17.10.2013, 15:30 |
Модератор: Сообщение скрыто. |