Re[19]: Мэйнстрим vs. Самосовершенствование :)))
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.11.04 06:18
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Сложный вопрос...


Да уж не ис простых.

ПК> Там проблема, скорее, не в качестве принимаемых решений, а в скорости их принятия. А, вообще, достаточно большое количество обсуждающихся предложений как раз направлено на упрощение изучения и использования языка.


Что-то у меня такого впечатления не создалось. Ну, да поживем увидим. Когда они планируют выпустить новый стандарт?

ПК>Значит, надо искать такой язык, который тебе позволяет это делать удачнее всего. Мне же, с моим предпочтением использования смеси парадигм, C++ пока вполне подходит.


Да я вроде уже нашел. На 100% он не удовлетворяет, но уж точно лучше остальных.

>> В принципе, дорасширение классов не такая уж и плохая диея. Хотя и протеворечащая классике ООП.


ПК>Если, как в указанном предложении, добавляемые функции не будут получать специальных прав доступа к содержимому класса, то "классика" сможет спать спокойно


Возможно. Но духу это явно противоречит.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[41]: Мэйнстрим vs. Самосовершенствование :)))
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 06.11.04 07:20
Оценка:
Здравствуйте, VladD2, Вы писали:

AVK>>Качественно СОМ к примеру не обернешь.


VD>Так TlbImp.exe именно это и делает.


Неа. Он только к этому подготавливает. Реально же поддержка некоторого интерфейса у СОМ-объекта появляется только в момент приведения (и вызова внутрях QueryInterface). Оно и понятно — в общем случае до вызова этого самого QueryInterface понять поддерживает ли данный конкретный экземпляр некий интерфейс невозможно.
... << RSDN@Home 1.1.4 beta 3 rev. 224>>
AVK Blog
Re[42]: Мэйнстрим vs. Самосовершенствование :)))
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.11.04 10:18
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Неа. Он только к этому подготавливает. Реально же поддержка некоторого интерфейса у СОМ-объекта появляется только в момент приведения (и вызова внутрях QueryInterface). Оно и понятно — в общем случае до вызова этого самого QueryInterface понять поддерживает ли данный конкретный экземпляр некий интерфейс невозможно.


Дык сам итрефейс появляется после генерации, уж поддержка самих КОМ-объектов строена в нутрь ЦДР и является частью интеропа.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[43]: Мэйнстрим vs. Самосовершенствование :)))
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 06.11.04 10:30
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Дык сам итрефейс появляется после генерации, уж поддержка самих КОМ-объектов строена в нутрь ЦДР и является частью интеропа.


Ага. И называется эта поддержка TransparentProxy
... << RSDN@Home 1.1.4 beta 3 rev. 224>>
AVK Blog
Re[44]: Мэйнстрим vs. Самосовершенствование :)))
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.11.04 11:30
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Ага. И называется эта поддержка TransparentProxy


Ты уверен? По-моему она называется CCW/RCW.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: Мэйнстрим vs. Самосовершенствование :)))
От: Undying Россия  
Дата: 06.11.04 21:48
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

>> Например, заменить пузырьковую сортировку быстрой.


ПК>Если речь идет о функции с абстрактным названием sort, то это же можно сделать и для "внешней" функции...


В общем случае нельзя, т.к. замена реализации внешней фукнции sort скажется на всех классах ее использующих, а нам нужно только в этом конкретном классе.

ПК>Уж точно не буду под это дело модифицировать функцию sort() класса Array Это как раз тот случай, когда я говорил о знании контекста. Для контейнера деталей у нас будет свой класс, изолирующий нас от знания, на каком из "базовых" контейнеров он построен. У этого класса, оперирующего понятиями предметной области, вполне может быть функция sort(), т.к. она является одной из его прямых обязанностей.


А какие правила ты используешь, чтобы отличить прямую обязанность класса от непрямой?

ПК> Правда, скорее, не в самом классе контейнера деталей, а в каком-то классе, обозначающем стратегию его сортировки, с которым у контейнера деталей, если и будет связь, то ассоциативная (в смысле association — без понятия, как правильно переводится ). Вот ее-то и можно будет менять и в хвост, и в гриву по требованию заказчика.


