2010-05-11 23 views
11

Tôi đang ngồi ở đây viết một chức năng mà tôi tích cực đã được viết trước đây, một nơi nào đó trên trái đất. Tôi không biết tại sao tôi không thể truy cập một trang web và tìm kiếm một chức năng mà sau đó tôi có thể sao chép và dán vào dự án của tôi trong 2 giây thay vì lãng phí ngày của tôi tái phát minh bánh xe.Có một trang web để tìm kiếm các hàm phổ biến, đã viết không?

Chắc chắn có một số thư viện nhất định bạn có thể sử dụng, nhưng bạn tìm thấy những thư viện này ở đâu và khi nào chúng vắng mặt, có một trang web như tôi mô tả không?

Có thể một wiki thuộc một số loại có chứa mã miễn phí mà ai cũng có thể chỉnh sửa và cải thiện?

Chỉnh sửa: Tôi có thể viết mã mọi thứ tốt, tôi chỉ không biết CÁCH LÀM. Vì vậy, ví dụ, ngay bây giờ, tôi đang cố gắng bản địa hóa một robot/xe/điểm trong không gian. Tôi BIẾT có một cách để làm điều đó, chỉ dựa trên phạm vi và khoảng cách. Triangulation và Trilateration. Cách viết mã đó là một câu chuyện khác. Một trang web có thể có mã psuedo, từng bước làm thế nào để làm điều đó sẽ được ridiculously hữu ích. Nó cũng sẽ đảm bảo giải pháp tối ưu vì mọi người đều có thể chỉnh sửa nó. Tôi cũng đang viết trong Matlab, điều mà tôi ghét vì nó kỳ quặc, thêm vào mong muốn tạo một trang web như tôi mô tả.

+3

Chức năng của bạn là gì? http://www.youtube.com/watch?v=mkO87mkgcNo –

+2

Tôi đã điều chỉnh các thẻ trên câu hỏi của bạn vì có vẻ như không có ý nghĩa khi có thẻ cho một loạt các ngôn ngữ ngẫu nhiên không thực sự được đề cập trong câu hỏi của bạn - Tôi nghĩ '[ngôn ngữ-thuyết bất khả tri]' sẽ có ý nghĩa hơn. Hy vọng bạn không nhớ ;-) –

+0

Bạn đang lumping trong "thuật toán" với "thực hiện", và tôi nghĩ rằng bạn có nghĩa là sau này. Bất kỳ ngôn ngữ nào bạn đang sử dụng * sẽ * có một số kho lưu trữ các mô-đun, chẳng hạn như CPAN hoặc PEAR, v.v. Có thể có rất nhiều sách sẽ có ít nhất một triển khai mã giả. Cũng có thể có rất nhiều yếu tố kinh nghiệm trong đó, biết nơi để tìm những gì bạn intuit phải có mặt ở đâu đó. –

Trả lời

14

Thứ nhất, hai hãy cẩn thận:

  1. Sao chép và dán đoạn code bạn không hiểu là một ý tưởng tồi. Hãy chắc chắn rằng bạn hiểu chính xác những gì các mã hiện trước khi bạn sử dụng nó.
  2. Đảm bảo bạn tôn trọng giấy phép mã bạn đang sao chép. Cái này quan trọng!

Bỏ qua những điều này, thường phụ thuộc vào ngôn ngữ. Các ngôn ngữ có đặc tính phát triển mở (không chỉ là triển khai mã nguồn mở, nghĩ Python so với Java) có xu hướng có lưu trữ chính thức của các thư viện nguồn mở. Ví dụ:

Bên cạnh đó, đừng quên tìm trong ngôn ngữ của bạn thư viện chuẩn. Một số ngôn ngữ hiện đại có lớn thư viện chuẩn, mà thường chứa các chức năng Tôi đang tìm kiếm:

Non các ngôn ngữ được phát triển toàn diện thường có các lưu trữ cộng đồng không chính thức. Ví dụ:

Một loại thứ ba của trang web này là ngôn ngữ thuyết bất khả tri. Họ thường tìm kiếm tốt nhất thông qua POG (Google thuần túy cũ).Ví dụ:

Cuối cùng, một thể loại thứ tư của các trang web mà tôi tìm thấy ngày càng hữu ích là nguồn công cụ tìm kiếm mã:

Bạn cũng có thể tìm mã nguồn hữu ích, hoặc ít nhất là nhận trợ giúp viết một cái gì đó, thông qua pastebins khác nhau.

  • Pastebin là ngôn ngữ-agnostic
  • HPaste chủ yếu là Haskell, nhưng có một chút bằng các ngôn ngữ khác.

Thông thường, vào cuối ngày, cách dễ nhất là chỉ cần google.

+0

Tôi đã tạo một wiki này, vì vậy hãy thêm các mục yêu thích của riêng bạn. – fmark

+1

Sao chép dán là một điều, nhập khẩu một thư viện bên ngoài và để cho nó làm công cụ khác;) –

+0

Tuyệt đối. Đáng buồn thay, tôi đã gặp nhiều người không biết sự khác biệt. – fmark

