21 November, 2008

В семье не без урода

.NET Compact Framework есть существо обделенное не только функциональностью, но и интеллектом. Целый день ковырял странный exception о том, что тип не загружен. Мало того, что не говорится какой именно тип не загружен, но и возникает он в станном месте, где по идее ничего криминального нет. Обидно еще то, что отладчик напрочь отказался коннектиться к приложению на симуляторе. Пришлось отлаживать итерационным методом: исправил, запустил, проверил, что сюда дошли и так по кругу...

Расковырял: оказалось, что любой exception в статическом конструкторе подменяется exception о незагрузке типа без указания что же блин произошло там внутри. Простенько и со вкусом. Дальше больше: код ассембли был скомпилирован для .NET Framework v1.0, а запускался он на .NET Compact Framework v3.5. Так вот в коде были случайно использованы классы и методы (из System.dll) отсутствующие на .NET Compact Framework. Естественно при порытке обратиться к отсутствующему классу программу посылали, но как красиво: сборка System, Culture=null, Version= бла_бла_бла, Token=бла_бла_бла, ... НЕ НАЙДЕНА !!!

11 November, 2008

Мудёр

Вчера обнаружил очень приятную особенность компилятора С++ от VisualStudio 2008 для x86 - он автоматически удаляет блок try/catch если во всех вызовах функций между ними (в том числе и дочерних) не может возникнуть exception.

07 November, 2008

How much does Exception Handling cost, really?

Чувак (он же Kevin Frei) толково рассказывает про то как устроен SEH / C++EH мир для x86 и x64. Что, почем и какого дъявола происходит. Тем, кто еще не забыл С++ и еще может читать по слогам ассемблер посвящается...

Короче, установи PowerPoint и тыкай сюда.

06 November, 2008

Новое в Visual Studio 2010

Я за то чтобы языки программирования развивались в сторону упрощения конструкций, удобства использования, ну и естественно не в ущерб скорости. Особенно это касается С++. Давненько тут не было ничего принципиально нового. Так, по мелочи, что-то менялось и все, но в основном полировались старые и создавались новые библиотеки.

И вот наконец-то появилось что-то новенькое и вкусное для меня - С++ lambda. Все это конечно как бы есть в boost и stl, но кто этим пользовался меня поймет: пишется ну очень много никому не нужных букв для простецкого действия.

На всем этом жиждется еще одна новая фича - паралельные вычисления. Об этом складно и долго вещал чувак из MS на PDC2008. Есть две версии паралельных вычислений: для Managed и для С++ разарботчиков. В VS2010 интегрирована поддержка этого дела - сильно модифицированы отладчик и профайлер, ну и компилятор естественно.

От чего вдруг такая забота? На мой взгляд очень просто - 2 или 4 ядра у проца сейчас норма. А в большинстве случаев программа в один момент времени занимает только один процессор. Программерам просто влом писать параллельный код - работы много и шеф не погладит по головке за убитое время, а результат простому глазу особенно не виден. А тут на тебе 1 функция и дело в шляпе. Быстро удобно и думать почти не нужно. Это то о чем так мечтали большевики... Правда не понятно с накладными расходами на это дело. Вот разгребу накопившиеся дела, поставлю VS2010 и попробую...