Codepedia :)
От: Зверёк Харьковский  
Дата: 25.09.05 14:09
Оценка: 30 (5) +3
Задела меня за живое фраза "И тогда создание поистине всемирных библиотек кода на этом языке можно сделать по принципу Wikipedia."
Автор: iZEN
Дата: 25.09.05


Пока ходил на базар за картошкой — сформулировал, как это могло бы выглядеть. Решил поделиться — авось кому польза будет
Дисклямер: в нижеследующем тексте я не учитываю возможных технических ограничений; исхожу из того, что сервер ориентирован на 1 язык (из мейнстримовых).

Цель сайта — собрать большую библиотеку полезных code snippets (кусочков кода), могущих легко быть re-used.

Единица хранения
Один snippet — это некий набор единиц языка (классов, функций), не зависящий от сторонних библиотек (кроме стандартной библиотеки данного языка), служащий однозначно формулируемой цели, и могущий быть использованным "как есть", без переделки.

Поскольку однозначного имени (по которому любой программист его найдет) snippet'у дать нельзя, ему дается краткое описание и набор тегов (соответственно, поиск сниппета на сайте — отбор по тегам).

Редактирование snippets
Редактировать сниппет может кто угодно.
Для редактирования сниппета сайт должен предоставлять полноценный редактор кода (подсветка, автоотступ, сворачивание веток, autocomplete стандартной библиотеки).
Необходимо ввести сниппет и юнит-тест на него (код выполняющий проверку корректности сниппета и одновременно — демонстрацию его возможностей).
После этого сервер выполняет проверку.
Проверяется: синтаксис и компилируемость кода, стиль (на сервере существуют некоторые правила, типа длины имен переменных и прочая); выполняется юнит-тест. Результатом выполнения юнит-теста является список тестов, которые код прошел/не прошел, а так же (в идеале) покрытие кода тестами (какие классы/функции в выполнении юнит-теста задействованы не были).

Код, не прошедший проверку на компилируемость, запостить нельзя. Код, не прошедший критические тесты, запостить нельзя. Код, не прошедший некритические тесты, запостить можно, в каталоге он будет показан как "сниппет такой-то — проходит 80% тестов".

Поиск и выбор snippets
Поиск идет по тегам и просто через поисковую систему. В списке отображается сниппет, его краткое описание, покрытие юнит-тестами (рейтинг?). При просмотре сниппета можно посмотреть его код, юнит-тест, результат выполнения юнит-теста, автоматически сгененрированное summary (только definitions). При этом сайт должен поддерживать простой рефакторинг — единожды задав в своем профайле свои соглашения по кодированию (отступы, переносы, case переменных и прочая), дальше все сниппеты вижу отформатированными по этим соглашениям. Просматриваемый сниппет можно загрузить (в смысле, соответствующий исходник без html'я), отредактировать, отредактировать только юнит-тест (к примеру, добавить еще один тест, демонстрирующий некорректность кода, или нехватающие в нем фичи).

Административное устройство
По всей видимости, кроме модераторов (чья функция — как всегда — пресекать хулиганство и вандализм) нужны maintainers (добровольцы-энтузиасты), которые станут более-менее регулярно просматривать новые и измененные сниппеты, выбрасывать никому-не-нужные, рефакторить плохо-написанные и т.п.

На закуску — проблемы реализации
Крутейшая среда с рефакторингом и веб-интерфейсом, серверная, выдерживающая дикие нагрузки — это не шубу в трусы заправить. Других проблем не видать Возможно, нагрузку можно каким-то образом перенести на клиента (скачивается программа, в которую уже встроен редактор; каким-то образом полагаться на установленный у клиента компилятор, и т.п.). JetBrains, ау?!

Dixi, вроде как.
FAQ — це мiй ай-кью!
Re: Codepedia :)
От: GlebZ Россия  
Дата: 25.09.05 14:39
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

