Re[29]: плохой язык C++ :)
От: Cyberax Марс  
Дата: 10.03.06 08:37
Оценка: +2 -1
Дарней wrote:
> праавда? А то, что бинарные внутренности контейнера на другой платформе
> могут быть совсем другими — это ничего? И всё, прощай совместимость
> сериализованных файлов.
При первой установке просто преобразуем из кроссплатформенной формы в
оптимизированую для текущей платформы.

> Мне как-то раз уже приходилось исправлять последствия таких художеств

И это говорит программист на .NET, который толково нигде кроме Windows и
не работает...
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[27]: плохой язык C++ :)
От: igna Россия  
Дата: 10.03.06 08:37
Оценка:
Здравствуйте, Дарней, Вы писали:

I>>Аллокаторы это еще и возможность персистентно хранить контейнеры в файлах используя file mapping, что может использоваться в словарях и энциклопедиях. В таких программах данные нередко read only, сами программы однопользовательские, базы данных тут явно из пушки по тараканам.


Д>а потом понадобится портировать прогу на другую платформу — и всё, понеслась...


Так и без портирования приключений с file mapping аллокатором предостаточно. Но иногда на порядок большее быстродействие того стоит.
Re[27]: плохой язык C++ :)
От: Cyberax Марс  
Дата: 10.03.06 08:42
Оценка: -1
Дарней wrote:
> I>Аллокаторы это еще и возможность персистентно хранить контейнеры в
> файлах используя file mapping, что может использоваться в словарях и
> энциклопедиях. В таких программах данные нередко read only, сами
> программы однопользовательские, базы данных тут явно из пушки по тараканам.
> а потом понадобится портировать прогу на другую платформу — и всё,
> понеслась...
А если сайт на aspx понадибится портировать?
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[28]: плохой язык C++ :)
От: Cyberax Марс  
Дата: 10.03.06 08:44
Оценка: 17 (2)
igna wrote:
> Так и без портирования приключений с file mapping аллокатором
> предостаточно. Но иногда на порядок большее быстродействие того стоит.
Попробуйте Boost.Shmem (его недавно приняли в официальный Boost) —
удобнее ничего не нашел.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[29]: плохой язык C++ :)
От: igna Россия  
Дата: 10.03.06 08:48
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>... А то, что бинарные внутренности контейнера на другой платформе могут быть совсем другими — это ничего?


Чего. Никто ведь не обещал, что будет легко. Но есть, есть задачи, где трудности себя окупают.


Д>И всё, прощай совместимость сериализованных файлов.


Речь не о сериализации. Это просто уточнение (чтобы проходящие мимо чего не так не поняли).


Д>Мне как-то раз уже приходилось исправлять последствия таких художеств


"Художества" нужно применять в нужном месте в нужный час.
Re[30]: плохой язык C++ :)
От: Дарней Россия  
Дата: 10.03.06 09:14
Оценка: +1 :))
Здравствуйте, eao197, Вы писали:

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

E>Правда

Д>> А то, что бинарные внутренности контейнера на другой платформе могут быть совсем другими — это ничего? И всё, прощай совместимость сериализованных файлов.

E>Это уже второй вопрос


ну конечно. Сделать то мы сделаем, а чтобы это можно было использовать в реальной работе — это уже отдельный вопрос

E>Ведь речь могла идти и о совместно работающих процессах на одной машине -- им ведь так же данными обмениваться нужно. Тогда вопрос о совместимости не столь актуален.


вопрос встанет тогда, когда прогу придется портировать. А для серьезного проекта такой вопрос встанет обязательно. И маленький пушистый зверек придет, как всегда, неожиданно.
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[26]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.03.06 09:28
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Ага, точно. "Нам думать не надо — MS уже подумала за нас! Ураа!"


Только глупец может радоваться от того, что ему приходится думать еще о чем-то.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.03.06 09:28
Оценка: :)
Здравствуйте, igna, Вы писали:

I>Аллокаторы это еще и возможность персистентно хранить контейнеры в файлах используя file mapping, что может использоваться в словарях и энциклопедиях. В таких программах данные нередко read only, сами программы однопользовательские, базы данных тут явно из пушки по тараканам.


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

Причем для длоступа к данным применяются абстракции вроде потоков. А то как эти абстрации лезут к физическим аднным (через файл-маппинг или еще как) определяется реализациями абстракций.

