Re[34]: плохой язык C++ :)
От: Дарней Россия  
Дата: 13.03.06 10:33
Оценка:
Здравствуйте, srggal, Вы писали:

S>Про универсальный формат
Автор: srggal
Дата: 13.03.06


ты просто не понял, о чем спор. Хорошему бинарному формату никакие платформо специфичные версии вообще не нужны, за крайне редкими исключениями. Файлы словарей для энциклопедии в число таких исключений точно не входят.
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[35]: плохой язык C++ :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.03.06 10:39
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>насколько я слышал, asn.1 широко применяется только в телекоммуникациях


+1

Я еще слышал о применении в аэрокосмической области, но тоже для передачи данных.
В частности, Unaligned PER (когда битовая упаковка разных полей идет без выравнивания на границу отдельных байтов) был добавлен в asn.1 по тебованию программистов из области авиации, т.к. Aligned PER оказывался очень расточительным.


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

AVK>Перечитай еще раз мои сообщения вверх по ветке.



Вот они:




AVK>Поинтересуйся, почему для хранения на диске используют не хеш-таблицы, а В+ деревья.







I>>Hashtable был взят только для примера, и лишь потому, что в .NET FCL отсутствует что-нибудь вроде BTree или BPlusTree.


AVK>В свою очередб В+ крайне редко используют для хранения данных в памяти. Это я намекаю на то, что алгоритмы работы с диском и памятью чаще различаются, чем совпадают, ввиду того что характеристики доступа и скорости чтения у них различаются катастрофически и нелинейно.


I>> Что впрочем неудивительно, возможности эффективно использовать их все равно нет.


AVK>При желании все можно. В том числе и MMF использовать.






I>>С Hashtable тоже?


AVK>Перечитай еще раз мои сообщения вверх по ветке.







Если можно, односложный ответ на вопрос: Можно ли использовать Hashtable вместе с Memory Mapped Files?

Если да, был бы рад узнать, как?
Re[36]: плохой язык C++ :)
От: srggal Украина  
Дата: 13.03.06 10:42
Оценка:
Здравствуйте, eao197, Вы писали:

E>Я еще слышал о применении в аэрокосмической области, но тоже для передачи данных.

E>В частности, Unaligned PER (когда битовая упаковка разных полей идет без выравнивания на границу отдельных байтов) был добавлен в asn.1 по тебованию программистов из области авиации, т.к. Aligned PER оказывался очень расточительным.

Правильно ли я понимаю, что нет никаких ограничений на применение ASN1

Хочется бенефитов от применения ASN1 — применяй, не хочется — не применяй
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[36]: плохой язык C++ :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.03.06 10:52
Оценка: 5 (1)
Здравствуйте, igna, Вы писали:

I>Если можно, односложный ответ на вопрос: Можно ли использовать Hashtable вместе с Memory Mapped Files?


Существующую напрямую нет (но это и не нужно, почему я уже объяснил), специализированную можно.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[37]: плохой язык C++ :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.03.06 11:08
Оценка: 8 (1)
Здравствуйте, srggal, Вы писали:

S>Правильно ли я понимаю, что нет никаких ограничений на применение ASN1


Разве это следовало из моих слов?
Asn.1 -- это очень большая спецификация, которая включает в семя много чего. Начиная от самого Abstract Syntax Notation, заканчивая различными схемами кодирования (BER, PER, XER) и различными вариациями.

Так что минимальная цена, которую придется заплатить за использование Asn.1 -- это ознакомление с ней
Хотя бы по книге Лампорта (что само по себе не мало).

S>Хочется бенефитов от применения ASN1 — применяй, не хочется — не применяй


Так в том и суть, что если хочется (а бенефиты действительно есть), то основной выбор нужно сделать в сторону собственноручной реализации кодирования или приобретения Asn.1 компилятора (~$5000, если не ошибаюсь, за продвинутую реализацию). Если протокол простой и достаточно BER-кодирования, то библиотеку для поддержки BER написать не сложно. В остальных случаях Asn.1 компилятор обойдется дороже.

Да и разных реализаций Asn.1 для BER-кодирования не так уж и мало. Т.к. x.509 сертификаты кодируются в Asn.1, то многие криптографические библиотеки содержат средства для ручной работы с Asn.1. Хотя реально живого OpenSource Asn.1 компилятора, имхо, нет.

