Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>>Компиляторы точно на С++ писать не стоит. CC>>Расскажи вот им: https://lwn.net/Articles/542457/
НС>Зачем? Бутстраппинг компайлера — правило хорошего тона. Но не делает С++ лучшим выбором для других языков.
Э-э-э...
GCC — тащем-то — это GNU Compiler Collection — пачка фронт-эндов и пачка бэкендов. Чёта они забили на правила хорошего тона, не?
Здравствуйте, Pzz, Вы писали:
НС>>>Компиляторы точно на С++ писать не стоит.
CC>>Расскажи вот им: https://lwn.net/Articles/542457/
Pzz>Ян Тейлор, надо сказать, сбежал в Go от всего этого кошмара. Но на прощанье, как я вижу, решил внести сомнения в gcc'ные умы.
Из сишного GCC кто угодно куда угодно сбежит, лишь бы улизнуть из ада. О чем это может говорить? Только о сишечке
Pzz>>>Но вообще, в C++, в котором таблица виртуальных методов общая для всех экземпляров класса,
DI>>А что мешает в наколеночной реализации на С иметь одну таблицу на все экземпляры?
Pzz>Очень неудобно.
И кроме всего прочего, непонятна тогда нужда заводить vtbl, одинаковую для всех. В плюсиках компилятор будет решать, как лучше, в сишечке — сишечник, который считает себя умнее компилятора. Причем для каждого конфига сборки — заново. гениальное решение, я щитаю
Здравствуйте, nekocoder, Вы писали:
CC>>Вот это ты сейчас серьёзно? N>Абсолютно. Например недавно столкнулся с безобидным с виду строковым полем в классе
Т.е. ты "не заметил" & в конце декларации?
N>причем ссылкой на нечто очень далекое.
Ты что под "очень далёким" понимаешь?
N>изучение кода замедляет. С указателем бы сразу было все ясно.
Это говорит лишь о недостатке опыта
N>в софте бывают баги. Синтаксис ссылок помогает их сделать.
Строго наоборот. По хорошему указателей в С++ коде вне отдельных мест, где надо конкретно заниматься адресной арифметикой, быть просто не должно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Marty, Вы писали:
M>Так-то всякие тупые касты в стиле чистой сишечки — это даже не подножка, а когда сбивают с ног и потом ногами еще хреначат то потери сознания. M>Я так понимаю, ты не осилил в шаблоны со всяким выводом и auto, а теперь, чтобы оправдаться перед собой, тупо называешь всё это "бесовщиной"? Ну-ну
Поди ещё в vim пишет и в консоли компиляет
M>>>Легальными способами сделать нулевую ссылку нельзя N>>Да ладно, обычный дереференс нулевого указателя.
M>Ну, это да, легально, подловил.
Это не легально.
Безусловно кастить указатель (который по определению может быть NULL) в ссылку (которая NULL быть не может) это баг.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, nekocoder, Вы писали:
N>Когда ты видишь указатель, ты знаешь что это указатель и что его можно и нужно проверять на nullptr. Когда ты видишь ссылку, ты не знаешь, что это ссылка, не ожидаешь, что в ней может быть nullptr, и не можешь напрямую проверить на nullptr.
А какой это криворучка взял указатель, не проверил его на NULL и разыменовал в ссылку, а?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, nekocoder, Вы писали:
N>Абсолютно. Например недавно столкнулся с безобидным с виду строковым полем в классе, которое оказалось ссылкой, причем ссылкой на нечто очень далекое. Все это конечно некритично, но изучение кода замедляет. С указателем бы сразу было все ясно.
Здравствуйте, smeeld, Вы писали:
НС>>Тебя попросили привести твой код, а ты почему то вместо этого привел чужой. В чем логика? У тебя нет своего кода?
S>Бро, я никогда не писал хеллоуворлды и велосипеды с нуля.
Здравствуйте, CreatorCray, Вы писали:
CC>А какой это криворучка взял указатель, не проверил его на NULL и разыменовал в ссылку, а?
Какой-то взял, 10 лет назад, когда этот указатель не мог быть null. А потом времена поменялись и он иногда стал становиться null, но несколько лет на это не натыкались. А потом опять что-то поменялось и наткнулись.
Здравствуйте, CreatorCray, Вы писали:
CC>Т.е. ты "не заметил" & в конце декларации?
Декларация в заголовке, ее не видно если специально не лезть. В этом и есть проблема ссылок.
CC>По хорошему указателей в С++ коде вне отдельных мест, где надо конкретно заниматься адресной арифметикой, быть просто не должно.
Ссылка — это указатель, маскирующийся под значение. Лишняя сложность на ровном месте.
Здравствуйте, CreatorCray, Вы писали:
M>>Так-то всякие тупые касты в стиле чистой сишечки — это даже не подножка, а когда сбивают с ног и потом ногами еще хреначат то потери сознания. M>>Я так понимаю, ты не осилил в шаблоны со всяким выводом и auto, а теперь, чтобы оправдаться перед собой, тупо называешь всё это "бесовщиной"? Ну-ну CC>Поди ещё в vim пишет и в консоли компиляет
Та-а-а-а-а-к, ты что-то имеешь против фара?
M>>>>Легальными способами сделать нулевую ссылку нельзя N>>>Да ладно, обычный дереференс нулевого указателя.
M>>Ну, это да, легально, подловил. CC>Это не легально. CC>Безусловно кастить указатель (который по определению может быть NULL) в ссылку (которая NULL быть не может) это баг.
С точки зрения компилятора — это таки легально.
Но разыменовывать указатель в ссылку, передаваемую куда-то дальше, без проверки на валидность — это гейство в плохом смысле этого слова. Пидерсия, я бы сказал.
Сишечники вообщые смешные люди — кастуют что ни попадя куда ни попадя, а потом плюсики со строгой типизацией объявляют вселенским злом
Здравствуйте, CreatorCray, Вы писали:
CC>Безусловно кастить указатель (который по определению может быть NULL) в ссылку (которая NULL быть не может) это баг.
Например, указатель — приватное поле, которое инициализируется в конструкторе строго в не-null.
Здравствуйте, nekocoder, Вы писали:
N>>>Когда ты разбираешься в куче чужого кода, это лишняя подножка. CC>>Вот это ты сейчас серьёзно? N>Абсолютно. Например недавно столкнулся с безобидным с виду строковым полем в классе, которое оказалось ссылкой, причем ссылкой на нечто очень далекое. Все это конечно некритично, но изучение кода замедляет. С указателем бы сразу было все ясно.
Чем '*' отличается от '&'? , тем, что ты на '*' тригеришь как на потенциально опасное, а на '&' — нет?
Так-то ссылки в структуре-классе это пидорство. Как и сырые указатели, в основном
CC>>Такое на практике часто бывает когда руки из жопы. Потому что это банальный баг. N>Внезапно, мир несовершенен и в софте бывают баги. Синтаксис ссылок помогает их сделать.
Здравствуйте, Marty, Вы писали:
M>Та-а-а-а-а-к, ты что-то имеешь против фара?
Far != vim
M>С точки зрения компилятора — это таки легально.
Ты какие то странные определения используешь.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, nekocoder, Вы писали:
N>Какой-то взял, 10 лет назад, когда этот указатель не мог быть null.
Любой указатель может быть NULL.
Если есть ожидания то либо сразу делай ссылкой либо ставь assert.
Нет ни того ни другого — говнокод
N> А потом времена поменялись и он иногда стал становиться null, но несколько лет на это не натыкались. А потом опять что-то поменялось и наткнулись.
Дада, а ещё файлы должны всегда существовать (и раньше были) и функции не должны были файлить (и не файлили раньше), и память не кончается никогда (ну не кончалась же раньше!).
Error handling для трусов, да!
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, nekocoder, Вы писали:
CC>>Т.е. ты "не заметил" & в конце декларации? N>Декларация в заголовке, ее не видно если специально не лезть. В этом и есть проблема ссылок.
Т.е. ты что то лезешь делать в чужом коде с переменной не зная о ней вообще ничего? Молодец, чо! Не думай, не разбирайся — сразу херачь и в продакшен!
И да, у тебя что, IDE не умеет типы переменных показывать?
CC>>По хорошему указателей в С++ коде вне отдельных мест, где надо конкретно заниматься адресной арифметикой, быть просто не должно. N>Ссылка — это указатель, маскирующийся под значение. Лишняя сложность на ровном месте.
Эта абстракция — одно из преимуществ С++ перед С, которое позволяет писать более простой, безопасный и чистый код.
Пока к коду не подпускают сишников, которые каменными топорами прорубают себе дыры, строго в соответствии с заветами Паблика Морозова.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока