Помогает ли знание естественного языка в программировании? - PullRequest
4 голосов
/ 18 апреля 2010

Мы все слышим, что математика хоть немного помогает в программировании. Мой вопрос, хотя, английский или другие естественные языковые навыки помогают с программированием? Я знаю, что это должно помочь с технической документацией, но как насчет реального программирования? Существуют ли определенные конструкции на языке программирования также на естественных языках? Знание того, как написать 20-страничную исследовательскую статью, помогает в написании проекта 20k loc программирования?

Ответы [ 5 ]

6 голосов
/ 18 апреля 2010

Дейкстра зашел так далеко, что сказал: «Помимо математической склонности, исключительно хорошее владение родным языком является самым важным активом компетентного программиста».

Редактировать: да, я вполне уверен, что он говорил о программной части работы. Вот немного более полная цитата:

Проблемы бизнес-администрирования в целом и управления базами данных в частности слишком сложны для людей, которые думают на IBMerese, усугубляется небрежным английским языком.

Об использовании языка: невозможно заточить карандаш тупым топором. В равной степени тщетно пытаться сделать это с десятью тупыми осями.

Помимо математической склонности, исключительно хорошее владение родным языком является наиболее важным активом компетентного программиста.

С EWD498 .

Я, конечно, не могу говорить за Дейкстру, но я думаю, что невозможно четко отделить ту часть, где вы занимаетесь программированием, от той, где вы общаетесь с людьми. Например, даже когда вы работаете в одиночку, очень важно, чтобы вы могли понимать (четко и недвусмысленно) записанные вами записи о том, что делать, природе ошибки и т. Д. Необходимо хорошее знание английского даже когда никто больше не участвует (и, конечно, это необычно, за исключением простых задач).

4 голосов
/ 18 апреля 2010

Я не знаю о причинно-следственной связи, но набор навыков, необходимых для хорошего написания, во многом совпадает с навыками, необходимыми для программирования: умение планировать, умение согласовывать множество деталей, уметь прояснить ситуацию для будущего читателя, зная, как организовать свои мысли и полученный продукт. Это не значит, что успешный автор мог бы стать хорошим программистом, но программист с хорошими языковыми навыками и теми же навыками логики / математики / дедуктивности, вероятно, лучше программиста, чем программист с плохими языками - по крайней мере, код имеет больше шансов быть понятным.

2 голосов
/ 18 апреля 2010

Да. Сильные навыки естественного языка помогут вам организовать свои мысли в согласованном порядке, который легко могут быть поняты другими. Это может помочь улучшить ваш код во всем, начиная с именования переменных, методов, классов и т. Д., До выражения контекста объектов в вашей модели. Такие практики, как парное программирование, требуют, чтобы вы были в состоянии хорошо общаться со своим партнером, чтобы писать хороший код. Такие методы, как Domain Driving Design, подчеркивают использование бизнес-языка домена в вашем коде. Знание естественного языка способствует этому. И в индустрии разработки наблюдается сильное стремление к более естественным языковым инструментам, например, многие из новых инструментов тестирования, такие как rspec, gherkin и т. д., переходят на более естественный синтаксис, похожий на язык. Одной из вещей, которая нравится многим в динамических языках, таких как Ruby и Python, является то, что код имеет тенденцию читать больше как естественный язык.

1 голос
/ 18 апреля 2010

Позвольте мне заявить, что должно быть очевидным: каждый здоровый человек старше 12 лет знает хотя бы один естественный язык.Более того, каждый здоровый человек старше 12 лет способен генерировать и анализировать естественный язык как сложный и богатый язык, а также выражать и понимать чрезвычайно большой набор идей.В целом, люди не могут быть ограничены в своей способности обсуждать проблемы по их языку, но по типу вещей, которые они испытали и изучили.

Сказав это, есть несколько языковых навыков, о которых вы могли подумать.

Стиль письма .Вы упомянули это конкретно.Письменный язык отличается от разговорного языка.Намного менее интуитивно.Это одна из причин, по которой людям приходится обучать письменно в течение многих лет обучения в системе образования.

Кодирование на самом деле не предполагает написания.Я имею в виду, что есть комментарии, но они могут быть довольно лаконичными.Конечно, работа программиста обычно включает в себя, по крайней мере, некоторую написание документов и умение писать, чтобы изменить ситуацию к лучшему.

Аналитические навыки . Аналитические навыки - сложная (не сказать нечеткая) концепция.Аналитические навыки на самом деле не имеют отношения к языку, но настолько, что их учат и проверяют вообще, это в контексте написания эссе.

Аналитические навыки, очевидно, очень важны в программировании.Я не уверен, что это те же самые навыки, которые необходимы для написания хорошего эссе об эвтаназии или о чем-то еще, но , как было ранее предложено , они могут быть связаны.

Иностранный язык .Для людей, чей родной язык не английский, может понадобиться определенное знание английского языка.Не в самой кодировке (знание того, что означает «в то время» на английском языке, на самом деле не критично для понимания того, что он делает в Java), а потому, что большая часть учебного и вспомогательного материала доступна в основном на английском языке (кто-нибудь упоминал переполнение стека?)Требования к английскому могут отличаться в зависимости от страны, в которой вы находитесь, и компании, в которой вы работаете.

Навыки общения .Ahhm.Я никогда не был точно уверен, что это значит точно.Может быть, это культурная вещь.Я подозреваю, что это меньше о знании языка и больше о знании людей .

Итак, Дейкстра - почтенный ученый, работающий с компьютером, но я не уверен, что он так много знал о языке.

0 голосов
/ 18 апреля 2010

Программирование - это не просто написание кода. Для любого программного проекта любого размера потребуется:

  • исходные документы проектного предложения
  • проектные и архитектурные документы
  • Руководство по программированию
  • руководство пользователя
  • учебные материалы
  • связь со сторонними поставщиками
  • и т.д.

В каждом большом проекте, над которым я работал, полагаю, что я тратил не менее 50% своего времени на документы на английском языке. Так что да, умение хорошо объяснять и выражать себя чрезвычайно важно. Приводит ли это к написанию лучшего кода? Еще раз, я бы сказал, да - необходимость предоставления четкой документации переходит на необходимость написания лучшего кода, itnerfaces и др.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...