Поиск для программистов
АрхивWeb 2.0Поисковики, заточенные под работы с текстами, из рук вон плохо индексируют программный код. Эту проблему призваны решить специализированные сервисы.
Всем, кто хоть раз пытался искать программный код при помощи обычных поисковых систем, известно, что найти с их помощью что-то подходящее проблематично. Поисковики чаще всего попросту не индексируют все эти архивы с исходниками программ, во множестве лежащие на Surceforge.net и ему подобных ресурсах. Максимум, что можно при желании откопать при помощи поисковика - статью на каком-нибудь программистском портале, содержащую куцые учебные примеры.
Если за дело не берутся гиганты поиска, то обязательно должны появиться более мелкие специализированные проекты, и в последнее время они действительно возникают. Примером может служить поисковик Koders, дающий возможность быстро искать участки кода по ключевому слову и имеющий довольно неплохую индексную базу (более 220 миллионов строк кода на момент написания статьи).
Больше всего Koders напоминает традиционную поисковую машину: заходим на главную страницу, вводим искомое выражение, выбираем, при желании, язык программирования и лицензию, под которой должен быть опубликован исходный код, и получаем результат в виде цитат из найденных файлов.
Выбрав файл, можно его посмотреть, причём код будет представлен самим поисковиком: в красивом оформлении с номерами строк и подсветкой искомого слова. Слева есть список остальных файлов из проекта.
Куда более изощрённое средство - Krugle. Ещё недавно оно находилось в стадии закрытого тестирования, но недавно разработчики сочли работу сервиса достаточно стабильной для открытия публичного теста. Подпись "beta" из названия проекта никуда не делась, зато воспользоваться им уже может любой желающий.
Krugle скорее напоминает типичный проект в стиле Web 2.0, чем обычный поисковик: здесь есть и сложный интерфейс написанный на AJAX и возможность обмениваться комментариями с другими пользователями и контекстная реклама книг, содержащих информацию по искомым ключевым словам.
Искать, кстати, можно не только по исходным кодам, но и по технической документации (как на официальных сайтах, так и на программистских ресурсах в сети) и среди проиндексированных проектов. В последнем случае по каждому из них можно посмотреть информацию и список содержащихся файлов.
Выбор области поиска устроен тоже куда интереснее, чем в Koders. Разграничения по типу лицензии, здесь, правда, нет, зато можно ограничить область поиска объявлениями функций или классов, вызовами функций или комментариями а также задать название проекта, в коде которого предполагается искать.
Интерфейсные навороты в Kroogle себя действительно оправдывают. Возможность быстро менять параметры поиска, открывать сразу несколько файлов во вкладках, просматривать найденные проекты как древовидную структуру - всё это делает навигацию в массивах чужого кода довольно удобной. Даже контекстная реклама книг кажется как нельзя более уместной.
После перехода от поиска к просмотру, к коду можно добавлять свои комментарии, снабжая их тэгами. Комментарии бывают как приватными, так и публичными. Последнее теоретически может сделать сервис удобным средством коллективной работы.
В целом, Krugle обещает стать чрезвычайно полезным сервисом - этаким "Гуглом" для программистов (на что, видимо, авторы и намекали, сочиняя название), а если его функциональность сможет привлечь большое количество пользователей, то возможность создавать публичные комментарии обретёт новый многообещающий смысл.
Пометка "бета-версия" в случае Krugle - это не просто дань моде. Сервис действительно пока сыроват. Его хозяевам предстоит не только добавить некоторые недостающие элементы интерфейса, но и поработать над стабильностью. Даже в ходе беглого осмотра можно наткнуться на сообщения об ошибках на месте одного из навигационных блоков.
Говоря о столь узкоспециализированных поисковиках вообще, нельзя не затронуть тему релевантности ответов. Казалось бы, зачастую достаточно любых полученных фрагментов, содержащих заданное ключевое слово, но на практике оказывается, что здесь тоже есть обширное поле для улучшений. Скажем, задав запрос "rss" и выбрав язык C++, хотелось бы получить ссылку на серьёзные библиотеки, позволяющие работать с этим форматом данных на C++, а не цитаты из произвольных проектов, решающих эту проблему самостоятельно.