MacGreener C#
Переписал МакГринер с Си на Си#. Основной код более-менее повторяется, но код получился более чем в два раза длинее.
Весь код разбит, преимущественно, на три класса — основной класс, где выполняется приложение, класс IOKit — низкоуровневые и чуть более высокоуровневые биндинги для библиотек МакОСи и IOKitMotionSensor — ещё более высокоуровневая обёртка над куском кода для опроса датчика.
Есть ещё два вспомогательных класса — IOKitException, класс кидаемых исключений и IOKitObject — класс всех ресурсов, которые требуется высвобождать (он следит за своевременным их высвобождением при помощи блока using).
Не знаю какую версию я буду дальше развивать (и буду ли), но версия на Си# более прожорлива — из-за фреймворка Mono, который требуется для исполнения программ на этом языке. Версия на Си# занимает в памяти 6,2Мб (+49,8Мб виртуальной), на Си — 840Кб (+18,6Мб виртуальной).
Хорошо, что мой братишка давно программирует на этом языке, с его консультациями в некоторых тонкостях удаётся разобраться быстрее.