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

среда, ноября 19, 2014

Обзор книги A Tour of C++

Прочитала новую книгу Страуструпа "A Tour of C++". Это очень краткое введение в С++11. Рекомендуется новичкам, которые уже умеют программировать на каком-то языке. Но мне такая рекомендация не нравится, потому что книга уж очень лаконичная. Она подойдет скорее человеку, который когда-то писал на С++, подзабыл, а сейчас надо срочно вспомнить и заодно понять чего нового появилось за прошедшее время.

Если вы на C++ пишете все время и в курсе изменений в C++11, то ничего нового вы там не найдете.

вторник, мая 06, 2014

Что будет, если смешать C++ и C#

Если очень хочется, то можно звать C++ методы из C# кода и наборот. Например, если какие-то приятные функции есть в C++ API, но их нет в C#, их можно подключить следующим образом: Mixing .NET and native code

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

Порча C# кучи
Если у вас намешан C++ и C# код, то из C++ можно залезть в C# кучу. Поробнее проблема разобрана в блоге Тесс Феррандес: .NET Crash: Managed Heap Corruption calling unmanaged code
Кстати, очень рекомендую ее блог. В постах до 2011 года она пишет про отладку, про WinDbg.

Потеря AppDomain
При переключении между C++ и C# кусками можно потерять текущий C#-контекст. Текущую директорию, например, что неприятно. Есть способы борьбы, которые работают не всегда.
Вот тут человек разбирает конкретный пример: Unmanaged callbacks across AppDomains.
Также есть разные кривые методы получения списка всех AppDomain'ов.

суббота, марта 08, 2014

Впечатления от курса по машинному обучению

Отличный курс. Достаточный, для того чтобы получить общее представление о машинном обучении и понять, хочется ли заниматься этим дальше. Народ жалуется, что курс слишком упрощен. Не соглашусь, для вводного курса вполне нормальная сложность. Нейронные сети есть, SVM есть. К лекциям даются упражнения для закрепления материала, они из серии "подставить правильные цифры в формулу". Реальных задач по машинному обучению там нет, но это и правильно - такие задачи занимают недели и месяцы, их в такой курс не впихнешь.

Кстати, Эндрю Нг читает свои лекции опять прямо сейчас. Еще не поздно присоединиться! Stanford Machine Learning

суббота, ноября 02, 2013

Что сказал Рихтер

Давно обещала рассказать о лекции Рихтера про потоки. Такие лекции - это не что-то редкое и удивительное, Рихтер - совладелец компании Wintellect и они за деньги прочтут эту лекцию всем желающим. Если у вас есть возможность на его занятия прийти - очень рекомендую.
Ценны они в первую очередь возможностью задать Рихтеру вопросы и интересными примерами кода, однако были высказаны несколько полезных мыслей. Итак, Рихтер рекомендует. (Никаких откровений, впрочем)
Не надо плодить потоки, потому что переключение контекстов - вещь дорогая. Разумно делать столько потоков, сколько в машине есть ядер.
Если уж поток создали, постарайтесь его не блокировать без крайней необходимости. Речь идет не только о мьютексах, но и о Join, Sleep.
 
Не надо играть с thread pool. "Leave the thread pool alone".

Ну а также volatile в C# и в C++ разные. В C# volatile "cannot cache and fence", а в C++ только "cannot cache".