Как стать автором
Обновить
3
0

Пользователь

Отправить сообщение
АНБ будет трудно утвердить свои алгоритмы в качестве стандартов

Вот так нахрапом, в открытую и бесплатно? АНБ придётся раскошелиться.
Надо ещё выпустить указ о запрете багов и тогда заживём!
Ага, только wchar_t в винде занимает 2 байта, а в никсах — 4 байта. Со всеми вытекающими проблемами отсюда.

Есть std::u16string. Но главное — есть нормальные полноценные библиотеки типа ICU.
Все-таки внутри QString (да и вообще всех классов Qt, использующих implicit sharing) используются атомарные счетчики, а не стандартные блокирующие примитивы.

Атомарные операции не бесплатны, хотя и дешевле мьютексов. Конечно, то что в Qt это сделали — большой плюс qt5 по сравнению с qt3, где использование QString с потоками было связано со всяческими опасностями. Но, как по мне, лучше бы перешли на стандартную строку.

Естественно. Только QString имеет представление о том, что она хранит, а std::string — нет.

На сколько я знаю, QString не умеет нормально работать с комбинированными символами, состоящими из двух двухбайтовых слов. Точно также, как и std::u16string или std::string с многобайтовыми символами. Для этого нужны специализированные библиотеки. То есть никакого преимущества здесь я не вижу.
Сейчас-то и moc уже не нужен, есть реализация от авторов оригинального moc'a чисто на шаблонной магии и новых стандартах.

Да. И это и многое многое другое. Регулярки, потоки и т.д.
Тем не менее, такой результат — это более логичное поведение для строки.

Логичное поведение для строки — возвращать количество символов, а не размер массива. Если же такое поведение устраивает, то с таким же успехом можно использовать std::wstring.
UTF-16 — худший выбор. Для работы со строками достаточно удобен utf-8, для работы с отдельными символами лучше использовать utf-32. Поэтому не соглашусь.
только одна небезопасная реализация QString для потоков в qt3


Что значит эта фраза? QString реализует принцип CoW (Copy-On-Write), что, в общем-то, является одной из киллер-фич фреймворка, и позволяет практически безболезненно быстро гонять данные между потоками.

Вы неправы теоретически и фактически.

Теоретически CoW наоборот усложняет и затрудняет обмен данными между потоками, потому что требует использование блокировки в момент изменения объекта. Без использования CoW, мы получаем независимую копию объекта, что делает блокировку излишней, а код реализации объекта — проще. С приходом же C+11 и его концепцией перемещений, CoW становится излишним в большинстве случаев.

Практически в qt5 реализация QString вынуждена использовать блокировки, чтобы позволить использовать строки в потоках. Но в qt3, о чём и шла речь, и что Вы аккуратно обрезали при цитировании (случайно, я надеюсь), всё очень и очень плохо — там используется cow и не используются блокировки. В результате, при попытке использование строки в потоке, будут происходить непредсказуемые обрушения программы в произвольном месте.
QString хранит внутри себя Unicode символы, а std::string — байты.

На самом деле обе реализации хранят внутри себя байты, и обе могут без проблем хранить, вводить и выводить строки юникода.

Если же есть необходимость работать с отдельными символами юникода, то для этого существуют полноценные библиотеки и прочие boost::locale. Почему в 2018 это до сих пор это не часть стандарта (или уже?) — вопрос к комитету.

Вообще, отступая от темы, Qt исторически был вынужден изобретать велосипеды для каких-то ограниченных платформ и не всегда у него это выходило идеально, хотя для своего времени это было неплохо. На сегодня ситуация сильно изменилась и многие из этих изобретений уже не нужны и надеюсь в следующей версии qt будут существенные изменения в эту сторону.
В том и дело, что старый код написанный на старом добром C++ собирается без проблем, а код написанный с использованием Qt вызывает много проблем из-за несовместимости Qt с самим собой и просто непродуманности. В итоге «простота» обернулась непредвиденными проблемами.
Чего стоит только одна небезопасная реализация QString для потоков в qt3! Я просто вынужден выкидывать QString везде, где используются потоки и заменять на std::string.
Если бы в своё время мы ограничились бы использованием Qt только для графического интерфейса, то переход q3->q5 был бы значительно дешевле.

При этом, вместо того чтобы просто выкинуть QString в qt5, его продолжают тянуть в новые версии.
Это появилось начиная с Qt 4.4 и для использования требует перекомпиляции. Поэтому при переходе с qt5 на qt6 это можно будет использовать, просто пересобрав qt5 с этой опцией и завернув старый код в пространство имён. Но у qt3 нет такой возможности. Соответственно, для того чтобы это использовать, придётся заворачивать новый код в пространство имён и всегда пересобирать вручную qt5.
Это удивительно, ведь сделали же, но всё равно по умолчанию это отключено и во всех дистрибутивах собрано без пространства имён.
Qt3->Qt4 реально весьма болезненно. Поэтому мы до сих пор на qt3. В качестве подготовки перехода сейчас выкидываю Qt и переписываю всё что можно на std::c++ и boost (кроме графического интерфейса).

Самая большое преступление разработчиков Qt — игнорирование такой полезной возможности С++, как пространство имён. Если бы они его использовали, то можно было бы, по крайней мере на время переходного периода, линковать обе библиотеки…
Да на каждом шагу coub.com/view/xw2k0 ;)
А люминофор поинертней бывает? Тогда можно и без сдвига фаз обойтись.
Там дебиан, так что с безопасностью всё хорошо.
Вот что им надо. Пусть подкинут деньжат и будет отличное устройство гарантировано без закладок.
На Украине заблокированы сайты Яндекса, Лента.ру, ВК, ОК и т.п. Эта блокировка на Украине легко обходится с помощью любого прокси за её пределами, если Вы об этом.
Смотря для кого и для чего. Для поднятия хайпа с целью бесплатной рекламы это безусловно ключевая фича.
Шифрованные чаты есть, но они по-умолчанию выключены и подавляющее большинство о их существовании даже не догадывается.

Незашифрованные, кстати может легко получить вообще кто угодно, кто может перехватывать СМС (а это достаточно просто не только для спецслужб).
Телеграм вообще-то успел собрать 1.7 миллиарда, там же по ссылке у Вас и написано.
Вы намекаете на большие отличия между народами? Возможно и есть глубокие отличия в менталитете при использования Яндекса, но посещаемость упала именно после блокировки.

Информация

В рейтинге
4 872-й
Зарегистрирован
Активность