Re[21]: Metaprogramming et al
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.07.05 13:31
Оценка: -1
Здравствуйте, vdimas, Вы писали:

V>Да нет, ты просто потерял нить разговора и уже давно. Вся ветка была о "клевом подходе" к разработке веба на LISP в эпоху CGI.


В данном случае обсуждалась исключительно адекватность вывода.

V>blah-blah-blah...

V>для тебя С++ — как красная тряпка для быка, удивляться его использованию в реальных проектах ты способен (намерен?) бесконечно.

Я вообще это не обсуждал. Еще раз тебе повторяю, что ты сражаешся с ветренными мельницами. Но если тебе охота получить вопрос о применении С++ в веб-проектах, то отвечу. Я таких людей считаю фанатиками и маньяками не способными принять адекватное решение.

Что же до С++ и красных тряпок... то мне плевать на этот язык. Просто его слишко часто суют во все дыры. Это и раздражает.

V>>>Я лишь добавил пару комментов к их выбору...


VD>>А они тебя просили?


V>А тебя?


А я то тут причем? Коментарии то ты добавлял.

V>С тобой, ты тут всех вокруг обвинил в отсутствии логики, вроде: http://www.rsdn.ru/Forum/Message.aspx?mid=1268534&only=1
Автор: VladD2
Дата: 12.07.05


V>Ты привел с потолка взятый аргумент, насчет длины цикла, который я и оспорил. Занятно уже то, что твой же аргумент никак не относился к твоей же логике...


Извини, но большей неадекватности на этих форумах встретить тяжело. Я не приводил никаких аргументов по длиннам циклов. Я заметил банальный алогизм в рассуждениях. Если ты не понял моих слов, то просто збудь их. Мне этот бессмысленный разговор порядком надоел.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Metaprogramming et al
От: mogadanez Чехия  
Дата: 26.07.05 15:01
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Большое достоинство языка... простота получения вылета.


"Dead Programs Tell No Lies"
(с) Andrew Hunt, David Thomas, Pragmatic Programmer: From Journeyman to Master
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[12]: Metaprogramming et al
От: mogadanez Чехия  
Дата: 26.07.05 15:31
Оценка: 1 (1) +1
Здравствуйте, VladD2, Вы писали:

VD>Понимаеш ли. Твои слова про сложность С++ — это не правда. Как язык C# значительно сложнее. Он обладает куда большим объемом кострукций не говоря уже о их применении.


VD>Сам С++ относительно простой язык. Сложно же в нем обходить грабли. Вот тут действительно нужно выроботать привычку использовать только безопасные паттерны. Ну, и сложно следить за теми самыми мелочами. Однако сложность использования и сложность продукта не коррелирую между собой. К примеру, телевизор очень не простой продукт, то использовать его может трех-летний ребенок.



мне кажется — количество конструкций языка не говорит о его сложности.
Сложность языка — это наскольно сложно на нем писать КАЧЕСТВЕННЫЙ КОД.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[13]: Metaprogramming et al
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.07.05 03:40
Оценка: +1
Здравствуйте, mogadanez, Вы писали:

M>мне кажется — количество конструкций языка не говорит о его сложности.

M>Сложность языка — это наскольно сложно на нем писать КАЧЕСТВЕННЫЙ КОД.

Сложность может расматриваться с разных точек зрения. Так что и да, и нет.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Metaprogramming et al
От: pvgoran Россия  
Дата: 27.07.05 17:51
Оценка:
Здравствуйте, VladD2, Вы писали:

P>>Сложнее будет не только реализация, но и использование.


VD>Ровно настолько насколько делать вызовы методов на ассемблере нежели на языке высокого уровня.


А что, (хотя бы) этого недостаточно??

В ассемблере не хватает многого из того, к чему привыкли пользователи ящыков высокого уровня. Например, такие возможности, как вычисление выражений, или "управляющие" конструкции (ветвление, циклы). Это тоже не абстракции?

