web-dev-qa-db-ja.com

自分の「単語」でコードを安全に記述し、盗用しないにはどうすればよいですか?

盗作や言い換えが研究論文を書くことに関してはかなりよく理解していますが、プログラミングにおけるそれらの同等の領域は私には異質なようです。私はトピックをオンラインで調べましたが、驚くべきことに、このテーマに関する資料が予想ほど多くありません。

コードを記述して、これまで実装したことがないものを実装する必要がある場合は、オンラインで例を探します。事前にドキュメントを読み通すようにしていますが、たまにフォローするのが難しい場合があります。それで失敗した場合、私はトピックをオンラインで検索し、数十の例(誰かの個人的なブログやSOのようなQ&Aサイトにあるかどうか)を提示します。現在、通常5〜10行のコードが表示されます。私はそれを自分のコードにコピーアンドペーストすることは絶対にありませんが、私はそれをそのままコピーすることを心配しています。特定のコードを書き直すのは難しいです。特に、それを行う方法が非常に少ない場合はそうです。変数の名前の変更、書式の変更などを確認します-これで十分ですか?

私はいつもこのトピックを理解したいと思っていましたが、今は新しい言語で作業しているので、企業環境でそれが特に適切だと思います。誰かが他の場所で説明したり、適切な説明にリンクできるとしたら、私はそれを大いに感謝します!

tl; dr盗用を回避するためにオンラインで見つかったコードの5〜10のスニペットをどれだけ変更し、言い換える必要があるかわかりません。変更できるものがほとんどない場合はどうなりますか?

18
Anonymous

盗用は著作権侵害と同じではありません。盗作は、誰かの作品をあなた自身のものとして偽装しています。以下を盗用することなく、著作権侵害を犯す可能性があります。

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

そして、著作権を侵害することなく盗用を行うことが可能です。

/* 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);
}

(パブリックドメインのサーバーレスSQLデータベースエンジンから引き上げられました)

盗作を回避するには、情報源を引用することを検討してください。次に例を示します(多数あります) 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)
30
Joey Adams

家庭教師/チュートリアルを使用することは盗作ではありません。私が他の誰かの答えをここにコピーするとしたら、それは盗作になるでしょう。私がそれにリンクを張って、引用を示していれば、それは盗作ではないでしょう。

ソースが(再)使用(ライセンス、書面による許可)を許可していることを確認します。 SOのすべては暗黙的にpubドメイン(またはクリエイティブコモンズ、共有など)になるか、実際には機能しないと思います(確認する必要があります)。あなたが使用できないことを知っていると答えてください)

要するに、学問の分野で定義が大きく異なる場合を除いて、盗作についてはよく理解していないのではないかと思います。

私の経験則:とにかく得ていた結果を加速するすべての答えを使用してください。しかし、魔法のように機能するのサンプルを見つけたが、倫理の境界線を越えている方法(または理由)が本当にわからない場合。

小さなスニペットの変更については、その逆を主張します。小さなスニペットをコードにどのように統合しますかなし再編成:それが収まる可能性はかなりスリムであり、コードがどのように見えるかについてかなり強い意見があります。多分あなたはその「意見」(読んで:経験)を欠いているので、自信を得るためにもっとコードを書くことを勧めます。経験を積むもう1つの方法は、回答を読んでから適用することですサンプルコードにアクセスせずに。あなたは間違いをするでしょうが、あなたはまた、

  • 次回それを再現
  • コードを理解しているかどうかについて自信を得る
  • あなた自身について気持ちがいい

私のHTCから送信されました。タイプミスをお楽しみください

4
sehe

盗作を回避するためだけにコードを変更して書き換える場合、盗用の検出を回避する(試みる)だけです。それはすべて、コピーするコードに依存します。 1つの可能性は、特定のコードスニペットをクリエイティブな独創性に制限のある単なる役立つガイドとして、または誰も著者であることを主張できない一般的な方法として評価することです。他の可能性は、信用を与えるのに十分重要であることを評価することです。単純なコードコメントから、コードを元のコードの公式の分岐/ブランチにするまで、いくつかのレベルでクレジットを与えることができます。要約すると、できることではなく、コードをどのように独自に検討するか、および必要に応じてクレジットを与える方法についてです。盗作はコピーではなく、クレジットを与えずにコピーすることです。

4
Jakob

問題を解決する方法を見つけるために、見つけられるあらゆるソースを使用することをお勧めします。そしてそれを理解したら、これらのソースをすべて画面から削除し、独自のソリューションを記述します。

写真の記憶がなく、既存の解決策の1つをコピーしない限り、これにより盗用や著作権侵害の問題が解決されます。また、実際に問題を理解することを強制することによって、あなたを助けます。

さらに少し進んでもかまいません。インターネットで見つけたほとんどの解決策には、何らかの欠点があります。インターネット上にあるからといって、それが完璧であるとは限りません。正しくないものを見つけて修正します。そうすることで、理解が深まり、コードが向上し、間違いなく著作権侵害や盗用の非難を回避できます。

1
gnasher729

アカデミックな環境でコーディングをしていないのに、なぜ盗作を心配するのでしょうか。プロフェッショナルな環境では、社内の他の従業員を盗用した場合にのみ問題になります。盗作とは、誰が信用されるかということです。いずれにせよ、盗用への解決策は簡単です。あなたが取るものは何でも、元の作者を信用してください。 Webページからの場合は、URLを含めます。質問がある場合は、元のソースを再び見つけることができる可能性があるため、これはあなたに利益をもたらします。

あなたの質問が本当に著作権侵害に関するものであれば、著作権は機能的な側面をカバーしていないことを覚えておいてください。等しく有用な選択肢が非常に多いクリエイティブな選択肢のみを対象としています。機能を壊さずにコードを簡単に変更できない場合、それは著作権の対象ではありません(合併またはシーンフェアルールの下)。

0
David Schwartz