Re[4]: Основные минусы плюсов...
От: CreatorCray  
Дата: 25.07.23 20:16
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Кстати STL далеко не самое ужасное, что есть в C++.

STL это не в С++, это для С++. Никто им пользоваться не заставляет.

vsb>Больше всего меня ужасает ввод-вывод. Это же надо догадаться было — перегрузить операторы битового сдвига. Какая-то шизофрения.

А этим извращением разве кто то всё ещё пользуется?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Основные минусы плюсов...
От: CreatorCray  
Дата: 25.07.23 20:16
Оценка:
Здравствуйте, so5team, Вы писали:

S>PS. Неужели проще самому бабахаться с UTF-8, нежели воспользоваться ICU?

Ты не поверишь но да!
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Основные минусы плюсов...
От: CreatorCray  
Дата: 25.07.23 20:16
Оценка:
Здравствуйте, so5team, Вы писали:

S>это был прям таки прорыв.

Разишо канализации.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Основные минусы плюсов...
От: CreatorCray  
Дата: 25.07.23 20:16
Оценка:
Здравствуйте, CRT, Вы писали:

CRT>Для выводы обычных строк, символов, чисел printf удобней

printf-like — да. Но сам сишный printf таки нет.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: Основные минусы плюсов...
От: so5team https://stiffstream.com
Дата: 26.07.23 04:20
Оценка:
Здравствуйте, CRT, Вы писали:

S>>Расскажите эту байку кому-нибудь помоложе.

CRT>Конечно, ведь
CRT>std::cout << "0x" << std::hex << std::setfill('0') << std::setw(4) << 0x424 << std::endl;

Это, вообще-то говоря, необязательно. И запросто может быть преобразовано к чему-то вроде:
std::cout << format("0x04{}", 0x424) << std::endl;


CRT>гораздо удобней чем
CRT>printf("0x%04x\n", 0x424);
CRT>


Во-первых, примеры не эквивалентны. Вариант с printf-ом требует еще одну строчку с вызовом fflush.

Во-вторых, давайте пройдемся по тонкому льду:

Делай раз:
#if PLATFORM_ONE
typedef int value_t;
#else
typedef unsigned long value_t;
#endif

void show(value_t v) {
  printf("0x04x\n", v);
}


Делай два:
typedef double value_t;

void show(value_t v) {
  printf("0x04x\n", v); // Нет, компиляторы далеко не всегда проверяли форматную строку.
}


Делай три:
void as_string(unsigned v) {
  char buf[7]; // 0x1234\0
  sprintf(buf, "0x04x", v);
  ...
}
...
as_string(UINT_MAX);
Re[5]: Основные минусы плюсов...
От: so5team https://stiffstream.com
Дата: 26.07.23 04:22
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

vsb>>Кстати STL далеко не самое ужасное, что есть в C++.

CC>STL это не в С++, это для С++. Никто им пользоваться не заставляет.

С момента фиксации STL в стандарте это C++.

CC>А этим извращением разве кто то всё ещё пользуется?


Да. За пределами яблочного ядра есть жизнь. А у вас нет прерогативы на единственно правильное мнение.
Re[8]: Основные минусы плюсов...
От: so5team https://stiffstream.com
Дата: 26.07.23 04:26
Оценка:
Здравствуйте, CreatorCray, Вы писали:

S>>PS. Неужели проще самому бабахаться с UTF-8, нежели воспользоваться ICU?

CC>Ты не поверишь но да!

Поверю, сам простую работу с UTF-8 реализовывал. Но там на уровне проверки корректности последовательности или трансляции из UCS-16 в UTF-8 на Windows.

Если же нужно, например, регистронезависимую сортировку сделать, то лучше уж ICU задействовать.
Re[6]: Основные минусы плюсов...
От: so5team https://stiffstream.com
Дата: 26.07.23 04:27
Оценка:
Здравствуйте, CreatorCray, Вы писали:

S>>это был прям таки прорыв.

CC>Разишо канализации.

Интересно было бы послушать, как можно было бы сделать в 1980-х вывод произвольных пользовательских типов без перегрузки операторов, с сохранением безопасности по типам.
Re[9]: Основные минусы плюсов...
От: CreatorCray  
Дата: 26.07.23 05:15
Оценка:
Здравствуйте, so5team, Вы писали:

