弱弱地问问:怎么判断写的代码是否是抄袭?

哈利_蜘蛛侠 2016-03-13 11:44:26
程序员一般是通过教材入的门,教材里通常有很多代码。教材的作者通常说明书里的代码可以用于学习目的,但是不得用于商业用途。然而很多事情说起来简单,但是做起来就不那么简单了。下面列举我的几个疑惑:
1、原封不动地照搬一般来说肯定是抄袭了。但是如果稍加修改后一不小心跟另外某个地方的代码一模一样了,怎么办呢?
2、如果说不仅仅一模一样照搬算是抄袭,思路和步骤完全等效(就是换了变量名字和注释之类的)也算抄袭的话,那么很多的教材里都有求两个数的最大公约数的算法(以及各种排序算法),而我们要用的话基本上也就是依葫芦画瓢了,基本上不可能创新的,那么这个算不算是抄袭?
3、最可怕的是,如果程序员完全自主地写出了他从来没有遇到过、但是在世界上其他某个角落里藏着的代码的话,这算是抄袭吗?(就好像J.K. 罗琳写《哈利波特7》有没有抄袭《西游记后传》?)
...全文
12130 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
哈利_蜘蛛侠 2020-01-02
  • 打赏
  • 举报
回复
引用 46 楼 mumashiji 的回复:
我就想问一下,如果我写了这个:
<p>我是一个P标签</p>
然后发现有一个人写了:
<p>我是另一个p标签</p>
我是不是能告他抄袭?
感觉这是一个哲学问题吧:一方面量变引起质变;另一方面,过于通用和简单的不应该有版权,像Adidas的三天横杠的商标就被判定为无效。
mumashiji 2020-01-01
  • 打赏
  • 举报
回复
我就想问一下,如果我写了这个:
<p>我是一个P标签</p>
然后发现有一个人写了:
<p>我是另一个p标签</p>
我是不是能告他抄袭?
欧阳春晖 2017-03-16
  • 打赏
  • 举报
回复
引用 44 楼 akirya 的回复:
[quote=引用 41 楼 jack960330 的回复:] [quote=引用 40 楼 akirya 的回复:] [quote=引用 36 楼 jack960330 的回复:] IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司
这个据说有来源么?求新闻链接。[/quote] 我也是从书上看到的 http://book.2cto.com/201208/2620.html 你看看,20世纪80年代,IBM控告其竞争对手剽窃了PC-AT ROM上的代码[128]。IBM的人员作证道:对手程序往寄存器里存入和读取数据的顺序[2]以及有关指令所使用的寄存器与IBM开发的程序使用寄存器的方法是一致的。而读写寄存器的顺序以及所使用的寄存器实际上就是程序的“胎记”之一。
引用 39 楼 akirya 的回复:
[quote=引用 37 楼 jack960330 的回复:] [quote=引用 36 楼 jack960330 的回复:] [quote=引用 35 楼 akirya 的回复:] [quote=引用 34 楼 jack960330 的回复:] 无论你怎么操作,有效结构总是一样的吧,比如我的寄存器操作方式是这么操作的,你无论怎么分,如果是抄袭的,那我寄存器操作的先后顺序,执行起来就会一样
1.cpu也在跑无效流程啊 2.编译器可以修改无关代码的先后顺序 再说寄存器就那么几个,排列组合下来也没多少种顺序,相似太多。[/quote] IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司[/quote] 而且编译器也不会随便改动你的代码。[/quote] 编译器会优化,怎么优化是编译器的事情。只要保证结果一致,改顺序什么的完全可以。[/quote] 优化器修改代码是有规则的,是不会乱修改的,因为代码顺序对结果影响是十分大的,优化器能修改的范围是极其有限的[/quote] 80年代确实够早,现在还有利用这种技术做分析的么? 优化是不会乱改的,得保证结果一致。反编译看看就知道优化之后的代码和原来的代码差异有多大了。[/quote] 其实好的分析器可以忽略无效代码。。。
  • 打赏
  • 举报
