acm-header
登录

ACM通信

BLOG@CACM

学生或最终用户程序员的道德责任


马克Guzdial

受安妮特·维2017年的书的启发,我最近写了一篇博客(麻省理工出版社)编程素养:计算机编程如何改变写作.我的文章触及了让所有人都能访问编码的问题,就像我们希望所有人都能掌握基本的语言组合技能一样贴在这里).回应的评论既有趣又具有挑战性。

布朗大学的Shriram Krishnamurthi提出了一个我认为最吸引人的问题。学生或最终用户程序员(如计算科学家或记者)在多大程度上对他们共享的代码负责?我们可以省略这个问题的简单形式——如果任何程序员编写了一个有伤害意图的程序,那么程序员显然是有责任的。

有很多有趣且具有挑战性的边界情况:

  • 如果一个物理学家开发了一个有趣的模拟并共享了代码,而这个代码意外地损坏了运行它的计算机,那该怎么办?是物理学家的责任吗?即使他们没有测试代码的背景,或者不知道这些代码可能会造成损害?
  • 如果物理学家共享了模拟,并且模拟是完全良性的,但是代码有一个安全漏洞,其他人可以利用它来造成伤害,那该怎么办?这是物理学家的功劳吗?即使他们根本不知道网络安全领域的存在?
  • Scratch 3.0刚刚发布.如果Scratch中有一个bug,某个块的组合可能会暴露一个漏洞,那该怎么办?谁负责?那些不小心把积木组合在一起的三年级学生?是Scratch团队发布了带有这种漏洞的产品吗?Scratch 3.0的新特性之一是能够用新块和新功能扩展Scratch。如果漏洞在一个扩展块集合中,责任(或任何责任)是由扩展的开发人员、允许扩展的Scratch团队还是使用扩展的学生承担?

这些问题的答案对国家教育有一定的影响。”CS为所有运动和课程一样Code.org的而且ExploringCS.我们是否需要教授所有学生有关测试的知识,以便他们能够检查潜在的损害和漏洞?网络安全应该成为我们计算机科学学习目标和标准的一部分吗?即使我们教授每个人关于测试和网络安全的知识,错误还是会犯。我们如何处理这些问题并保护更大的社会?

我找到了对计算机伦理感兴趣的同事。一些人在博客评论中回答了这个问题。密歇根大学的贾加迪什(H.V. Jagadish)指出,公司比个人学生或最终用户程序员负有更大的责任。我们可以期望许多(也许是所有)会计算的人会编写一些软件,我们不能合理地期望质量和安全性。用户可以合理地期望由商业实体开发的软件具有更高的质量和安全性。Alan Kay指出,代码过程很像世界生态中的生物有机体。我们不能实现绝对的安全,但我们可以考虑保护自己免受流氓程序(由学生或其他方面开发)的侵害,就像我们考虑保护社会免受疾病的侵害一样。

探索人工智能伦理的本·柯伊伯斯(Ben Kuipers)将其类比为疫苗开发。脊髓灰质炎疫苗是基于一种灭活的脊髓灰质炎病毒,但有时也会出现错误。其中最著名的是1955年的卡特事件(Cutter Incident),当时活体脊髓灰质炎被分发出去(尽管进行了安全测试),许多人因为他们认为是疫苗而患上了脊髓灰质炎维基百科页面).谁该对此负责呢?最后,卡特实验室被责令赔偿,但没有发现过失(见在这里讨论).这一裁决吓跑了社会所依赖的疫苗研发人员。1986年,美国建立了国家疫苗损害赔偿计划,使受到疫苗损害的人得到赔偿,但保护公司继续开发疫苗(见疾控中心页面在这里).本建议建立一个类似的机制,以保护开发自动驾驶汽车的公司免受不可避免的诉讼。他进一步建议,我们可能对学生或最终用户程序有类似的机制。我们希望人们学习编程。让更多人学习编程,符合他们的最大利益,也符合社会的最大利益。错误是不可避免的。我们必须保护编程知识的发展,同时也要赔偿受害者。

我还联系了最近在计算机教育和伦理方面工作的两位合作者。乔治亚理工学院的艾米·布鲁克曼写了一篇CACM观点的文章提供公平的计算机教育机会Sepehr Vakil和我一起ECEP联盟.他现在在西北大学,发表了关于基于司法框架的计算机教育公平的文章链接在这里).他有一篇文章要发表CACM观点今年3月,他就计算机教育中的教学道德问题发表了讲话。

Amy和Sepehr都专注于我们应该教给学生的东西。Sepehr希望我们教授计算机专业的学生更多关于道德和责任的知识,但又担心过于强调安全会扼杀学生的兴趣和创造力。学生在编写程序时显然不能免除他们的责任,但我们必须将错误与不小心造成的伤害区分开来。艾米强调教学生诚实地披露假设和限制。如果学生或最终用户共享他们的代码,他们需要明确说明他们做了多少测试,以及其他用户可能需要注意什么。

软件是强大的。这就是为什么那么多非专业人士正在学习编程的原因。任何强大的东西都会造成伤害,即使是意外。专业人士有道德责任考虑使用计算机能力的更广泛影响,并支持公共利益(使用来自2018年6月ACM道德和职业行为准则).这是一个开放的问题,我们如何支持学习者和最终用户程序员安全地开发软件,并保护其他人可能使用他们的软件。


没有发现记录

登录为完全访问
»忘记密码? *创建ACM Web帐户
Baidu
map