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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чего Вам не хватает в стандарте Си++, Собираем предложения 
:(
    Опции темы
mabrarov
Дата 14.4.2011, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(azesmcar @ 13.4.2011,  20:36)
Все перечисленное является кирпичиками, необходимыми для построения современных приложений. Половина вышеперечисленного есть в буст, другая половина в TBB.

Вы сами же и ответили на вопрос, почему это не надо вносить в стандартную библиотеку C++ - потому что это уже хорошо реализовано сторонними библиотеками.

Все просто. Это обычный баланс (и уже поэтому, здесь можно дискутировать бесконечно):
  • или "у нас все с собой (но, возможно, ваше сюда не встраивается и, вообще, мы из-за наших инструментов такое сделать не сможем)";
  • или "у нас только минимум инструментов (дайте-ка нам еще пару лет только на подготовку подходящего набора-инструментария)".
Я не против того, что уже внесено в C++0x, например, потоки (особенно в части требований к компиляторам). Но, как в известной сказке, если в дом полезут все (потащат все, что кому-то может и действительно нужно, но не обязтельно нужно всем и всегда), то дом треснет и развалится (на анклавы-платформы).

Цитата(borisbn @ 13.4.2011,  22:21)
поддерживаю в том плане, что у мнооооооогих программистов есть такой каталог типа common или shared или tools или utils, где собраны если не небоскрёбы, то как минимум приличные 9-ти этажки из тех самых "кирпичиков", предоставляемых стандартом, и у многих эти здания похожи как те новостройки из "С лёгким паром". Так почему бы это не объединить в библиотеку, которую назвать стандартной ?
По сути тот же boost - это и есть объединение всего того, что наваяли программисты за много лет. Ведь говоря, что "нам достаточно кирпичиков, из них можно построить всё, что хочешь" можно и от STL отказаться...

Неужели кто-то всерьез полагает, что серьезное поизводство ПО на базе C++ возможно без какого-то дополнительного набора библиотек (или даже framework-ов), пусть даже и довольно стабильно переходящего из проекта в проект? Для меня это, как минимум, Boost C++ Libraries.

Наверное, тема "На каких платформах (аппаратные платформы, ОС) Вы бы хотели видеть (Вам нужны) полноценные/современные компиляторы C++, полностью (без багов!) и эффективно поддерживающие хотя бы стандарт C++ 2003 года?" была бы менее противоречивой (для меня). Это так, отступление от темы нашего вопроса, отчасти связанное с ним.

Это сообщение отредактировал(а) mabrarov - 14.4.2011, 12:26
PM MAIL WWW Skype   Вверх
azesmcar
Дата 14.4.2011, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(mabrarov @  14.4.2011,  12:11 Найти цитируемый пост)
Вы сами же и ответили на вопрос, почему это не надо вносить в стандартную библиотеку C++ - потому что это уже хорошо реализовано сторонними библиотеками.

 smile где это? не надо вносить, потому-что это можно сделать построив лего из всевозможных библиотек, половина из которых имеет работают довольно сомнительно?

Цитата(mabrarov @  14.4.2011,  12:11 Найти цитируемый пост)
Неужели кто-то всерьез полагает, что серьезное поизводство ПО на базе C++ возможно без какого-то дополнительного набора библиотек (или даже framework-ов), пусть даже и довольно стабильно переходящего из проекта в проект?  

если этот фреймворк будет частью стандарта - то да, естественно можно. На .NET люди же как-то пишут.

Цитата(mabrarov @  14.4.2011,  12:11 Найти цитируемый пост)
если в дом полезут все (потащат все, что кому-то может и действительно нужно, но не обязтельно нужно всем и всегда), то дом треснет и развалится (на анклавы-платформы).

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

Например в одной довольно серьезной компании, в которой я работал, использование какой либо внешней библиотеки было вообще запрещено. В моей теперешней компании на многих проектах буст также запрещен. В последний раз смена версии буста остановила мою работу на сутки (и не только мою), а смена версии Qt уже продолжается на протяжении месяцев. Удовольствия от всего этого как Вы понимаете мало. Мне гораздо приятнее знать, что кто-то долго сидел, думал и заботился о работе 2-х гигабайтов кода, написанного 7 лет назад и при смене версии библиотеки/компилятора нам не придется сидеть и искать где и в какой функции добавили новый аргумент.

Это сообщение отредактировал(а) azesmcar - 14.4.2011, 12:30
PM   Вверх
mabrarov
Дата 14.4.2011, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(azesmcar @ 14.4.2011,  12:22)
На .NET люди же как-то пишут.

.NET Framework. Ну да, именно как-то. Т.е. вполне нормально, пока дело не доходит до распространения или, упаси боже, переноса на др. платформу. Впрочем, тут проблемы есть у всех. Просто кто-то может (имеет время, силы и "скиллы") потратить на их решение больше (тех же ресурсов), а кто-то меньше. Вот только не надо того "сахара" и обилия "из коробки", что есть в .NET. Кому нужно, как в .NET, те на нем и пишут (не в упрек Вам, data-race.com я видел - хороший ресурс).

Как я и писал - баланс противоречив и дискутировать дальше не вижу смысла  smile 
PM MAIL WWW Skype   Вверх
azesmcar
Дата 14.4.2011, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(mabrarov @  14.4.2011,  12:36 Найти цитируемый пост)
Кому нужно, как в .NET, те на нем и пишут

Так в том то и дело, что очень многие так и поступают и именно из за наличия сахара из коробки. Если мне надо написать программу под windows (без планов переноса под *nix) то я долго думать надо выбором платформы и языка не стану, хотя C++ как язык мне нравиться.

Цитата(mabrarov @  14.4.2011,  12:36 Найти цитируемый пост)
Как я и писал - баланс противоречив и дискутировать дальше не вижу смысла    

Ну, ничего от нашей дискуссии все равно не измениться, стандарт то уже приняли smile 

PM   Вверх
mabrarov
Дата 14.4.2011, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(azesmcar @ 14.4.2011,  12:22)
Например в одной довольно серьезной компании, в которой я работал, использование какой либо внешней библиотеки было вообще запрещено. В моей теперешней компании на многих проектах буст также запрещен. 

Бывает. Все, наверное, читали "JSF C++ Coding standards" - там и STL (фактически) под запретом. Требования разные бывают, а подобрать правильный инструмент иногда становится настоящим искусством (которым, к сожалению, могут заниматься некомпетентые личности).

Цитата(azesmcar @ 14.4.2011,  12:22)
В последний раз смена версии буста остановила мою работу на сутки (и не только мою)

Serialization? (по этому поводу и без меня ответов хватает)
Все пользователи Boost (если читали то место в документации Boost) знают, что Boost не дает никаких гарантий касаемо ABI и даже совместимости на уровне исходных кодов (за исключением разве что устоявшихся библиотек) - это в общем случае, если обратное не указано явно.

Цитата(azesmcar @ 14.4.2011,  12:22)
а смена версии Qt уже продолжается на протяжении месяцев. Удовольствия от всего этого как Вы понимаете мало. 

Ну Qt-то как раз даже в плане ABI много чего гарантирует при определенных условиях - надо это учитывать при разработке.

Хотите 100%-ной ABI совместимости - пишите C-like внешние интерфейсы или используйте COM (лучше, пожалуй, XPCOM). Зачем "плакаться", если "всех предупреждали".

Когда, порой, слышишь "мне в C++ не хватает того-то и того-то как там-то и там-то", то предложение использовать это самое "там-то и там-то" (Java, C#, Python) оказывается очень даже уместным и вполне принимается вопрошающим. Потому что не зря существуют другие языки программирования и иногда стоит объективно оценивать нежелание их использовать, замечая в нем обычную, человеческую инертность.

Добавлено через 10 минут и 51 секунду
Цитата(azesmcar @ 14.4.2011,  12:54)
Так в том то и дело, что очень многие так и поступают и именно из за наличия сахара из коробки. Если мне надо написать программу под windows (без планов переноса под *nix) то я долго думать надо выбором платформы и языка не стану, хотя C++ как язык мне нравиться.

Обогнали  smile 
Я, кстати, свои деньги за Java получаю уже года 2, "хотя C++ как язык мне нравиться" - ну ооочень.

Это сообщение отредактировал(а) mabrarov - 14.4.2011, 13:04
PM MAIL WWW Skype   Вверх
azesmcar
Дата 14.4.2011, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(mabrarov @  14.4.2011,  13:01 Найти цитируемый пост)
Хотите 100%-ной ABI совместимости - пишите C-like внешние интерфейсы или используйте COM (лучше, пожалуй, XPCOM). 

Ну и на кой фиг так извращаться?

Цитата(mabrarov @  14.4.2011,  13:01 Найти цитируемый пост)
Зачем "плакаться", если "всех предупреждали".

А кто плачется? что есть - то есть, я как раз говорю о том, что "всех предупреждали". Со стандартной библиотекой/фреймворком многих проблем удастся избежать.

Цитата(mabrarov @  14.4.2011,  13:01 Найти цитируемый пост)
Когда, порой, слышишь "мне в C++ не хватает того-то и того-то как там-то и там-то", то предложение использовать это самое "там-то и там-то" (Java, C#, Python) оказывается очень даже уместным и вполне принимается вопрошающим. Потому что не зря существуют другие языки программирования и иногда стоит объективно оценивать нежелание их использовать, замечая в нем обычную, человеческую инертность.

т.е. по Вашему нам надо ничего не хотеть, ни к чему не стремиться и сидеть довольствоваться тем, что у нас есть?
PM   Вверх
Леопольд
Дата 19.4.2011, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(azesmcar @  14.4.2011,  12:54 Найти цитируемый пост)
Ну, ничего от нашей дискуссии все равно не измениться, стандарт то уже приняли
Правда? Поделись, пожалуйста, ссылочкой на новость!
Нашёл что примут примерно в следующем году, но текущий драфт последний. Значительных изменений не будет. Ура, товарищи!

Это сообщение отредактировал(а) Леопольд - 19.4.2011, 13:45


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
borisbn
Дата 19.4.2011, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Леопольд @  19.4.2011,  13:30 Найти цитируемый пост)
Ну, ничего от нашей дискуссии все равно не измениться, стандарт то уже приняли

Правда? Поделись, пожалуйста, ссылочкой на новость!

http://forum.try-catch.ru/index.php?topic=426.0

Это сообщение отредактировал(а) borisbn - 19.4.2011, 13:49


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


Эксперт
****


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

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



Цитата(ИванМ @  14.4.2011,  10:18 Найти цитируемый пост)
Хотелось бы улучшить делегирование. Например, в стиле Builder'а который я не люблю, но вещь там есть хорошаю, которая называется __closure. Либо реализовать стандартный механизм сигналов/слотов. Либо что-то сделать в стиле delegate из c#.

Тоже считаю, что возможность создания указателя на метод класса с привязкой к конкретному объекту была бы очень полезна. Есть подозрение, что std::function (копия boost::function, если не ошибаюсь) имеет значительный оверхэд (new/delete) против простого указателя (пусть даже двойного размера). Тем более, что в этом случае решалась бы проблема с виртуальными функциями и прочей фигней - на машинном уровне это выглядело бы как два указателя, один на объект, а второй на функцию (причем, так как на момент создания указателя объект известен, можно сразу подставить нужный вариант виртуального метода).

В принципе, сокеты можно включить в стандарт на тех же правах, что и потоки. Ведь бывают системы, где нет потоков, бывают, где нет сети... Но тупо включать asio я не считаю разумным. Для начала следует сделать серьезный его рефакторинг. В частности, переименовать io_service в task_manager (ну или что-то в этом духе).

Это сообщение отредактировал(а) bsa - 19.4.2011, 22:58
PM   Вверх
mes
Дата 20.4.2011, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(bsa @  19.4.2011,  21:55 Найти цитируемый пост)
 Есть подозрение, что std::function (копия boost::function, если не ошибаюсь) имеет значительный оверхэд (new/delete) против простого указателя (пусть даже двойного размера). 

имеет в случае хранения функционального объекта.. а без оверхеда тут никак, ибо размер объекта не известен.. А при хранении функций и методов никакого оверхеда нет..

Добавлено через 2 минуты и 20 секунд
Цитата(bsa @  19.4.2011,  21:55 Найти цитируемый пост)
. Тем более, что в этом случае решалась бы проблема с виртуальными функциями

о какой именно проблеме идет речь ? чем она в случае s std::function не решена ?

Добавлено через 8 минут и 54 секунды
Цитата(bsa @  19.4.2011,  21:55 Найти цитируемый пост)
возможность создания указателя на метод класса с привязкой к конкретному объекту была бы очень полезна

а стоит ли эта лишняя сущность, того чтоб отказываться от более мощного и удобного инструмента bind ?



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


Эксперт
****


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

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



Цитата(mes @  20.4.2011,  21:07 Найти цитируемый пост)
 А при хранении функций и методов никакого оверхеда нет..

Точно нет? Даже при связывании метода с объектом? Просто синтаксис связывания метода с объектом не особо удобен... Имхо, значительно красивее было бы что-то вроде:
Код
auto func = &object->method;

PM   Вверх
mes
Дата 20.4.2011, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(bsa @  20.4.2011,  20:18 Найти цитируемый пост)
 Даже при связывании метода с объектом? 

результат bind`a - функциональный объект .. его естественно приходится хранить в куче.. 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 20.4.2011, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(bsa @  19.4.2011,  22:55 Найти цитируемый пост)
переименовать io_service в task_manager

 smile 
какой же он task_manager ? откуда такие выводы?

Цитата(bsa @  20.4.2011,  21:18 Найти цитируемый пост)
Просто синтаксис связывания метода с объектом не особо удобен

например?

PM WWW   Вверх
alexvs11
Дата 20.4.2011, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


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

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



Цитата(boostcoder @  20.4.2011,  21:40 Найти цитируемый пост)
например?

ну до ++0x вообще монструозно .* и ->* кого угодно введут в ступор
PM MAIL   Вверх
boostcoder
Дата 20.4.2011, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(alexvs11 @  20.4.2011,  21:43 Найти цитируемый пост)
 .* и ->* кого угодно введут в ступор

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

Добавлено @ 21:46
Цитата(alexvs11 @  20.4.2011,  21:43 Найти цитируемый пост)
до ++0x

а в с++0х разве что-то изменилось?

Это сообщение отредактировал(а) boostcoder - 20.4.2011, 21:50
PM WWW   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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