回复
引用 41 楼 jack960330 的回复:
[quote=引用 40 楼 akirya 的回复:] [quote=引用 36 楼 jack960330 的回复:] IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司
这个据说有来源么?求新闻链接。[/quote] 我也是从书上看到的 http://book.2cto.com/201208/2620.html 你看看,20世纪80年代,IBM控告其竞争对手剽窃了PC-AT ROM上的代码[128]。IBM的人员作证道:对手程序往寄存器里存入和读取数据的顺序[2]以及有关指令所使用的寄存器与IBM开发的程序使用寄存器的方法是一致的。而读写寄存器的顺序以及所使用的寄存器实际上就是程序的“胎记”之一。
引用 39 楼 akirya 的回复:
[quote=引用 37 楼 jack960330 的回复:] [quote=引用 36 楼 jack960330 的回复:] [quote=引用 35 楼 akirya 的回复:] [quote=引用 34 楼 jack960330 的回复:] 无论你怎么操作,有效结构总是一样的吧,比如我的寄存器操作方式是这么操作的,你无论怎么分,如果是抄袭的,那我寄存器操作的先后顺序,执行起来就会一样
1.cpu也在跑无效流程啊 2.编译器可以修改无关代码的先后顺序 再说寄存器就那么几个,排列组合下来也没多少种顺序,相似太多。[/quote] IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司[/quote] 而且编译器也不会随便改动你的代码。[/quote] 编译器会优化,怎么优化是编译器的事情。只要保证结果一致,改顺序什么的完全可以。[/quote] 优化器修改代码是有规则的,是不会乱修改的,因为代码顺序对结果影响是十分大的,优化器能修改的范围是极其有限的[/quote] 80年代确实够早,现在还有利用这种技术做分析的么? 优化是不会乱改的,得保证结果一致。反编译看看就知道优化之后的代码和原来的代码差异有多大了。
欧阳春晖 2016-04-02
  • 打赏
  • 举报
回复
引用 40 楼 akirya 的回复:
[quote=引用 36 楼 jack960330 的回复:] IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司
这个据说有来源么?求新闻链接。[/quote] 在准确一点就是软件相似性分析
欧阳春晖 2016-04-02
  • 打赏
  • 举报
回复
引用 40 楼 akirya 的回复:
[quote=引用 36 楼 jack960330 的回复:] IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司
这个据说有来源么?求新闻链接。[/quote] 我也是从书上看到的 http://book.2cto.com/201208/2620.html 你看看,20世纪80年代,IBM控告其竞争对手剽窃了PC-AT ROM上的代码[128]。IBM的人员作证道:对手程序往寄存器里存入和读取数据的顺序[2]以及有关指令所使用的寄存器与IBM开发的程序使用寄存器的方法是一致的。而读写寄存器的顺序以及所使用的寄存器实际上就是程序的“胎记”之一。
引用 39 楼 akirya 的回复:
[quote=引用 37 楼 jack960330 的回复:] [quote=引用 36 楼 jack960330 的回复:] [quote=引用 35 楼 akirya 的回复:] [quote=引用 34 楼 jack960330 的回复:] 无论你怎么操作,有效结构总是一样的吧,比如我的寄存器操作方式是这么操作的,你无论怎么分,如果是抄袭的,那我寄存器操作的先后顺序,执行起来就会一样
1.cpu也在跑无效流程啊 2.编译器可以修改无关代码的先后顺序 再说寄存器就那么几个,排列组合下来也没多少种顺序,相似太多。[/quote] IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司[/quote] 而且编译器也不会随便改动你的代码。[/quote] 编译器会优化,怎么优化是编译器的事情。只要保证结果一致,改顺序什么的完全可以。[/quote] 优化器修改代码是有规则的,是不会乱修改的,因为代码顺序对结果影响是十分大的,优化器能修改的范围是极其有限的
欧阳春晖 2016-04-02
  • 打赏
  • 举报
回复
引用 40 楼 akirya 的回复:
[quote=引用 36 楼 jack960330 的回复:] IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司
这个据说有来源么?求新闻链接。[/quote] 这种技术如果专业术语的话,叫做软件“胎记”剽窃检测技术。 你可能没听过,我之前有一本这个书,专门讲软件加密与解密的软件保护技术,其中就有介绍软件胎记的剽窃检测分析技术 这是一种分析技术
  • 打赏
  • 举报
回复
引用 36 楼 jack960330 的回复:
IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司
这个据说有来源么?求新闻链接。
  • 打赏
  • 举报
