Re[3]: Пописал на С++... долго думал :)
От: vdimas Россия  
Дата: 24.10.05 10:51
Оценка:
Здравствуйте, VladD2, Вы писали:

Ш>>Влад, если ты не видишь, что пишешь, то никакой язык программирования тебе не поможет. НЕ спеши. Тише едешь -- дальше будешь.


VD>Я вижу что пишу. А от опечаток никто не застрахован. Что до языка, думаю, ты прекрасно понимашь, что никакой язык кроме С/С++ не пропустит такую лажу.


На самом деле, что-то в этом есть. В С++ полно "унаследованных" мест, которые ему вовсе не нужны. Ситуация с неверным числом аргументов макроса в т.ч.

Я бы перевел этот момент в разряд ошибок.

Далее, есть еще несколько уже давно устоявшихся мыслей по поводу введений в некий "safe С++":

— избавиться от const_cast, static_cast, reinterpret_cast, оставить лишь приведение в стиле С: (type_name)expression, но его семантику сделать эквивалентной нынешнему static_cast

— продолжая пред. пункт, запретить преобразование указателей и ссылок вниз по иерархии наследования новым оператором преобразования типа, т.е. от void* в т.ч. Разруливать подобные моменты впредь либо через dynamic_cast, либо через явные определения методов. Размеется, это создаст небольшие накладные расходы при работе с шаблонными базовыми классами, написанными в стиле ATL/WTL (пара лишних строк в исходниках), и тем не менее...

— в предыдущем пункте мы потеряли возможность произволдьной реинтерпретации памяти, однако иногда эта возможность все-таки нужна, например для тех же распределителей памяти... для сохранения возможности управления и явной реинтерпретации памяти достаточно оставить сигнатуры оператора void* operator new(size_t); и пр. с inplace new в т.ч., этого будет достаточно для реализаций STL и прочих boost.

------
Собственно, мне нравится в С++ сильная статическая типизация. По сравнению с тем же C# мне крайне редко приходлось отлаживать программы в пошаговом редакторе, используя С++. Еще немного более строгая типизация не повредила бы.

Понимаю, что тонны, просто тонны кода используют фичи, которые предлагается выкинуть или переписать... я думаю, всем от этого станет только лучше

------
проработать стандартную С-либу (не STL, а C RTL), всякие memmove, memcpy и прочие — убрать из С++. Ср-вами самого С++ их реализация станет невозможной. Останется только юзать STL. В результате избавимся сразу от нескольких классов UB, которые допускают программисты.

------
printf, va_list и пр. из этой оперы... жалко, согласен, однако "в топку". Переменное число аргументов сделать типизированным, наподобие реализации в С#.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.