P>>Удобнее для тех, кто реализует, и для тех, кто использует. Вроде object->do_it() удобнее писать, чем object->vtbl->do_it(object). (А если бы не было понятия указателей на функции — вообще бы ужас получился.)


VD>Не нужно привлекать сюда заморочки КОМ-а. На С можно писать и так:

VD>
VD>do_it(object);
VD>

VD>Это конечно не винец творения, но более чем приемлемо.

Я имел в виду именно полиморфный вызов.

P>>Ну, все-таки не изменение, а скорее уточнение синтаксиса.


VD>Нет, это именно изменение. Только конечно не синтаксиса, а семантики. Но это уже не важно.


Действительно, не важно... Хотя с изменением семантики можно и поспорить.

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


VD>Нда. Ну, и чем:

VD>
VD>stdхзч << i;
VD>

VD>абстрактнее чем:
VD>
VD>print(i);
VD>

VD>

Если второй код — это C, то он хуже отсутствием полиморфизма времени компиляции. Я же явно написал про "расширяемые множества типов" (потоков и выводимых значений).

А так же тем, что для вывода нескольких значений нужно повторять много раз print.

VD>>>Причем основанное на безолаберном отношении языка к безопасности кода.


P>>Это почему??


VD>Потому что в оригинале << это побитовый сдвиг влево.


И что? Дизайн языка (C++) предполагает переопределение операторов, и стандартная библиотека потокового ввода-вывода C++ вполне корректно это использует. Нарушения безопасности кода здесь IMHO нет, т.к. для введение нового operator << никоим образом не влияет на существующий код, использующий операцию побитового сдвига для работы с целыми числами.

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


То, что это ошибка — тема для holy war. По мне — так это штатная "фича" языка, без которой, может быть, невозможно было бы реализовать тот же "цепочечный" operator <<. Хотя с точки зрения чистой идеологии она, действительно, нежелательна.

P>>Возьмем, к примеру, C. Его printf-семейство абстрагирует вывод, но "не дотягивают" до operator << (отсутствие безопасности типов, необходимость явно указывать тип выводимых данных, полное отсутствие расширяемости).


VD>Чушь какая-то причем тут безопасность типов? Господа, отделяйте мухи от котлет.


Безопасность типов в данном случае — это вполне объективное преимущество operator << перед printf(). Хотя, возможно, и не относящееся к теме абстрагирования.

Да, кстати: товарищи, будьте взаимовежливы.

VD>Отсуствие расширяемости тоже звучит забавно. Создай новую процедуру и делай в ней все что хочешь.


Я не хочу каждый раз (для каждого нового типа) создавать новую процедуру (точнее, процедуру с новым именем). Если это делать, код, выводящий значения (в консоль или куда-то еще) становится менее единообразным, менее простым и больше привязанным к реализации — т.е. "качество" абстракции ухудшается. Кроме того, это не позволяет по-нормальному использовать существующий код (хотя этот аргумент становится по-настоящему важен только при наличии шаблоков — или при использовании макросов C).

Явное указание типов значений — это туда же (к ухудшению качества абстракции).

P>>Кстати, складывается впечатление, что у нас существенно разные понятия об абстракции. Определимся с определениями?


VD>Нет, проблем — Abstraction (computer science)


Да, это вполне можно принять за основу:

In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on few concepts at a time.


