Здравствуйте, MTD, Вы писали:
V>>На язык С++ есть целая сетка версий стандартов.
MTD>И в каком стандарте С++ есть спецификация, например, на алгоритмы криптографии?
Какие именно алгоритмы и от каких групп стандартов? ISO/IEC, ANSI, ITU, ГОСТ?
И почему алгоритмы криптографии надо стандартизировать ср-вами языка, а не отдать от откуп сторонним либам, реализующим оответствующие стандарты? Это что же получается, с выходом нового стандарта на криптографию надо будет синхронно выпускать новый стандарт С++?
V>>Обертка обертке рознь.
MTD>1. На С есть библиотеки, де-факто ставшие стандартом в предметной области, на С++ аналогов нет
Наверно потому, что на С есть? А интероперабельность там прямая. Например, как в библиотеке ACE или boost, которые прекрасно реализуют обертки вокруг openssl.
Ну и не забываем, что сама openssl еще 2 года назад имела версию 0.9x, но было (и есть) полно коммерческих реализаций, которые показывали лучшую надёжность и эффективность, чем openssl, да и сейчас ситуация не сильно изменилась.
Ты прочищаешь данные потока после работы этой либы, ась?
Или пользуешь совсем новые её версии, которые такой прочистки не требуют.
А не смотрел, как в этой либе хранятся личные данные потока? Они все хранятся в общей структуре с общей блокировкой.
Ты предлагаешь тащить ЭТО в стандарт?
Да ни боже упаси.
MTD>2. Ты утверждаешь, что есть и приводишь ссылки на обертки над С либами
Ну ты же привёл лишь некие частности. При том, что есть просто тонна либ на С++, но их тоже никто не торопится включать в стандарт.
Я вообще не понимаю, зачем прикладные либы включать в стандарт.
Не пояснишь, случаем?
MTD>3. Я говорю, что написать обертку не большое достижение
MTD>4. Ты говоришь, что сам писал обертку за пару вечеров и спрашиваешь "и?"
MTD>Друг, как у тебя самочувствие?
У меня-то отличное. А вот если ты требуешь включить в стандарт некую сугубо прикладную функциональность, цена которой — пара вечеров работы, то я за тебя уже начинаю волноваться.
V>>Под дотнет такая же по функциональности обертка могла занять рабочую неделю.
MTD>Чего? Во-первых, дотнет — не язык, а платформа.
Бла-бла-бла.
MTD>Ты собрался сразу в байткоде писать? Во-вторых, можешь привести пример, где на C# что-то сделать сложней, чем на С++?
Тебе бы пришлось расписать для интеропа лейаут всех структур. Там одна несчастная
X509 чего стоит.
И это при том, что структуры openssl нифига не плоские, а образуют граф (как объекты), то тривиального интеропа не вышло бы. Т.е. вместо интеропа структур, надо каждый структуру заворачивать в объект и весьма так хитрожопо поддерживать актуальную "зеркальность" представления в дотнете и нейтиве.
MTD>Вычисление факториала на этапе компиляции не считается. В-третьих, писать обертки, а потом обертки над обертками — традиционная забава С++ разработчиков, в C# уже есть System.Security.Cryptography
Но это же не в стандарте, а в дополнительной либе.
По той самой причине, что делать обертку над openssl в дотнете — это застрелиться.
Поэтому там обертка над Windows CryptoAPI, но это же С++-ное АПИ! И опять ты с размаху улетел в лужу!
Причём, это АПИ постоянно дорабатывается. Т.е. опять надо стандарты языка перевыпускать аккурат с выпуском новых версий этого прикладного АПИ?
V>>>>Ну покажи мне С++ компиляторы под архитектуры PIC, AVR, i51
MTD>>>Для них нет компиляторов С++? Это что же ты так решил высказаться, что С++ отстой?
V>>Так и дотнета под них нет.
MTD>У тебя проблемы с дотнетом? Я его нигде не упоминал, а у тебя он все чешется.
Так С++ сравнить больше и не с чем, кроме как с голым С, дотнетом или жабкой.
С жабкой, ИМХО, сравнивать вовсе было бы не спортивно. ))
V>>Может, это просто такие специфические архитектуры, что под них даже реализация языка идёт С в сильно урезанном виде?
MTD>С теперь тоже отстой?
Разумеется. Причём, обратного никто не обещал. Он с самого начала был разработан как низкоуровневый язык, как прямая замена ассемблеру. Поэтому, не надо из С лепить то, чем никогда не являлся и даже не предполагал являться от рождения.
MTD>Итого, руководствуясь твоей логикой, выбрасываем С++, выбрасываем С, оставляем только ассемблер, потому, что на некоей сферической платформе в вакууме нет полноценных компиляторов С и С++.
C — это и есть своеобразный ассемблер.
А из моей логики следует только то, что ты пропустил сеанс приёма успокоительных и ничего более.
Эдак тебя лихорадит...
V>>QT — это просто хороший пример того, что не всё зависит только от языка. Язык же не в вакууме живёт, а на конкретных аппаратных и программных платформах.
MTD>Глубокомысленно. Что сказать хотел?
Что ты загоняешь по самое нибалуй. Ладно, с логикой не дружишь, это еще терпимо, можно было бы и объяснить простые вещи.
Но ты же агрессивно с ней не дружишь, на коллег бросаешься.
Причём, твоя лихорадочность более чем бессмысленна. Всё-таки, С++ — это не только комитет. Это еще разработчики компиляторов. Это огромная трудоёмкость по разработке таких компиляторов. Блин, да компиляторы С++ стали более-менее совместимы вот буквально лет 7 назад и то, на троечку с минусом. Т.е., вполне объективная инерционность есть, от неё не отмахнёшься.
V>>Поэтому, тот же GTK+ сугубо сишный.
MTD>Почему?
Чтобы на совсем убогих платформах работать.
Ты смотрел когда-нибудь, как в GTK+ происходит присвоение значения a значению b, не?
Ну вот посмотри.
V>>Какая прикладная область интересует?
MTD>Любая, чем больше всего гордишься?
— GUI 2D/3D;
— lock-free очереди, алгоритмы и даже реализации promise/future (ибо бустовские и STL-ные в некоторых сценариях приводят к дедлоку);
— самая быстрая в природе либа для сетки с учётом специфики бижевых протоколов (наша контора стабильно держит 1-2-е место в мире на ежегодных замерах от Intel);
— система конференций, VoIP;
— обработка звука, гитарные примочки в ассортименте;
Но горжусь я другим. Тем, что мне повезло когда-то плотно присесть на С++ более 20-ти лет назад и тем самым обеспечить себя интересной работой. Потому что и других языков в массе хватало (Дельфи, VB/VBA) и с низкоуровневыми подробностями дотнета разбирался, наверно, как никто на этом сайте. Но вот удовольствия в остальных "отраслях" не хватало. Потому что постоянно как гиря на ногах.
V>>Не требуют оборачивания структуры, перечисления, константы и т.д. и т.п.
MTD>Конечно требуют. Дефайны из С просто необходимо обернуть в неймспейсы и засунуть в перечисления.
В хороших сишных либах константы идут как енумы. А плохие либы и на С++ бывают.
Иногда либа становится "стандартом де-факто" лишь по причине её опенсорсности, а не потому что она хороша.
Либа openssl ужасна до безобразия. Я боролся с ней еще с версий 0.98a.
Это тупое и кривое опенсорсное поделие, увы и ах.
Я дебажил её (у ней были неустранимые утечки памяти в некоторых сценариях), заходил пошагово в её внутренности, любовался...
Как мне теперь это развидеть?
И да, как ты собрался оборачивать дефайн в неймспейс? ))