如果我在线上获得帮助,是否可以将其正确地声明为我自己的项目?[关闭]


9

基本上,我是Python网络编程的新手,所以我在线上学习了教程。使用教程中讲授的内容(创建套接字,连接端口等),我修改了代码,以便编写了一个程序,两台计算机可以相互发送消息。

如果我要申请工作并将其展示给我的面试官,从技术上讲,该代码是否属于我?可以说,我没有那么多地修改代码。但是,例如,如果我将其修改为类似井字游戏的样子,该游戏中两个用户在不同的PC上相互玩耍,那么代码是我的吗?我只是不想看起来像a窃者,所以我为什么要问。


9
罗伯特是对的,但要明确一点:这不是负面的。“我从Python教程开始的一些代码开始,就把它变成了!” ...从工作的角度来看,这可以比从头开始做的更好或更好。如果您从其他人的代码开始,那意味着您除了扩展,重构,重新设计目标等之外,还可以阅读其他人的代码。在大多数工作中,拥有“自己的”东西并不是重点-如果您可以向他们展示您的起点和成就,甚至更好!
BrianH 13-10-29

您增加或减少了多少代码?如果您从本教程中的100行代码开始,而只有110行-可能没有。如果您有1000条电话,是的,那是您的电话,但是请说说您是如何获得它们的,并提及您在哪里获得帮助。(是的,我知道代码行并不是一个很好的指标,但是可以给出一个主意)。

1
我投票结束这个问题是离题的,因为这是一个与程序员无关的道德问题。
durron597

Answers:


11

没有。

但是您可以声称您修改了代码,因此创建了一个程序,两台计算机可以相互发送消息。或者,您可以声称已将其修改为类似井字游戏的内容,其中两个用户在不同的PC上相互玩耍。

只是真实地表示您投入其中的工作量。如果其他项目完成了部分工作,则无法声明对Internet上某个项目的所有权。


1

我会选择经典的“它取决于”这一行。

正如您已经说过的,您并没有做太多修改,我完全站在罗伯茨身边。这不是你的项目。

但另一方面,我们的开发人员都喜欢讨论,研究项目,有时还喜欢复制粘贴项目。随便找别人的代码很常见。如果您对其进行了大量修改,请付出一些努力,提供新功能或解决问题的其他方法,那么这就是您的代码。

只要坚持关于您自己真正完成的工作量的真相,我敢肯定没有人会称您为gi窃者。


1

如果您所做的是修改某人的代码以执行您想要的操作,那么断言您的代码是“您的”是不诚实的。而是基于现有代码创建的程序。

现在您可能已经注意到,许多程序员都在使用其他人的代码。每时每刻。库和API本质上是使用他人在您自己的项目中创建的代码的一种形式化方法。尽管您所做的与使用库或API有所不同,但效果相同。

对于简单的P2P程序,您可以声称自己编写了一个消息传递应用程序,该应用程序利用了另一个程序员对简单Web协议的实现。您可以继续调用它作为您的程序,只要写了借来的部分,就应该归功于谁。并且最好将引用源的注释添加到代码中,以便其他人可以在需要时找到它。

就游戏而言,您编写了一个游戏。您可以将其声明为您的代码。然后,该游戏将利用您从其他来源获得的一组功能来启用多人游戏功能。同样,您可能应该至少在代码的注释中找到该代码的源。但是,在这种情况下,您可能会避免不像在编写游戏中那样将代码明确地告诉其他人。

许多开发人员依靠库来解决他们面临的一些更复杂的问题。人们经常使用诸如网络协议,图形和高级数学之类的东西,因此有些库可以很好地处理所有这些事情。使用这种代码不仅是完全可以接受的,而且是正常的。

如果您说“这是IM客户端”或“这是视频游戏”,则如果网络代码来自第三方,则不会感到惊讶。只是不要声称您是代码所有部分的唯一作者,所以您应该没事。

但是,您应该考虑另一种可能性:所讨论的代码是否受到任何使用条款的保护?至此,我一直在谈论无条件或开放术语的代码。但是,如果作者有一些更具体的术语,请遵循它们。如果他们只是将代码用于教育目的,那么以超出此范围的任何方式使用它都是不可行的。它们可能对该代码施加各种限制,因此请谨慎使用。


除了最后一段之外,这完全是重点。通过库进行代码重用(从道德和法律上而言)与通过复制和粘贴进行代码重用完全不同。
阿蒙

并非如此,因为本质上编译器无论如何都只是复制/粘贴。没有真正的区别,最后它们只是处理器命令的序列。就“道德和法律上”而言,这就是我的最后一段。只要原始创建者可以使用代码,就与使用库基本相同。
zeel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.