Здравствуйте, Dair, Вы писали:
D>Здравствуйте, Went, Вы писали:
W>>Здравствуйте. Наверное, мой вопрос затерт и банален, но все же решусь его повторить Я хочу получать код, который без особых костылей компилируется на Win7-8, MacOS, IOS, Android. На что я могу рассчитывать? Речь не о том, какую фичу поддерживает тот или иной компилятор, а об общем тренде — переходят ли на С++11 программисты кроссплатформенных игр?
D>Мы пока нет. Потому как основным инструментом остаётся (у коллег) VS2008. Вот если переходить на современные Студии, тогда да.
+100500
Я пишу на C++ (MFC). Использую VS2008. Смысла в переходе на более новую студию, на C++11 а также и на более новую библиотеку MFC не вижу.
Здравствуйте, Went, Вы писали:
W>Речь не о том, какую фичу поддерживает тот или иной компилятор, а об общем тренде — переходят ли на С++11 программисты кроссплатформенных игр?
Раз уже выяснили, что разговор не об играх, то нет, не перехожу. В Qt 4.8 это особого значения не имеет, на новый Qt тоже не стал переходить. С++ долгоживущий язык, если понадобится ещё успеется перейти на всё, что угодно. Тут нужно понимать, что не все используют STL. А в Qt к тому же можно использовать обобщённое-программирование, то есть шаблоны С++, только очень специфичным образом. Многому чего не было в C++03, но есть в C++11, есть замена. Впрочем спустя значительное количество времени, а счёт идёт на года, когда будут решены другие проблемы, вполне возможно перейду на новый стандарт, может он даже дефолтным к тому времени станет. Нет ничего страшного, что все сразу не кидаются на новую версию. С++ (1983) известен своей совместимостью ещё с Си (1972), речь о 3-4-ёх десятилетиях, а не 3-4-ёх годах.
Здравствуйте, Went, Вы писали:
W>Здравствуйте. Наверное, мой вопрос затерт и банален, но все же решусь его повторить Я хочу получать код, который без особых костылей компилируется на Win7-8, MacOS, IOS, Android. На что я могу рассчитывать? Речь не о том, какую фичу поддерживает тот или иной компилятор, а об общем тренде — переходят ли на С++11 программисты кроссплатформенных игр?
Я бы переформулировал: Если не озвучено чёткое обоснование, почему в проекте не используется C++11, стоит задуматься о вменяемости техлидов и менеджмента.
Здравствуйте, Abyx, Вы писали:
A> 2014 год заканчивается, люди уже С++14 юзают, и собираются юзать C++1z A>а кто-то еще решает, писать им на С++2003 или нет
У всех разные ситуации.
Вот у нас использовался раньше Managed C++, C++/CLI .
Так они прибиты к версии .NET , а посему можем использовать только компилятор от VS2008 , т.к. нужен максимум .NET 3.5 .
Даже если получим добро на .NET 4.0 то все равно выходит студия 2010...
Чтобы перейти на C++1x нужно этот весь код переписывать как-то, а на это время никто ,естественно, выделять не будет.
Здравствуйте, Abyx,
A>"много" — это обычно на 30 мин работы по механической замене одного текста на другой, при помощи регулярок и пары чашек чая. A>люди код с Си на С++ без проблем переписывают, а уж с С++03 на С++11 — легко.
Гм. Программисты крайне редко задумываются о том, будет ли от такого переписывания business value?
Здравствуйте, Went, Вы писали:
W>Здравствуйте. Наверное, мой вопрос затерт и банален, но все же решусь его повторить Я хочу получать код, который без особых костылей компилируется на Win7-8, MacOS, IOS, Android. На что я могу рассчитывать? Речь не о том, какую фичу поддерживает тот или иной компилятор, а об общем тренде — переходят ли на С++11 программисты кроссплатформенных игр?
Формально в последних GCC и Clang поддержка полного C++11 уже есть и для всех перечисленных вами платформ по крайней мере один из них есть, так что проблем у вас не будет. Технических проблем. Формальный ответ на ваш вопрос: "да, можете рассчитывать на нормальную кроссплатформенность, вообще без проблем". Ну если оставить за скобками майкрософт, конечно. У этих своё видение.
Собственно вся поддержка в нормальных компиляторах была готова уже больше года назад, и новый стандарт уже давно можно потихоньку привлекать для своих нужд, аккуратно следя за руками -- там rvalue ссылку воткнуть, в другом месте список инициализации использовать (жёстко отслеживая perf impact на каждое такое движение). Меня почему-то особенно радует механизм future/promise в стандартной библиотеке. Переход на стандартные треды с системно-зависимых конечно должен быть сделан. Опять же переключиться с бустовых регекспов на стандартные -- тоже дело.
Не знаю насчёт игр, а вот программистов, пишущих симуляторы архитектур, бинарную трансляцию, всё вот это, уже года два как заимствующих полезное из нового стандарта, я знаю много.
Но программирование не сводится к техническим проблемам. Самое сложное -- это новый концептуальный аппарат, делающий метапрограммирование реально простым и во многом смещающий фокус внимания с традиционного ООП на более ФП-шный стиль: constexpr, variadic templates, auto, лямбды, всё вот это. Никому больше не нужно год учить шаблонную магию чтобы на собеседовании написать на бумажке compile-time prime numbers, теперь это сделает любой студент (и делают).
И вот что касается этого когнитивного "переключения контекста", когда мы прекращаем думать на C++98 и начинаем думать на другом языке, гораздо более гибком в compile-time и с гораздо более дружественной системой типов... Вот это пока рановато. Вообще новый стандарт каждые три года это слишком быстрые изменения в языке, тут лучше взять паузу и дать комитету наиграться. Сейчас уже вышел C++14, там довольно много концептуальных новшеств, скажем variable templates и generic lambdas. Если он окажется более-менее финальным, то можно будет перелезть сразу на него.
Здравствуйте, Went, Вы писали:
W>Здравствуйте. Наверное, мой вопрос затерт и банален, но все же решусь его повторить Я хочу получать код, который без особых костылей компилируется на Win7-8, MacOS, IOS, Android. На что я могу рассчитывать? Речь не о том, какую фичу поддерживает тот или иной компилятор, а об общем тренде — переходят ли на С++11 программисты кроссплатформенных игр?
Ну вот мы в команде юзали старый, но быстрый STLport, а он не поддерживает С++11 ни в каком виде.
То есть надо сперва от него отвязаться.
Отвязался (перешел на стандартную гнутую), прогнал тесты — много чего просело. Вот мучаюсь набегами уже год, наверное. Где-то что-то как-то какие-то неочевидные особенности использовало и тюнилось конкретно под STLport, и с уходом на гну оно больше не работает.
Так до сих пор и не перешли, сидим на STLport.
Потому что С++11 — это обновление не только языка, но и стандартной библиотеки.
не кажется ли тебе, что использовать в качестве стандартной библиотеки нестандартную рализацию, эмм, как минимум не логично?
не, не ради троллига. мне действительно непонятно мышление, на основании которого, было решено использовать STLport %)
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
X>Здравствуйте, jazzer, Вы писали:
X>не кажется ли тебе, что использовать в качестве стандартной библиотеки нестандартную рализацию, эмм, как минимум не логично?
она вполне стандартна в рамках С++98.
И использовалась она весьма широко в свое время, потому что уделывала по скорости почти все современные ей реализации стандартной библиотеки.
Стандарт же на интерфейс библиотеки, не на реализацию.
X>не, не ради троллига. мне действительно непонятно мышление, на основании которого, было решено использовать STLport %)
она работала быстрее, чем встроенная в GCC 2.95 и GCC 3. Да и сейчас, в общем-то, в каких-то частях она все еще выигрывает, получается.
Здравствуйте, niXman, Вы писали:
X>не кажется ли тебе, что использовать в качестве стандартной библиотеки нестандартную рализацию, эмм, как минимум не логично? X>не, не ради троллига. мне действительно непонятно мышление, на основании которого, было решено использовать STLport %)
Скорее всего по причинам историческим. 15 лет назад STLPort был более, чем стандартным и, к тому же, рвал Студийную stl как тузик тряпку.
Мы STLPort'ом тоже пользовались. Правда у нас переход на штатную stl прошел безболезненно — "стандартные" контейнеры использовали только в некритичных по скорости кусках проекта.
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, jazzer, Вы писали:
J>она вполне стандартна в рамках С++98.
в моем понимании, стандартная библиотека — это некий фундамент, основа, который должен быть фундаментом для всего остального, и делать это на разных компиляторах/платформах. посему, имхо, я бы ни за что не стал использовать стороннюю реализацию. поди знай, насколько она совместима или же несовместима, и когда ее перестанут поддерживать...
J>И использовалась она весьма широко в свое время, потому что уделывала по скорости почти все современные ей реализации стандартной библиотеки. J>она работала быстрее, чем встроенная в GCC 2.95 и GCC 3. Да и сейчас, в общем-то, в каких-то частях она все еще выигрывает, получается.
что, абсолютно все, что в STLport рализовано, работает быстрее? думается мне, наверняка это меньшая часть, возможно сильно меньшая. я бы в этом случае, просто написал(или скопипастил) в рамках проекта свои реализации, которые бы использовались по препроцессорному условию.
ну хз, не представляю, чтоб я взялся писать проект основываясь на сторонней реализации стандартной библиотеки...
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Скорее всего по причинам историческим. 15 лет назад STLPort был более, чем стандартным и, к тому же, рвал Студийную stl как тузик тряпку.
так STLPort это что, чисто вендовая реализация? или заточенная под студию?
просто, мне не разу не встречался проект, который бы испльзовал STLPort(но я несколько раз слышал об этом), вот и подумал...
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
SVZ>>Скорее всего по причинам историческим. 15 лет назад STLPort был более, чем стандартным и, к тому же, рвал Студийную stl как тузик тряпку. X>так STLPort это что, чисто вендовая реализация? или заточенная под студию? X>просто, мне не разу не встречался проект, который бы испльзовал STLPort, вот и подумал...
Обычная кроссплатформенная библиотека. Список компиляторов.
В проекте ничего особенного и не увидишь. Те же обращения к namespace std.
Просто в настройках компилятора будет ссылка не на "штатный" каталог с stl файлами, а на stlport.
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, Vlad_SP, Вы писали:
V_S>Здравствуйте, Abyx,
A>>"много" — это обычно на 30 мин работы по механической замене одного текста на другой, при помощи регулярок и пары чашек чая. A>>люди код с Си на С++ без проблем переписывают, а уж с С++03 на С++11 — легко.
V_S>Гм. Программисты крайне редко задумываются о том, будет ли от такого переписывания business value?
А некоторые не-программисты (и недопрограммисты) не очень понимают что такое надежность кода, как в коде появляются баги, и сколько может стоить их починка.
Также не всем понятно почему какие-то задачи делаются быстро, а какие-то медленно.
И не все кто знает умные слова типа "business value" знают умные слова типа "technical debt".
Здравствуйте, B0FEE664, Вы писали:
BFE>У нас все проекты используют общие библиотеки. Я тут в одном классе ошибочный public на private поменять второй месяц не могу, так как все проекты пересобирать придётся...
я слышал есть тулзы, которые позволяют автоматизировать сборку...
скрипты опять же всякие
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Обычная кроссплатформенная библиотека. Список компиляторов.
почему-то мне думается, что под большинство из перечисленных платформ можно собрать GCC и использовать единую стандартную библиотеку
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
X>Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>>Обычная кроссплатформенная библиотека. Список компиляторов. X>почему-то мне думается, что под большинство из перечисленных платформ можно собрать GCC и использовать единую стандартную библиотеку
Здравствуйте, jazzer, Вы писали:
J>Отвязался (перешел на стандартную гнутую), прогнал тесты — много чего просело.
если это критично — надо писать самим. стандартные библиотеки в силу своей общности очень далеки от оптимальной реализации любого конкретного алгоритма
Здравствуйте, Константин, Вы писали: К>Я бы переформулировал: Если не озвучено чёткое обоснование, почему в проекте не используется C++11, стоит задуматься о вменяемости техлидов и менеджмента.
Я сам себе техлид, менеджер и программист. Сижу на 2005-ом вижуале, и чувствую себя в рамках С++03 вполне хорошо. Появилась возможность "абсолютно бесплатно" перелезть на 2013.4. Это заманчиво, и будет означать переход на С++11, но после того, что я прочитал про поддержку С++11 в этой студии, мне стало грустно. Получится, что гемор с перенастройкой всего пипелайна будет, а С++11 будет кастрированный.