metaclass: (дзедline)
metaclass ([personal profile] metaclass) wrote2013-03-13 10:40 am

ООП потиху закапывают

http://avva.livejournal.com/2581700.html
Все, что было полезного в ООП, унесли в другие парадигмы (если оно раньше еще оттуда не было заимствовано), остальное решили закопать :)

[identity profile] xeno-by.livejournal.com 2013-03-13 08:24 am (UTC)(link)
Я откомментировал в оригинальном посте, но еще и тут бы хотел отметиться. Термами, вложенными в неймспейсы, действительно, никого не удивишь. Но типы, вложенные в неймспейсы, это оригинально, нетривиально, красиво и полезно: http://xeno-by.livejournal.com/75612.html. Для меня ООП это именно это и есть.

Для меня ООП это именно это и есть.

[identity profile] artureg.livejournal.com 2013-03-13 08:54 am (UTC)(link)
ООП у каждого свой!
Для меня это - сладкий эфир, пропитавший мою душу. ООП - это стремление к совершенству, как к внешнему, так и к духовному. Это умение увидеть прекрасное среди ужаса и ужас среди красоты. Это стремление ни одной секунды жизни не потерять напрасно. Это островок морали и эстетики в океане уродства и бесчестия. Возрождение высоких идеалов, забытых и опошленных в широкой культуре. Вызов традиционным институтам общества, пропитанным заблуждениями. Это некая маленькая сущность, неотделимая от большой души...

Re: Для меня ООП это именно это и есть.

[identity profile] xeno-by.livejournal.com 2013-03-13 08:55 am (UTC)(link)
Если это намек на оторванность от реальности, то описываемое в посте уже давно есть в Скале, а не просто является одной из миллиона идей в ноосфере.

Re: Для меня ООП это именно это и есть.

[identity profile] artureg.livejournal.com 2013-03-13 09:00 am (UTC)(link)
Нет, это намёк на то, что за аббревиатурой ооп скрывается всё что угодно но ни как не "типы, вложенные в неймспейсы" :)

Re: Для меня ООП это именно это и есть.

[identity profile] xeno-by.livejournal.com 2013-03-13 09:05 am (UTC)(link)
У ООП есть столько трактовок, что еще одна, довольно близкая к одной из общепринятых, ему не помешает.

Могу сказать по своему опыту в Скале. Вначале на поверхности типа обычное жабье или сишарповое ООП, а потом втягиваешься и понимаешь, что это как бы оно, но на самом деле и не оно - более удобное, расширяемое (ну и т.д. - эпитеты вы тоже придумывать умеете =)).

[identity profile] stdray.livejournal.com 2013-03-13 09:33 am (UTC)(link)
>У ООП есть столько трактовок

Мало кто формализует понятия вроде "функциональное программирование", "объектно-ориентированное программирование", "декларативность" и прочее. Это никому не надо. Всякие воены хотят воевать со своим собственным "ООП", его побеждать, хоронить и потом делиться радостью победы в бложиках. Без подробностей, конечно, с кем воевали на этот раз. А чаще всего в качестве врага выступает бывшая или нынешнея бытовуха. Победил, и уже можно не искать истоки проблем и неудач в себе и окружающих людях, а все свалить на ООП.

[identity profile] metaclass.livejournal.com 2013-03-13 09:32 am (UTC)(link)
Конкретно в скале ООП сделано правильным образом. Хотя некоторые моменты я еще не осилил.

[identity profile] metaclass.livejournal.com 2013-03-13 09:34 am (UTC)(link)
Объясни более подробно, что такое "типы вложенные в неймспейсы"?
(deleted comment)

[identity profile] xeno-by.livejournal.com 2013-03-13 09:28 am (UTC)(link)
я имел ввиду экзистенциальные типы как, например, в Nested Types Одерского
(deleted comment)