Поэтому, имхо, Asn.1 для небольших проектов выглядит слишком дорогим решением: и знания нужны, и компилятор не дешев. Но может быть, ситуация изменилась бы, знай об Asn.1 больше народу. Но вот для больших проектов... Но поезд Asn.1 в этой области, имхо, уже давно ушел. И одна из причин в том, что Asn.1 (насколько мне известно) не стандартизирует отображение Asn.1 спецификаций на конкретный язык программирования. Поэтому, покупая Asn.1 компилятор, клиент привязывается к этому компилятору на всю жизнь, т.к. в другом компиляторе используется другой binding.

PS. Свою сериализацию я начал делать не зная про Asn.1 Если бы знал, то, возможно, использовал бы опыт из Asn.1 гораздо больше. А так, только понятие расширяемых типов из Asn.1 позаимствовал.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[38]: плохой язык C++ :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.03.06 11:23
Оценка:
Здравствуйте, eao197, Вы писали:

E>Так в том и суть, что если хочется (а бенефиты действительно есть), то основной выбор нужно сделать в сторону собственноручной реализации кодирования или приобретения Asn.1 компилятора (~$5000, если не ошибаюсь, за продвинутую реализацию).


Можно вопрос? А что делает ASN.1 компилятор? Генерит код сериализатора? Или что то более специфичное?
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[39]: плохой язык C++ :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.03.06 11:35
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Можно вопрос? А что делает ASN.1 компилятор? Генерит код сериализатора?


Собственно, чам ASN.1 компилятор только это и должен делать. Плюс еще код десериализатора.

AVK>Или что то более специфичное?


А специфичное обычно делают дополнительные инструменты, которые могут входить в состав компилятора или продаваться отдельно.
См. например: http://www.oss.com/products/products.html


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[38]: плохой язык C++ :)
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 13.03.06 11:51
Оценка: 12 (1) :)
Евгений,

E>Да и разных реализаций Asn.1 для BER-кодирования не так уж и мало. Т.к. x.509 сертификаты кодируются в Asn.1, то многие криптографические библиотеки содержат средства для ручной работы с Asn.1. Хотя реально живого OpenSource Asn.1 компилятора, имхо, нет.


Позволь не согласиться, есть open source Erlang:

asn1ct

The ASN.1 compiler takes an ASN.1 module as input and genarates a corresponding Erlang module which can encode and decode the datatypes specified. Alternatively the compiler takes a specification module (see below) specifying all input modules and generates one module with encode/decode functions. There are also some generic functions which can be used in during development of applications which handles ASN.1 data (encoded as BER or PER).


asn1rt

This module is the interface module for the ASN.1 runtime support functions. To encode and decode ASN.1 types in runtime the functions in this module should be used.


Поскольку у Эрланга есть достаточно развитый механизм взаимодействия с нативным кодом, то Erlang Runtime System можно использовать как библиотечку для проекта на C/C++/Java/etc. Хотя звучит по извращенски и даже как-то кощунственно...
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[39]: плохой язык C++ :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.03.06 11:58
Оценка: 12 (2)
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Поскольку у Эрланга есть достаточно развитый механизм взаимодействия с нативным кодом, то Erlang Runtime System можно использовать как библиотечку для проекта на C/C++/Java/etc. Хотя звучит по извращенски и даже как-то кощунственно...


Я был не прав не только по отношению к Erlang-у.
Оказалось, что есть живой проект и для C/C++: http://lionet.info/asn1c/
(давно уже не занимался Asn1, утратил связь с реальностью)


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[40]: плохой язык C++ :)
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 13.03.06 12:03
Оценка:
eao197,

E>Оказалось, что есть живой проект и для C/C++: http://lionet.info/asn1c/


Хорошая ссылочка.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[41]: плохой язык C++ :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.03.06 12:09
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Хорошая ссылочка.


Найдена была вот здесь: http://asn1.elibel.tm.fr/en/index.htm
Может там и еще чего полезного будет.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[40]: плохой язык C++ :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.03.06 12:19
Оценка:
Здравствуйте, eao197, Вы писали:

E>Собственно, чам ASN.1 компилятор только это и должен делать. Плюс еще код десериализатора.


Тогда еще один вопрос — в стандарте есть язык описания синтаксиса протокола? Если есть, то простенький примерчик можно?
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[41]: плохой язык C++ :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.03.06 12:32
Оценка: 20 (1)
Здравствуйте, AndrewVK, Вы писали:

E>>Собственно, чам ASN.1 компилятор только это и должен делать. Плюс еще код десериализатора.


AVK>Тогда еще один вопрос — в стандарте есть язык описания синтаксиса протокола?


Да, это самая важная часть стандарта.

AVK> Если есть, то простенький примерчик можно?


Простенький примерчик можно посмотреть здесь: http://lionet.info/asn1c/ (в разделе ASN.1 Basic)

