ARM архитектура

На РСДН-е возник заинтересовавший меня вопрос: что бы такого почитать про архитектуру ARM процессоров. Лично меня этот вопрос интересовал давно, но все время находилось что-то более срочное, но сейчас я решил хотя бы поверхностно ознакомится с темой.
Первое что приходит в голову – это полистать ARM* Architecture Reference Manual (документ бесплатен, но требуется предварительная регистрация на сайте). Документ полезный, но вот по увлекательности для чтения несколько не дотягивает до стандарта C++, т.е. просмотреть его можно, но вот при детальном чтении велик риск довольно быстро заснуть.

К куда более увлекательным и полезным можно отнести:

1. ARM assembler от Richard Murray. Краткое введение в ARM ассемблер и архитектуру процессоров. Сайт довольно “олдскульный”, но наполнение скучать не заставит.
2. Introduction to ARM, от David Thomas. Мне понравилось – понятно, кратко, интересно, да и вид сайта современный. Читается легко и риск заснуть минимален.
3. ARM System Developer’s Guide. Книга продается на Amazon за довольно таки большие деньги – $74.10, но судя по отзывам она великолепна. Полистал – действительно книга на высоте, и если есть желание или необходимость разобраться с ARM более-менее прилично, то читать ее нужно.

Монитор от Герба Саттера

В недавно вышедшем выступлении Герба Саттера посвященном многопоточности он привел интересный пример примитива для синхронного выполнения последовательностей операций. Сам Майерс окрестил детище “монитором”, по аналогии с мониторами из мира Java и C#, хотя на мой взгляд, сходства между ними не так уж и много. Суть задумки в том, что бы синхронизировать работу с каким-либо объектом, который изначально не поддерживает синхронизации. При этом, обеспечив синхронность не только на уровне одной операции, но и на уровне “трансзакции”.

string s = "Start\n";
vector<future <void>> v;

for(int i=0; i&lt;5; ++i)
{
    v.push_back(async([&,i]{
        {
            // необходимо сделать атомарно.
            s += to_string(i) + " " + to_string(i);
            s += "\n";
        }
        {
            // так же необходимо сделать атомарно.
            cout < < s;
        }
    }));
}

В принципе, в приведенном выше примере вполне можно воспользоваться комбинацией mutex + lock_guard, но так не интересно, не красиво, да и о чем было бы рассказывать в течении полутора часов?
Решение предложенно действительно элегантное: Continue reading

Channel 9 продолжает радовать

Вообще, мне не очень нравится Channel 9. Обычно он представляет собой какое-то нелепое, скучное нагромождение мелкософт-ориентированной попсятины, что, вобщем-то ожидаемо, с учетом того кому этот канал принадлежит. Но, то ли в честь нового года, то ли в честь так и не пришедшего конца света, на сайте появилось еще одно замечательное выступление от Саттера: C++ and Beyond 2012: Herb Sutter – C++ Concurrency. Кстати, а до этого было не менее интересное C++ and Beyond 2012: Herb Sutter – You don’t know [blank] and [blank]

Лучшее описание C++11

Существует довольно много статей посвященных C++11, которые в той или иной степени описывают вкусности из нового стандарта. Да что там говорить, на той же Википедии существует огромная, и вроде даже хорошая, статья посвященная C++11. Но, как известно, везде и всегда что-то не так…
Так вот, нашел я полностью устраивающее меня описание в виде презентации от Alex Sinyakov, за что ему огромное спасибо!

Внутреннее устройство Mac OS X

Долгое время, единственной книгой по внутреннему устройству Mac OS X была Mac OS X Internals: A Systems Approach. Книга жутко тоскливая и по моим ощущениям на 50% состоящая из исходников XNU. Так вот, похоже что дело идет на поправку, и я только что наткнулся на OS X and iOS Kernel Programming. Пока что успел довольно поверхностно пролистать, но первые ощущения очень положительные.
Бумажная версия, как всегда, есть на Amazon.

NLP

В последнее время я просто разрываюсь между рядом программистских увлечений, в которые входят: Rust, Scala и с недавних пор Natural Language Processing. Пока что, я не пришел к твердому убеждению о том, что область NLP мне действительно интересна, но я получаю огромнейшее удовольствие от просмотра Стэнфордского курса лекций Natural Language Processing, которые ведет профессор Dan Jurafsky и чтения не менее потрясающей книги Steven Bird и соавторов под названием Natural Language Processing with Python.
Причем оба эти источника информации просто идеально дополняют друг друга. Курс лекций дает довольно хорошую теоретическую базу, а книга “Natural Language Processing with Python” показывает как можно применить теоретические знания на практике, используя великолепную библиотеку Natural Language Toolkit.
Рекомендую!

Снова в школу

Узнал от коллег о, как мне показалось, довольно интересных OnLine курсах от Стэнфордского Университета: Introduction to Artificial Intelligence и Introduction to Machine Learning. Все по правилам, с блэкджеком и шлюхами лекциями и домашними заданиями.
Поглядим, может понравится.

Что почитать по Mac OS X для начала?

С литературой дела, на мой взгляд, обстоят довольно хреново. Т.е. нет ни одного автора, которого можно было бы поставить в один ряд с Русиновичем или Рихтером. А уж про “печатное и на русском” я вообще молчу. Тем не менее, кое что есть. Данную литературу я бы разделил на 2 части:

  1. Драйвера и системные приложения.
  2. GUI приложения для конечного пользователя.

Как начать писать приложения для Mac OS X и iOS

Итак, по пунктам, что надо сделать для начала разработки под Mac OS X или iOS:

  1. Покупка Mac или установка Хакинтош. Я бы крайне не рекомендовал начинать с работы с виртуальной машиной, они работаютнастолько тормознуто, что такой вариант подходит разве что для “одним глазком на Mac OS X взглянуть”. Поэтому наиболее дешевым и доступным вариантом будет либо Хикинтош, либо покупка Mac Mini.
  2. Бесплатно зарегистрироваться в качестве разработчика Apple. Это необходимо сделать для доступа к документации и возможности загрузить 3-й Xcode.
  3. Загрузить бесплатно 3-й Xcode или купить за $4.99 Xcode 4. С учетом стоимости Xcode 4, я думаю что его купить все же логичнее. В то же время, в Xcode 3 доступна iOS SDK 4.3 и SDK для Mac OS X 10.6, так что “на посмотреть” его хватит.

Continue reading

The Architecture of Open Source Applications

Стоящих книг посвященных архитектуре приложений очень и очень мало. Поэтому с радостью узнал о выходе в свет новой книги посвященной архитектуре приложений “The Architecture of Open Source Applications”. Книга распространяется под Creative Commons Attribution 3.0 Unported лицензией и прочесть онлайн ее можно тут. Так же книга продается в бумажном виде, либо в формате PDF.
Книга, действительно, очень интересная и полезная. Рекомендую!