Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > C++0x


Автор: chipset 9.4.2005, 15:06
На правах новостей...
C++0x

Общественность С++'ная давно, начиная с 2001-ого года бурлит, ожидая новую версию C++ под зудодробительным названием "C++0x". Хотя точная дата релиза новой версии неизвестна, немного информации о том ЧТО же всё-таки предполагается включить в неё, доступно.

В первую очередь, неплохо бы изучить документ http://www.research.att.com/~bs/C++0x_panel.pdf, в котором Бьярн Страструп предлагает к включению в стандартную библиотеку (STL) такие фичи как:
  • Продвинутое IO, поддержку TCP/Ip
  • Распределенные вычисления: потоки, удаленные вызовы, расширенная информация о типах, и т.д..
  • Поддержка таких систем как: SQL, CORBA и прочих (неизвестно пока)
  • Поддержка паттернов
  • Hash_map
  • Для языковых способностей, Страструп предлагает:
  • Идентичный поиск функций и функциональных обьектов (?)
  • typedef'ы шаблонов, typeof
  • Убрать частовстречающиеся ошибки: добавлять виртуальный деструктор в классе с виртуальными функциями по умолчанию; запретить копирование по умолчанию обьектов с обьявленными деструкторами; проверять выход за границы string'a и вектора.
добавить возможность vector<list<int>>
...
Далее, полезным было бы изучить http://open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1512.html, в котором предлагается туева хуча фич. Выделю наиболее по-моему мнению важные:
  • динамические библиотеки - я надеюсь это дело таки введут в С++0x
  • extern template - немного не понял, вроде уже есть
  • константа нулевого указателя nullptr
  • ключевые слова определяемые пользователем - user-define literals?
Также было предложено введение стандартного GUI, reflections, лямбда, sealed (ура!), перегрузка оператора "." (точка), перегрузка глобальных операторов, и много другого не менее полезного, описанного http://open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1512.html.

Насколько я знаю, не все вещи оттуда войдут в стандарт...

Следующей вещью которую я нашёл, была http://lafstern.org/matt/wishlist.html. В частности, хотелось бы подчеркнуть что этот документ довольно новый (2005-ый год), и много вещей оттуда предложены Страустропом. Несколько наиболее важных по-моему мнению предложений:
  • поддержка XML
  • сокеты
  • GUI
  • работа с файловой системой
  • линейная алгебра
  • виртуальные деструкторы для контейнеров
  • форматирование строк
  • графические алгоритмы
  • веб-сервисы, поддержка БД
  • сериализация
  • паттерны
  • документация
  • аспекты и другое..
Скажу что всё вышеперечисленное ещё не является стандартом de facto, и не, мягко говоря, 100% что оно будет включено.

Хотелось бы также подчеркнуть что в новый стандарт войдет библиотека парсинга boost::spirit, как она же сама об этом и http://spirit.sourceforge.net/index.php?doc=docs/wave_v0_9/preliminary_cpp0x_support.html.

Пускаем слюнки и ждём smile

Автор: En_t_end 9.4.2005, 15:46
Цитата
акже было предложено введение стандартного GUI, reflections, лямбда, sealed (ура!), перегрузка оператора "." (точка), перегрузка глобальных операторов, и много другого не менее полезного, описанного здесь.
]
Наконец-то smile

Автор: chipset 9.4.2005, 18:43
Цитата(chipset @ 9.4.2005, 05:06)

Хотелось бы также подчеркнуть что в новый стандарт войдет библиотека парсинга boost::spirit, как она же сама об этом и говорит.

Звиняюсь, сделал ошибку - планирует добавить фичи своего препроцессора Wave в новый стандарт. tnx Void'y.

Автор: Fantasist 13.4.2005, 23:51
Блин, по-моему это через чур.

Автор: chipset 14.4.2005, 00:17
Цитата(Fantasist @ 13.4.2005, 13:51)
Блин, по-моему это через чур.

Что именно?

