Re[10]: Динамический массив на стэке
От: Ops Россия  
Дата: 08.09.11 14:58
Оценка:
Здравствуйте, gegMOPO4, Вы писали:

MOP>Здравствуйте, Ops, Вы писали:

Ops>>Здравствуйте, gegMOPO4, Вы писали:
MOP>>>Здравствуйте, Ops, Вы писали:
Ops>>>>Здравствуйте, gegMOPO4, Вы писали:
MOP>>>>>Затем, что это мы можем сделать прямо сейчас, существующими универсальными средствами языка, а вот выделять переменный размер на стеке — уже понадобиться вводить новую базовую фичу, менять грамматику языка. И очень специализированную фичу. Вот не было бы в языке классов, шаблонов, инлайна и перегрузки операторов — тогда это имело бы смысл. Но это не был бы C++.
Ops>>>>Слава яйцам, что не Вы решаете, что нужно в стандарте, иначе бы мы не только лямбд не дождались, но и шаблонов бы не увидели.
MOP>>>Укажете пункт стандарта, в котором описаны локальные массивы нефиксированной длины?
Ops>>Ну и я об этом. Если бы Вы решали — там бы и пунктов про шаблоны не было.

MOP>Я вам излагаю причины, по которым этого в стандарте нет, а вы о чём?


Вы излагаете то, что Вам кажется, а не причины. Я не вижу серьезных проблем с добавлением подобной фичи в язык. В GCC же сделали, не затронув всего языка, и ни классы, ни шаблоны этому не помешали. От Вас — ни одного аргумента против, только утверждения, что лучше все делать "существующими универсальными средствами языка".

MOP>Или не приписав собеседнику какую-то очевидно бредовую мысль (я ведь ничего не говорил о своём отношении к шаблонам и массивам переменного размера) и не развенчав её, день пропал зря?


Дальше спорить не хочу, т.к. бесполезно.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: нет стэка кроме std::stack<T>
От: B0FEE664  
Дата: 08.09.11 15:51
Оценка: 1 (1)
Здравствуйте, Muxa, Вы писали:


Вообще-то (в стандарте C++11):

1.9.1
The semantic descriptions in this International Standard define a parameterized nondeterministic abstract
machine
. This International Standard places no requirement on the structure of conforming implementations.



1.9.7 An instance of each object with automatic storage duration (3.7.3) is associated with each entry into its
block. Such an object exists and retains its last-stored value during the execution of the block and while the
block is suspended (by a call of a function or receipt of a signal).



15.2.3
The process of calling destructors for automatic objects constructed on the path from a try block to a
throw-expression is called “stack unwinding.”

Но это не значит, что переменные лежат в стеке.

Стека выполнения может и не быть
И каждый день — без права на ошибку...
Re[11]: Динамический массив на стэке
От: B0FEE664  
Дата: 08.09.11 15:51
Оценка: +1
Здравствуйте, gegMOPO4, Вы писали:

MOP>Здравствуйте, B0FEE664, Вы писали:

BFE>>Здравствуйте, Ops, Вы писали:
Ops>>>Зачем отдельную область аллокации, когда уже есть стек?
BFE>>Как известно
Автор: B0FEE664
Дата: 07.09.11
, стандарт я ещё не прочитал. Вы уверены, что стек упоминается в стандарте С++ и обязателен при реализации ?


MOP>Да, в стандарте C++11 он упоминается. 23.6.5.

Это совсем другой стек
И каждый день — без права на ошибку...
Re[11]: Динамический массив на стэке
От: gegMOPO4  
Дата: 08.09.11 16:49
Оценка:
Здравствуйте, Ops, Вы писали:
MOP>>>>Укажете пункт стандарта, в котором описаны локальные массивы нефиксированной длины?
Ops>>>Ну и я об этом. Если бы Вы решали — там бы и пунктов про шаблоны не было.
MOP>>Я вам излагаю причины, по которым этого в стандарте нет, а вы о чём?
Ops>Вы излагаете то, что Вам кажется, а не причины. Я не вижу серьезных проблем с добавлением подобной фичи в язык. В GCC же сделали, не затронув всего языка, и ни классы, ни шаблоны этому не помешали. От Вас — ни одного аргумента против, только утверждения, что лучше все делать "существующими универсальными средствами языка".

Если вас не устраивает этот ниодин аргумент, то вам, безусловно, нетрудно будет привести настоящие причины, по которым в языке C++ до сих пор нет массивов с неконстантным количеством элементов.

Ops>Дальше спорить не хочу, т.к. бесполезно.


Вот это правильно, и не нужно было спорить о вещах, в которых не разбираетесь.
Re[4]: Динамический массив на стэке
От: MescalitoPeyot Украина  
Дата: 08.09.11 18:30
Оценка:
Здравствуйте, gegMOPO4, Вы писали:

MOP>Т.е. вы не понимаете, почему vector, string и iostream реализованы на C++, а не являются примитивами языка?


С такой точки зрения нам и переменное число аргументов не нужно: я и на std::stack<boost::any> printf набросать смогу. Кроме того, не видел ни одного плюсового компилятора, который не умеет компилить сишный код, так что у всех кто собирается поддерживать новейший прям только вчера принятый С99 эта фича будет работать из коробки.
Re[5]: Динамический массив на стэке
От: gegMOPO4  
Дата: 08.09.11 19:07
Оценка:
Здравствуйте, MescalitoPeyot, Вы писали:
MP>Здравствуйте, gegMOPO4, Вы писали:
MOP>>Т.е. вы не понимаете, почему vector, string и iostream реализованы на C++, а не являются примитивами языка?
MP>С такой точки зрения нам и переменное число аргументов не нужно: я и на std::stack<boost::any> printf набросать смогу.

printf уже был в C, и широко использовался. Пришлось поддерживать. А так, конечно, эллипсис (в том виде, как пришёл из C) — зло. Но с этим ничего не поделаешь.

MP>Кроме того, не видел ни одного плюсового компилятора, который не умеет компилить сишный код, так что у всех кто собирается поддерживать новейший прям только вчера принятый С99 эта фича будет работать из коробки.


C++ разрабатывался (почти) совместимым с тогдашним C, чтобы можно было использовать уже наработанный код и плавно переходить к использованию достоинств C++. Для C99 такой проблемы нет — те, кто почему-то используют C99 (а не ограниченное подмножество C++), в курсе, какие фичи несовместимы с C++, да и кода такого мало.

Компиляторы C++ не обязательно поддерживают C99. И необязательно смешивание C++ и C99 безопасно.
Re[8]: Динамический массив на стэке
От: Pzz Россия https://github.com/alexpevzner
Дата: 08.09.11 23:30
Оценка: +1
Здравствуйте, gegMOPO4, Вы писали:

Pzz>>У большинства, кстати, указателя стека именно что нету. В качестве такового используется регистр общего назначения.


MOP>Даже если это РОН, то РОН выделенный, зарезервированный для этой цели (как и указатель команд). Ведь у процессора есть и команда вызова подпрограммы, и прерывания.


Будете смеяться, специальной команды вызова подпрограммы может и не быть. А для обработки прерываний на архитектурах без встроенного аппаратного стека может использоваться механизм переключения банков регистров.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.