Мне искренне жать тех кто этого не понимает.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: плохой язык C++ :)
От: Дарней Россия  
Дата: 10.03.06 09:32
Оценка: :)
Здравствуйте, Cyberax, Вы писали:

C>При первой установке просто преобразуем из кроссплатформенной формы в

C>оптимизированую для текущей платформы.

словари тоже "оптимизировать", то бишь конвертировать будем? А может быть, и офисные документы тоже?

C>И это говорит программист на .NET, который толково нигде кроме Windows и

C>не работает...

Ну во первых — это переход на личности, в частности — дискредитация квалификация оппонента.
Во вторых — ты просто попал пальцем в небо. Если тебе так хочется об этом поговорить, то я писал как минимум для четырех разных ОСей. Ну ладно, для трех с половиной — одна из них это WinCE. Можно еще вспомнить всякую экзотику наподобие CP/M и TR-DOS, но это вряд ли кого-то сейчас интересует
В третьих, мой опыт работы с приплюснутым будет раза так в три длительнее, чем на .NET.

так что, мой друг, расскажи лучше что-нибудь по делу. Вместо того, чтобы в очередной раз устраивать сеанс пенисометрии.
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[27]: плохой язык C++ :)
От: Cyberax Марс  
Дата: 10.03.06 09:34
Оценка: :))
VladD2 wrote:
> Аллокаторы — это возможность угробить память и насандалить глюков. А с
> данными в файлах можно и без них работать. Причем не менее эффективно.
.NET дает возможность писать кривые и уродские приложения. Причем не
менее неэффективно, чем VB3.

> Причем для длоступа к данным применяются абстракции вроде потоков. А то

> как эти абстрации лезут к физическим аднным (через файл-маппинг или еще
> как) определяется реализациями абстракций.
А для вызова методов у String надо _обязательно_ использовать SOAP через
прокси-сервер в Африке. В конце концов, вы ведь не можете знать заранее
откуда пришла строка?
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[28]: плохой язык C++ :)
От: Left2 Украина  
Дата: 10.03.06 09:38
Оценка:
C>А если сайт на aspx понадибится портировать?

Тогда из С++-библиотеки лёгко постукивая кувалдой делается COM-обьект и юзается почти как родной
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[30]: плохой язык C++ :)
От: Дарней Россия  
Дата: 10.03.06 09:50
Оценка:
Здравствуйте, igna, Вы писали:

I>Речь не о сериализации. Это просто уточнение (чтобы проходящие мимо чего не так не поняли).


хоть как назови, суть от этого не изменится.
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[31]: плохой язык C++ :)
От: Cyberax Марс  
Дата: 10.03.06 09:58
Оценка:
Здравствуйте, Дарней, Вы писали:

C>>При первой установке просто преобразуем из кроссплатформенной формы в

C>>оптимизированую для текущей платформы.
Д>словари тоже "оптимизировать", то бишь конвертировать будем? А может быть, и офисные документы тоже?
Запросто — формировать кэш для быстрой работы. В .NET же используется GAC — чем я хуже?

C>>И это говорит программист на .NET, который толково нигде кроме Windows и

C>>не работает...
Д>Ну во первых — это переход на личности, в частности — дискредитация квалификация оппонента.
Я так и думал, что это предложение будет неправильно понято

Фраза "нигде кроме Windows и не работает" относится к .NET, а не к программисту.

Д>Во вторых — ты просто попал пальцем в небо. Если тебе так хочется об этом поговорить, то я писал как минимум для четырех разных ОСей. Ну ладно, для трех с половиной — одна из них это WinCE. Можно еще вспомнить всякую экзотику наподобие CP/M и TR-DOS, но это вряд ли кого-то сейчас интересует

