Does natural language know well to help with programming?

We have all heard that math, at least, helps programming a bit. My question, however, does English or other natural language skills help in programming? I know this should help with the technical documentation, but what about real programming? Are certain constructs in a programming language also in natural languages? Does he know how to write a 20-page research document, will help to write a programming project for 20 thousand places?

+4
source share
5 answers

Dijkstra went so far as to say: "In addition to mathematics, extremely good command of one mother tongue is the most important asset of a competent programmer."

Edit: Yes, I'm sure he was talking about the programming part of the assignment. Here is a slightly more complete quote:

The problems of managing a business in general and managing a database in particular are too complex for people who think at IBMerese, compounded by inaccurate English.

On the use of language: it is impossible to sharpen a pencil with a blunt ax. It’s hard to even try to do this with ten blunt axes.

In addition to the mathematical slope, the exceptionally good mastery of one mother tongue is the most important asset of a competent programmer.

From EWD498 .

Of course, I cannot speak for Dijkstra, but I think it is impossible to clearly separate the part in which you do the actual programming from the part where you interact with people. For example, even when you work alone, it is important that you understand (clearly and unambiguously) that you have written down what to do, the nature of the error, etc. Knowledge of the English language is necessary even when no one is involved at all (and, of course, this is unusual, except for trivial tasks).

+6
source

I don’t know about causality, but the set of skills necessary for writing quite well overlaps those that are required for programming: knowing how to plan, being able to keep many details in line for the future reader, knowing how to organize your thoughts and product result. This does not mean that a successful author will become a good programmer, but a programmer with good language skills and the same skills in logic / math / deductivity is probably a better programmer than someone who has poor knowledge of the language - at least the code has a greater chance of being understandable.

+4
source

Yes. Strong natural language skills help you organize your thoughts in a consistent way that is easy for others to understand. This can help improve your code in everything: from variable names, methods, classes, etc. Before expressing the contexts of objects in your model. Practices like pair programming require you to communicate well with your partner in order to write good code. Techniques such as Domain Driving Design emphasize the use of your business language in your code. Natural language skills contribute to this. And in the development industry, there is a strong incentive for more natural language tools, for example. many of the new testing tools, such as rspec, gherkin, etc., are moving toward more natural language syntax. One of the things that many people love about dynamic languages ​​like Ruby and Python is that code tends to read more like a natural language.

+2
source

Let me say what should be obvious: every healthy person over 12 knows at least one natural language. Moreover, every healthy person over 12 is able to generate and analyze a natural language with a complex and rich language, express and understand an extremely large set of ideas. In general, people are unlikely to be limited in their ability to discuss problems in their language, but in the type of things they have experienced and learned.

Having said that, there are a few language skills you might think of.

Writing style . You mentioned it specifically. Written language is different from spoken. The path is less intuitive. This is one of the reasons why people should train in writing through their years in the education system.

Coding is not really about writing. I mean, there are comments, but they can be pretty concise. Of course, a programmer’s job usually involves at least some writing of documents, as well as the ability to write to make a difference.

Analytical skills . Analytical skills are a complex (not to say fuzzy) concept. Analytical skills are not really about language, but even though they are generally taught and tested, this is in the context of writing an essay.

Analytical skills are obviously very important in programming. I'm not sure if these are the exact same skills needed to write a good essay on euthanasia or something else, but as suggested earlier , they can be related.

Foreign language For people whose native language is not English, you may need a specific English command. Not in the encoding itself (knowing what “so far” means in English does not really matter for understanding what it does in Java), but because many materials for training and support are available mainly in English (some ever mentioned stack overflow?). English language requirements may vary depending on the country in which you are located and the company in which you work.

Communication skills . Ahhm. I didn’t know exactly what that meant. Maybe this is a cultural thing. I suspect that he knows less about language and more about people.

So, Dykstra is a venerable computer scientist, but I'm not sure that he knew so much about the language.

+1
source

Programming is not just about writing code. In any programming project of any size it will be necessary:

  • documents on preliminary design documents
  • design and architectural documents
  • programmer's guide
  • user's manual
  • educational materials
  • communication with third-party suppliers.
  • and etc.

In every major project that I worked on, I would suggest that I spent at least 50% of my time on documents in English. So yes, the ability to explain and express oneself well is extremely important. Does this lead to writing better code? Once again, I would say yes - the need to provide clear documentation is overwhelmed by the need to write better code, itnerfaces, etc.

0
source

Source: https://habr.com/ru/post/1307235/


All Articles