Философический вопрос про автоматический вывод типов.
От: c-smile Канада http://terrainformatica.com
Дата: 05.02.06 20:19
Оценка: +1 -3
Здравствуйте, WolfHound, Вы писали:

В продолжение http://www.rsdn.ru/Forum/Message.aspx?mid=1659974&only=1
Автор: WolfHound
Дата: 05.02.06


WH>Здравствуйте, c-smile, Вы писали:


CS>>Вопрос №1: пассаж про new Tuple ... в теле цикла я не понял.

WH>Если посмотришь внимательно то это не единственное место к которому можно докопаться.
CS>>Зачем думатель это придумал?
WH>Главное то что думатель вывел все типы, а то что думатель сделал несколько локальных ляпов так это детская болезнь. Просто у ребят физически не хватает ресурсов для того чтобы сделать оптимизацию таких вещей и по этому их компилятор генерирует код по принципу "что вижу то пою".
WH>Уверен что к релизу они эти ляпы исправят.

Не уверен.
В условиях недетерминированного описания (типов в том числе) думатель
будет вынужден "стелить соломку".
Т.е. в принципе чем меньше информации имеет компилятор тем менее оптимальный
код он строит. Более универсальный — да.

VD>>>Получаем краткость скриптов, и мощь компилируемых языков.

CS>>Такая компиляция это не мощь.
WH>А что же? В программе не указано ни одного типа... тем не мение компилятор сгенерировал строго типизированный код. Если это не мошь тогда что же такое мощь?

Вопросы:
1) Что сделает думатель если увидит скажем такое:
hash[key] = flag? 1: "string";
2) C intellisense как я понимаю такой вывод типов дружить не будет?
Т.к. типы становятся известны только после построения syntax tree всей программы.

И философическая часть:

Зачем в принципе нужен такой выводитель типов?
Какие задачи он призван решить или облегчить их решение?
Какие есть средства "детерминизаци": "я хотел сказать А а думатель придумал Б".

Личное замечание:
Такая недетерминированность в C++ является источником очень неприятных и дурных ошибок.
Один раз очень долго искал в чем проблема. Оказалось в наличии двух конструкторов у
объекта: cls(int n) и cls(bool b). (или что-то подобное — не помню)
Я имел ввиду одно а думатель молча выводил другой тип... Причем разные думатели
(компиляторы) думали по разному.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.