Более сложный примерчик можно взять из книги Лампорта (их там много):
Return-of-sales ::= SEQUENCE
     {version       BIT STRING
               {version1 (0), version2 (1)} DEFAULT {version1},
      no-of-days-reported-on  INTEGER
            {week(7), month (28), maximum (56)} (1..56) DEFAULT week,
      time-and-date-of-report  CHOICE
                 {two-digit-year  UTCTime,
                  four-digit-year GeneralizedTime},
               -- If the system clock provides a four-digit year,
               -- the second alternative shall be used.  With the
               -- first alternative the time shall be interpreted
               -- as a sliding window.
      reason-for-delay  ENUMERATED
            {computer-failure, network-failure, other} OPTIONAL,
               -- Include this field if and only if the
               -- no-of-days-reported-on exceeds seven.
      additional-information  SEQUENCE OF PrintableString OPTIONAL,
               -- Include this field if and only if the
               -- reason-for-delay is "other".
      sales-data  SET OF Report-item,
      ... ! PrintableString : "See wineco manual chapter 15"}

Report-item ::= SEQUENCE
    {item                 OBJECT IDENTIFIER,
     item-description     ObjectDescriptor OPTIONAL,
         -- To be included for any newly-stocked item.
     bar-code-data        OCTET STRING,
         -- Represents the bar-code for the item as specified
         -- in the wineco manual chapter 29.
     ran-out-of-stock  BOOLEAN DEFAULT FALSE,
         -- Send TRUE if stock for item became exhausted at any
         -- time during the period reported on.
     min-stock-level      REAL,
     max-stock-level      REAL,
     average-stock-level  REAL
       -- Give minimum, maximum, and average levels during the
       -- period as a percentage of normal target stock-level-- }

wineco-items OBJECT IDENTIFIER ::=
     { joint-iso-itu-t internationalRA(23) set(42) set-vendors(9) wineco(43) stock-items (0)}


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[35]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 16:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>А знашь почему? В+ реализуется сложнее.


AVK>Сложнее чего?


Более простых реализаций деревьев. Например, RB-деревьев.

VD>> А вообще-то он и в памяти выгоднее. Как минимум ее меньше тратит.


AVK>Меньше чем кто?


Чем те же RB-деревья.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[33]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 16:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Я в курсе. Но только структура его несколько отличается от структуры хеш-таблицы в памяти.


Ровно настолько насколько разные реализации хэш-таблиц отличаются друг-от друга. Алгоритм там тот же. Просто, как я уже говорил, выигрыш не велик, и теряется возможность последовательного сканирования. Ведь записи размещаются в порядки хэш-значений.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 16:38
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Я думаю, С++ создан для того, чтобы суметь познать себя.


Думаю разные Лиспы и Хаскели ничем не хуже для самопознания. То о чем ты говоришь — это банальная тренировка.

V>----------

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

Не. Навороты — это простительно для новичков. Чем опытнее становится программист, тем проще должен становиться его код и тем более просты должны быть его решения. У всего конечно есть резумный предел, но если есть два анлогичных решения, то оптыный человек должен выбрать простое. И объясняется это очень просто. Единственная сложная задача в разработке ПО — это предодаление сложности. Сложное решение усложняет общую задачу, а стло быть противоречит главному требованию.

V>----------

V>И просьба не путать нечитаемый макаронный код с действительно сложными наворотами.

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

Правильная декомпозиция и правильный выбор абстракций — это залог успеха. Именно это умеют опытные программисты/архитекторы и не понимаю новички и ламеры. Так вот задача сдерств разработки предоставить программисту возможности для удобной декомпозиции и полноценный набор абстракций.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[48]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 16:38
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Ну так и в Mono — неполная реализация .NET FW


В Моно полностью реализована BCL. В стандарт входит только она. Нет никакого стандарта на фрэймворк.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[50]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 16:38
Оценка:
Здравствуйте, eao197, Вы писали:

Д>>а где они, хорошие? Я пока ни одной не видел, если она сложнее чем hello world


E>Microsoft Windows?


В курсе, что он в основном на С написан. А то что написано на С++ компилируется в основном на МС-ных компиляторах?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[49]: плохой язык C++ :)
От: Cyberax Марс  
Дата: 13.03.06 16:44
Оценка: +1
Здравствуйте, VladD2, Вы писали:

C>>Ну так и в Mono — неполная реализация .NET FW

VD>В Моно полностью реализована BCL. В стандарт входит только она. Нет никакого стандарта на фрэймворк.
Тогда почему C#овцы в каждом втором слуае хвалятся огромной стандартной библиотекой? (А в каждом первом случае хвалятся портируемостью)
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.