Крылатый
Триггеры и сумматоры беспощадны.
Крылатый
https://github.com/agauniyal/termdb
✙ Fatum ✙
В каком месте C++ строгий? :) Вот Паскаль строгий.
по сравнению с джавой, шарпом, питон и прочими модными япами - строгий)
Крылатый
Смотря где строгасть считать.
✙ Fatum ✙
чем он строже джавы и шарпа?
ну это мое ощущения, потому что у меня редко с первого раза компилируеться..а потом еще сегфолты..а на шарпе - вжух-вжух и в продакшен)
Artem
так строгость не об этом
Andrei
Машинный код... вот кто строг
Наоборот же, можно написать что угодно. никаких типов нифига.
✙ Fatum ✙
питон насколько я знаю требует пробелы..а кто требует табуляции? есть такие?
Berkus
чем он строже джавы и шарпа?
ты генерики в джаве видел? Object<Object> objectObject;
✙ Fatum ✙
дженерики в жаве и шарпе проще темлейтов(имхо) и не нужно постоянно темлейт класс писать >_<
Artem
ты шаблоны и макросы в плюсах видел? можно написать любое дерьмо
Berkus
видел, и что?
то что там проверок около нуля в итоге, все в Object превращается
✙ Fatum ✙
да, но допускаються отступі и пробелами)) никто там табами не насилует..другое дело, что віглядит оно не ок
Berkus
строгость это когда ты пишешь vector<MyType> ты в векторе можешь хранить MyType, а не Object #define вообще препроцессор и в входном коде компилятору ты его не увидишь
🦥Alex Fails
Выложу в канал
🦥Alex Fails
Про типизацию и ее виды
Berkus
мы же про строгость с точки зрения типов говорим?
Artem
это не про строгость опять же
в плане. у тебя в темплейтах дак тайпинг, ты можешь туда засунуть что угодно
Berkus
в темплейтах статическая типизация
Artem
ну и что что препроцессор, это часть языка
Berkus
ты не можешь туда что угодно засунуть
✙ Fatum ✙
я порой не слежу, какая раскладка влкючена, когда свичаюсь из инглиша в русский
✙ Fatum ✙
а 3 раскладки- это тяжко)
Berkus
template <int N> class A; <- давай, засовывай
Artem
ты не можешь туда что угодно засунуть
мы разное понимаем под "засунуть"
Berkus
вот я тебе дал темплейт
Berkus
засунь туда хотя бы строку
✙ Fatum ✙
Про типизацию и ее виды
можно твое мнения, как спеца? почему в ++ обязательно нужно template<class T> писать когда пишешь реализацию для темплейтного класса? и если какие-то снипеты в куте криейторе, чтоб они сами расставлялись сверху?
Berkus
ты можешь сама же создать сниппет
Berkus
> почему в ++ обязательно нужно template<class T> template <> говорит конпелятору чтобы он закрыл глаза и компилировал как попало, пушо дальше будет сложно
✙ Fatum ✙
ахахах, класс))
Artem
засунь туда хотя бы строку
напиши на плюсах аналог class A<B extends C>
✙ Fatum ✙
я просто ищу какую-то автоматизацию для этого, а то над каждым методом писать template<ololo> задалбывает
✙ 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 делает язык не строгим.
Berkus
напиши на плюсах аналог class A<B extends C>
ты хочешь ккой вариант, через static_assert, или через SFINAE?
Berkus
Строгий язык не должен позволять писать такую дичь
спасибо, отличная формулировка. "А один язык седой и строгий сказал отчетливо сегфолт"
Berkus
напиши на плюсах аналог class A<B extends C>
ладно, начнем со статика template <typename B> class A { static_assert(std::is_base_of<C, B>::value, "B not derived from C"); };
Kirill
Но как быть до C++11?
Berkus
взять BOOST_CONCEPT_REQUIRES
Kirill
О_о
Artem
Ну да, так можно
Andrei
Да, всем известно в плюсах нестрогая типизация.
Andrei
Это не большая проблема.
Andrei
Фишка плюсов в том, что ты получаешь полный контроль над ситуацией.
Andrei
Если хочешь ты можешь и горы свернуть и в ногу выстрелить.
Andrei
И это то, за что этим языком пользуются.
Andrei
Компилятор делает всё возможное, чтобы твой код работал быстро.
Andrei
Другие языки попросту по своему дизайну не дают тебе этого контроля.
Kirill
Я не спорю. Но если типизация не строгая, то и язык строгим не назовешь.
Andrei
Что такое вообще «строгий» язык?
Kirill
Язык, который держит программиста в жестких рамках
Kirill
:)
Andrei
Плюсы это статически-, но не строго-типизированный язык.
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
Kirill
Чувак решил сделать свой shared_ptr. Боже, как же меня это бесит!