The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Интервью с Бьерном Страуструпом, с вопросами о будущем станд..."
Отправлено Александр Чуранов, 23-Авг-08 02:59 
1) "Усилить типобезопасность языка"

Куда уж дальше усилять-то? Сначала язык изучите, причём на уровне boost::mpl, а потом смело вносите предложения. Дело в том, что при использовании современного C++ проблема "неявное преобразование unsigned int -> signed int" НИКОГДА не возникает. Светочка, Вы даже не представляете, насколько это незначительная проблема. Поэтому-то ей никто всерьёз и не занимается.

Для того, чтобы Вы могли понять это прямо сейчас, могу привести один из возможных способов решения проблемы неявного преобразования. Создаётся класс

template <
  typename Underlying,
  typename OverflowUnderflowStrategy,
  typename CStyleCastStrategy>
class safer_int;

И стратегии для него:

// OverflowUnderflowStrategy

class DoNothing;
class Throw;
class Abort;

// CStyleCastStrategy

class AllowCast;
class DisallowCast;

Теперь safer_int является кодогенератором, который может дать как полностью защищённые от неявных преобразований (а также переполнения и недополнения) типы, так и полностью незащищённые (как встроенный int), а также другие.

Далее, в программе выбираем нужное поведение:

typedef safer_int <long, Throw, DisallowCast>::type my_int;

и используем выбранный тип в коде:

my_int sqrt(my_int x);

Теперь достаточно поместить typedef в заголовочный файл и можно за секунду весь проект перевести с быстрых целочисленных типов на безопасные. Или наоборот.

В общем, одного человекодня вполне хватит.

2) "Также можно отказаться от использования заголовочных файлов"

Да, и наложить новые ограничения на трансляторы, заставляя производителей либо реализовывать дорогие решения, либо строить всех в ряд, как в Java.

Дело в том, что заголовочные файлы по сути нужны лишь для одной цели - уменьшить проблемы с нарушением ODR. И если их грамотно использовать, то такие вопросы, как у Вас даже возникать не будут. Это тоже малозначительная проблема.

3) Вообще советую всем сначала прочесть любую книгу уровня "Modern C++ Design" Андрея Александреску, а также все книги, что понадобятся, чтобы это понять. А потом можно и дискуссии разводить. Только вопросы будут совсем другими...

Ссылки:
http://en.wikipedia.org/wiki/Header_file
http://www.boost.org/
http://en.wikipedia.org/wiki/Modern_C%2B%2B_Design

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру