LINUX.ORG.RU

Оправдывайтесь, плюсодрочеры! (a.k.a. есть что-то хуже C++?)

 ,


0

4

Решил проверить, вдруг со времён С++98/03 что-то поменялось и язык стал вменяемым языком, а не набором костылей.

Спиратил Effective Modern C++ Мейерса. Дочитал до 6-го item'а. Там облом с auto: возвращается прокси-объект вместо ожидаемого программистом типа. Как обойти? (барабанная дробь) ЯВНЫМ ПРИВЕДЕНИЕМ ТИПА!

Нафига нужен тогда auto, если от явного приведения типа никуда не деться?

Сейчас фанбои закудахтают что мол «ну это же исключение, обычно auto ведёт себя так как надо». Предлагаю им представить типичную ситуацию в проэкте на 99M loc: объект возвращал что-то такое, что было совместимо с нашими представлениями и убогим type inference и мы использовали auto и ни о чём не думали. А потом решили для оптимизации или чего ещё заменить возвращаемое значение на прокси.

Что предложат нам фанбои? Перелопачивать 99M loc и явно кастовать/заменять auto на нужный тип?

Ладно, не шмагли запилить нормальный type inference, как в человеческих языках семейства ML. Ну могли бы запилить что-нибудь вроде оператора приведения к auto:

class ProxyClass {
    operator auto() { return ExpectedType; }
}
Компилятор использовал бы эту конструкцию для вывода типа для auto-переменной.

Конечно, теперь нам нужен костыль для случая когда мы хотим, чтобы auto выводилось не в ExpectedType, а в ProxyClass. Но это меньшее зло: этот костыль будет нужен только в ограниченном объёме кода и с ним будет работать малое число посвящённых, вроде написателей библиотеки. Огромные же пласты пользовательского кода будут безболезненно и незаметно переносить замену ExpectedType на ProxyClass и обратно.

Ладно, я тут со своими рационализаторскими предложениями отклонился от главной мысли. Прошёл десяток лет. Вышли новые стандарты. Но язык по прежнему остался кривым и убогим нагромождением правил и исключений (одно из которых я привёл выше). Затхлым прудом, под тиной которого скрыты завалы подводных камней. И с новым стандартом камней стало только больше.

Есть что-то иезуитское в названиях вида «Effective C++», когда в самой книге описываются методы как при движении по полю не подорваться на минах, которые рандомно разбросали полоумные создатели стандарта. Можно ли «эффективно» (быстро) двигаться по минному полю и не подрываться? Нет, это взаимоисключающие параграфы.

На C++ можно писать либо эффективно и проект быстро станет бажным и дорогим в поддержке. Можно писать корректно, что значит сверять каждую введённую строчку с кучей правил и исключений в страхе ошибиться в каких-то предположениях — то есть писать медленно и опять же дорого.

Плюсодрочеры, начинайте каяться!



Последнее исправление: SystemD-hater (всего исправлений: 5)
Ответ на: комментарий от SystemD-hater

Ты хоть раз ответишь на вопрос об альтернативе? На чем писать-то было? На си - ещё хуже. Сейчас хоть rust выйдет, может получится чего.

anonymous
()
Ответ на: комментарий от ovk48

Чего страшного-то?

Мне - ничего, наоборот активно растом интересуюсь. Просто такие неосиляторы, как автор темы и про раст будут ныть.

DarkEld3r ★★★★★
()
Ответ на: комментарий от SystemD-hater

Неужели они таки решились это сделать? Хм... через это, наверное, можно запилить нормальные проперти.

Gorthauer ★★★★★
()
Ответ на: комментарий от CunMun

Совсем не при чём.

И вообще, это канал об аниме. Какой C++?

SystemD-hater
() автор топика
Ответ на: комментарий от rupert

Для новичков - нормально. А с определённого уровня практически бесполезен. Страуструп и Саттер, например, лучше.

anonymous
()
Ответ на: комментарий от Gorthauer

Их и в C++11 можно запилить. Только они не нужны.

anonymous
()

вдруг со времён С++98/03 что-то поменялось и язык стал вменяемым языком, а не набором костылей

Наивный какой, однако.

Deleted
()
20 августа 2016 г.
Ответ на: комментарий от pon4ik

Если вы никого не злите, возможно вы не делаете ничего существенного

Вся суть плюсоняшек. Сотворят кучу добра, а когда та индуцирует тонны ненависти, начинают неиллюзорно гордиться. Импакт типа, ага.

anonymous
()
Ответ на: комментарий от pon4ik

Так и не ем же.
Только вот что мне делать если агрессивное быдло мне поперек горла со своим импактом, не подскажешь?

anonymous
()
Ответ на: комментарий от anonymous

язабан

Баны - в ближайшем бантустане :)

anonymous
()
Ответ на: комментарий от anonymous

Не очень понял постановку вопроса. Думаю тебе просто надо в отпуск (ну или на каникулы) и глицинчику сожрать.

pon4ik ★★★★★
()
Ответ на: комментарий от SystemD-hater

Этот покаялся, несите следующего.

Можно даже целыми группами (командами, коллективами, организациями)...

anonymous
()
15 марта 2017 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.