2010-05-11 2 views
11

Я сижу здесь, пишу функцию, которую я положил, был написан раньше, где-то на земле. Это слишком распространено, чтобы не пытаться, и мне интересно, почему я не могу просто перейти на сайт и искать функцию, которую я могу затем скопировать и вставить в свой проект за 2 секунды, вместо того, чтобы тратить время на создание нового времени колесо.Есть ли сайт для поиска общих, уже написанных функций?

Уверены, что есть определенные библиотеки, которые вы можете использовать, но где вы находите эти библиотеки, и когда они отсутствуют, есть ли сайт, как я описываю?

Возможно, существует вики-версия какого-либо типа, содержащего бесплатный код, который можно редактировать и улучшать.

Редактировать: Я могу все правильно описать, я просто не знаю, КАК их делать. Так, например, прямо сейчас я пытаюсь локализовать робот/автомобиль/точку в пространстве. Я ЗНАЮ, что есть способ сделать это, только исходя из диапазона и расстояния. Триангуляция и трилатация. Как кодировать, это другая история. Сайт, который мог бы иметь код psuedo, шаг за шагом, как это сделать, было бы смешно полезным. Это также обеспечит оптимальное решение, так как все могут его редактировать. Я также пишу в Matlab, которого я ненавижу, потому что это причудливо, добавив к моему желанию создать веб-сайт, как я описываю.

+3

Какая у вас функция? http://www.youtube.com/watch?v=mkO87mkgcNo –

+2

Я скорректировал теги на ваш вопрос, потому что не имело смысла иметь теги для кучи случайных языков, которые на самом деле не упоминаются в вашем вопросе - Я думал, что [язык-агностик] будет иметь больше смысла. Надеюсь, ты не против ;-) –

+0

Ты прыгаешь в «алгоритме» с «реализацией», и я думаю, ты имеешь в виду последний. Какой бы язык вы ни использовали * должен иметь некоторый репозиторий модулей, таких как CPAN или PEAR и т. Д. Вероятно, есть много книг, которые будут иметь хотя бы реализацию псевдокода. В этом, вероятно, есть много факторов опыта, зная, где искать то, что вам нужно. –

ответ

14

Во-первых, два предостережения:

  1. Копирование и вставка кода вы не понимаете, это плохая идея. Убедитесь, что вы точно понимаете, что делает код, прежде чем использовать его.
  2. Убедитесь, что вы соблюдаете лицензию на код, который вы копируете. Это важно!

Эти предостережения в стороне, это часто зависит от языка. Языки с открытым эталонным развитием (а не только с открытым исходным кодом, думаю, Python по сравнению с Java) имеют официальных архивов библиотек с открытым исходным кодом. Например:

Кроме того, не забудьте заглянуть в ваших языков стандартной библиотеки. Некоторые современные языки имеют массивные стандартные библиотеки, которые часто содержали функции Я ищу:

Non -опытно развитые языки часто имеют неофициальные архивы сообщества. Например:

Третья категория сайты от языка. Они часто представляют собой лучший поиск через POG (простой старомодный Google).Например:

Наконец, четвертая категория сайтов, которые я нахожу более полезными являются источником -кодовые поисковые системы:

Вы также можете быть в состоянии найти полезный исходный код, или, по крайней мере, получить помощь в написании что-то, через различные pastebins.

  • Pastebin зависит от языка
  • HPaste в основном Haskell, но имеет немного на других языках.

Часто, в конце дня, это проще всего для Google.

+0

Я сделал это вики, поэтому не стесняйтесь добавлять свои собственные избранные. – fmark

+1

Скопировать вставку - это одно, импортировать внешнюю библиотеку и позволить ей делать что-то другое;) –

+0

Абсолютно. К сожалению, я встретил многих людей, которые не знают разницы. – fmark

21

StackOverflow.com. Нет, я не шучу.

В лучшем случае люди приходят сюда, говоря: «У меня уже нет библиотеки, уже X», и очень часто коллективная мудрость отвечает «да». Но самым серьезным препятствием является отсутствие языка описания: даже здесь большая проблема для многих плакатов достаточно подробно описывает проблему, чтобы другие узнали ее как нечто, что они видели раньше.

И если люди не могут понять, что вы пытаетесь сделать, ни одна поисковая система не будет.

+0

Отличный ответ.+1 – chiggsy

+1

У меня была эта точная проблема, пытаясь написать алгоритм для определения возможных выигрышных рук в руках разных карт. Как если бы вы могли сделать руку с 7 картами, сколько наборов (пары, поездки, X-of-a-Kinds) возможны в этом. Оказывается, общий вид проблемы хорошо известен (так называемый целочисленный раздел), и это даже подзадача большей теории множеств, но я не знал, как достаточно хорошо описать проблему, чтобы найти ее под этими условиями для долгое время. – CodexArcanum

0

Помимо сайтов, как это (переполнение стека) Я не думаю, что есть много, может быть CodePlex, но я почти отмечен вам -1 предположить, что обнаруженный код в Интернете является Вашим, чтобы скопировать.

Я бы посоветовал прочитать о лицензировании программного обеспечения, надеюсь, вы бы хотя бы прокомментировали, откуда вы его взяли.

+1

+1 для -1. – Timothy

+1

+1 для +1 на -1. – NotMe

+0

+1 для +1 на +1 на -1 :) – egrunin

0

Я не уверен, что этот вопрос является агностиком языка, но я использую GitHub таким образом;) На других языках могут быть места, где это возможно.

+0

GitHub - язык-агностик, не так ли? Насколько я знаю, это просто общий репозиторий программного обеспечения, но вы можете размещать программы на любом языке. –

+0

@David Github имеет функцию, которая обнаруживает определенные языки в репозитории и перечисляет их как таковые. –

+1

Да, GitHub - язык-агностик. – Timothy

2

Вырезать и вставить код, который вы найдете в Интернете в производственный код, будет похож на жевательную резинку, найденную на улице. - Майк Джонсон

Имея это в виду, попробовать сайты, которые принимают OpenSource проекты как GitHub, CodePlex, code.google.com и т.д.

+2

Ненавижу говорить об этом, но я не согласен с цитатой Майка Джонсона. Вы используете библиотеки все время. Вам все равно, как они работают, вы просто берете слова авторов, что они делают, и вы предполагаете, что они работают эффективно. Это называется абстракцией. Я не хочу, чтобы изобретать колесо каждый раз, когда мне нужно вычислить квадратный корень. Я не хочу изобретать велосипед каждый раз, когда мне нужно сделать что-то еще более сложное. –

+5

Существует большая разница между использованием библиотеки, вырезанием и вставкой кода. –

0

Safari Bookshelf от O'Reilly есть много, много книг, которые содержат много реализаций из которого можно выбирать.

http://my.safaribooksonline.com/

Я был абонент в течение нескольких лет, прежде чем прийти к моей нынешней работе, где у нас есть корпоративный счет! Это одна из лучших льгот и один из лучших ресурсов, которые у меня есть. Я много лет не купил компьютерную книгу.

5

Существует вики, которая содержит свободный код, который любой может редактировать и улучшать:

Rosetta Code.

В качестве средства обзора есть страница «Solutions by Programming Task».


От бывшего страницы:

«Rosetta Кодекс является программирование хрестоматия-сайт Идея заключается в том, чтобы представить решения той же задачи в качестве много различных языков, как это возможно, чтобы продемонстрировать . как языки схожи и разные, и помогать человеку с заземлением в одном подходе к проблеме в изучении другого ».