"Reduce and factor out details" — это и более короткая запись вызова процедуры (C cs ASM), и не "перегруженная" строкой форматирования, единообразная запись cout << i (C++ vs C), и in place создание функции типа (lambda (person) (display (name person))) (Lisp vs C/C++/C#/Java).

P>>А какая суть? А то контекст, в котором было упоминание Spirit, что-то затерялся.


VD>Суть в том, что это не библиотека предоставляющая примитивы.


Примитивы эта библиотека предоставляет, только они (в основном) не независимы, а формируют "язык", с помощью которого специфицируется парсер. Хотя там есть и большой кусок (Phoenix), который можно использовать отдельно.

P>>Это не внутренние классы, а вполне даже внешний интерфейс, описанный в документации.


VD>Можно ссылку на то, о чем ты ведешь речь?


http://www.boost.org/libs/spirit/doc/closures.html

Приятного чтения.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[13]: Metaprogramming et al
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.07.05 03:40
Оценка:
Здравствуйте, pvgoran, Вы писали:

P>А что, (хотя бы) этого недостаточно??


Для чего?

P>В ассемблере не хватает многого из того, к чему привыкли пользователи ящыков высокого уровня. Например, такие возможности, как вычисление выражений, или "управляющие" конструкции (ветвление, циклы). Это тоже не абстракции?


Видимо я как-то очень туманно изъясняюсь. Попробую по проще...
Я не призываю программировать на ассемблере. Я просто сказал, что абстракции можно добиться практически на любом языке программирование.

P>Я имел в виду именно полиморфный вызов.


Полиморфный вызов на С может выглядеть так:
SomeFunctionPointer();


P>Если второй код — это C, то он хуже отсутствием полиморфизма времени компиляции.


В С вообще с полиморфизмом не зашибись. Но с точки зрения абстракции разницы, согласись, нет никакой.

P> Я же явно написал про "расширяемые множества типов" (потоков и выводимых значений).


А я ясно написал "не путай теплое с мягким".
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Metaprogramming et al
От: vdimas Россия  
Дата: 28.07.05 05:21
Оценка: 1 (1) -1
Здравствуйте, VladD2, Вы писали:

VD>В данном случае обсуждалась исключительно адекватность вывода.


Ok, адекватность — суть соответствие чему-либо. Продолжим.

VD>Я вообще это не обсуждал. Еще раз тебе повторяю, что ты сражаешся с ветренными мельницами. Но если тебе охота получить вопрос о применении С++ в веб-проектах, то отвечу. Я таких людей считаю фанатиками и маньяками не способными принять адекватное решение.


А ты уверен, что JSP-технология (была как вариант в обсуждаемой теме) образца 3-х летней давности способна выдержать нагрузку многих тысяч одновременно работающих пользователей? Я че-то не уверен. Кстати, сам движок Google на чем написан? А Yahoo? A Alta-Vista? Не надо путать RAD-подход к разработке и подход: "мы спустимся медленно, и отымеем все стадо".


VD>Что же до С++ и красных тряпок... то мне плевать на этот язык. Просто его слишко часто суют во все дыры. Это и раздражает.


Нифига себе дыры — самые крутые поисковые движки. А теперь еще и store-движки. Да блин, трудоемкость презентационной части веба в подобных задачах не видна и под микроскопом.

Если бы они для подобных задач взяли Java или там (не дай бог) PHP, то "Я таких людей считаю фанатиками и маньяками не способными принять адекватное решение." (С) VlaD2.


Фронт-енд к движку мог быть написан на чем угодно. Хотя, это уже не суть важно т.к. может не дать значительно выигрыша в скорости-качестве разработки (надо же будет обертки над нативом писать, в Java это не так просто как в .Net, т.е. приличного выигрыша трудоемкости не получим).


VD>Извини, но большей неадекватности на этих форумах встретить тяжело. Я не приводил никаких аргументов по длиннам циклов. Я заметил банальный алогизм в рассуждениях. Если ты не понял моих слов, то просто збудь их. Мне этот бессмысленный разговор порядком надоел.


Что есть адекватность в начале поста было напомнено. На всякий случай дам опять ссылку на твой пост: http://www.rsdn.ru/Forum/Message.aspx?mid=1268534&amp;only=1
Автор: VladD2
Дата: 12.07.05


Где ты усмотрел неадекватность здесь: http://www.rsdn.ru/Forum/Message.aspx?mid=1273846&amp;only=1
Автор: vdimas
Дата: 14.07.05
— непонятно, в общем, скатился как обычно на непотребный уровень http://www.rsdn.ru/Forum/Message.aspx?mid=1273884&amp;only=1
Автор: VladD2
Дата: 14.07.05


Самое время напомнить об адекватности.
Re[23]: Metaprogramming et al
От: Cyberax Марс  
Дата: 28.07.05 06:09
Оценка:
vdimas wrote:

> VD>Я вообще это не обсуждал. Еще раз тебе повторяю, что ты сражаешся с

> ветренными мельницами. Но если тебе охота получить вопрос о применении
> С++ в веб-проектах, то отвечу. Я таких людей считаю фанатиками и
> маньяками не способными принять адекватное решение.
> А ты уверен, что JSP-технология (была как вариант в обсуждаемой теме)
> образца 3-х летней давности способна выдержать нагрузку многих тысяч
> одновременно работающих пользователей? Я че-то не уверен.

BEA Inc. с тобой не согласна. Кстати, еще в 2000 году свободный
JSP-сервер Tomcat спокойно держал тысячу запросов в секнду на хорошем
железе.

> Кстати, сам движок Google на чем написан? А Yahoo? A Alta-Vista? Не

> надо путать RAD-подход к разработке и подход: "мы спустимся медленно,
> и отымеем все стадо".

AltaVista вот как раз на Java написана.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[23]: Metaprogramming et al
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.07.05 08:40
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Ok, адекватность — суть соответствие чему-либо. Продолжим.


Не охота.


V>А ты уверен, что JSP-технология...


Еще раз (последний) я утверждений не делал. Я высказал мысль, что если кто-то посчитал, что Ява и т.п. дают какую-то выгоду по сравнению с лиспом, то на основании этого архи глупо и нелепо принимать решение о переписывании софта на С++.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Metaprogramming et al
От: vdimas Россия  
Дата: 28.07.05 12:48
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>AltaVista вот как раз на Java написана.


Откуда дровишки? Скорее, речь идет о презентационной части (и то не факт)? И разве имеет значение, на чем написана презентационная часть, тем более подобной "сложности".

Насколько я помню, самая первая ферма серверов Alta-Vista крутилась на DEC-Alpha серверах еще с 95-го или 96-го года, и никакой Джавы в движке не было и в помине. Да и в более поздних коммерческих версиях их движка — тоже.
Re[24]: Metaprogramming et al
От: vdimas Россия  
Дата: 28.07.05 12:53
Оценка:
Здравствуйте, Cyberax, Вы писали:

в догонку

C>BEA Inc. с тобой не согласна. Кстати, еще в 2000 году свободный

C>JSP-сервер Tomcat спокойно держал тысячу запросов в секнду на хорошем
C>железе.

Кстати, тысяча и десятки тысяч — разные вещи.


C>AltaVista вот как раз на Java написана.


Вот надыбал историю их движка http://www.websearchworkshop.co.uk/altavista-history.htm

Джавой там и не пахнет.
Re[25]: Metaprogramming et al
От: Cyberax Марс  
Дата: 28.07.05 13:36
Оценка:
vdimas wrote:

> C>BEA Inc. с тобой не согласна. Кстати, еще в 2000 году свободный

> C>JSP-сервер Tomcat спокойно держал тысячу запросов в секнду на хорошем
> C>железе.
> Кстати, тысяча и десятки тысяч — разные вещи.

Взять 10 ТомКэтов и будет 10000 в секунду.

> C>AltaVista вот как раз на Java написана.

> Вот надыбал историю их движка
> http://www.websearchworkshop.co.uk/altavista-history.htm

_НЕ_ про Java там тоже нет.

> Джавой там и не пахнет.


Поищите про AltaVista Enterprise Search. Это адаптация движка AltaVista
для внутрикорпоративного поиска.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[25]: Metaprogramming et al
От: Cyberax Марс  
Дата: 28.07.05 13:39
Оценка:
vdimas wrote:

> C>AltaVista вот как раз на Java написана.

> Откуда дровишки?

C theserverside'а вестимо...

> Скорее, речь идет о презентационной части (и то не факт)? И разве

> имеет значение, на чем написана презентационная часть, тем более
> подобной "сложности".

Как раз фронтенд у них написан в виде модулей к апачу, а поисковый бот и
сама логика поиска — на Java. Об этом была статья на theserverside'е
году так в 2001.

> Насколько я помню, самая первая ферма серверов Alta-Vista крутилась на

> DEC-Alpha серверах еще с 95-го или 96-го года, и никакой Джавы в
> движке не было и в помине. Да и в более поздних коммерческих версиях
> их движка — тоже.

Сначала не было, потом в 99 году там все переписали. Полученый продукт
еще и продавали другим компаниям для внутреннего поиска.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[14]: Metaprogramming et al
От: pvgoran Россия  
Дата: 28.07.05 13:51
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Andrei N.Sobchuck, Вы писали:


ANS>>>> и как его реализовать на C#1.


VD>>>Реализовать интерфейс?


ANS>>Поподробнее, пожалуйста.


VD>Что подробнее? В IEnumerator два метода и одно свойство. Их название говорят сами за себя. Плюсь в МСДН для особо одаренных целый рассказ о томк как реализовывать этот интерфейс.


IEnumerator — это внешняя итерация, а речь шла вроде о внутренней.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[14]: Metaprogramming et al
От: pvgoran Россия  
Дата: 28.07.05 13:51
Оценка:
Здравствуйте, VladD2, Вы писали:

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


P>>А что, (хотя бы) этого недостаточно??


VD>Для чего?


Переформулирую. То, что для использования абстракции (точнее, процедуры, реализующей абстракцию), нужно написать N нетривиально связанных друг с другом ассемблерных команд вместо одной строчки на C — это существенное уменьшение удобства использования абстракции (некоторые абстракции оно может совершенно обесценить). Для меня это показатель того, что ASM "поддерживает абстракции" хуже, чем C.

P>>В ассемблере не хватает многого из того, к чему привыкли пользователи ящыков высокого уровня. Например, такие возможности, как вычисление выражений, или "управляющие" конструкции (ветвление, циклы). Это тоже не абстракции?


VD>Видимо я как-то очень туманно изъясняюсь. Попробую по проще...

VD>Я не призываю программировать на ассемблере. Я просто сказал, что абстракции можно добиться практически на любом языке программирование.

А что значит "можно добиться абстракции"?

1. "Можно реализовать любую абстракцию". Я сомневаюсь, что это возможно сделать в каком бы то ни было ЯП.

2. "Можно реализовать какие-то абстракции". С этим я соглашусь — но это совершенно не относится к теме достаточности процедур для введения любых абстракций.

P>>Я имел в виду именно полиморфный вызов.


VD>Полиморфный вызов на С может выглядеть так:

VD>
VD>SomeFunctionPointer();
VD>


Ну да. Только для того, чтобы это был полиморфный вызов, нужно где-то выше написать что-то вроде:

SomeFunctionPointer = object->vtbl->do_it;


P>>Если второй код — это C, то он хуже отсутствием полиморфизма времени компиляции.


VD>В С вообще с полиморфизмом не зашибись.


Совершенно верно, об этом и речь.

VD>Но с точки зрения абстракции разницы, согласись, нет никакой.


Не соглашусь. Полиморфизм позволяет абстрагироваться от того, с объектом какого типа мы имеем дело.

P>> Я же явно написал про "расширяемые множества типов" (потоков и выводимых значений).


VD>А я ясно написал "не путай теплое с мягким".


Не было этого!

А если серьезно — то не поясните ли Вы, где, что и с чем я спутал?

P.S. Вы оставили непрокомментированным довольно большую часть моего сообщения. Означает ли это, что Вы согласны с тем, что там было написано?
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[14]: Metaprogramming et al
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.08.05 21:44
Оценка:
Здравствуйте, VladD2, Вы писали:

ANS>>>>Осталось выяснить в каком месте внутренний итератор (кривым отражением которого и есть foreach) не является абстракцией,

VD>>>Переведи это на русский.
ANS>>Какое именно слово тебе не понятно?
VD>Выделенно жирным.

Гм. Мне не понятно что же тебе не понятно

ANS>>>> и как его реализовать на C#1.

VD>>>Реализовать интерфейс?
ANS>>Поподробнее, пожалуйста.
VD>Что подробнее? В IEnumerator два метода и одно свойство. Их название говорят сами за себя. Плюсь в МСДН для особо одаренных целый рассказ о томк как реализовывать этот интерфейс.

Влад, реч идёт о внутреннем итераторе. Для его реализации нужен один метод.

ANS>>>>Влад, абстракция без простоты это фигня какая то.

VD>>>На это тебе очень хорошо ответил mihoshi
Автор: mihoshi
Дата: 25.07.05
.

ANS>>Уж, извини, не понял я ответа.
VD>Точнее не захотел. Ты постоянно путашь понятия. Абстракцию с внешней формой. Простоту абстракции и сложность реализаци скрываемой за абстракцией. У меня складывается ощущение, что ты делашь это намеренно. Если это не так, то просто обратись к словарям. Ну, а если так, то давно пора завязывать этот разговор. Все равно путного ничего не выйдет.

Во-первых, внешний итератор — 2 метода и одно свойство, внутренний — один метод. Вывод: внутренний итератор — абстракция более высокого уровня.
Во-вторых, зачастую сложность реализации чего-либо это почти равнозначно невозможности реализации. То есть результат конечный один и тот же — неиспользование.
... << RSDN@Home 1.1.4 stable rev. 510>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[15]: Metaprogramming et al
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.08.05 07:05
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Во-первых, внешний итератор — 2 метода и одно свойство, внутренний — один метод. Вывод: внутренний итератор — абстракция более высокого уровня.


Что ты понимашь под словами "внешний итератор"?
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Metaprogramming et al
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 04.08.05 08:57
Оценка:
Здравствуйте, VladD2, Вы писали:

ANS>>Во-первых, внешний итератор — 2 метода и одно свойство, внутренний — один метод. Вывод: внутренний итератор — абстракция более высокого уровня.


VD>Что ты понимашь под словами "внешний итератор"?


http://c2.com/cgi/wiki?ExternalIterator
http://c2.com/cgi/wiki?InternalIterator
... << RSDN@Home 1.1.4 stable rev. 510>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[17]: Metaprogramming et al
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.08.05 11:17
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>http://c2.com/cgi/wiki?ExternalIterator

ANS>http://c2.com/cgi/wiki?InternalIterator

Извини, но данная теменология не общепринята и довольно не корректна. Все же применение функций высшего порядка новых объектов не создает. А итератор — это в первую очередь объект.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Metaprogramming et al
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.08.05 11:17
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>>>>> и как его реализовать на C#1.

VD>>>>Реализовать интерфейс?
ANS>>>Поподробнее, пожалуйста.
VD>>Что подробнее? В IEnumerator два метода и одно свойство. Их название говорят сами за себя. Плюсь в МСДН для особо одаренных целый рассказ о томк как реализовывать этот интерфейс.

ANS>Влад, реч идёт о внутреннем итераторе. Для его реализации нужен один метод.


Как я теперь понял "о внутреннем итераторе" — это ты пыташся приплести сюда функции высшего порядка. Ну, и причем тут это? Ощущение такое, что кому-то хочется попереключать тему, чтобы полностью всех запутать.

ANS>Во-первых, внешний итератор — 2 метода и одно свойство,


Во-первых, я не жалаю пользоваться этой терминологией. Во-вторых, методов может быть сколько угодно. В дотнете есть две реализации дженерик и обычная. Дженери расширяет обычную одним свойством.

ANS> внутренний — один метод. Вывод: внутренний итератор — абстракция более высокого уровня.


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

ANS>Во-вторых, зачастую сложность реализации чего-либо это почти равнозначно невозможности реализации. То есть результат конечный один и тот же — неиспользование.


Замечательные абстрактные рассуждения ничего в прочем не дающие. IEnumerable в дотенете реализуется любой коллекцией. Сложности конечно есть, но не фатальные.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.