[identity profile] xeno-by.livejournal.com 2013-03-13 09:36 am (UTC)(link)
это не про то (типы != классы). гляньте паперу Одерского "Nested Types" (http://lampwww.epfl.ch/~odersky/papers/fool01.ps, там матан только в аппендиксе) или вот бложек Спивака: https://www.precog.com/blog-precog-2/entry/existential-types-ftw (ту часть, где type User <: UserLike).
Edited 2013-03-13 09:39 (UTC)

[identity profile] xeno-by.livejournal.com 2013-03-13 09:43 am (UTC)(link)
приношу извинения за неточную формулировку. более точно вместо "вложенные в неймспейсы" было бы сказать "вложенные в модули".

здесь просто очень важно, что контейнер - первоклассная сущность (т.е. его можно передавать в функции, возвращать из функций, можно делать if (blah) module1 else module2). обычная коннотация слова "неймспейс" это что-то второсортное вроде пакета в жабе или неймспейса в шарпе или плюсах, а это начисто убивает всю соль задумки.

в чем собственно задумка? это описано по ссылкам в родительском каменте: http://metaclass.livejournal.com/788219.html?thread=16796923#t16796923
Edited 2013-03-13 09:45 (UTC)
(deleted comment)

[identity profile] xeno-by.livejournal.com 2013-03-13 10:06 am (UTC)(link)
type User из примера выше нигде не используется по полностью квалифицированному имени. в чем именно заключается проблема?
(deleted comment)

[identity profile] metaclass.livejournal.com 2013-03-13 10:58 am (UTC)(link)
new вызывать же запрещено, это tight coupling.
Лучшие погонщики индусов приказывают в этом случае создавать и явно ссылаться на внутренние классы только внутри их контейнеров, где имя короткое. А снаружи за нас вывод типов пусть думает.
(deleted comment)

[identity profile] xeno-by.livejournal.com 2013-03-13 11:12 am (UTC)(link)
Главное - сокрытие деталей реализации. В жабе или шарпе с интерфейсами это получается очень многословно, но в Скале есть лучший способ, который не требует набивания текста более необходимого. Опять же, гляньте линку.
(deleted comment)

(no subject)

[identity profile] xeno-by.livejournal.com - 2013-03-13 12:29 (UTC) - Expand

[identity profile] metaclass.livejournal.com 2013-03-13 11:14 am (UTC)(link)
Насколько я понимаю, в скале объявлять явно типы переменных вообще мало где нужно.

По идее, в параметрах методов могут быть такие проблемы, но методы либо живут там же где и типы, либо работают с супертипами вроде общих трейтов (и живут в этих же трейтах).

Т.е. вариант "модуль А ссылается на глубоко внутренние типы модуля B по полному пути" - это скорее всего, плохо разложили код по модулям, такого в норме быть не должно.

[identity profile] xeno-by.livejournal.com 2013-03-13 11:10 am (UTC)(link)
Почитайте ссылку все-таки. Юзер из примера не предназначен для инстанциации извне по своему имени (поэтому я и написал, что тип != класс), а служит для описания контракта модуля.
(deleted comment)

(no subject)

[identity profile] xeno-by.livejournal.com - 2013-03-13 11:14 (UTC) - Expand
(deleted comment)

(no subject)

[identity profile] xeno-by.livejournal.com - 2013-03-13 12:35 (UTC) - Expand
(deleted comment)

(no subject)

[identity profile] xeno-by.livejournal.com - 2013-03-13 13:02 (UTC) - Expand
(deleted comment)

(no subject)

[identity profile] xeno-by.livejournal.com - 2013-03-13 13:12 (UTC) - Expand
(deleted comment)

(no subject)

[identity profile] xeno-by.livejournal.com - 2013-03-13 13:21 (UTC) - Expand
(deleted comment)

(no subject)

[identity profile] xeno-by.livejournal.com - 2013-03-13 13:48 (UTC) - Expand
(deleted comment)

(no subject)

[identity profile] xeno-by.livejournal.com - 2013-03-13 13:54 (UTC) - Expand
(deleted comment)

(no subject)

[identity profile] xeno-by.livejournal.com - 2013-03-13 14:01 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-03-13 13:55 (UTC) - Expand

(no subject)

[identity profile] xeno-by.livejournal.com - 2013-03-13 14:03 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-03-13 14:07 (UTC) - Expand

(no subject)

[identity profile] xeno-by.livejournal.com - 2013-03-13 14:10 (UTC) - Expand

(no subject)

[identity profile] jdevelop.livejournal.com - 2013-03-14 01:52 (UTC) - Expand

[identity profile] nivanych.livejournal.com 2013-03-14 07:06 am (UTC)(link)
> Паскаль, модула, оберон...
Agda...

[identity profile] xeno-by.livejournal.com 2013-03-13 09:43 am (UTC)(link)
приношу извинения за неточную формулировку. более точно вместо "вложенные в неймспейсы" было бы сказать "вложенные в модули" : http://metaclass.livejournal.com/788219.html?thread=16797691#t16797691