Т.е. контейнер деталей в общем случае должен включать некий Sorter? Должен ли при этом метод Sorter.Sort() выставляться в интерфейс контейнера деталей или ты считаешь приемлимой запись вида detail.Sorter.Sort()?

ПК>По умолчанию в подобных алгоритмах используется функтор std::less<T>, который, в свою очередь, по умолчанию использует операцию "<" для данного типа. Соответственно, пользователь имеет выбор из трех возможностей настройки поведения "стандартных" алгоритмов:

ПК>
  • определить для своего типа операцию "<" (наиболее простой вариант)
    ПК>
  • передать в алгоритм свой функтор (самый гибкий вариант, позволяющий задавать критерии сортировки для каждого вызова каждого из алгоритмов отдельно)
    ПК>
  • написать специализацию для std::less<> для своего типа (пожалуй, наиболее редко используемая возможность)

    Понятно.

    >> По-идее, каждый объект который может толкаться должен реализовывать IТолкатель, т.е. уметь возвращать характеристики толкания, далее уже эти характеристики передаются в соответствующий метод шарика и он как-то реагирует.


    ПК>Может, да, может, нет.


    Хочешь сказать, что толкаться не прямая обязанность объекта?

    ПК> Факторы, участвующие в общей картине очень сильно усложняются, если есть обобщенное программирование и независимые библиотеки, предоставляющие различные шаблоны, которыми хочется пользоваться в одном месте.


    Так ты все-таки в проектах используешь библиотеки напрямую или пишешь над ними обертки?

    ПК> В этом случае наиболее удобным оказывается следование в этих библиотеках каким-то универсальным соглашениям (например, использование внешней функции "<" для сравнения), нежели требование к пользователю библиотечного класса реализовывать какой-то заданный интерфейс, т.к. эти интерфейсы тогда "плодятся" со страшной скоростью, свои для различных библиотек...


    Ты имеешь в виду обобщающие интерфейсы, т.е. содержащие различные комбинации уже имеющихся?

    ПК>Во многих внутренних проектах можно (а в некоторых и нужно) рефакторить налево и направо Плюс, в "конечных" проектах присутствует знание предметной области, и методы "основных" интерфейсов классов более высокоуровневые. Поэтому, как в примере выше, и sort() в них вполне может попасть. Но, имхо, рефакторинг даже внутренних проектов все время направлен на все большую гибкость компонент, а следовательно, все меньшую между ними зависимость,


    Гибкости есть две: 1. возможность изменения реализации без изменения использующего кода 2. возможность собирать новые классы из готовых кирпичиков (например, внешних функций). Ты при рефакторинге какой гибкости отдаешь приоритет?

    ПК> и все меньшее количество обязанностей, "висящих" на каждом из классов.


    Что ты понимаешь под обязанностями класса?

    ПК>А от некоторых из внутренних проектов зависит большое количество других подсистем, соответственно, они должны быть более стабильными, чем остальные, и, следовательно, к ним в большей степени уже применимы "библиотечные" методы (обратная совместимость), чем методы "активной разработки" (рефакторинг).


    Если библиотека хорошо спроектирована, то в ней можно применять большинство видов рефакторинга.

    ПК>Как ты часто повторяешь одно из моих любимых высказываний: there's no silver bullet


    Но к ней нужно стремиться.
    ... << RSDN@Home 1.1.2 stable >>
  • Re[20]: Мэйнстрим vs. Самосовершенствование :)))
    От: Павел Кузнецов  
    Дата: 07.11.04 02:03
    Оценка:
    VladD2,

    > ПК> Там проблема, скорее, не в качестве принимаемых решений, а в скорости их принятия. А, вообще, достаточно большое количество обсуждающихся предложений как раз направлено на упрощение изучения и использования языка.


    > Что-то у меня такого впечатления не создалось. Ну, да поживем увидим. Когда они планируют выпустить новый стандарт?


    Называлась только ориентировочная дата, 2008 год.
    Posted via RSDN NNTP Server 1.9 gamma
    Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
    Re[21]: Мэйнстрим vs. Самосовершенствование :)))
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.11.04 13:32
    Оценка: -1 :)
    Здравствуйте, Павел Кузнецов, Вы писали:

    ПК>Называлась только ориентировочная дата, 2008 год.


    Гы. К этому моменту МС и Сан еще по ревизии языка произведут. Ох боюсь этот стандарт к тому времени уже мало актиульным станет.
    ... << RSDN@Home 1.1.4 beta 3 rev. 207>>
    http://nemerle.org/Banners/?g=dark
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[45]: Мэйнстрим vs. Самосовершенствование :)))
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 07.11.04 14:48
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:

    AVK>>Ага. И называется эта поддержка TransparentProxy


    VD>Ты уверен?


    Абсолютно.

    VD> По-моему она называется CCW/RCW.


    Так, CCW это вобще не из той оперы, это unmanaged СОМ-сервер внутрях mscoree. Что же касается RCW, то это как раз и есть специальная COM-RP, с TP которой ты и работаешь в случае общения с СОМ.
    ... << RSDN@Home 1.1.4 beta 3 rev. 224>>
    AVK Blog
    Re[29]: Мэйнстрим vs. Самосовершенствование :)))
    От: vdimas Россия  
    Дата: 09.11.04 00:54
    Оценка: +1
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Итого мы имеем трехуровневую систему преобразований, гибкую и удобную одновременно, свободную от недостатков обоих крайностей. Для обучения(вспоминая исходную тему обсуждения) это конечно не зашибись, зато обалденно удобно.


    Да нет, не обалденно, разумеется
    это все от того что в дотнете отсутствуют мультиметоды и глобальные ф-ии.

    Скажем так, располагая средствами дотнета, это есть "самое компромисное решение", не более того...

    (Операторы преобразования типов — первые кандидаты на мультиметоды, однако у нас под рукой только методы классов.)
    Re[6]: Oberon???????????????????????????????????
    От: poilk  
    Дата: 09.11.04 08:32
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    VD>>>А на что там смотреть?


    P>>Видимо то, что на олимпиаде используют VC6, Delphi и Java.


    VD>И в чем обман? Да и вообще-то я так и не заметил требований к языкам и компиляторам.


    http://neerc.ifmo.ru/information/contest-rules.html

    оттуда:

    The following programming languages are available to each team:
    Pascal
    C
    C++
    Java

    The following programming environments are available to each team:
    Borland Delphi 6.0 Personal UP3
    Microsoft Visual C/C++ 6.0 SP6
    Java 2 SDK 1.4.2_05
    Eclipse 3.0.1
    Far Manager 1.7b5
    MSDN April 2001


    И как я понял, человек хотел ответить на это
    Автор: LaptevVV
    Дата: 20.10.04
    утверждение
    Re[17]: Oberon???????????????????????????????????
    От: faulx  
    Дата: 11.11.04 12:30
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:


    VD>Ничего мне не мешат. Я довольно адекватно могу оценивать достоинства если они очевидны. Все эти х[3:5] долеко не очевидны. Они требуют объяснения на пальцах. А вот x.substring(3, 5) как раз можно понять и без объяснения.


    Кстати, интересное наблюдение. О синтаксисе х[3:5] и x.substring(3, 5) я впервые узнал из этого сообщения, однако еще до того, как прочитал, что речь идет о подстроках, понял смысл выражения х[3:5], а когда дошел до x.substring(3, 5), сразу возник вопрос: а 5 — это последний символ или длина подстроки? (Ответа вопрос не требует)

    Так что "очевидность" — вещь субъективная.
    Re[18]: Oberon???????????????????????????????????
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 11.11.04 14:47
    Оценка: +1
    Здравствуйте, faulx, Вы писали:

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



    VD>>Ничего мне не мешат. Я довольно адекватно могу оценивать достоинства если они очевидны. Все эти х[3:5] долеко не очевидны. Они требуют объяснения на пальцах. А вот x.substring(3, 5) как раз можно понять и без объяснения.


    F>Кстати, интересное наблюдение. О синтаксисе х[3:5] и x.substring(3, 5) я впервые узнал из этого сообщения, однако еще до того, как прочитал, что речь идет о подстроках, понял смысл выражения х[3:5],


    Да? И что же по-твоему означает 5? И как ты пришел к этому выводу.

    F> а когда дошел до x.substring(3, 5), сразу возник вопрос: а 5 — это последний символ или длина подстроки? (Ответа вопрос не требует)


    Очень даже требует. Substring — это метод. И как и любой метод он имеет описание (всплывающую подсказку). Так что как только ты подводишь к нему мышь или когда вбиваешь открывающую скобку, то сразу видишь что значит 3 и 5.

    F>Так что "очевидность" — вещь субъективная.


    До определенной степени.
    ... << RSDN@Home 1.1.4 beta 3 rev. 207>>
    http://nemerle.org/Banners/?g=dark
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[19]: Oberon???????????????????????????????????
    От: faulx  
    Дата: 15.11.04 07:56
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:


    VD>Да? И что же по-твоему означает 5? И как ты пришел к этому выводу.


    Интуитивно понял

    F>> а когда дошел до x.substring(3, 5), сразу возник вопрос: а 5 — это последний символ или длина подстроки? (Ответа вопрос не требует)


    VD>Очень даже требует. Substring — это метод. И как и любой метод он имеет описание (всплывающую подсказку). Так что как только ты подводишь к нему мышь или когда вбиваешь открывающую скобку, то сразу видишь что значит 3 и 5.

    Странно, у меня в браузере ничего не показывается А если серьезно, то это не аргумент. Может, у x[3:5] тоже есть всплывающая подсказка?

    F>>Так что "очевидность" — вещь субъективная.


    VD>До определенной степени.


    Но в данном конкретном случае — субъективная. И я хотел сказать только это.
    Re[9]: Мэйнстрим vs. Самосовершенствование :)))
    От: faulx  
    Дата: 15.11.04 09:00
    Оценка: 5 (1)
    Здравствуйте, eugals, Вы писали:

    E>А что со смолтоком? gnusmalltalk, насколько я вижу, ни жив ни мерт

    E>Есть конечно VW NС, но это дело такое — сегодня они его поддерживают, а завтра бросят...
    E>Стремно как-то основывать долгоживущие разработки на такой основе.
    E>Даже если честно купить коробку, всё равно стрёмно. Вдруг они завтра разорятся (продажи-то небольшие, небось).
    E>Или продадутся какому-нибудь SUN-у (как с Self-ом было).
    E>А как обстоит дело с совместимостью?
    E>Насколько реально перевести крупный проект с VW на Dolphin или обратно?

    Seaside переносили со squeak на VW, здесь есть описание. Кажется, вполне реально.

    Кстати, Seaside — очень любопытная штука, я и Smalltalk смотрел только из-за него.
    Re[20]: Oberon???????????????????????????????????
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.11.04 13:25
    Оценка: -1
    Здравствуйте, faulx, Вы писали:

    VD>>Да? И что же по-твоему означает 5? И как ты пришел к этому выводу.


    F>Интуитивно понял


    Так и все же что?

    F>>> а когда дошел до x.substring(3, 5), сразу возник вопрос: а 5 — это последний символ или длина подстроки? (Ответа вопрос не требует)


    F>Странно, у меня в браузере ничего не показывается А если серьезно, то это не аргумент. Может, у x[3:5] тоже есть всплывающая подсказка?


    Нет.

    F>Но в данном конкретном случае — субъективная. И я хотел сказать только это.


    Думаю, что субъективность резко развеится если попытаться написать реальный код на обоих средах. Синтаксис x[3:5] хорош тем, что он резко компактнее, но понятен он даже хуже чем метод.
    ... << RSDN@Home 1.1.4 beta 3 rev. 207>>
    http://nemerle.org/Banners/?g=dark
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[21]: Oberon???????????????????????????????????
    От: faulx  
    Дата: 16.11.04 07:25
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:

    VD>>>Да? И что же по-твоему означает 5? И как ты пришел к этому выводу.


    F>>Интуитивно понял


    VD>Так и все же что?


    Думаю, подстроку с 3 по 5 элемент. Нет?

    F>>>> а когда дошел до x.substring(3, 5), сразу возник вопрос: а 5 — это последний символ или длина подстроки? (Ответа вопрос не требует)


    F>>Странно, у меня в браузере ничего не показывается А если серьезно, то это не аргумент. Может, у x[3:5] тоже есть всплывающая подсказка?


    VD>Нет.


    Не убедил. Всплывающая подсказка — не свойство языка. Иначе можно сказать, например, что язык X более понятен, чем Y, потому что у меня есть знакомый специалист по X, который мне все объяснит. Давай поставим языки в равные условия: пусть тексты программ на них напечатаны на бумаге без всяких подсказок, раскраски синтаксиса и т.п.

    F>>Но в данном конкретном случае — субъективная. И я хотел сказать только это.


    VD>Думаю, что субъективность резко развеится если попытаться написать реальный код на обоих средах.


    Я не говорил про написание (тем более в "средах"), а только про чтение с листа.

    VD>Синтаксис x[3:5] хорош тем, что он резко компактнее, но понятен он даже хуже чем метод.


    А мне он показался понятнее. Следовательно, существуют люди, которым это понятнее. Следовательно, нельзя говорить, что запись x[3:5] менее интуитивно понятна для всех. Следовательно, интуитивная понятность — субъективное понятие. Что и требовалось доказать.
    Re[22]: Oberon???????????????????????????????????
    От: eugals Россия  
    Дата: 16.11.04 08:24
    Оценка:
    Здравствуйте, faulx, Вы писали:

    F>Думаю, подстроку с 3 по 5 элемент. Нет?

    >>> "012345678"[3:5]
    '34'
    ... << RSDN@Home 1.1.4 beta 3 rev. 215>>
    Re[23]: Oberon???????????????????????????????????
    От: faulx  
    Дата: 16.11.04 08:37
    Оценка:
    Здравствуйте, eugals, Вы писали:

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


    F>>Думаю, подстроку с 3 по 5 элемент. Нет?

    E>
    >>>> "012345678"[3:5]
    E>'34'
    E>


    То есть индексация начинается с 0? В данном случае это не принципиально (хотя, кстати, это может создать трудность при обучении). В x.substring(3,5) тоже неясно, откуда начинается индексация.
    Re[24]: Oberon???????????????????????????????????
    От: faulx  
    Дата: 16.11.04 09:01
    Оценка:
    Здравствуйте, faulx, Вы писали:

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


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


    F>>>Думаю, подстроку с 3 по 5 элемент. Нет?

    E>>
    >>>>> "012345678"[3:5]
    E>>'34'
    E>>


    F>То есть индексация начинается с 0? В данном случае это не принципиально (хотя, кстати, это может создать трудность при обучении). В x.substring(3,5) тоже неясно, откуда начинается индексация.


    Не увидел сразу, что дело не только в начале индексации, а еще и в том, что 5 указывает на позицию после желаемого последнего символа. Понятно, сделано как в STL. Тоже при обучении может возникнуть трудность. Что ж, признаю, что догадка моя отчасти была неверна, однако прошу заметить, что главное, а именно то, что имеется в виду операция выделения подстроки я все-таки угадал верно. Это уже немало, особенно для тех, кто не знает, что значит нерусское слово substring Также немаловажно, что в x.substring(3,5) неясностей с тем, что такое 3 и 5 по крайней мере не меньше, чем в x[3:5].

    Впрочем, Python я как и раньше недолюбливал, так и после знакомства с этой деталью синтаксиса отношения не поменял. В плане конструктивного предложения могу подкинуть идею обучения на TCL/TK. По крайней мере дети на первом же занятии сделают полноценное GUI-приложение.
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.