【问题标题】:Does knowing a Natural Language well help with Programming?了解自然语言对编程有帮助吗?
【发布时间】:2010-04-17 20:14:47
【问题描述】:

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

【问题讨论】:

  • 对编程没有帮助。在尝试以其他人在需要时易于理解的方式描述或交流一段代码时会有所帮助。

标签: language-agnostic nlp


【解决方案1】:

Dijkstra 甚至说:“除了数学倾向之外,对母语的出色掌握是一个称职的程序员最重要的资产。”

编辑:是的,我有理由确定他说的是工作中的编程部分。这是一个更完整的报价:

对于使用 IBMerese 思考的人来说,一般的企业管理问题,尤其是数据库管理问题太难了,再加上粗鲁的英语。

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

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

来自EWD498。

我当然不能代表 Dijkstra,但我认为将您进行实际编程的部分与您与人互动的部分完全分开是不可能的。举个例子,即使你一个人工作,你必须能够(清楚而明确地)理解你写下的关于要做什么、错误的性质等的笔记。良好的英语水平是必要的即使根本没有其他人参与(当然,除了琐碎的任务之外,这很不寻常)。

【讨论】:

  • 这是为了工作的编程部分还是为了能够与工作中的人互动?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      让我说一下显而易见的事情:每个 12 岁以上的健康人都至少知道一种自然语言。而且,每一个 12 岁以上的健康人都能够生成和解析复杂而丰富的自然语言,表达和理解极其庞大的思想集合。一般来说,人们讨论问题的能力不太可能受到他们的语言的限制,而是受到他们经历和学习的事物类型的限制。

      话虽如此,您可能已经想到了几种与语言相关的技能。

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

      编码实际上并不涉及写作。我的意思是,有 cmets,但它们可能相当简洁。当然,程序员的工作通常至少涉及到一些文档的编写,以及在那里有所作为的写作能力。

      分析能力。 Analytical skills 是一个复杂的(不是说模糊的)概念。分析技能实际上与语言无关,但由于它们是经过教授和测试的,它是在写论文的背景下进行的。

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

      外语。对于母语不是英语的人,可能需要一定的英语水平。不是在编码本身(知道“while”在英语中的含义对于理解它在 Java 中的作用并不重要),而是因为许多培训和支持材料主要以英语提供(有人提到 Stack Overflow 吗?)。但是,您所在的国家/地区和您工作的公司的英语要求可能会有所不同。

      沟通技巧。嗯。我从不完全确定这到底意味着什么。也许这是一种文化的东西。我确实怀疑这不是关于了解一种语言,而是更多关于了解人。

      所以对某些人来说,Dijkstra 是一位受人尊敬的计算机科学家,但我不确定他对语言了解多少。

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-04
          • 2021-10-13
          • 2023-03-06
          • 2013-09-12
          相关资源
          最近更新 更多