S>Это, вообще-то говоря, необязательно. И запросто может быть преобразовано к чему-то вроде:

S>
S>std::cout << format("0x04{}", 0x424) << std::endl;
S>


Всё ещё мрак и кошмар.

S>Во-первых, примеры не эквивалентны. Вариант с printf-ом требует еще одну строчку с вызовом fflush.

Это зависит от того что именно стоит за printf.
То, что в дефолтном рантайме лучше не использовать, ибо оно Сишное, а потому сильно ограниченное.
Речь скорее за printf-like синтаксис вывода.

S>Во-вторых, давайте пройдемся по тонкому льду:

С появлением вариадиков я вообще могу написать вот такое:
crprintf (L"%s %f %i", 0.5, 123, -PI);

И оно напечатает "0.5 123 -3"
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Основные минусы плюсов...
От: CreatorCray  
Дата: 26.07.23 05:15
Оценка:
Здравствуйте, so5team, Вы писали:

S>Интересно было бы послушать, как можно было бы сделать в 1980-х вывод произвольных пользовательских типов без перегрузки операторов, с сохранением безопасности по типам.

В плюсах можно было. Я делал типобезопасный printf-like вывод через использование оператора запятая.
С появлением вариадиков тут же переписал на них, стало на порядок удобнее.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Основные минусы плюсов...
От: CreatorCray  
Дата: 26.07.23 05:15
Оценка: -1
Здравствуйте, so5team, Вы писали:

S>С момента фиксации STL в стандарте это C++.

Всё, что может быть полностью написано на С++ не является частью языка.
Что бы там себе теоретики не фантазировали.

CC>>А этим извращением разве кто то всё ещё пользуется?

S>Да. За пределами яблочного ядра есть жизнь.
Выдыхай, бобёр! Хочешь пользоваться отвратительно спроектированным интерфейсом — ветер в спину.

S> А у вас нет прерогативы на единственно правильное мнение.

У меня есть прерогатива на собственный опыт, от ядер до финансового софта.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: Основные минусы плюсов...
От: Vzhyk2  
Дата: 26.07.23 05:15
Оценка: +1
vsb>Это от наличия опыта. И наличия опыта работы с библиотеками в других языках. Кстати STL далеко не самое ужасное, что есть в C++. Больше всего меня ужасает ввод-вывод. Это же надо догадаться было — перегрузить операторы битового сдвига. Какая-то шизофрения.
Это ты valarray еще не трогал.
Re[10]: Основные минусы плюсов...
От: so5team https://stiffstream.com
Дата: 26.07.23 05:18
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

S>>Это, вообще-то говоря, необязательно. И запросто может быть преобразовано к чему-то вроде:

S>>
S>>std::cout << format("0x04{}", 0x424) << std::endl;
S>>


CC>Всё ещё мрак и кошмар.


Тем не менее, это можно было сделать еще в "Си с классами".

S>>Во-первых, примеры не эквивалентны. Вариант с printf-ом требует еще одну строчку с вызовом fflush.

CC>Это зависит от того что именно стоит за printf.

Речь про сишный printf (fprintf, sprintf).

CC>С появлением вариадиков я вообще могу написать вот такое:

CC>
CC>crprintf (L"%s %f %i", 0.5, 123, -PI);
CC>

CC>И оно напечатает "0.5 123 -3"

Во-первых, речь не про вариадики.

Во-вторых, как с помощью мифического crprintf вывести объект собственного типа?
Re[6]: Основные минусы плюсов...
От: Vzhyk2  
Дата: 26.07.23 05:18
Оценка:
vsb>Например чтобы использовать человеческий UTF-8. А не непойми что.
https://icu.unicode.org тебе в помощь. Бо сам unicode еще то безумие.
Re[8]: Основные минусы плюсов...
От: so5team https://stiffstream.com
Дата: 26.07.23 05:19
Оценка:
Здравствуйте, CreatorCray, Вы писали:

