The gray Cardinal
Насчёт главной страницы у меня сомнения. Всё-таки код временем не проверен.
Poltergeyst
Возможности неограниченные, но не в том смысле, что программа создаётся нажатием кнопки. Мозги категорически необходимы, а результат пропорционален толщине мозоли на заднице. Это современный ассемблер, вплоть до того, что может собирать 64-разрядные программы. ДОСовские, правда, уже не делает. Полная поддержка Юникода, вплоть до того, что исходники могут быть в UTF-16 или UTF-8. Это меня тоже подкупило. Отличная справка, почти учебник, так что легко можно с самых азов начать. Правда, только на английском.
Набор инструментов включает ассемблер, линкер и компилятор ресурсов - всё, что необходимо, в общем. Хотя если нужна библиотека типов для СОМ-сервера (вообще говоря, она не обязательна), понадобится ещё Midl.exe от Майкрософта. Я его скачал в составе Platform SDK с их сайта.
Что касается СОМ, то, с одной стороны, не так уж страшен чёрт. Там всё стандартизовано. Такое ощущение, что достаточно один раз разобраться и написать один сервер. Потом эту заготовку нужно только приспосабливать к конкретным задачам - наполнять нужными методами. У меня ещё сложность была в том, что методы динамические, поэтому пришлось изобретать. Есть хорошая серия статей про СОМ - COM in plain C - 8 статей, если я все нашёл. Опять же на английском, но очень внятно и доходчиво объясняется устройство СОМ-сервера.
С другой стороны, мне помогло то, что я до этого уже пробовал писать на С, какие-то вещи знал. Возможно, я задним числом и преуменьшаю трудность, не знаю. Поскрипеть мозгами пришлось, конечно. Первый сервер я написал на С, ориентируясь на пример из статьи. На ассемблер потом уже только перевёл.
Разумеется, я допускаю, что в какой-нибудь навороченной среде разработки это делается двумя кликами мышки + 0 мысленных усилий. Но мне это не интересно, я извращенец.
Должен признать, что в ассемблере мозги приходится перестраивать, и мне это не вполне ещё удалось. Некоторые возможности не сразу осознаются, а с другой стороны поначалу не хватало if, else, while и т.п. В некоторых ассемблерах есть подобие этих конструкций, но не в GoAsm.