21

StackOverflow.com. Không, tôi không nói đùa.

Tốt nhất là mọi người đến đây nói "chưa có thư viện nào được thực hiện X", và thường là Trí tuệ tập thể trả lời "có". Nhưng trở ngại lớn nhất là thiếu ngôn ngữ mô tả: ngay cả ở đây, một vấn đề lớn đối với nhiều áp phích là mô tả vấn đề đủ rõ ràng để người khác nhận ra nó như một thứ họ đã thấy trước đây.

Và nếu mọi người không thể hiểu những gì bạn đang cố gắng làm, thì sẽ không có công cụ tìm kiếm nào.

+0

Câu trả lời hay.+1 – chiggsy

+1

Tôi đã có vấn đề chính xác này khi cố gắng viết một thuật toán để xác định bàn tay chiến thắng có thể có trong các bàn tay có kích thước khác nhau. Giống như nếu bạn có thể làm một tay 7 lá, có bao nhiêu bộ (cặp, chuyến đi, X-of-a-Kinds) là có thể trong đó. Hóa ra hình thức chung của vấn đề là nổi tiếng (được gọi là Phân vùng Integer) và nó thậm chí là một vấn đề phụ của lý thuyết tập lớn hơn, nhưng tôi không biết làm thế nào để mô tả vấn đề đủ tốt để tìm kiếm nó theo những thuật ngữ đó một thời gian dài. – CodexArcanum

0

Ngoài các trang web như này (Ngăn xếp ngăn xếp) Tôi không nghĩ có nhiều, có thể là CodePlex, nhưng tôi gần như đã đánh dấu bạn -1 vì giả sử mã đó được tìm thấy trên Internet là của bạn.

Tôi khuyên bạn nên đọc về cấp phép phần mềm, tôi hy vọng bạn sẽ nhận được ít nhất nhận xét từ nơi bạn nhận được.

+1

+1 cho -1. – Timothy

+1

+1 cho +1 trên -1. – NotMe

+0

+1 cho +1 trên +1 trên -1 :) – egrunin

0

Tôi không chắc chắn câu hỏi này là ngôn ngữ bất khả tri, nhưng tôi sử dụng GitHub theo cách này;) Các ngôn ngữ khác có thể có những nơi có thể thực hiện điều này.

+0

GitHub là ngôn ngữ bất khả tri, phải không? Nó chỉ là một kho phần mềm chia sẻ, nhưng bạn có thể đặt các chương trình bằng bất kỳ ngôn ngữ nào, theo như tôi biết. –

+0

@David Github có một tính năng phát hiện một số ngôn ngữ nhất định trong một kho lưu trữ và liệt kê chúng như vậy. –

+1

có, GitHub là ngôn ngữ bất khả tri. – Timothy

2

Cắt và dán mã bạn tìm thấy trên Internet vào mã sản xuất sẽ giống như kẹo cao su được tìm thấy trên đường phố. - Mike Johnson

Với ý nghĩ đó, hãy thử các trang web dự án máy chủ mã nguồn mở như GitHub, CodePlex, code.google.com vv

+2

Tôi ghét phải nói điều đó, nhưng tôi không đồng ý với báo giá của Mike Johnson ở đó. Bạn sử dụng thư viện mọi lúc. Bạn không quan tâm cách họ làm việc, bạn chỉ cần lấy từ tác giả mà họ làm, và bạn cho rằng họ làm việc hiệu quả. Nó được gọi là trừu tượng. Tôi không muốn phải tái tạo lại bánh xe mỗi khi tôi cần tính căn bậc hai. Tôi không muốn phát minh lại bánh xe mỗi khi tôi cần phải làm một cái gì đó phức tạp hơn một chút. –

+5

Có sự khác biệt lớn giữa việc sử dụng thư viện và cắt và dán mã. –

0

Safari Bookshelf từ O'Reilly có nhiều, rất nhiều cuốn sách có chứa nhiều hiện thực từ đó để chọn.

http://my.safaribooksonline.com/

tôi là một thuê bao trong một vài năm trước khi đến công việc hiện tại của tôi, nơi chúng tôi có một tài khoản của công ty! Đó là một trong những đặc quyền tốt nhất, và là một trong những nguồn lực tốt nhất mà tôi có. Tôi đã không mua một cuốn sách máy tính trong nhiều năm.

5

Có một wiki có chứa mã miễn phí mà ai cũng có thể chỉnh sửa và cải thiện:

Rosetta Code.

Như một phương tiện tổng quan, có trang "Solutions by Programming Task".


Từ trang cũ:

"Rosetta Mã là một trang web lập trình chrestomathy Ý tưởng là trình bày các giải pháp cho các nhiệm vụ tương tự trong như nhiều ngôn ngữ khác nhau càng tốt, để chứng minh . cách các ngôn ngữ giống nhau và khác nhau, và để hỗ trợ một người với một nền tảng trong một cách tiếp cận cho một vấn đề trong việc học khác. "

Các vấn đề liên quan