Блог чувака по имени Zhanyong Wan' -- он был разработчиком в Visual Studio .net setup team, сейчас в гугле работает. (Неожиданно оказался еще и разработчиком FRP, для тех кто в теме :)
Рекомендую, типа.
Улыбнуло: вот у него здоровый, со вкусом к C++ написанный пост, а-ля Александреску-Саттер "как грамотно получить размер массива в C++". Во, думаю, отличная иллюстрация к тезису о том что C++-разработчик играется с языком вместо того чтоб писать программы.
Ан нет -- через несколько месяцев продолжение, оказывается, грамотный метод тоже работает не всегда, и замечательное резюме:
I cannot believe it’s so difficult to get such a simple job (getting the number of array elements) done in C++.
What a broken language it is.
What a broken language it is.
Очень понравилось :)
3 comments:
Сенкс за ссылку :) Покурю про real time & event driven FRP.
А про С++ - это такой мощный и сложный макро-ассемблер с большим наследием. И писать на нем надо ассемблерный код - низкий уровень без излишних наворотов.
Печально, когда люди огромной кучей кода имитируют то, что в ФП пишется парой строк. Ведь можно сделать библиотеку и вызывать ее из более высокоуровневого языка.
Template meta-programming, функторы, design patterns - зачем все эти сложности? Получается неспоровождаемый, долго компилируемый, error-prone код (с кучей internal compiler error).
ocaml не сложнее обычного паскаля и гораздо удобнее С++. python, ruby, tcl могут решить кучу проблем проще (хотя и не люблю dynamic typing). Haskell - вообще прелесть (только type class-ами не надо слишком увлекаться). Erlang - просто чудо для задач опредленного класса.
За 3 года, которые требуются на изучение С++ можно изучить столько всего... Только на полках магазинов, в институтах и форумах - C++, Java, perl и php :(
Так можно же std::vector использовать, там с получением размера все гораздо проще.
Владимир, да, согласен на 100%, проблема тут в том что есть куча субъективных причин во многих случаях, не оставляющих никакого выбора кроме C++ :(
Алена, что касается std::vector -- оно правильно, конечно (еще правильно boost::array использовать). Какие-то workaround'ы есть всегда. Однако часто есть куча legacy кода который переписывать "правильно" -- не хватит никаких ресурсов.
Проблема в том что чтобы писать на C++ нормально поддерживаемые программы нужно помнить кучу правил -- использовать определенное подмножество C++ и помнить обо всех подводных граблях, которых там действительно огромная куча. На 80% это цена "почти совместимости" с C, которая реально в большинстве проектов совершенно не нужна.
Post a Comment