Tuesday, October 17, 2006

Хороший линк

Блог чувака по имени 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.

Очень понравилось :)

3 comments:

Anonymous said...

Сенкс за ссылку :) Покурю про 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 :(

Alena said...

Так можно же std::vector использовать, там с получением размера все гораздо проще.

lrrr said...

Владимир, да, согласен на 100%, проблема тут в том что есть куча субъективных причин во многих случаях, не оставляющих никакого выбора кроме C++ :(

Алена, что касается std::vector -- оно правильно, конечно (еще правильно boost::array использовать). Какие-то workaround'ы есть всегда. Однако часто есть куча legacy кода который переписывать "правильно" -- не хватит никаких ресурсов.

Проблема в том что чтобы писать на C++ нормально поддерживаемые программы нужно помнить кучу правил -- использовать определенное подмножество C++ и помнить обо всех подводных граблях, которых там действительно огромная куча. На 80% это цена "почти совместимости" с C, которая реально в большинстве проектов совершенно не нужна.