2010-05-11 10 views
11

Estoy sentado aquí escribiendo una función que estoy seguro se ha escrito antes, en algún lugar de la tierra. Es demasiado común que no se haya intentado, y me pregunto por qué no puedo ir a un sitio web y buscar una función que luego pueda copiar y pegar en mi proyecto en 2 segundos, en lugar de perder el día reinvirtiendo la rueda.¿Hay un sitio web para buscar funciones comunes ya escritas?

Claro que hay ciertas bibliotecas que puede utilizar, pero ¿dónde se encuentran estas bibliotecas y cuando están ausentes, hay un sitio como el que estoy describiendo?

Posiblemente una wiki de algún tipo que contiene código gratuito que cualquiera puede editar y mejorar?

Editar: Puedo codificar las cosas bien, simplemente no sé CÓMO hacerlas. Entonces, por ejemplo, en este momento, estoy tratando de localizar un robot/automóvil/punto en el espacio. SÉ que hay una manera de hacerlo, basada en el alcance y la distancia. Triangulación y trilateración. Cómo codificar esa es una historia diferente. Un sitio que podría tener código psuedo, paso a paso, cómo hacerlo sería ridículamente útil. También garantizaría la solución óptima, ya que todos pueden editarla. También escribo en Matlab, lo cual odio porque es peculiar, lo que aumenta mi deseo de crear un sitio web como el que describo.

+3

¿Cuál es su función? http://www.youtube.com/watch?v=mkO87mkgcNo –

+2

Ajusté las etiquetas de su pregunta porque no parecía tener sentido tener etiquetas para un grupo de idiomas aleatorios que realmente no se mencionan en su pregunta - Pensé que '[language-agnostic]' tendría más sentido. Espero que no te importe ;-) –

+0

Estás agrupando en "algoritmo" con "implementación", y creo que te refieres a lo último. Cualquiera que sea el idioma que use * debe * tener algún depósito de módulos, como CPAN o PEAR, etc. Probablemente haya muchos libros que tendrán al menos una implementación de pseudo-código. Probablemente también exista un gran factor de experiencia, saber dónde buscar lo que intuyes debe estar presente en algún lugar. –

Respuesta

14

En primer lugar, dos salvedades:

  1. Copiar y pegar el código que no entiende es una mala idea. Asegúrese de comprender exactamente lo que hace el código antes de usarlo.
  2. Asegúrese de respetar la licencia del código que está copiando. ¡Esto es importante!

Esas advertencias aparte, a menudo depende del idioma. Los lenguajes con un espíritu de desarrollo abierto (no solo una implementación de código abierto, piense en Python en comparación con Java) tienden a tener archivos oficiales de bibliotecas de código abierto. Por ejemplo:

Además, no se olvide de mirar en sus idiomas de la biblioteca estándar. Algunos lenguajes modernos tienen masivas bibliotecas estándar, que a menudo han contenido la funcionalidad Busco:

no -Los idiomas desarrollados a menudo tienen archivos comunitarios no oficiales. Por ejemplo:

Una tercera categoría de sitios son el lenguaje agnóstico. A menudo son la mejor búsqueda a través de POG (Google simple y anticuado).Por ejemplo:

Por último, una cuarta categoría de sitios que me parece cada vez más útiles son la fuente de código de barras:

Puede también ser capaz de encontrar el código fuente útil, o al menos obtener ayuda para escribir algo, a través de diversos pastebins.

  • Pastebin es independiente del idioma
  • HPaste es sobre todo Haskell, pero tiene un poco en otros idiomas.

A menudo, al final del día es más fácil solo googlearlo.

+0

He hecho de esto una wiki, así que siéntete libre de agregar tus propios favoritos. – fmark

+1

Copiar pegar es una cosa, importar una lib externa y dejar que haga cosas es otra;) –

+0

Absolutamente. Tristemente, me he encontrado con muchas personas que no conocen la diferencia. – fmark

