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

Language agnostic 了解自然语言对编程有帮助吗?,language-agnostic,nlp,Language Agnostic,Nlp,我们都听说数学至少对编程有一点帮助。我的问题是,英语或其他自然语言技能对编程有帮助吗?我知道它必须帮助编写技术文档,但实际编程又如何呢?编程语言中的某些结构是否也存在于自然语言中?知道如何写一篇20页的研究论文有助于写一个20k loc编程项目吗 Dijkstra甚至说:“除了数学方面的爱好外,对母语的出色掌握是一个有能力的程序员最重要的财富。” 编辑:是的,我相当肯定他说的是工作中的编程部分。这里有一个更完整的引用: 一般的商业管理问题,特别是数据库管理问题,对于那些用IBM语言思考的人来说太

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

Dijkstra甚至说:“除了数学方面的爱好外,对母语的出色掌握是一个有能力的程序员最重要的财富。”

编辑:是的,我相当肯定他说的是工作中的编程部分。这里有一个更完整的引用:

一般的商业管理问题,特别是数据库管理问题,对于那些用IBM语言思考的人来说太难了,再加上粗俗的英语

关于语言的使用:用钝斧头削铅笔是不可能的。试图用十把钝斧代替它同样是徒劳的

除了数学方面的爱好外,精通母语是一个有能力的程序员最重要的资产


我当然不能为Dijkstra说话,但我认为不可能将你正在进行实际编程的部分与你正在与人交流的部分完全分开。例如,即使你独自一人工作,你也必须能够理解(清楚无误地)你写下的关于做什么、bug的性质等的笔记。即使没有其他人参与,良好的英语水平也是必要的(当然,除了琐碎的任务外,这是不寻常的).

我不知道因果关系,但写得好所需的技能与编程所需的技能有相当大的重叠:知道如何计划,能够保持大量细节的一致性,能够为未来的读者解释清楚,知道如何组织你的想法和结果。这并不是说一个成功的作者会成为一个好的程序员,但是一个具有良好语言技能和相同逻辑/数学/演绎技能的程序员可能比语言技能差的程序员更好——至少代码更容易理解。

是的。强大的自然语言技能可以帮助你以一种连贯的方式组织你的思想,让别人很容易理解。从命名变量、方法、类等到表示模型中对象的上下文,这都有助于改进代码。结对编程等实践要求您能够与合作伙伴进行良好的沟通,以便编写好代码。领域驱动设计等技术强调在代码中使用业务领域语言。自然语言技能促进了这一点。在开发行业中,有一股强大的动力正在向更自然的语言类工具发展,例如,许多较新的测试工具,如rspec、gherkin等,正在向更自然的语言类语法发展。许多人喜欢Ruby和Python等动态语言的一个特点是,代码阅读起来更像自然语言

让我说一句最明显的话:每个12岁以上的健康人至少懂一种自然语言。此外,每个12岁以上的健康人都能够生成和解析自然语言——一种复杂而丰富的语言,并表达和理解大量的思想。一般来说,人们讨论问题的能力不可能受到语言的限制,而是受到他们所经历和学到的事物的类型的限制

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

写作风格。你特别提到了这些。书面语不同于口语。不那么直观。这也是人们在教育系统中多年来必须接受写作指导的原因之一

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

分析技能。是一个复杂的(更不用说模糊的)概念。分析技能实际上与语言无关,但在很大程度上,它们是在写文章的环境中教授和测试的

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

外语。对于母语不是英语的人来说,可能需要掌握一定的英语。不是在编码本身(了解“while”在英语中的含义对于理解它在Java中的作用并不十分重要),而是因为很多培训和支持材料主要是英语的(有人提到堆栈溢出吗?)。不过,英语要求可能因你所在的国家和工作的公司而异

沟通技巧。嗯。我从来都不知道这到底意味着什么。也许这是一种文化。我确实怀疑这与其说是了解一门语言,不如说是了解人


因此,对某些人来说,迪克斯特拉是一位受人尊敬的计算机科学家,但我不确定他对语言了解多少

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

  • 初步项目建议书文件
  • 设计和建筑文件
  • 程序员手册
  • 用户手册
  • 培训材料
  • 与第三方供应商的沟通
  • 等等
除夕