Модель памяти Rust

Модель памяти Rust довольно сильно отличается как от управляемых языков типа Java или C#, так и от не управляемых языков типа C и C++. Так как Rust является совершенно новым языком программирования и не ограничен какими-либо требованиями совместимости с предшественниками, он реализует наиболее удобную модель памяти для решения следующих целей:
Безопасность. Предотвращение возникновения утечек памяти или ошибок сегментации.
Производительность. Сборщик мусора управляет указателями а не объектами. Нет необходимости замораживать все задачи для очистки памяти, так как каждая из них имеет собственный хип.
Многопоточность. Предотвращение возникновения гонок в памяти, так как каждая из задач имеет собственный хип и передаваемые между задачами данные должны копироваться. Наличие хипа обмена для избежания лишних операций копирования с семантикой владения. Continue reading

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

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

Кроссплатформенность в современном мире

Очередное обсуждение недостатков Nemerle на РСДНе навело меня на интересную мысль о связи между успешностью того или иного инструмента и его кроссплатформенностью.
По большому счету, Nemerle это язык с интересными концепциями и идеями, который не нужен практически никому, кроме его разработчиков. Почему я делаю такое утверждение? Тут все просто, возьмем для сравнения его ровесников Scala, Groovy и даже совсем молодежь Clojure. Для того что бы понять, нужен ли язык кому-то, кроме его авторов, можно воспользоваться следующей информацией:

  1. На каких языках присутствует информацию о языке в Википедии
  2. На какой строчке находится язык в индексе TIOBE;
  3. Участвует ли язык в индексах The Computer Language Benchmarks Game;
  4. Написал ли кто-то книги по этому языку.

Continue reading

Управление памятью в ANSI C

Довольно занятная ситуация: чем больше я пишу кода, тем более простой код мне нравится писать. Что интересно, наиболее простой код выходит не на C++ или Objective-C и даже не на Python, а на чистом C. Хотя, оно и понятно, нет тут простора для творчества
А вот в самом C есть один основательно напрягающий меня момент: освобождение памяти. Довольно часто приходится работать со структурами, в состав которых входят массивы, строки переменной длинны или массивы структур со всей этой радостью одновременно. А раз уж от создания такой конструкции никуда не денешься, то как минимум хочется иметь возможность ее легко удалить.
Подход с использование garbage collector мне не очень нравится, все же это как из пушки по воробьям… А вот построение из выделяемой памяти подобия дерева, мне показалось куда более интересным.
Continue reading

The Architecture of Open Source Applications

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

Максимально кроссплатформенное ПО :)

Всего сколько лет назад о кроссплатформенном ПО большинство разработчиков не задумывалось вовсе, а те кто сталкивался с подобной задачей в основном занимались разработкой решений которые работали на Windows и UNIX. Это были (и есть) крупные серверные системы, системные библиотеки, редакторы, и прочее узкоспециализированное ПО.
Но, все течет, все меняется, Windows и Linux (с Гномом или КДЕ) уже не единственные платформы с которыми работает “обычный пользователь”. В последнее время появилось большое количество платформ для обычного пользователя и это никак нельзя игнорировать.
К сожалению, даже сейчас, большая удача если ПО работает на чем-то кроме Windows. А уж если такое приложение еще и выглядит прилично… Но это уже совсем редкость.
Continue reading