了解自然语言对编程有帮助吗?

时间:2010-04-17 20:14:48

标签: language-agnostic nlp

我们都听说数学至少对编程有所帮助。我的问题是,英语或其他自然语言技能是否有助于编程?我知道它必须有助于技术文档,但实际编程呢?编程语言中的某些结构是否也存在于自然语言中?知道如何编写20页的研究论文是否有助于编写20k loc编程项目?

5 个答案:

答案 0 :(得分:6)

Dijkstra甚至说:“除了数学倾向之外,对一个人的母语的非常好的掌握是一个有能力的程序员最重要的资产。”

编辑:是的,我有理由相信他正在谈论工作的编程部分。这里有一个更完整的引用:

对于那些在IBMerese中思考的人来说,一般的工商管理问题,尤其是数据库管理问题,实在太困难了。

关于语言的使用:用钝斧削尖铅笔是不可能的。尝试用十个钝轴来做同样是徒劳的。

除了数学倾向之外,对一个人的母语的非常好的掌握是一个称职的程序员最重要的资产。

来自EWD498

我当然不能代表Dijkstra,但我认为将你正在进行实际编程的部分与你与人交往的部分干净地分开是不可能的。例如,即使你独自工作,至关重要的是你能够(明确无误地)理解你写下的关于该做什么,错误的性质等的说明。必须掌握良好的英语水平。即使没有其他人参与其中(当然,除了琐碎的任务之外,这是不寻常的。)

答案 1 :(得分:4)

我不知道因果关系,但编写所需的技能与编程所需的技能相当重要:知道如何计划,能够保持无数细节一致,能够清楚地表达对于未来的读者,了解如何组织您的想法和最终产品。这并不是说成功的作者会成为一名优秀的程序员,但是具有良好语言技能和相同逻辑/数学/演绎技能的程序员可能比语言能力差的程序员更好 - 至少代码有更容易被理解。

答案 2 :(得分:2)

是。强大的自然语言技能可帮助您以一致的方式组织您的想法,让其他人轻松理解。这有助于改进代码,从命名变量,方法,类等到表达模型中对象的上下文。对编程等实践要求您能够与合作伙伴进行良好的沟通,以便编写好的代码。域驱动设计等技术强调在代码中使用业务的域语言。自然语言技能促进了这一点并且在开发行业中存在着对更自然的类似语言的工具的强烈推动,例如许多较新的测试工具,如rspec,gherkin等,正朝着更自然的语言式语法发展。许多人喜欢Ruby和Python等动态语言的一个原因是代码往往更像是一种自然语言。

答案 3 :(得分:1)

让我说明显而易见的事实:每个健康的12岁以上的人都至少知道一种自然语言。此外,每个12岁以上的健康人都能够生成和解析自然语言,这是一种复杂而丰富的语言,能够表达和理解一大堆创意。一般而言,人们不太可能受限于他们通过语言讨论问题的能力,而是他们经历和学习的事物的类型。

话虽如此,您可能已经考虑过几种与语言相关的技能。

写作风格。你特别提到了那些。书面语言与口语不同。方式不太直观。这是人们在教育系统中多年来通过写作进行指导的一个原因。

编码并不真正涉及写作。我的意思是,有评论,但它们可能相当简洁。当然,程序员的工作通常至少包括一些文档的编写,以及编写能力以在那里发挥作用。

分析技能Analytical skills是一个复杂的(不是说模糊的)概念。分析技能并不是真正的语言,但是它们都是教授和测试的,而是在撰写论文的背景下。

分析技能在编程中显然非常重要。我不确定这些与写一篇关于安乐死或其他什么的好文章所需的技能完全相同,但是as was previously suggested,它们可能是相关的。

外语。对于母语不是英语的人,可能需要一定的英语水平。不是在编码本身(知道“虽然”意味着英语对于理解它在Java中的作用并不是真正关键),但是因为很多培训和支持材料主要以英语提供(有人提到Stack Overflow吗?)。不过,您所在的国家/地区以及您所在的公司的英语要求可能会有所不同。

沟通技巧。 Ahhm。我完全不确定这究竟意味着什么。也许这是一种文化的东西。我怀疑它不是关于知道语言而是更多关于了解的信息。

所以对某些人而言,Dijkstra是一位着名的计算机科学家,但我不确定他对语言知之甚多。

答案 4 :(得分:0)

编程不仅仅是编写代码。在任何规模的任何编程项目中都需要:

  • 初始项目提案文件
  • 设计和建筑文件
  • 程序员手册
  • 用户手册
  • 培训材料
  • 与第三方供应商的沟通

在我参与的每个大项目中,我猜我至少花了50%的时间在英语语言文档上。所以是的,能够很好地解释和表达自己的能力非常重要。它会导致编写更好的代码吗?再一次,我会说是 - 需要提供清晰的文档,以满足编写更好代码的需要,itnerfaces等。