S>>Интересно было бы послушать, как можно было бы сделать в 1980-х вывод произвольных пользовательских типов без перегрузки операторов, с сохранением безопасности по типам.

CC>В плюсах можно было.

Давайте конкретнее: как?

CC>Я делал типобезопасный printf-like вывод через использование оператора запятая.


Объекты пользовательских типов посредством чего выводились?
Re[7]: Основные минусы плюсов...
От: Vzhyk2  
Дата: 26.07.23 05:21
Оценка:
CRT>>Для выводы обычных строк, символов, чисел printf удобней
S>Расскажите эту байку кому-нибудь помоложе.
Те кто помоложе часто любят совать пальцы в розетки, когда взрослеют, то понимают, что не нужно это делать.
Re[7]: Основные минусы плюсов...
От: so5team https://stiffstream.com
Дата: 26.07.23 05:23
Оценка: +1 :)
Здравствуйте, CreatorCray, Вы писали:

S>>С момента фиксации STL в стандарте это C++.

CC>Всё, что может быть полностью написано на С++ не является частью языка.
CC>Что бы там себе теоретики не фантазировали.

Частью языка является то, что зафиксировано в стандарте.

Чтобы там практики с "прерогативой на собственный опыт" не фантазировали.

CC>>>А этим извращением разве кто то всё ещё пользуется?

S>>Да. За пределами яблочного ядра есть жизнь.
CC>Выдыхай, бобёр! Хочешь пользоваться отвратительно спроектированным интерфейсом — ветер в спину.

Предложите лучше.

А да, у вас же есть мега альтернатива fmtlib, которую никто никогда не увидит.

S>> А у вас нет прерогативы на единственно правильное мнение.

CC>У меня есть прерогатива на собственный опыт, от ядер до финансового софта.

Если включить мозги (хотя мозги вряд ли могли бы позволить ЧСВ раздуться до такого уровня), то можно увидеть, что ваш опыт у вас никто не отнимает, а вот над желанием высказать единственно правильное мнение скоро будут откровенно стебаться.
Re[11]: Основные минусы плюсов...
От: so5team https://stiffstream.com
Дата: 26.07.23 05:57
Оценка: +2
Здравствуйте, so5team, Вы писали:

CC>>С появлением вариадиков я вообще могу написать вот такое:

CC>>
CC>>crprintf (L"%s %f %i", 0.5, 123, -PI);
CC>>

CC>>И оно напечатает "0.5 123 -3"

Кстати говоря, за то, что дабл выводится там, где требуется строка, а вещественное значение неявно преобразуется к целому (да и наоборот), руки нужно отрывать. Подобные вещи должны приводить к ошибкам, желательно времени компиляции.
Re[11]: Основные минусы плюсов...
От: CreatorCray  
Дата: 26.07.23 06:09
Оценка:
Здравствуйте, so5team, Вы писали:

S>Тем не менее, это можно было сделать еще в "Си с классами".

Можно было сделать удобнее.

S>Речь про сишный printf (fprintf, sprintf).

А зачем в плюсах упорно продолжать пользоваться сишными функциями?

S>Во-первых, речь не про вариадики.

Речь про С++, в котором уже давно есть вариадики.

S>Во-вторых, как с помощью мифического crprintf вывести объект собственного типа?

А где в исходнои примере ("std::cout << "0x" << std::hex << std::setfill('0') << std::setw(4) << 0x424 << std::endl;") объект собственного типа?
Впрочем если припрёт то всё что надо это определить функцию в namespace которая будет принимать контекст и const& на нужный тип и внутри сама форматировать его в строку.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: Основные минусы плюсов...
От: CreatorCray  
Дата: 26.07.23 06:09
Оценка:
Здравствуйте, so5team, Вы писали:

S>>>Интересно было бы послушать, как можно было бы сделать в 1980-х вывод произвольных пользовательских типов без перегрузки операторов, с сохранением безопасности по типам.

CC>>В плюсах можно было.

S>Давайте конкретнее: как?

Да так же. Просто не через operator<<

S>Объекты пользовательских типов посредством чего выводились?

Мне юзерская расширяемость нафиг не надо была, задача была полностью заменить printf. Впрочем любой новый тип добавляется туда элементарно.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.