Автор: Fantasist 15.4.2005, 22:08
Фичь слишком много. Единственно, что действительно мне лично сейчас не хватает - это поддержка динамически загружаемых библиотек. Достает, что каждую dll надо через lib подключать. Продвинутое IO тоже бы не помешало - мне в этом смысле нравиться реализация потоков в Делфи. Стандартная сериализация тоже неплохо звучит. А уж что-то типа стандартного GUI по-моему совершенно излишне.


Автор: chipset 15.4.2005, 22:14
Fantasist, это только список предложений. Несомненно что в конечном варианте большинство будет выброшено...

Автор: mr.DUDA 17.4.2005, 14:50
Что-то поздновато, имхо, взялись за перекраивание С++. И все эти фичи... Напоминает библиотеку базовых классов, а не стандарт языка (где-то я уже бОльшую часть всего перечисленного видел... кажется, в .NET smile).

Опять-таки, ИМХО, основная часть нововведений (если они будут приняты) будет попросту дублировать существующие библиотеки, достаточно устоявшиеся и отлаженные. Народ, который обходился без них, будет и дальше обходиться. А те, кому они все эти фичи нужны были раньше, уже давно перешли в JAVA или .NET

Автор: chipset 18.4.2005, 04:38
Цитата(mr @ 17.4.2005, 04:50)
апоминает библиотеку базовых классов, а не стандарт языка (где-то я уже бОльшую часть всего перечисленного видел... кажется, в .NET smile).

Да, они говорят что в основном изменения будут касаться STL.
Кстати, STL тоже как-бы входит в стандарт C++.

Цитата(mr @ 17.4.2005, 04:50)
Опять-таки, ИМХО, основная часть нововведений (если они будут приняты) будет попросту дублировать существующие библиотеки, достаточно устоявшиеся и отлаженные.

Суть в том что люди по дефолту будут знать как программировать GUI или БД, скажем как сейчас они учат STL. А сторонние библиотеки подключать - программистов может не найтись.
Хотя к примеру boost уже "негласный" стандарт.

Автор: anonymous 11.5.2005, 22:57
Блин, как бы хорошо жилось, если бы большинство использовало С++, а не эффективные (по времени решения задачи) высокоуровневые языки. Так что можно только желать скорейшего выхода "C++0x", может быть начнется новая волна интереса к С++ smile

Автор: vinick 9.6.2005, 06:59
Цитата
sealed (ура!)


А что это такое? может мне оно тоже нужно а я и не знаю smile

