Re[36]: Стиль Дональда Эрвина Кнута
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.05 11:46
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Попытки сделать именно контейнер (коллекцию), т.е. один класс вместо россыпи классов, насколько я вижу, приведут как минимум к потере пункта 3.


А зачем вообще пихать структуры или классы в этот мультимап? Можно хранить только индексы и ссылку на объект.

Идея создавать несколько типизированных представлений очень ничго. В дотнете создание пары лишних экземпляров никому поемшать не могут. Более того это настоящая фобия многих плюсовиков — боязнь составных классов (т.е. класса ссылкающегося на кучу подобъектов). Те же коллекции всегда делаются отдельным подобъектом. И что?

А объем кода можно сократить введя перегруженный дженерик-метод (и соотвествющие перегруженные обобщенные представления) который возмет на себя все сложности. Как-то так:
MultiIndex<Item> map = new MultiIndex<Item>;
View<stryng>      yView  = map.CreateView<stryng>("Y"); // динамическое создание делегата для свойства
// перегруженный вариант с двумя параметрами
View<int, string> XYView = map.CreateView<int, string>(
    delegate(A a) { return a.X; },
    delegate(A a) { return a.Y; });
    
yView["Test 2"].X...

XYView[new A(2, "Test 2")].X...
XYView[2, "Test 2"].X...

Собственно, полная типобезопасность, довольно простой и удобный интерфейс.

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

Как еще один вариант, вместо делегатов можно воспользоваться стандарной техникой оповещения о изменениях свойств, но этот способ к сожалению требует внесения кода в хранимые классы.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[32]: Стиль Дональда Эрвина Кнута
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.05 11:46
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Вот это и была для eao197 "новая дорожка": он с Boost раньше, как уже сказал, не работал.


Я с DataView тоже. Форумы то он читал? Буст, хотя бы на уровне документации изучал?

ПК>Предикат, задающий порядок.


Способ сотрировки?

ПК>ЧТД.




>> Попробуй, например, дописать код сериализации содержимого в ХМЛ или бинарный формат.


ПК>http://boost.org/libs/multi_index/doc/advanced_topics.html#serialization При этом, в отличие от интрузивной сериализации .Net, поддерживается возможность реализации форматов, не предусмотренных авторами классов.


Ну, кое что доступно. Но зачем это нужно? Если захочется ХСЛТ всегда доступен.

>> отфильтровать строки по некоторому критерию (опять же 1-2 строки).


ПК>На C++ для этого обычно используются более общие средства, работающие не только с конкретным классом.


Во оно как? Крутой язык... Жать, что на фиг не упали более общие средства. Фильтровать то нужно тоже по иднексу. Иначе какой вообще смысл от этого мультимапа? Можно и перебором искать.

ПК>Попробуй сделать на C# интерфейс коллекции (т.е. один класс), обеспечивающий проверки времени компиляции, перечисленные в этом
Автор: Павел Кузнецов
Дата: 19.08.05
сообщении.


Я тебе там ответил. Могу только еще раз предложить перестать превозносить плюсы. Нет ничего что можно сдалть на них и нельзя на других языках. Вопрос только в подходах.

ПК>Ну, напиши пример объявления коллекции, аналогичного в плане проверок времени компиляции этому


Уже писал. Кода получается меньше.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: Стиль Дональда Эрвина Кнута
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.05 11:46
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Странный аргумент.

EC>А .NET Framework не нужно устанавливать? Или быть может он весит меньше boost'а и быстрее выкачивается и устанавливается?

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

Так что странный не мой аргумент, а та упертость с котрой поклонники С++ не признают самых очевидных вещей.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[33]: Стиль Дональда Эрвина Кнута
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.05 11:46
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:


>> Если то, что бустовский мультииндекс лучше, то это тоже не так, у DataView есть масса функционала, которого там нет. Прикинь, к примеру, во что обойдется реализация для него DataView.RowFilter.


ПК>В сравнительно тривиальный адаптер. У нас подобные используются с произвольными диапазонами (заданных парой итераторов).


Адаптеры не смогут испоьзовть индексы.

К тому же это не единственная возможность DataTable/DataSet. Они еще позволяют сливать разыне DataTable/DataSet-ы, получать описание отредактированных данных (причем в разных формах, одна из которых Diff XML), создавать набор связанных DataTable-ов (в DataSet-е) и отображать их на один сложный ХМЛ. И еще черт знает что. В общем, мощьный и слоный класс с очень неплохой производительностью.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[33]: Стиль Дональда Эрвина Кнута
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.05 11:46
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


Это смотря как усложнять. А то иногда результат получается не очень красивым.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[33]: Стиль Дональда Эрвина Кнута
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 21.08.05 18:59
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>В сравнительно тривиальный адаптер. У нас подобные используются с произвольными диапазонами (заданных парой итераторов).


Ну это вряд ли. Видишь ли, там собственный язык запросов, который позволяет вводить фильтры пользователю или хранить их в конфигурации.
... << RSDN@Home 1.2.0 alpha rev. 606>>
AVK Blog
Re[3]: Стиль Дональда Эрвина Кнута
От: Maxim S. Shatskih Россия  
Дата: 21.08.05 21:41
Оценка:
MSS>>Такой стиль у практически всего GPLного опен-сорсного софта.
Q>Да ладно.

Особо рекомендую GNU grep и SCSI стек из линукса. Песня. Кнут отдыхает.
Занимайтесь LoveCraftом, а не WarCraftом!
Re[4]: Стиль Дональда Эрвина Кнута
От: Quintanar Россия  
Дата: 22.08.05 11:10
Оценка: +1
Здравствуйте, Maxim S. Shatskih, Вы писали:

MSS>>>Такой стиль у практически всего GPLного опен-сорсного софта.

Q>>Да ладно.

MSS>Особо рекомендую GNU grep и SCSI стек из линукса. Песня. Кнут отдыхает.


А USB драйвер, например, написан очень неплохо
Все зависит все-таки от того, кто писал, а нет open source'ности.

Некоторые вещи, к тому же, были написаны очень давно (тот же grep, наверняка), когда вопрос о понятности кода не стоял так остро и не было выработано каких-то рекомендаций по этому поводу. Чем современне программа, тем она лучше написана, как правило. + стиль С-шных программ очень портит требование переносимости. Если программа должна работать на 10-ках различных платформ, она будет выглядеть плохо.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.