news.volyx.in

Dijkstra On the foolishness of "natural language programming" (cs.utexas.edu)

448 points by nimbleplum40 · 486 days ago · 275 comments on HN

Article summary

The article discusses the concept of 'natural language programming' and argues that it is a flawed idea. The author, Dijkstra, believes that the use of formal symbolism is essential for effective programming and that relying on natural language would lead to increased complexity and errors. He cites the history of mathematics as an example, where the development of formal symbolisms was crucial for progress. The article also touches on the idea that the ease of using natural language can lead to a lack of precision and clarity in thought.

Main themes

  • Natural Language Programming
  • Formal Symbolism
  • Programming Complexity
  • Mathematical History
  • Cognitive Biases
  • Software Development

What commenters say

  • The use of natural language in programming would lead to a loss of precision and clarity in thought, and would ultimately result in more errors and complexity.
  • The act of converting ideas from natural language to formal language is a crucial step in the programming process, as it helps to identify and fix logical ambiguities and inconsistencies.
  • Some argue that computers can and should help with the translation from natural to formal language, but others contend that this would remove the need for humans to understand formal language, leading to a decline in critical thinking skills.
  • The idea of replacing code with flowcharts or other visual representations has been proposed and rejected multiple times in the past, as it often leads to increased complexity and decreased productivity.
  • There is a need for a 'Hall of Ideas That Definitely Don't Work' in software engineering, where young engineers can learn from the mistakes of the past and avoid reinventing the wheel.
  • Others argue that it is difficult to definitively determine which ideas will not work, as what may seem like a bad idea at first can later be made to work with the right approach and technology.
  • The use of natural language in programming may be useful for certain tasks, such as specifying business requirements, but it is not a replacement for formal language in the actual implementation of software.
  • The process of programming is not just about writing code, but also about the cognitive process of converting ideas into a formal representation, and this process is essential for developing critical thinking and problem-solving skills.