Сразу хочется сказать:
1. Языков до фигищи, и как запускать и оценивать?
2. Не на все можно настроить Unit тесты. А тем-более описать.
3. Оценивать по результатом тестов? Это не очень хорошо. Нужно оценивать КПД библиотеки. А тут все слишком субъективно. Реакция пользователей, вот должна быть оценка. А это уже есть, форум "Исходники".
4. Мне иногда значительно полезнее идеи, чем работающие исходники. Даже я бы сказал более полезны и нужны. А тут не все полезные идеи можно запихнуть(по п1,2) При этом, я могу субъективно оценить идею по данной оценке(п3).

Единственное что не хватает в форуме исходников, это система поиска и тегов. Это действительно так. И лучше всего, чтобы они были редактируемыми(пользователь мог оценить направленность), и модерируемыми(модераторы оценивали вменяемость направленности).

С уважением, Gleb.
Re[2]: Codepedia :)
От: Зверёк Харьковский  
Дата: 25.09.05 14:48
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Сразу хочется сказать...


В общем, из всего этого можно сделать вывод, что по крайней мере тебе Codepedia не нужна
FAQ — це мiй ай-кью!
Re: Codepedia :)
От: anonymous_user  
Дата: 25.09.05 15:06
Оценка: 12 (1) :))) :)
ну и под конец...
когда сниппетов наберется под несколько миллионов — это через несколько лет полноценной работы сайта, и стоимость места на жестком диске и оперативной паямяти клентских компбютеров станут равны фактически 0 (!), а процессорные мощности станут фактически безграничными....
то встанет вопрос о созлании клиентского приложения, которое после ввода описания задачи на уже упоминавшемся языке тэгов для описаний снипеттов, будет загружать эти сниппеты и компоновать и компилить их в произвольном порядке, за несколько минут/часов создавая гигантские многофункцональные приложения...
и наступит рай на земле...
Re: Codepedia :)
От: Skipy Rich Россия  
Дата: 25.09.05 15:14
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Задела меня за живое фраза "И тогда создание поистине всемирных библиотек кода на этом языке можно сделать по принципу Wikipedia."
Автор: iZEN
Дата: 25.09.05


[offtop]
Нет, ну действительно нечто типа "незримого поля" идей существует — неделю назад мимо меня пробегала такая идея, улыбнулась, сделала книксен и побежала дальше
[/offtop]

...добивая ногами психиатра: "Это кто нервный?! Это я нервный?!!"
fb2k: Disturbed - Intoxication
Re: Codepedia :)
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 25.09.05 15:29
Оценка:
Чем снипет отличается от компонента?

Если снипет и компонент — это примерно одно и тоже, то как будут решаться проблемы, которые характерны при использование компонентов:
1. Избыточность
2. Монолитность
3. Различие в терминах
4. Различие в моделях
5. Различие в подходах

и т.д.
Re[2]: Codepedia :)
От: c-smile Канада http://terrainformatica.com
Дата: 25.09.05 17:26
Оценка:
Здравствуйте, Skipy Rich, Вы писали:

SR>Здравствуйте, Зверёк Харьковский, Вы писали:


ЗХ>>Задела меня за живое фраза "И тогда создание поистине всемирных библиотек кода на этом языке можно сделать по принципу Wikipedia."
Автор: iZEN
Дата: 25.09.05


SR>[offtop]

SR>Нет, ну действительно нечто типа "незримого поля" идей существует — неделю назад мимо меня пробегала такая идея, улыбнулась, сделала книксен и побежала дальше
SR>[/offtop]

Совершенно аналогично и у меня. Надо думать
Re[2]: Codepedia :)
От: slavdon  
Дата: 25.09.05 17:59
Оценка: :)
Здравствуйте, anonymous_user, Вы писали:

система автоматически проведет апргрейд аппаратуры управляющей ракетными системами и начнет играть в войнушку....
Я — РУССКИЙ. Это звучит гордо. Не нравится.....?..
Слушал: Koma & Bones — Twisted Streets {Shutterspeed}
Re[2]: Codepedia :)
От: Зверёк Харьковский  
Дата: 25.09.05 18:52
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>Чем снипет отличается от компонента?


Размерами. Снипет — штучка, которую можно охватить взглядом и понять мозгом


Для всех остальных скопом: вопрос — почему Википедия настолько хороша?
FAQ — це мiй ай-кью!
Re[3]: Codepedia :)
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 25.09.05 19:01
Оценка:
ЗХ>Для всех остальных скопом: вопрос — почему Википедия настолько хороша?