На Линуксе Mono пока плохо пригодно для запуска программ, написанных на .NETе. Ситуация как с Kylix'ом — программы для Mono можно запускать в .NET, но обратное обычно не верно.
Sapienti sat!
Re[29]: плохой язык C++ :)
От: Cyberax Марс  
Дата: 10.03.06 09:59
Оценка:
Left2 wrote:
> C>А если сайт на aspx понадибится портировать?
> Тогда из С++-библиотеки лёгко постукивая кувалдой делается COM-обьект и
> юзается почти как родной
Вы не поняли... Что будет, если я захочу сайт на aspx захостить на Линуксе?
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[31]: плохой язык C++ :)
От: Cyberax Марс  
Дата: 10.03.06 10:01
Оценка: +1
Дарней wrote:
> I>Речь не о сериализации. Это просто уточнение (чтобы проходящие мимо
> чего не так не поняли).
> хоть как назови, суть от этого не изменится.
Меняется. File mapping и использование custom-allocator'ов позволяет
работать с объектами на диске так, как будто они прямо в памяти лежат.

То есть в таком коде:
struct some
{
    std::string str;
};
std::vector<some> vec_;

std::cout<<vec_.at(100).str;

обращение по индексу в векторе может вызывать _прозрачное_ чтение с
диска нужных страниц.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[32]: плохой язык C++ :)
От: Дарней Россия  
Дата: 10.03.06 10:12
Оценка: :)
Здравствуйте, Cyberax, Вы писали:

C>Запросто — формировать кэш для быстрой работы. В .NET же используется GAC — чем я хуже?


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

C>Фраза "нигде кроме Windows и не работает" относится к .NET, а не к программисту.

C>На Линуксе Mono пока плохо пригодно для запуска программ, написанных на .NETе. Ситуация как с Kylix'ом — программы для Mono можно запускать в .NET, но обратное обычно не верно.

это всё равно на порядок лучше, чем портировать среднестатистическую С++ прогу. В особенности, если до нее уже добрались шаловливые ручки кул-С++-хацкеров.
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[33]: плохой язык C++ :)
От: Cyberax Марс  
Дата: 10.03.06 10:19
Оценка:
Дарней wrote:
> C>Запросто — формировать кэш для быстрой работы. В .NET же используется
> GAC — чем я хуже?
> Угу. То есть бинарный формат первой платформы, для которой писали
> систему, становится "универсальным".
Переносимые документы можно хоть в XML делать — тот же Boost.S11N это
поддерживает. А вот локальные закэшированые копии можно хранить в
оптимальном формате.

Ну и документы — это нестандартный случай. А вот игра, в которой графика
уровней хранится в таком кэше — вполне себе вариант. "На халяву"
получаем от ОС крайне эффективный механизм кэширования с минимальным
оверхедом.

Или как вариант — я использую shared-memory для эффективного общения
клиента и сервера в разных процессах на одной машине. Скорость в десятки
раз больше, чем при работе с пайпами/сокетами, так как объекты не
сериализуются, а просто помещаются (или сразу же там и создаются —
зависит от ситуации) в разделяемую память (обычным копиктором).

> Перекодировать файл в платформо-специфичный формат (то есть сначала

> считать файл из "универсального" формата, потом замапить на файл и
> сохранить), а потом считывать в память маппингом — но зато оччень
> эффективно . Декодер "универсального" формата, конечно, сначала нужно
> написать — для каждой платформы, куда надо портировать систему.
> При записи на флэшку — повторить всю последовательность в обратном порядке.
> Гениально. Где ты берешь такую траву?
А откуда MS берет свою траву? Из компилятора C# получается байт код для
стековой машины, который потом JITом обратно переводится в SSA-дерево,
которое потом компилируется. И зачем такой изврат?

> это всё равно на порядок лучше, чем портировать среднестатистическую С++

> прогу. В особенности, если до нее уже добрались шаловливые ручки
> кул-С++-хацкеров.
А я не пишу "среднестатистические" проги
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[33]: плохой язык C++ :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 10.03.06 10:21
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Угу. То есть бинарный формат первой платформы, для которой писали систему, становится "универсальным".


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

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[32]: плохой язык C++ :)
От: Дарней Россия  
Дата: 10.03.06 10:24
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>обращение по индексу в векторе может вызывать _прозрачное_ чтение с

C>диска нужных страниц.

для этого есть специально разработанный механизм виртуальной памяти. Чем он то тебя не устраивает?
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[27]: плохой язык C++ :)
От: igna Россия  
Дата: 10.03.06 10:27
Оценка:
Здравствуйте, VladD2, Вы писали:

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


Это как? Последовательно прочитать ассоциативный контейнер размером в 50 мегабайт?

Аллокаторы ведь подгружают в память только то, что нужно, а не все 50 MB...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.