21

StackOverflow.com. No, no estoy bromeando.

En su mejor momento, la gente viene diciendo "ya no tiene una biblioteca X ya hecha", y muy a menudo la Sabiduría Colectiva responde "sí". Pero el mayor obstáculo es la falta de un lenguaje de descripción: incluso aquí, un gran problema para muchos carteles es describir el problema con la suficiente claridad para que otros lo reconozcan como algo que ya han visto.

Y si las personas no pueden entender lo que estás tratando de hacer, ningún motor de búsqueda lo hará.

+0

Excelente respuesta.+1 – chiggsy

+1

Tuve este problema exacto tratando de escribir un algoritmo para determinar posibles manos ganadoras en diferentes tamaños de manos de cartas. Al igual que si pudieras hacer una mano de 7 cartas, cuántos conjuntos (pares, viajes, X-of-a-Kinds) son posibles en eso. Resulta que la forma general del problema es bien conocida (llamada una Partición Integer) e incluso es un sub-problema de la teoría de conjuntos más grande, pero no supe cómo describir el problema lo suficientemente bien como para buscarlo en esos términos para un largo rato. – CodexArcanum

0

Aparte de sitios como este (desbordamiento de pila) Yo no creo que haya muchos, tal vez CodePlex, pero casi te marcó -1 para el supuesto de que código que se encuentra en Internet es suyo para copiar.

Sugiero leer sobre licencias de software, espero que al menos comenten de dónde lo obtuvieron.

+1

+1 para el -1. – Timothy

+1

+1 para el +1 en el -1. – NotMe

+0

+1 para el +1 en el +1 en el -1 :) – egrunin

0

No estoy seguro de que esta pregunta sea independiente del idioma, pero utilizo GitHub de esta manera;) Otros idiomas pueden tener lugares donde esto es posible.

+0

GitHub es independiente del idioma, ¿verdad? Es solo un repositorio de software compartido, pero puede poner programas en cualquier idioma, hasta donde yo sé. –

+0

@David Github tiene una función que detecta ciertos idiomas en un repositorio y los enumera como tales. –

+1

sí, GitHub es independiente del idioma. – Timothy

2

Cortar y pegar el código que encuentre en Internet en el código de producción sería como el chicle encontrado en la calle. - Mike Johnson

Con esto en mente, trate de sitios que los proyectos de código abierto como anfitrión GitHub, CodePlex, code.google.com, etc.

+2

Odio decirlo, pero estoy en desacuerdo con la cita de Mike Johnson allí arriba. Utiliza bibliotecas todo el tiempo. No le importa cómo funcionan, solo toma las palabras del autor que dicen que lo hacen, y usted supone que funcionan de manera eficiente. Se llama abstracción. No quiero tener que reinventar la rueda cada vez que necesito calcular una raíz cuadrada. No quiero reinventar la rueda cada vez que necesito hacer algo un poco más complicado tampoco. –

+5

Hay una gran diferencia entre usar una biblioteca y cortar y pegar código. –

0

Safari Estantería de O'Reilly tiene muchos, muchos libros que contienen muchas implementaciones de donde elegir

http://my.safaribooksonline.com/

yo era un abonado durante unos años antes de venir a mi trabajo actual, en el que tenemos una cuenta corporativa! Es uno de los mejores beneficios, y uno de los mejores recursos que tengo disponible. No compré un libro de computadora en años.

5

No es un wiki que contiene código libre que cualquiera puede editar y mejorar:

Rosetta Code.

Como una vista general, está la página "Solutions by Programming Task".


De la antigua página:

"Código de Rosetta es un sitio crestomatía programación La idea es presentar soluciones a la misma tarea en como muchos idiomas diferentes como sea posible, para demostrar . cómo los idiomas son similares y diferentes, y para ayudar a una persona con una conexión a tierra en un enfoque a un problema en el aprendizaje de otro. "

Cuestiones relacionadas