Làm cách nào để viết mã một cách an toàn bằng 'từ' của riêng tôi và không đạo văn?


18

Tôi hiểu đạo văn và diễn giải khá tốt khi viết một bài nghiên cứu, nhưng những lĩnh vực tương đương trong lập trình có vẻ xa lạ với tôi. Tôi đã tìm kiếm các chủ đề trực tuyến, và đáng ngạc nhiên là không có nhiều tài liệu về chủ đề như người ta mong đợi.

Khi viết mã và phải thực hiện điều gì đó mà tôi chưa từng thực hiện trước đây, tôi sẽ lên mạng để tìm ví dụ. Tôi cố gắng đọc qua các tài liệu trước, nhưng đôi khi tôi thấy khó khăn để làm theo. Vì vậy, nếu thất bại, tôi sẽ tìm kiếm chủ đề trực tuyến và được trình bày với hàng tá ví dụ (cho dù chúng có trên blog cá nhân của ai đó hoặc trang web Hỏi & Đáp như SO). Bây giờ tôi thường được trình bày với 5-10 dòng mã. Tôi đã và sẽ KHÔNG BAO GIỜ sao chép và dán mã đó vào mã của riêng mình, nhưng tôi vẫn lo lắng về việc sao chép nó xuống nguyên văn. Tôi thấy thật khó để sắp xếp lại một đoạn mã nhất định, đặc biệt là khi chỉ có rất nhiều cách để làm như vậy. Tôi đảm bảo đổi tên các biến, thay đổi định dạng, v.v. - nhưng điều này đã đủ chưa?

Tôi đã luôn muốn hiểu chủ đề này, nhưng bây giờ tôi đang làm việc với một ngôn ngữ mới và trong môi trường công ty tôi nghĩ rằng nó đặc biệt thích hợp. Nếu bất cứ ai có thể giải thích hoặc liên kết đến một lời giải thích tốt ở nơi khác, tôi sẽ đánh giá rất cao điều đó!

tl; dr Tôi không hiểu bạn phải thay đổi bao nhiêu và điều chỉnh lại 5-10 đoạn mã được tìm thấy trên mạng để tránh đạo văn. Điều gì nếu có rất ít mà bạn có thể thay đổi?


Nếu bạn phải chủ động suy nghĩ về việc tránh đạo văn, có gì đó không ổn với hệ thống. Chắc chắn, bạn không bao giờ nên sao chép một cái gì đó, nhưng nó không cần phải suy nghĩ về nó.
Anto

