Крылатый
Триггеры и сумматоры беспощадны.
Крылатый
https://github.com/agauniyal/termdb
Крылатый
Смотря где строгасть считать.
Artem
✙ Fatum ✙
чем он строже джавы и шарпа?
ну это мое ощущения, потому что у меня редко с первого раза компилируеться..а потом еще сегфолты..а на шарпе - вжух-вжух и в продакшен)
Artem
так строгость не об этом
✙ Fatum ✙
питон насколько я знаю требует пробелы..а кто требует табуляции? есть такие?
Artem
✙ Fatum ✙
дженерики в жаве и шарпе проще темлейтов(имхо) и не нужно постоянно темлейт класс писать >_<
Artem
ты шаблоны и макросы в плюсах видел? можно написать любое дерьмо
Berkus
видел, и что?
то что там проверок около нуля в итоге, все в Object превращается
✙ Fatum ✙
да, но допускаються отступі и пробелами)) никто там табами не насилует..другое дело, что віглядит оно не ок
Berkus
Berkus
строгость это когда ты пишешь vector<MyType> ты в векторе можешь хранить MyType, а не Object
#define вообще препроцессор и в входном коде компилятору ты его не увидишь
🦥Alex Fails
🦥Alex Fails
Выложу в канал
🦥Alex Fails
Про типизацию и ее виды
Berkus
мы же про строгость с точки зрения типов говорим?
Berkus
в темплейтах статическая типизация
Artem
ну и что что препроцессор, это часть языка
Berkus
ты не можешь туда что угодно засунуть
✙ Fatum ✙
я порой не слежу, какая раскладка влкючена, когда свичаюсь из инглиша в русский
✙ Fatum ✙
а 3 раскладки- это тяжко)
Berkus
template <int N> class A; <- давай, засовывай
Berkus
вот я тебе дал темплейт
Berkus
засунь туда хотя бы строку
✙ Fatum ✙
Про типизацию и ее виды
можно твое мнения, как спеца? почему в ++ обязательно нужно template<class T> писать когда пишешь реализацию для темплейтного класса? и если какие-то снипеты в куте криейторе, чтоб они сами расставлялись сверху?
Berkus
ты можешь сама же создать сниппет
Berkus
> почему в ++ обязательно нужно template<class T>
template <> говорит конпелятору чтобы он закрыл глаза и компилировал как попало, пушо дальше будет сложно
✙ Fatum ✙
ахахах, класс))
✙ Fatum ✙
я просто ищу какую-то автоматизацию для этого, а то над каждым методом писать template<ololo> задалбывает
Berkus
Berkus
✙ Fatum ✙
а, окей) ща погуглю
Kirill
Мы остановились, добившись успешной компиляции следующего:
for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
- вот почему C++ ни разу не строгий.
Kirill
Вот на С++ вы можете написать subj. На паскале вы не можете такого написать, это одно из преимуществ паскаля перед С++
Berkus
но это бред, где здесь проверяется строгость?
Kirill
Строгий язык не должен позволять писать такую дичь
Kirill
Ну а для скептиков напомню, что хотя бы наличие reinterpret_cast делает язык не строгим.
🦥Alex Fails
✙ Fatum ✙
Kirill
Kirill
Но как быть до C++11?
Berkus
взять BOOST_CONCEPT_REQUIRES
Kirill
О_о
Artem
Ну да, так можно
Andrei
Andrei
Andrei
Да, всем известно в плюсах нестрогая типизация.
Andrei
Это не большая проблема.
Andrei
Фишка плюсов в том, что ты получаешь полный контроль над ситуацией.
Andrei
Если хочешь ты можешь и горы свернуть и в ногу выстрелить.
Andrei
И это то, за что этим языком пользуются.
Andrei
Компилятор делает всё возможное, чтобы твой код работал быстро.
Andrei
Другие языки попросту по своему дизайну не дают тебе этого контроля.
Kirill
Я не спорю. Но если типизация не строгая, то и язык строгим не назовешь.
Andrei
Что такое вообще «строгий» язык?
Kirill
Язык, который держит программиста в жестких рамках
Kirill
:)
Andrei
Плюсы это статически-, но не строго-типизированный язык.
Andrei
Наоборот я могу решить задачу миллионом способов.
Kirill
Вот именно
Andrei
Язык позволяет мне практически что угодно. Это я сам должен себя ограничивать, чтобы писать правильно.
Andrei
Но в плане шаблонов плюсы конечно меня ограничивают.
Andrei
Да, это недостаток.
Andrei
Но я в процессе его исправления.
🦥Alex Fails
Я напишу свои плюсы, с констэкспром и шаблонами
Kirill
Попахивает велосипедом, не? :)
#if defined(__CLANG_ATOMICS)
#define atomic_increment(object) \
__c11_atomicadd_fetch(object, 1, __ATOMIC_RELAXED)
#define atomic_decrement(object) \
__c11_atomic_sub_fetch(object, 1, __ATOMIC_ACQ_REL)
#elif defined(__GNUC_ATOMICS)
#define atomic_increment(object) \
__atomic_add_fetch(object, 1, __ATOMIC_RELAXED)
#define atomic_decrement(object) \
__atomic_sub_fetch(object, 1, __ATOMIC_ACQ_REL)
#else
#define atomic_increment(object) \
__sync_add_and_fetch(object, 1)
#define atomic_decrement(object) \
__sync_sub_and_fetch(object, 1)
#endif
Vladislav
Kirill
Чувак решил сделать свой shared_ptr. Боже, как же меня это бесит!