Автор: Dark Elf 9.6.2005, 09:00
sealed означает следующее - от класса помеченного как sealed нельзя наследоваться (реализовано в C#, а также в PHP и Java - там ключевое слово sealed заменяет ключевое слово final)

Автор: vinick 9.6.2005, 11:56
Цитата(Dark @ 9.6.2005, 09:00)
от класса помеченного как sealed нельзя наследоваться (реализовано в C#, а также в  PHP и Java - там ключевое слово sealed заменяет ключевое слово final)

хм... а может кто-нибудь привести пример где это жизненно необходимо? Я могу представить только случай паттерна Singleton, в котором запрещение наследования может принести кое-какую пользу... Но там это можно решить простым помещением конструкторов в Private область.

Автор: Guest 28.6.2005, 18:21
smile
А еще добавят оператор пробел (operator ' ') и возможность объявления разноцветных переменных. Это г-н Страуструп прикалывается.

Автор: chipset 30.7.2005, 22:45
Из CUJ:
Цитата
The big news at this ISO C++ meeting is that "C++0x" intends to be "C++09," meaning that we do intend to ship a new standard this decade.

That may seem a long way off, but it's pretty aggressive. Because of ISO balloting procedures, that means that the work needs to be pretty much technically complete by the end of 2007. This aggressive schedule leaves only five meetings to complete the bulk of the technical work. If we make that target, then 2008 will be spent on the first round of international balloting and review, and the committee will spend its two meetings that year doing the resulting cleanup and refinement work to produce the (hopefully) final text of the Standard by the end of 2008. Assuming that the result is acceptable to all of the national bodies and addresses any comments they sent, then we can spend 2009 on the second round of international balloting to approve the text and publish the Standard.

If we keep to this schedule, then by the end of 2007, you'll know what features will be in the next Standard and have a good idea of the details of how they'll work, and by the end of 2008 even the details will be fully nailed down. (Caveat: The C++ committee has slipped its schedule before. On the bright side, if we miss that date and publish the Standard in 2010 or 2011, we can always claim it's still "C++0x" but that "x" just turned out to be a hex digit.)

One consequence is that this year, the C++ committee is going to close the door on new suggestions for this revision of the Standard. Now that we've been actively soliciting submissions for three years, and we've received and reviewed in detail at least scores (and possibly hundreds) of proposals, we've set the deadline for new proposals for the fall 2005 C++ meeting to be held on October 2-8. Note that the premeeting mailing deadline is usually set for six weeks before the meeting, so if you're sitting on a secret proposal you've never shown the outside world but that you think is thoroughly baked and you want to see in C++0x, know that that's when papers are due (and you'd be best of getting feedback on the comp.std.c++ newsgroup first, because a fair number of proposals turn out to be repeats of things that have already been considered in depth and rejected, often numerous times).

Автор: RTcoder 1.8.2005, 08:34
Цитата(vinick @ 9.6.2005, 11:56)
Цитата(Dark @ 9.6.2005, 09:00)
от класса помеченного как sealed нельзя наследоваться (реализовано в C#, а также в  PHP и Java - там ключевое слово sealed заменяет ключевое слово final)

хм... а может кто-нибудь привести пример где это жизненно необходимо? Я могу представить только случай паттерна Singleton, в котором запрещение наследования может принести кое-какую пользу... Но там это можно решить простым помещением конструкторов в Private область.

Ну империя дядюшки билла сильно рада будет smile

Автор: ManiaK 8.8.2005, 09:32
Цитата(Fantasist @ 15.4.2005, 23:08)
А уж что-то типа стандартного GUI по-моему совершенно излишне.

Я считаю совсем наоборот. Если её введут Си++ значительно продвинется вперёд. В Яве же не существует десятков недоработанных и глючных GUI библиотек? Одна - зато надёжная и удобная (как утверждают и я верю).

Автор: avek 20.8.2005, 08:41
Но в Яве AFAIN 2 стандартные библиотеки GUI - AWT и SWING. И мало того, разработчики серьёзных приложений время от времени создают свои (например, SWT), потому что стандартные неудобны.
Со стандартизацией многих фич, и особенно GUI, запросто может получиться так, как с моделью иерархии сетевых протоколов ISO OSI. Есть модель в 7 уровней, есть масса теоретических изысков под неё, есть несколько стандартов API, учитывающих все 7 уровней, и никто на практике всем этим не пользуется - все юзают API сокетов, созданный под 4-уровневый стек TCP/IP.
Стандартная библиотека GUI запросто может оказаться никому не нужной, если её стандартизируют неудачно. В случае .NET, например, уже светит появление 2 библиотек - Windows.Forms и Avalon. На .NET и Java, по крайней мере, стандартная библиотека - это часть API, и не всегда можно уйти на что-то другое (апплет не сможет закачать и запустить собственную библиотеку GUI, т.к. она должна сожержать небезопасный код). На C++ получить доступ к любой другой библиотеке - никаких дополнительных проблем по сравнению со стандартной.
Так что конкретно из пункта про GUI IMHO ничего не выйдет.

Автор: np9mi7 5.1.2006, 19:48
http://www.artima.com/cppsource/cpp0x.html
Summary
Bjarne offers a sneak peek at the next version of standard C++ ("C++0x") which should be complete by 2009.
http://rsdn.ru/Forum/Message.aspx?mid=1572606&only=1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)