Хороша — по сравнению с чем?


ps
Один из ответов — потому, что это первая реальная реализация hyper-текстовой энциклопедии,

но при этом я бы не сказал, что wikipedia-ей реально удобно пользоваться.
Re[4]: Codepedia :)
От: Зверёк Харьковский  
Дата: 25.09.05 19:20
Оценка:
Здравствуйте, DarkGray, Вы писали:

ЗХ>>Для всех остальных скопом: вопрос — почему Википедия настолько хороша?


DG>Хороша — по сравнению с чем?


По сравнению (а) с офлайновыми энциклопедиями, (б) с другими источниками энциклопедической информации в интернете.

DG>ps

DG>Один из ответов — потому, что это первая реальная реализация hyper-текстовой энциклопедии,

Правильный ответ — потому что она редактируема всеми в любой момент времени. Т.е. реализует итеративный процесс создания информации "всем миром".

DG>но при этом я бы не сказал, что wikipedia-ей реально удобно пользоваться.


???
FAQ — це мiй ай-кью!
Re[5]: Codepedia :)
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 25.09.05 19:51
Оценка:
DG>>но при этом я бы не сказал, что wikipedia-ей реально удобно пользоваться.

ЗХ>???


Структуризации — нет,
поддержки нескольких точек зрения — нет,
поддержки выборок, фильтров и т.д. — нет,
фрактализации — нет.
и т.д.
Re[5]: Codepedia :)
От: Павел Кузнецов  
Дата: 25.09.05 19:52
Оценка:
Зверёк Харьковский,

> DG>Хороша — по сравнению с чем?

>
> По сравнению (а) с офлайновыми энциклопедиями, (б) с другими источниками энциклопедической информации в интернете.

Она далеко не так уж универсально хороша в этом сравнении. Все зависит от критериев. Например, у меня ко многим другим источникам справочной информации намного выше доверие в смысле достоверности информации.

> Правильный ответ — потому что она редактируема всеми в любой момент времени. Т.е. реализует итеративный процесс создания информации "всем миром".


Именно поэтому.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[6]: Codepedia :)
От: Зверёк Харьковский  
Дата: 25.09.05 20:12
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Зверёк Харьковский,


>> DG>Хороша — по сравнению с чем?

>>
>> По сравнению (а) с офлайновыми энциклопедиями, (б) с другими источниками энциклопедической информации в интернете.

ПК>Она далеко не так уж универсально хороша в этом сравнении. Все зависит от критериев. Например, у меня ко многим другим источникам справочной информации намного выше доверие в смысле достоверности информации.


Подчеркиваю — энциклопедической. Как правило, Википедия представляет собой великолепный starting point для ознакомления с незнакомым понятием. При этом подробнее, чем любая офлайновая энциклопедия, и достовернее, чем набрать в гугле "искомое понятие" и перейти по паре перво-попавшихся ссылок. Я имел в виду уименно это.
FAQ — це мiй ай-кью!
Re[6]: Codepedia :)
От: Зверёк Харьковский  
Дата: 25.09.05 20:12
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>>>но при этом я бы не сказал, что wikipedia-ей реально удобно пользоваться.


ЗХ>>???


DG>Структуризации — нет,

Ну, вообще-то категории там есть.

DG>поддержки нескольких точек зрения — нет,

Мммм... Мне кажется, для энциклопедии правильный подход — именно используемый в Википедии NPOV (Neutral Point Of View)

DG>поддержки выборок, фильтров и т.д. — нет,

DG>фрактализации — нет.
DG>и т.д.

Хотелось бы заметить, что это все-таки энциклопедия, а не "путеводитель по миру". Цель энциклопедии — отвечать на вопрос "что такое <понятие>", а не организовывать весь мир в логическую структуру.
FAQ — це мiй ай-кью!
аналогия с Wikipedia
От: Зверёк Харьковский  
Дата: 25.09.05 20:18
Оценка:
Господа, я возможно не вполне точно выразил намерения и цели.
Хотелось бы репозиторий кода, основанный на принципах Wikipedia.
А конкретно, на важнейшем ее принципе: любой кусочек информации может править любой человек.
Мне кажется, что это дало бы (по аналогии с той же Wikipedia) итеративно улучшаемые (в пределе — идеальные) самостоятельные тематические кусочки кода.
FAQ — це мiй ай-кью!
Re[3]: Codepedia :)
От: GlebZ Россия  
Дата: 25.09.05 20:54
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Здравствуйте, GlebZ, Вы писали:


