Здравствуйте, eskimo82, Вы писали:
C>>Да ну? Почему atomics в С тогда взяли из С++? Точнее, они совместно работали.
E>Ты ничего не путаеш ? Атомарные переменные пришли в С++ из Си. Например sig_atomic_t вообще древний тип из стандарта POSIX.
Нет, не путаю. RTFM стандарты.
Вот статьи с обзором:
https://lwn.net/Articles/586838/ и
https://lwn.net/Articles/588300/
Фактически, это кодификация разных барьерных intrinsinc'ов и CAS-операций, которые раньше делались расширениями компиляторов.
C>>Единственным крупным расхождением являются именованные поля в инициализаторах структур и мелочи типа variable-sized arrays.
E>Не только.
А что ещё?
A>>>>- использует минимум возможностей языка и не способен писать выразительный, идиоматичный код
E>>>В C99 есть такие возможности которые в C++ и не снились.
C>>ЩИТО?
E>Ага.
Я весь внимание. Можно список?
E>>>В любом языке есть небезопасные конструкции, даже в той же Java выстрелить себе в ногу гораздо проще и потом часами искать ошибку — Например, можно просто забыть создать экземпляр класса какой нибудь коллекции в конструкторе.
C>>ЩИТО?
E>Ага. И главное super вызывать не забывай.
Можно пример? Вообще-то, super() выполняется автоматически.
E>>>Элементы обобщенного програмирования в Си тоже можно неплохо применять, а частности — первые наброски Степановом того, что сейчас называется STL были сделаны на Си, довольно оригинальным способом.
C>>Ага, через макросы.
E>Работает и работает неплохо.
Плохо. Криво, без частичной специализации и без многих оптимизаций.