Re[60]: Мифический Haskell
От: vdimas Россия  
Дата: 17.04.12 17:05
Оценка:
Здравствуйте, VoidEx, Вы писали:


VE>Странно, система типов одна, код один, а кол-во операций меняется.


Ты над ним выполнил IoC, и получил другой код. Одна и та же семантика не означает, что код один и тот же. А то так можно договориться, что хорошо спроектированный код и говнокод — это одно и то же, только потому, что работают одинаково.


VE>А динамическая типизация при этом убирается?


Вообще в ООП через IoC как раз борются с излишней динамической типизацией и прочими нарушениями LSP. Т.е. семантика сохраняется, а динамических проверок типов нет. Хотя, динамическое приведение типов есть, но оно теперь скрыто механикой рантайм-полиморфизма ООП. Чем это лучше ручной преврки и приведения типов? Да всем. В первую очередь тем, что в этом месте исключен человеческий фактор.


V>>В твоем примере преобразования изчезало промежуточное состояние Either, т.е. изчезали все накладные расходы,связанные с его обслуживанием.


VE>Spineless Tagless G-machine.

VE>Только эти преобразования могут быть целиком на совести компилятора.

И что? Бета-редукция совмещенная с распространением констант до трети исходного кода способна нивелировать, если не больше, а суперкомпиляция до 3/4... И что это доказывает? НИЧЕГО. Потому что не влияет на исходный артефакт — программу, которую развивать и сопровождать и в которой еще надо будет делать ошибки и потом их искать.

===================
Знаешь что... У нас все время игра в одни ворота. Давай попробуем в другие для разминки. Возьмем пример, обратный твоим. Т.е. ты мне показывал технику из Хаскеля, реализованную на С, где у тебя система типов "там", превращалась в данные "здесь" и ты вопрошал: "а хде динамическая типизация, тут просто if?". Давай наоборот. Возьмём ООП-паттерн State (это совсем не то же самое, что монада State). В этом паттерне экземпляры внутреннего абстрактного объекта State неразличимы, если относятся к одному и тому же типу. Т.е. различимы только экземпляры разных типов. Это ключевое для паттерна. Теперь вспоминаем устройство динамического полиморфизма в мейнстримном ООП и спрашиваем себя — за счет чего различимы экземпляры только лишь различных типов в этом паттерне и при чем тут вообще система типов? Потом делаем этот паттерн в Хаскеле и получаем вместо иерархии типов-наследников абстрактного State обычный набор кортежей ф-ий, т.е. данные и код вместо типов. Вопрос на мильон $$, а куда делись типы в Хаскеле из исходного паттерна на С++?

Вот такого плана нелепыми вопросами ты меня заатаковал уже. Вроде ответил про кодирование состояний, про различные характеристики систем типов, про то, что любая информация о типах в рантайм — это ес-но данные и ничего кроме данных, и эти данные ес-но могут являться частью состояния, как это убедительно показано в ООП-паттерне State.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.