Вы думаете, что вы знаете С++?
Mar. 8th, 2009 02:04 pmНет, вы не знаете С++. Вы знаете С++ с хорошей стороны, но вы еще узнаете С++ с плохой стороны!
Я в последние годы как-то остерегаюсь высказывать категоричные мнения по таким темам, как будущее языков программирования, но мне кажется, что будет интересно.
Я в последние годы как-то остерегаюсь высказывать категоричные мнения по таким темам, как будущее языков программирования, но мне кажется, что будет интересно.
no subject
on 2009-03-08 01:13 pm (UTC)no subject
on 2009-03-08 01:32 pm (UTC)фактически главным reason d'etre C++ является обратная совместимость с метрическими говнокилотоннами существующего кода, так что ---.
no subject
on 2009-03-08 01:42 pm (UTC)Интроспекцию (конечно ограниченную) вполне можно сделать на основе type_info
no subject
on 2009-03-08 01:45 pm (UTC)я тоже.
с C и так полной совместимости нет, собственно.
no subject
on 2009-03-08 01:45 pm (UTC)Сейхас такое компилироваться не будет и это мало кого волнует
no subject
on 2009-03-08 01:49 pm (UTC)no subject
on 2009-03-08 02:11 pm (UTC)no subject
on 2009-03-08 02:20 pm (UTC)будем надеятся, что на основе этого народ сумеет и более нормальную библиотеку соорудить — сегодняшние оставляют желать лучшего, подозреваю, в немалой степени потому что у библиотекописателей в какой-то момент просто отваливаются кисти рук, поскольку для реализации пуленепробиваемой и юзабельной библиотечной функциональности на сегодняшнем C++ надо банально написать Очень-Очень Много Кода.
no subject
on 2009-03-08 10:25 pm (UTC)Еще пара итераций и будем иметь ML++, кстати, стрелочки уже появились. О! я понял это заговор - типа, как приучить
стадомассы, а главное, management к нормальному языку - а мы что, а мы ничего, мы на C++ пишем, с использованием Best industry practicesno subject
on 2009-03-09 05:08 am (UTC)no subject
on 2009-03-09 05:44 am (UTC)no subject
on 2009-03-09 06:26 am (UTC)хотя, на самом деле есть два основных типа ситуаций, в которых auto может облегчить жизнь:
1. Alexandresku-style шаблонные мета-извращения, когда тип переменной либо умаешься выписывать, либо надо передавать по всему каскаду нудными typedef'ами. по поводу этих ситуаций можно сказать, что в психически здоровой кодобазе такого ужоса просто не должно быть.
2. объявления итераторов (ну реально же задалбывает писать все эти "std::vector<МойДлинныйТип>::iterator i"!). по поводу этих ситуаций можно сказать, что в психически здоровом языке должна быть родная конструкция типа for_each, на практике устраняющая практически полностью надобность пользоваться итераторами как класс.
но про идею и дух всё равно хотелось бы поподробнее. :)
no subject
on 2009-03-09 08:56 am (UTC)2. Ну так, там добавили foreach под маской for
С идеей и духом сложно, точнее неоднозначно - есть унаследованная из C идея, что программисто жестко все задает, зато знает, что происходит, и это естественно, включает типы переменных, и есть над этим надстройка C++, которая якобы экономит explicit typecasts, а на самом деле вносит subtle bugs и полностью лишает возможности узнать, какая функция вызвалась, не проверив все overloads функции и определения всех типов, чтобы занть что там во что неявно конвертировалось (я по крайненй мере дважды по ошибке передал стринг и эта сука компилятор построил мне из него полупустой объект класс, так что я потом обысклася, кто же мне поля стирает - да-да, я уже объявил этот конструктор explicit). Так вот, auto уводит нас еще радикальней по второму пути - теперь, чтобы понять, что происходит, надо будет еще посмотреть, а что же там возвращает функция - я говорю не о том, кто пишет код, а о том, кто его читает (как все мы знаем это может быть одно и то же лицо с перерывом в пару месяцев).
Ты пойми, я не говорю, что C++ хорош, а эти изменения его портят - я говорю, что он ужасен и все это как мертвому припарки.
no subject
on 2009-03-09 09:22 am (UTC)ужасен, да, но какая польза бедному практику от подобного максимализьма?
(no subject)
Posted bymore rope
Posted byno subject
on 2009-03-09 08:58 am (UTC)no subject
on 2009-03-09 09:05 am (UTC)без лямбд это было, гм, не очень практично. а с лямбдами посмотрим.
(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted byno subject
on 2009-03-08 03:50 pm (UTC)no subject
on 2009-03-08 05:09 pm (UTC)no subject
on 2009-03-08 05:15 pm (UTC)no subject
on 2009-03-08 05:19 pm (UTC)no subject
on 2009-03-08 05:34 pm (UTC)ПМСМ, если ограничивать себя - писать на подмножестве С++ - можно жить, и неплохо.
no subject
on 2009-03-08 05:42 pm (UTC)вот да, лучше мы не будем об этом говорить.
теоретически — безусловно. на практике, видимо, не бывает. рано или поздно приходит какой-нибудь архитектурный астронавт, и пошла писать губерния.
макросы гораздо лучше тех же шаблонов (в пересекающейся функциональности, натурально). прогнать файл через препроцессор и поглядеть что получилось — гораздо проще, чем расшифровывать сообщения компилятора в 150 строк, к тому же относящиеся почему-то к библиотечному инклуду. плюс никаких непоняток с инстанциацией.
no subject
on 2009-03-08 06:45 pm (UTC)Если вам макросы приятнее отлаживать, чем темплейты - могу только пожать вашу мужественную руку, и пожелать приятной отладки.
А ООП/ООД, если без "заставь дурака богу молиться" - вешь настолько ценная для больших систем, что за поддержку ее можно простить С++ многое.
no subject
on 2009-03-08 07:01 pm (UTC)единственная защита от астронавтов (точнее, смягчающее средство) — это изначальная ограниченность возможностей для их
кипучей абстрактной мастурбациидизайнерской фантазии.ну вот опять вы про сферических коней в вакууме...
no subject
on 2009-03-08 07:03 pm (UTC)(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by