Сообщение Re[8]: Достаточно ли знать С без знания С++ для устройства н от 05.09.2014 0:23
Изменено 05.09.2014 0:24 eskimo82
C>>>Да ну? Почему atomics в С тогда взяли из С++? Точнее, они совместно работали.
E>>Ты ничего не путаеш ? Атомарные переменные пришли в С++ из Си. Например sig_atomic_t вообще древний тип из стандарта POSIX.
C>Нет, не путаю. RTFM стандарты.
C>Вот статьи с обзором: https://lwn.net/Articles/586838/ и https://lwn.net/Articles/588300/
C>Фактически, это кодификация разных барьерных intrinsinc'ов и CAS-операций, которые раньше делались расширениями компиляторов.
Стандарты разные бывают. Ко всему прочему есть де-факто стандарты.
C>>>Единственным крупным расхождением являются именованные поля в инициализаторах структур и мелочи типа variable-sized arrays.
E>>Не только.
C>А что ещё?
Много чего. Возврат структурных типов из функций, например.
A>>>>>- использует минимум возможностей языка и не способен писать выразительный, идиоматичный код
E>>>>В C99 есть такие возможности которые в C++ и не снились.
C>>>ЩИТО?
E>>Ага.
C>Я весь внимание. Можно список?
Ты можеш составить его сам.
E>>>>В любом языке есть небезопасные конструкции, даже в той же Java выстрелить себе в ногу гораздо проще и потом часами искать ошибку — Например, можно просто забыть создать экземпляр класса какой нибудь коллекции в конструкторе.
C>>>ЩИТО?
E>>Ага. И главное super вызывать не забывай.
C>Можно пример?
C>Вообще-то, super() выполняется автоматически.
Возможно.
E>>>>Элементы обобщенного програмирования в Си тоже можно неплохо применять, а частности — первые наброски Степановом того, что сейчас называется STL были сделаны на Си, довольно оригинальным способом.
C>>>Ага, через макросы.
E>>Работает и работает неплохо.
C>Плохо. Криво, без частичной специализации и без многих оптимизаций.
Никто не говорил что будут все фишки, а работает нормально и с хорошей оптимизацией.
E>>Ты ничего не путаеш ? Атомарные переменные пришли в С++ из Си. Например sig_atomic_t вообще древний тип из стандарта POSIX.
C>Нет, не путаю. RTFM стандарты.
C>Вот статьи с обзором: https://lwn.net/Articles/586838/ и https://lwn.net/Articles/588300/
C>Фактически, это кодификация разных барьерных intrinsinc'ов и CAS-операций, которые раньше делались расширениями компиляторов.
Стандарты разные бывают. Ко всему прочему есть де-факто стандарты.
C>>>Единственным крупным расхождением являются именованные поля в инициализаторах структур и мелочи типа variable-sized arrays.
E>>Не только.
C>А что ещё?
Много чего. Возврат структурных типов из функций, например.
A>>>>>- использует минимум возможностей языка и не способен писать выразительный, идиоматичный код
E>>>>В C99 есть такие возможности которые в C++ и не снились.
C>>>ЩИТО?
E>>Ага.
C>Я весь внимание. Можно список?
Ты можеш составить его сам.
E>>>>В любом языке есть небезопасные конструкции, даже в той же Java выстрелить себе в ногу гораздо проще и потом часами искать ошибку — Например, можно просто забыть создать экземпляр класса какой нибудь коллекции в конструкторе.
C>>>ЩИТО?
E>>Ага. И главное super вызывать не забывай.
C>Можно пример?
public calss AAA {
public AAA( ... ) {
//nodes = new IdentityHashMap();
}
public void selectAll(boolean tag) {
for (Node node: nodes.values()) {
node.select = tag;
}
}
public void addNode(String id, Node node) {
nodes.put(id, node);
}
IdentityHashMap<String, Node> nodes;
};
C>Вообще-то, super() выполняется автоматически.
Возможно.
E>>>>Элементы обобщенного програмирования в Си тоже можно неплохо применять, а частности — первые наброски Степановом того, что сейчас называется STL были сделаны на Си, довольно оригинальным способом.
C>>>Ага, через макросы.
E>>Работает и работает неплохо.
C>Плохо. Криво, без частичной специализации и без многих оптимизаций.
Никто не говорил что будут все фишки, а работает нормально и с хорошей оптимизацией.
C>>>Да ну? Почему atomics в С тогда взяли из С++? Точнее, они совместно работали.
E>>Ты ничего не путаеш ? Атомарные переменные пришли в С++ из Си. Например sig_atomic_t вообще древний тип из стандарта POSIX.
C>Нет, не путаю. RTFM стандарты.
C>Вот статьи с обзором: https://lwn.net/Articles/586838/ и https://lwn.net/Articles/588300/
C>Фактически, это кодификация разных барьерных intrinsinc'ов и CAS-операций, которые раньше делались расширениями компиляторов.
Стандарты разные бывают. Ко всему прочему есть де-факто стандарты.
C>>>Единственным крупным расхождением являются именованные поля в инициализаторах структур и мелочи типа variable-sized arrays.
E>>Не только.
C>А что ещё?
Много чего. Возврат структурных типов из функций, например.
A>>>>>- использует минимум возможностей языка и не способен писать выразительный, идиоматичный код
E>>>>В C99 есть такие возможности которые в C++ и не снились.
C>>>ЩИТО?
E>>Ага.
C>Я весь внимание. Можно список?
Ты можеш составить его сам.
E>>>>В любом языке есть небезопасные конструкции, даже в той же Java выстрелить себе в ногу гораздо проще и потом часами искать ошибку — Например, можно просто забыть создать экземпляр класса какой нибудь коллекции в конструкторе.
C>>>ЩИТО?
E>>Ага. И главное super вызывать не забывай.
C>Можно пример?
C>Вообще-то, super() выполняется автоматически.
Возможно.
E>>>>Элементы обобщенного програмирования в Си тоже можно неплохо применять, а частности — первые наброски Степановом того, что сейчас называется STL были сделаны на Си, довольно оригинальным способом.
C>>>Ага, через макросы.
E>>Работает и работает неплохо.
C>Плохо. Криво, без частичной специализации и без многих оптимизаций.
Никто не говорил что будут все фишки, а работает нормально и с хорошей оптимизацией.
E>>Ты ничего не путаеш ? Атомарные переменные пришли в С++ из Си. Например sig_atomic_t вообще древний тип из стандарта POSIX.
C>Нет, не путаю. RTFM стандарты.
C>Вот статьи с обзором: https://lwn.net/Articles/586838/ и https://lwn.net/Articles/588300/
C>Фактически, это кодификация разных барьерных intrinsinc'ов и CAS-операций, которые раньше делались расширениями компиляторов.
Стандарты разные бывают. Ко всему прочему есть де-факто стандарты.
C>>>Единственным крупным расхождением являются именованные поля в инициализаторах структур и мелочи типа variable-sized arrays.
E>>Не только.
C>А что ещё?
Много чего. Возврат структурных типов из функций, например.
A>>>>>- использует минимум возможностей языка и не способен писать выразительный, идиоматичный код
E>>>>В C99 есть такие возможности которые в C++ и не снились.
C>>>ЩИТО?
E>>Ага.
C>Я весь внимание. Можно список?
Ты можеш составить его сам.
E>>>>В любом языке есть небезопасные конструкции, даже в той же Java выстрелить себе в ногу гораздо проще и потом часами искать ошибку — Например, можно просто забыть создать экземпляр класса какой нибудь коллекции в конструкторе.
C>>>ЩИТО?
E>>Ага. И главное super вызывать не забывай.
C>Можно пример?
public class AAA {
public AAA( ... ) {
//nodes = new IdentityHashMap();
}
public void selectAll(boolean tag) {
for (Node node: nodes.values()) {
node.select = tag;
}
}
public void addNode(String id, Node node) {
nodes.put(id, node);
}
IdentityHashMap<String, Node> nodes;
};
C>Вообще-то, super() выполняется автоматически.
Возможно.
E>>>>Элементы обобщенного програмирования в Си тоже можно неплохо применять, а частности — первые наброски Степановом того, что сейчас называется STL были сделаны на Си, довольно оригинальным способом.
C>>>Ага, через макросы.
E>>Работает и работает неплохо.
C>Плохо. Криво, без частичной специализации и без многих оптимизаций.
Никто не говорил что будут все фишки, а работает нормально и с хорошей оптимизацией.