1
@anto, tôi nghĩ tôi hiểu ý nghĩa của OP. OP đã lấy một số mã từ một nơi nào đó, muốn sử dụng nó hoặc tích hợp nó với một số công việc mà anh ấy / cô ấy đang làm. Đề nghị của tôi, để OP có quyền sở hữu một cách đáng tin cậy một thứ gì đó thu được ở nơi khác là (1) tìm hiểu / hiểu nó, (2) cải thiện mã cả về chức năng (tái cấu trúc) và thẩm mỹ (tên biểu tượng phù hợp hơn, phù hợp hơn) và (3) chạy nó trong dự án riêng của anh ấy / cô ấy. Tôi đã thực hiện điều này với thuật toán trượt tối đa nhanh (O (log2 (N)) này. Mã của tôi là của tôi, nhưng tôi đã học được alg từ một nơi khác.
robert bristow-johnson

Trong khi tôi hiểu câu hỏi sẽ rộng hơn, liên kết này có thể có liên quan: Tôi có thể sử dụng hợp pháp mã tôi tìm thấy trên một diễn đàn không?
John Wu

Câu trả lời:


30

Đạo văn không giống như vi phạm bản quyền. Đạo văn là truyền đi công việc của người khác như của riêng bạn. Có thể vi phạm bản quyền mà không đạo văn:

// The following code is lifted, without permission, from Windows 2000.
// Copyright © 2000 Company-metonymous-with-Redmond.
// ...

và có thể phạm tội đạo văn mà không vi phạm bản quyền:

/* I wrote this function. */
int sqlite3Strlen30(const char *z){
  const char *z2 = z;
  if( z==0 ) return 0;
  while( *z2 ){ z2++; }
  return 0x3fffffff & (int)(z2 - z);
}

(được nâng lên từ một công cụ cơ sở dữ liệu SQL không có máy chủ miền công cộng)

Để tránh đạo văn, bạn có thể xem xét trích dẫn nguồn của mình. Đây là một ví dụ (trong đó có rất nhiều) từ PostgreSQL :

/* datebsearch()
 * Binary search -- from Knuth (6.2.1) Algorithm B.  Special case like this
 * is WAY faster than the generic bsearch().
 */
static const datetkn *
datebsearch(const char *key, const datetkn *base, int nel)

4

Sử dụng gia sư / hướng dẫn không phải là đạo văn. Nếu tôi sao chép câu trả lời của người khác ở đây, đó sẽ là đạo văn. Nếu tôi liên kết với nó, hiển thị một trích dẫn, đó sẽ không phải là đạo văn.

Kiểm tra xem nguồn của bạn có cho phép (tái) sử dụng (giấy phép, giấy phép) không. Tôi nghĩ (cần kiểm tra) bất cứ điều gì trên SO sẽ hoàn toàn là miền pub (hoặc commons sáng tạo, chia sẻ tương tự, v.v.) hoặc nó sẽ không thực sự có thể hoạt động. (Việc sử dụng là nhận được câu trả lời mà bạn biết bạn không thể sử dụng)

Nói tóm lại, tôi cảm thấy rằng có lẽ bạn không hiểu đạo văn lắm, trừ khi các định nghĩa khác nhau một cách điên cuồng trong lĩnh vực học thuật?

Nguyên tắc nhỏ của tôi: sử dụng tất cả các câu trả lời chỉ đơn thuần là tăng tốc kết quả mà bạn đang nhận được. Tuy nhiên, nếu bạn tìm thấy một mẫu hoạt động kỳ diệu nhưng bạn thực sự không biết làm thế nào (hoặc tại sao) bạn vượt qua dòng đạo đức.

Về vấn đề sửa đổi các đoạn nhỏ tôi sẽ tranh luận ngược lại; Làm thế nào bạn có thể tích hợp các đoạn nhỏ vào mã của mình mà không cần sắp xếp lại: cơ hội phù hợp với nó là khá mong manh và tôi có ý kiến ​​khá mạnh mẽ về mã của mình sẽ như thế nào. Có thể bạn thiếu 'ý kiến' đó (đọc: kinh nghiệm) và tôi khuyên bạn nên viết thêm mã để có được sự tự tin. Một kỹ thuật khác để có được kinh nghiệm là đọc một câu trả lời, sau đó đi và áp dụng nó mà không cần truy cập bất kỳ mã mẫu nào . Bạn sẽ phạm sai lầm, nhưng bạn cũng sẽ học đủ để

  • tái tạo nó lần sau
  • hãy tự tin xem bạn có hiểu mã không
  • cảm thấy tốt về bản thân

Gửi từ HTC của tôi; vui lòng thưởng thức một hoặc hai lỗi đánh máy


Các bài đăng SO được cấp phép là CC-BY-SA 3.0 (cuộn xuống cuối trang) vì vậy nếu ai đó viết ra một giải pháp hoàn chỉnh cho vấn đề của bạn, bạn chỉ được phép sao chép nguyên văn nếu bạn đề cập đến tác giả và của bạn mã được xuất bản theo cùng một giấy phép (hoặc hoàn toàn không được công bố). Nhưng như bạn nói, loại mã hóa sao chép và dán đó là thực tế tồi tệ ngay từ đầu.
5gon12eder

4

Nếu bạn thay đổi và tua lại mã chỉ để tránh đạo văn, bạn chỉ (cố gắng) tránh phát hiện đạo văn. Tất cả phụ thuộc vào đoạn mã bạn sao chép. Một khả năng là đánh giá một đoạn mã đã cho chỉ là một hướng dẫn hữu ích với tính nguyên bản sáng tạo hạn chế hoặc là thông lệ mà không ai có thể yêu cầu quyền tác giả. Khả năng khác là định giá nó đủ quan trọng để cung cấp tín dụng. Bạn có thể cung cấp tín dụng ở nhiều cấp độ, từ nhận xét mã đơn giản để biến mã của bạn thành một nhánh / nhánh chính thức của mã gốc. Tóm lại, nó ít hơn về những gì bạn có thể làm nhưng về cách bạn xem xét mã ban đầu và cách bạn cung cấp tín dụng nếu cần. Đạo văn không phải là sao chép mà là sao chép mà không cung cấp tín dụng.


1

Tôi khuyên bạn nên sử dụng bất kỳ nguồn nào bạn có thể tìm thấy để tìm ra cách giải quyết vấn đề. Và một khi bạn đã tìm ra nó, bạn loại bỏ tất cả các nguồn này khỏi màn hình và viết giải pháp của riêng bạn.

Trừ khi bạn có bộ nhớ ảnh và sao chép một trong những giải pháp hiện có, điều này sẽ giải quyết vấn đề đạo văn và / hoặc vi phạm bản quyền. Nó cũng giúp bạn bằng cách buộc bạn thực sự hiểu vấn đề.

Bạn có thể tiến thêm một bước nữa: Hầu hết các giải pháp mà bạn tìm thấy trên internet đều có lỗi này hoặc lỗi khác. Chỉ vì nó trên internet không có nghĩa là nó hoàn hảo. Chỉ ra những gì không hoàn toàn chính xác và sửa chữa nó. Bằng cách đó bạn sẽ hiểu rõ hơn, có mã tốt hơn và chắc chắn tránh mọi cáo buộc vi phạm bản quyền hoặc đạo văn.


0

Nếu bạn không viết mã trong môi trường học thuật, tại sao bạn lại lo lắng về đạo văn? Trong một môi trường chuyên nghiệp, nó chỉ quan trọng nếu bạn đạo văn các nhân viên khác trong công ty của bạn. Đạo văn là về người được tín dụng. Trong mọi trường hợp, giải pháp cho đạo văn rất đơn giản - bất cứ điều gì bạn thực hiện, hãy ghi công cho tác giả gốc. Nếu đó là từ một trang web, bao gồm URL. Điều này có lợi cho bạn, bởi vì nếu bạn có bất kỳ câu hỏi nào, bạn có thể tìm lại nguồn ban đầu.

Nếu câu hỏi của bạn thực sự là về vi phạm bản quyền, hãy nhớ rằng bản quyền không bao gồm các khía cạnh chức năng. Nó chỉ bao gồm các lựa chọn sáng tạo trong đó có rất nhiều lựa chọn hữu ích như nhau. Nếu bạn không thể dễ dàng thay đổi mã mà không vi phạm chức năng, thì đó không phải là thứ gì đó thuộc bản quyền (theo quy tắc sáp nhập hoặc scènes à faire).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.