GZ>>Сразу хочется сказать...


ЗХ>В общем, из всего этого можно сделать вывод, что по крайней мере тебе Codepedia не нужна

В том виде который ты предложил нет. Хотя я сообщение написал не подумавши. Мне очень не понравилось направленность на Unit тесты. Я делал вещи, которые unit тестами и не опишешь. И есть вещи, в которых оценка unit тестами ничего не даст. Ну например реализации языка. Его покрытие unit тестами — процесс бесконечный.

Что мне не нравится. В wikipedia будут готовые классы. Они написаны не языком который предпочитаю я. Они будут не в форме, которую предпочитаю я. Это будут чужие классы, которые мне нужно будет встраивать. Иногда на адаптацию уходит больше времени чем на написание. Я лучше напишу сам. К тому-же, часто для функциональности пишут громадные классы. И в них придется искать нужную тебе функциональность? Мне же нужны how-to. MSDN в плане поиска информации меня неудовлетворяет ни по навигации, ни по содержанию. Фиг вспомнишь в какой ветке contents лежит интересующий тебя материал. Иногда материал по одной и той же библиотеке лежит в разных разделах. Поиск, дурацкий. Среди 500 ответов попробуй найти свой. И он не полон, потому как библиотек значительно больше чем в MSDN. Но ведь нет ничего более полезного чем пример использования библиотеки.

Что бы мне хотелось. Мне хотелось иметь сборник примеров использования. Мне бы хотелось иметь ясный сборник особенностей тех или иных библиотек. И не в форме статей, в которых будешь искать нужный параграф на сотне прокруток экрана, а в форме заметок и экзамплов. Мне не нужно чтобы этот код работал, мне нужно чтобы он был правильным. Правильность, как и в wiki, определяет общественность. И я смогу адаптировать под свое решение так как я хочу.
И самое главное, интуитивное нахождение информации. То есть, правильная навигация. Она тоже должна быть обсуждаемая(до определенных пределов, конечно).

С уважением, Gleb.
PS ну вот, сейчас более правильно высказался.
Re[7]: Codepedia :)
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 25.09.05 20:58
Оценка:
DG>>Структуризации — нет,
ЗХ>Ну, вообще-то категории там есть.

категории — это лишь один из инструментов структуризации

DG>>поддержки нескольких точек зрения — нет,

ЗХ>Мммм... Мне кажется, для энциклопедии правильный подход — именно используемый в Википедии NPOV (Neutral Point Of View)

В идеале — да.
но на горячие (на flame-овые) темы — обычно NPOV не бывает.


ЗХ>Хотелось бы заметить, что это все-таки энциклопедия, а не "путеводитель по миру". Цель энциклопедии — отвечать на вопрос "что такое <понятие>", а не организовывать весь мир в логическую структуру.


"что такое понятие" — это скорее роль толкового словаря, а не энциклопедии.

роль энциклопедии — это уже именно структурирование информации.
Re: аналогия с Wikipedia
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 25.09.05 21:01
Оценка:
ЗХ>Хотелось бы репозиторий кода, основанный на принципах Wikipedia.

в чем отличие, от http://sourceforge.net, например?


допустим Codepedia уже есть, какие кусочки кода ты хотел бы там видеть?
Re[7]: Codepedia :)
От: GlebZ Россия  
Дата: 25.09.05 21:07
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Хотелось бы заметить, что это все-таки энциклопедия, а не "путеводитель по миру". Цель энциклопедии — отвечать на вопрос "что такое <понятие>", а не организовывать весь мир в логическую структуру.

Приведи примеры понятия в контексте описанной системы. И каким образом пользователь сможет понять, что именно это понятие ему нужно.

С уважением, Gleb.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.