回复
引用 37 楼 jack960330 的回复:
[quote=引用 36 楼 jack960330 的回复:] [quote=引用 35 楼 akirya 的回复:] [quote=引用 34 楼 jack960330 的回复:] 无论你怎么操作,有效结构总是一样的吧,比如我的寄存器操作方式是这么操作的,你无论怎么分,如果是抄袭的,那我寄存器操作的先后顺序,执行起来就会一样
1.cpu也在跑无效流程啊 2.编译器可以修改无关代码的先后顺序 再说寄存器就那么几个,排列组合下来也没多少种顺序,相似太多。[/quote] IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司[/quote] 而且编译器也不会随便改动你的代码。[/quote] 编译器会优化,怎么优化是编译器的事情。只要保证结果一致,改顺序什么的完全可以。
欧阳春晖 2016-03-31
  • 打赏
  • 举报
回复
引用 35 楼 akirya 的回复:
[quote=引用 34 楼 jack960330 的回复:] 无论你怎么操作,有效结构总是一样的吧,比如我的寄存器操作方式是这么操作的,你无论怎么分,如果是抄袭的,那我寄存器操作的先后顺序,执行起来就会一样
1.cpu也在跑无效流程啊 2.编译器可以修改无关代码的先后顺序 再说寄存器就那么几个,排列组合下来也没多少种顺序,相似太多。[/quote] IBM据说当年把他系统的寄存器操作顺序,操作方式的相似性数据当证据提交
欧阳春晖 2016-03-31
  • 打赏
  • 举报
回复
引用 35 楼 akirya 的回复:
[quote=引用 34 楼 jack960330 的回复:] 无论你怎么操作,有效结构总是一样的吧,比如我的寄存器操作方式是这么操作的,你无论怎么分,如果是抄袭的,那我寄存器操作的先后顺序,执行起来就会一样
1.cpu也在跑无效流程啊 2.编译器可以修改无关代码的先后顺序 再说寄存器就那么几个,排列组合下来也没多少种顺序,相似太多。[/quote] IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司
欧阳春晖 2016-03-31
  • 打赏
  • 举报
回复
引用 36 楼 jack960330 的回复:
[quote=引用 35 楼 akirya 的回复:] [quote=引用 34 楼 jack960330 的回复:] 无论你怎么操作,有效结构总是一样的吧,比如我的寄存器操作方式是这么操作的,你无论怎么分,如果是抄袭的,那我寄存器操作的先后顺序,执行起来就会一样
1.cpu也在跑无效流程啊 2.编译器可以修改无关代码的先后顺序 再说寄存器就那么几个,排列组合下来也没多少种顺序,相似太多。[/quote] IBM当时就是这么做的哦,对手公司居然抄袭他们的系统,他们就以这个为证据提交,IBM当年打官司[/quote] 而且编译器也不会随便改动你的代码。
  • 打赏
  • 举报
回复
引用 34 楼 jack960330 的回复:
无论你怎么操作,有效结构总是一样的吧,比如我的寄存器操作方式是这么操作的,你无论怎么分,如果是抄袭的,那我寄存器操作的先后顺序,执行起来就会一样
1.cpu也在跑无效流程啊 2.编译器可以修改无关代码的先后顺序 再说寄存器就那么几个,排列组合下来也没多少种顺序,相似太多。
欧阳春晖 2016-03-30
  • 打赏
  • 举报
