| |||
![]()
|
![]() ![]() |
![]()
По поводу предыдущего поста. Вообще-то я не считаю большим извращением ни то, ни другое занятие (хотя Escape-Meta-Alt-Control-Shift - редактор не для слабых духом, да и С++ - тот еще язык). Но вопрос на самом деле носил сугубо прикладной характер. Мне нужны подопытные кролики. Я со товарищи некоторое время занимаюсь софтиной, которая в идеале должна быть тулом для программирования на С++ наподобие Idea или Eclipse для Java. С одним важным отличием - оно не собирается изображать из себя IDE, а предназначено для встраивания в существующие IDE соответствующей функциональности. В частности - для Emacs это модификация обычной С++-mode. Я вполне неплохо пользуюсь этим тулом уже несколько месяцев и в общем склонен думать, что даже в нынешнем сыром состоянии он будет полезен. Что оно умеет - оно умеет разбирать "на лету" программы на С/С++, также на лету подсвечивать ошибки, умеет делать "умный" syntax highlighting (например функции - одним цветом, переменные - другим. енумы - третьим, типы - четвертым), умеет подсвечивать ошибки и синтаксис в макросах, умеет делать некоторые простые проверки - например - на неиспользуемые (глобально) имена, делать довольно удобную навигацию по коду (подробности ниже - это видимо главная польза), умеет делать умный name completion (в соответствии с результатами содержательного анализа кода), умеет некоторые простые рефакторинги - сейчас это rename и "превратить выражение в переменную" (introduce variable в терминах Eclipse). В принципе - рефакторинги писать просто - только это сейчас не приоритет - приоритет доведение до ума анализа С++ - сейчас есть серьезные недоделки в обработке шаблонов и еще кое в чем. Навигация - есть функции "поиск всех использований" (в том числе - с учетом виртуальных методов и по макросам в том числе), goto def/decl, переход к наследникам/предкам класса (виртуального метода), поиск всех имен переменных/макросов/типов, начинающихся с префикса (с квалификаторами, если надо) или подходящих под образец (со *) - функция неочевидная, но на самом деле очень удобная. Примерно так. Весьма out-of-date бумажку со скриншотами можно посмотреть здесь. Сейчас бумажка приводится в соотвествие с. Замечание #1 - во избежание вопросов - поделие распространяется на условиях копирайтного фашизма. Не в том смысле, что за деньги, а в том, что я в данный момент не считаю возможным (и не факт, что сочту возможным) давать тексты. Причины, если интересно, могу изложить отдельно. Замечание #2 - собака еще молодая, и там довольно много известных недоделок и просто ошибок. As is. В устранении их я заинтересован, но надо понимать, что у "Kouzdra & Co" есть определенные приоритеты. Если проблема не критическая - она вполне возможно будет отложена в долгий ящик. А возможно и нет. Замечание #3: почему я спрашивал про С++ - по двум причинам - С++ существенно сложнее и потому является для нас приоритетом. Во-вторых - значительная часть функциональности в случае pure C существенно теряет в актуальности. Теперь - есть естественные ограничения по ресурсам и среде - сейчас они примерно таковы - для программы на С++ объемом до 100-150 тысяч строк я ожидаю приемлемного времени отклика и потребностей по памяти (<=256 MB). Хотя при использовании очень больших (в смысле объема .h файлов) библиотек возможны проблемы. Лично у меня проект составляет около 50 тыс. строк при затратах памяти 50MB и времени реакции от 0.2-0.5" (Athlon-2500) - типичный случай до 4" (worst case) Второе - Linux. Т.е. - под Windows оно тоже работает, но я не вполне готов сейчас бороться с артефактами Visual C++ или самой Win - если есть желающие - я могу выдать и этот вариант, но надо понимать, что вероятность геммороя существенно выше, а оперативность реакции будет ниже. Вот. Imho тулза и сейчас полезная (невзирая на все тараканы), хотя реально она сейчас используется на 3 проектах и скорее всего на 4-ом вылезет какая-то гадость (затем нам и нужны кролики). Однако как раз гадость я постраюсь фиксить максимально оперативно. Вот. |
||||||||||||||
![]() |
![]() |