Отправляет email-рассылки с помощью сервиса Sendsay

За 2006-05-25

Re: Нужна помощь с переводом

Доброго времени суток, aLL
В сообщении от 23 Май 2006 11:17 вы написали:

> Фактически надо перевести два-три абзаца для каждой программы, чтоб передать
саму суть и сделать какие-никакие странички для sf.net'a.
> Буду признателен за любую помощь...
Обращайтесь, чем смогу - помогу.

   Dmitry Panoff 2006-05-25 01:31:30 (#553411)

Нужна помощь с переводом

KOI8-r кодировка, наверно лучше так... (текст снизу)
про боба здесь читать
http://nix.kuz.ru/forum/index.php?showtopic=531

******************************************************
"МолчаливыйБоб", вообще можно провести аналогию с тремя программами,
которые и навеяли его создание. ctags, cscope, ctree. (опишу их сначала,
потом чем Боб от них, вместе взятых, отличается и их основные проблемы,
которых нет у "Бобика")

ОПИСАНИЕ НЕКОТОРЫХ ПРОГРАММ
(по мотивам которых писался МолчаливыйБоб)
Возьмем, к примеру, общеизвестную в определенных кругах программу ctags,
скорее всего вы с ней сталкивались, и понимаете суть работы. Она просто
создает специальный файл, в котором хранится информация о содержимом
каких-либо исходников. Зачастую, это ядрышки операционных систем
и другие очень большие программы (вроде sendmail, apache...). Так вот,
в этом файле содержится следующая информация :
1. "Адреса" всех функций, структур, макросов, и прочего. "Адреса" - всмысле
имя файла + номер строки (или регулярное выражение, с помощью которого
можно найти нужную строку). Данный файл, к примеру в Vim можно
использовать для ":tag <name>" чтобы осуществить быстрый переход. Так
же ctags
позволяет выводить "goodies" - из файлов, просто чтоб узнать содержимое.

cscope - очень полезная программа, вышеописанный файл не создает, но
поиск осуществляет и дает дополнительные возможности :
1. Интерфейс для "удобного" поиска.
2. Может отслеживать какие функции и что вызывают (на один уровень "вниз")
3. Так же может отслеживать _кто вызывает_ определенные функции (на
один уровень "вверх".
Ну и еще некоторые, которыми я, если честно, вообще не пользовался...
Так вот - насчет отслеживания кто что вызывает ("find function...", второй
и третий пункты cscope, если не ошибаюсь) это просто необходимость, к
примеру, для отслеживания
работы функции, навроде системного вызова... Обратное необходимо,
когда есть какой-нибудь
"примитив" вроде printf (утрируя), и необходимо найти, где же,
собственно появился этот злощастный байт в stdout... Или для
понимания, где используется эта функции и _контекст вызова_. К
примеру, чтоб понять какие блокировки надо ставить перед
приминением. Может быть очень полезно для изучения какой-нибудь либы
(рэйзера четвертого, к примеру... ШУЧУ).

Ну и ctree. Теоретически может показывать вышеописанную информацию на
несколько "уровней" вниз. Практически я не смог ее включить.

ПРОБЛЕМЫ СУЩЕСТВУЮЩЕГО ПРОГРАММНОГО ОБЕСБЕЧЕНИЯ
Проблемы ctags :
1. Подход. Для создания файла "tags" используются регулярные выражения,
что позволяет с легкостью добавлять другие языки, но накладывает
значительные ограничения, а именно :
2. Качество получаемой информации довольно низкое. Хмммммм... Сейчас не
буду примеры приводить, боюсь ошибиться и начать катить бочку на
хорошую программу...
3. Возможности по добавлению функциональности отсутствуют. ЛУЧШЕ ctags
не будет по логике.
4. Ту информацию, которую ctags позволяет получать в "интерактивном" режиме,
никак нельзя назвать исчерпывающей. Ладно, не удержусь, и булыжник
в огород ctags, cscope, все таки брошу. Так, "навскидку", попробуйте
найти определение стандартного FILE :-) Конечно, если знаете где он лежит,
суть "прикола" теряется...
5. Поддержка Си++, есть, но ее "не заметно", хотя я в подробности
сильно не вдавался...

Проблемы cscope
1. Фактически те же, что и у ctags, плюс
2. Никому не нужная база на 150 "метров" (для Linux 2.6.14 к примеру)
3. Качество "интерактива" оставляет желать лучшего.
4. Поддержка Си++ отсутствует "принципиально". Что не есть логично,
если учесть что основная проблема, ИМХО, которую должны решать
программы данного рода, ложится, после "ядер", на разного рода библиотеки.
В т.ч. Qt3/GTK.

В МолчаливомБобе эти проблемы отсутствуют изначально... Программа использует
_не регулярки_ а _препроцессор_ (написанный моими мазольными ручками).

Основные идеи "МолчаливогоБоба".
То, что в предыдущем посте я назвал "препроцессором". Называется
"THE_TT", лежит в соответвтующем файле...
По сути своей вещь довольно примитивная. Сводится к тому, чтобы убрать
все "лишнее" из Си/Си++ программы и подвести все "под одну гребенку".
Т.е. чтоб было так и никак иначе. Убрать/свести к минимуму варианты
записи Си кода. Убираются все лишние пробельные символы и комментарии.
Плюс к тому добавляются пробелы
там, где они "должны быть", типично - перед скобками.
THE_TT позволяет взять какое-то место и точно (на 99%) сказать что
это, используя минимум проверок. Работает все это довольно быстро (к
примеру 1.6 Ghz процессор, 256Мб оперативки - все "летает"),
что позволяет "накручивать" дальше довольно интересные вещи... Вообще,
на сколько я знаю, такой код обычно пишется для компиляторов и не
используется для других целей. На мой скромный взгляд это досадное
упущение...

Следующий "уровень" МолчаливогоБоба, это функции "t_op",
"what_is_this", и подобные. Первая просто позволяет последовательно
"перебирать" все "операторы" исходного кода. Вторая - для проверки,
что
за оператор нам попался. Не всегда правда можно обойтись одной
"what_is_this", поэтому существует еще несколько функций... На данный
момент THE_TT и t_op - две разные части программы. В дальнейшем
я планирую их объеденить...

Вот такая вот стыковочка фактически обеспечивает возможности обработки
кода на уровне компилятора, при этом совсем не реализуя громадные
алгоритмы по, непосредственно, компиляции... А у "уровеня
компилятора", на мой скромный взгляд, возможности гораздо выше чем
тупого поиска регулярными выражениями. Что, собственно, и подтверждает
реализация Боба. На разработку текущей
версии (1.0-rc1) ушло чуть больше месяца. Еще два на "ловлю" багов.
Цели добавлять возможностей пока небыло. Пока просто нужна была первая
стабильная версия. Фактически, если сравнивать мои шикарные планы (ну,
там всякие "мелочи" вроде отслеживания callback'ов ... dry.gif) с тем,
что уже есть, я, по сути дела, программу только начал писать...

ЛИРИКА
("история из жизни", "блог" это сейчас называется ?)

В общем, не стоит рассматривать SilentBob'а как программу которая
что-то делает. Извиняюсь за каламбур. Программа, если уж совсем
откровенно _не делает_ ничего _такого_. Все что есть на данный момент
в Боб'е, вполне можно сделать другими средствами. Объясняю "контекст
написания"... Немного лирики... Программа писалась когда как-то темной
ночкой один сибирский парень сидел и пытался понять работу
системного вызова sys_poll. После некоторого времени эээ...
неформальных отношений с исходниками, и нескольких цистерн выпитых
подручных напитков, парню пришлось признать что одного GVim'а
"маловато будет". В ход пошли некоторые изв... ухищрения, они,
конечно, способствовали "процессу", но не так чтоб радикально
исправить ситуацию в сторону света в конце туннеля... Потом были
"заюзаны" вроде бы популярные программы... Настроение упало ниже
плинтуса сразу после
нескольких проб. Да, конечно, я получил быстрый доступ к нужной
функции. Одной функции. С учетом того, что в означенных исходниках
функция, мягко говоря, не одна, негодование чуть не перешло в
рукоприкладство на ни в чем не повинный 19-ти дюймовый монитор... Про
cscope даже вспоминать не хочется. Понимание того, что мне придется
кажды раз туды-сюда возвращаться для исследования каждой новой ветки
вызовов приводило к немного невминяемому "хи-хи"...



-*Название листа "Перевод и доработка документации под Linux и другие системы";
Написать в лист: comp.soft.linux.docs-list@subscribe.ru
Архив Листа - http://subscribe.ru/archive/comp.soft.linux.docs Поиск: http://www.google.com
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.docs/rules
Номер письма: 301; Возраст листа: 947; Участников: 1013
Адрес сайта рассылки: http://www.linuxrsp.ru/
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.docs/msg/553410

   2006-05-25 01:31:06 (#553410)