回复
引用 31 楼 akirya 的回复:
[quote=引用 30 楼 jack960330 的回复:] [quote=引用 29 楼 akirya 的回复:] [quote=引用 28 楼 jack960330 的回复:] [quote=引用 25 楼 akirya 的回复:] [quote=引用 22 楼 jack960330 的回复:] [quote=引用 5 楼 akirya 的回复:] 1 作者得申请著作权 2 得有别人抄袭的证据 如果别人完全没看过某些人的代码,写出相同的代码不算抄袭,某些大公司就这么干的。
是这样的,给你们增长下见识,你们应该听过软件特征指纹识别吧,判断是否抄袭只要有别人的样本和源码,进行分析即可得到(可能还需要逆向),软件特征指纹识别,提取软件的特征指纹信息,判断软件在源码或机器码操作方式的相似度,通过这个相似度判断是不是抄袭,如果不同的软件存在相同的特征,即可判断为抄袭。[/quote] 有基于clang的混淆工具,专门对抗反编译分析的功能的。比如常用算法,有工具可以分析出来那些常用算法,混淆之后就分析不出来了,增加了N多的伪装流程,而且貌似每次编译的都不一样。 这工具的副作用就是对抗特征指纹识别。[/quote] 副作用应该是难以阅读吧[/quote] 不会啊,源码还是原来的源码,反编译之后就对应不上去了,指纹识别就无效了。[/quote] 如果分析算法有效结构呢?[/quote] 相同功能,不同实现,各自具有版权的很正常,按照有效结构的话,怎么判断? 完全可以将一个步骤做出的事情拆分成多个步骤完成。 指纹识别只能做参考,最终判断抄袭还得拿源码比对,或者证明从来没看过别人的代码。[/quote] 无论你怎么操作,有效结构总是一样的吧,比如我的寄存器操作方式是这么操作的,你无论怎么分,如果是抄袭的,那我寄存器操作的先后顺序,执行起来就会一样
欧阳春晖 2016-03-30
  • 打赏
  • 举报
回复
引用 31 楼 akirya 的回复:
[quote=引用 30 楼 jack960330 的回复:] [quote=引用 29 楼 akirya 的回复:] [quote=引用 28 楼 jack960330 的回复:] [quote=引用 25 楼 akirya 的回复:] [quote=引用 22 楼 jack960330 的回复:] [quote=引用 5 楼 akirya 的回复:] 1 作者得申请著作权 2 得有别人抄袭的证据 如果别人完全没看过某些人的代码,写出相同的代码不算抄袭,某些大公司就这么干的。
是这样的,给你们增长下见识,你们应该听过软件特征指纹识别吧,判断是否抄袭只要有别人的样本和源码,进行分析即可得到(可能还需要逆向),软件特征指纹识别,提取软件的特征指纹信息,判断软件在源码或机器码操作方式的相似度,通过这个相似度判断是不是抄袭,如果不同的软件存在相同的特征,即可判断为抄袭。[/quote] 有基于clang的混淆工具,专门对抗反编译分析的功能的。比如常用算法,有工具可以分析出来那些常用算法,混淆之后就分析不出来了,增加了N多的伪装流程,而且貌似每次编译的都不一样。 这工具的副作用就是对抗特征指纹识别。[/quote] 副作用应该是难以阅读吧[/quote] 不会啊,源码还是原来的源码,反编译之后就对应不上去了,指纹识别就无效了。[/quote] 如果分析算法有效结构呢?[/quote] 相同功能,不同实现,各自具有版权的很正常,按照有效结构的话,怎么判断? 完全可以将一个步骤做出的事情拆分成多个步骤完成。 指纹识别只能做参考,最终判断抄袭还得拿源码比对,或者证明从来没看过别人的代码。[/quote] 这种技术只是针对对手企业的,当然了,源码有相似的有时候并不奇怪,是不是抄袭还需要多方位分析,这只是一种手段而已
LaoJiu_ 2016-03-29
  • 打赏
  • 举报
回复
好哲学的问题!!
  • 打赏
  • 举报
回复
引用 30 楼 jack960330 的回复:
[quote=引用 29 楼 akirya 的回复:] [quote=引用 28 楼 jack960330 的回复:] [quote=引用 25 楼 akirya 的回复:] [quote=引用 22 楼 jack960330 的回复:] [quote=引用 5 楼 akirya 的回复:] 1 作者得申请著作权 2 得有别人抄袭的证据 如果别人完全没看过某些人的代码,写出相同的代码不算抄袭,某些大公司就这么干的。
是这样的,给你们增长下见识,你们应该听过软件特征指纹识别吧,判断是否抄袭只要有别人的样本和源码,进行分析即可得到(可能还需要逆向),软件特征指纹识别,提取软件的特征指纹信息,判断软件在源码或机器码操作方式的相似度,通过这个相似度判断是不是抄袭,如果不同的软件存在相同的特征,即可判断为抄袭。[/quote] 有基于clang的混淆工具,专门对抗反编译分析的功能的。比如常用算法,有工具可以分析出来那些常用算法,混淆之后就分析不出来了,增加了N多的伪装流程,而且貌似每次编译的都不一样。 这工具的副作用就是对抗特征指纹识别。[/quote] 副作用应该是难以阅读吧[/quote] 不会啊,源码还是原来的源码,反编译之后就对应不上去了,指纹识别就无效了。[/quote] 如果分析算法有效结构呢?[/quote] 相同功能,不同实现,各自具有版权的很正常,按照有效结构的话,怎么判断? 完全可以将一个步骤做出的事情拆分成多个步骤完成。 指纹识别只能做参考,最终判断抄袭还得拿源码比对,或者证明从来没看过别人的代码。
  • 打赏
  • 举报
回复
引用 22 楼 jack960330 的回复:
[quote=引用 5 楼 akirya 的回复:] 1 作者得申请著作权 2 得有别人抄袭的证据 如果别人完全没看过某些人的代码,写出相同的代码不算抄袭,某些大公司就这么干的。
是这样的,给你们增长下见识,你们应该听过软件特征指纹识别吧,判断是否抄袭只要有别人的样本和源码,进行分析即可得到(可能还需要逆向),软件特征指纹识别,提取软件的特征指纹信息,判断软件在源码或机器码操作方式的相似度,通过这个相似度判断是不是抄袭,如果不同的软件存在相同的特征,即可判断为抄袭。[/quote] 有基于clang的混淆工具,专门对抗反编译分析的功能的。比如常用算法,有工具可以分析出来那些常用算法,混淆之后就分析不出来了,增加了N多的伪装流程,而且貌似每次编译的都不一样。 这工具的副作用就是对抗特征指纹识别。
欧阳春晖 2016-03-28
  • 打赏
  • 举报
回复
引用 29 楼 akirya 的回复:
[quote=引用 28 楼 jack960330 的回复:] [quote=引用 25 楼 akirya 的回复:] [quote=引用 22 楼 jack960330 的回复:] [quote=引用 5 楼 akirya 的回复:] 1 作者得申请著作权 2 得有别人抄袭的证据 如果别人完全没看过某些人的代码,写出相同的代码不算抄袭,某些大公司就这么干的。
是这样的,给你们增长下见识,你们应该听过软件特征指纹识别吧,判断是否抄袭只要有别人的样本和源码,进行分析即可得到(可能还需要逆向),软件特征指纹识别,提取软件的特征指纹信息,判断软件在源码或机器码操作方式的相似度,通过这个相似度判断是不是抄袭,如果不同的软件存在相同的特征,即可判断为抄袭。[/quote] 有基于clang的混淆工具,专门对抗反编译分析的功能的。比如常用算法,有工具可以分析出来那些常用算法,混淆之后就分析不出来了,增加了N多的伪装流程,而且貌似每次编译的都不一样。 这工具的副作用就是对抗特征指纹识别。[/quote] 副作用应该是难以阅读吧[/quote] 不会啊,源码还是原来的源码,反编译之后就对应不上去了,指纹识别就无效了。[/quote] 如果分析算法有效结构呢?
  • 打赏
  • 举报
回复
引用 28 楼 jack960330 的回复:
[quote=引用 25 楼 akirya 的回复:] [quote=引用 22 楼 jack960330 的回复:] [quote=引用 5 楼 akirya 的回复:] 1 作者得申请著作权 2 得有别人抄袭的证据 如果别人完全没看过某些人的代码,写出相同的代码不算抄袭,某些大公司就这么干的。
是这样的,给你们增长下见识,你们应该听过软件特征指纹识别吧,判断是否抄袭只要有别人的样本和源码,进行分析即可得到(可能还需要逆向),软件特征指纹识别,提取软件的特征指纹信息,判断软件在源码或机器码操作方式的相似度,通过这个相似度判断是不是抄袭,如果不同的软件存在相同的特征,即可判断为抄袭。[/quote] 有基于clang的混淆工具,专门对抗反编译分析的功能的。比如常用算法,有工具可以分析出来那些常用算法,混淆之后就分析不出来了,增加了N多的伪装流程,而且貌似每次编译的都不一样。 这工具的副作用就是对抗特征指纹识别。[/quote] 副作用应该是难以阅读吧[/quote] 不会啊,源码还是原来的源码,反编译之后就对应不上去了,指纹识别就无效了。
加载更多回复(27)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