Что Дейкстра имеет в виду, когда он рекомендует исключительно хорошее владение родным языком? [закрыто]

28

Дейкстра пишет здесь :

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

Я не понимаю последнюю часть этой цитаты. Можете ли вы объяснить или уточнить?

PS Я вырос в Индии. Я говорю по- бенгальски дома; Я говорю на маратхи в сообществе, в котором я живу; Хинди - национальный язык, на котором говорят очень широко, так что я знаю это, и в школе и колледже меня учили с английским языком в качестве первого. Конечно, теперь я думаю на множестве языков и должен признать, что не владею ни одним из них . Это действительно влияет на мои способности к программированию? Если да, то как? и есть ли решения ?

Чани
источник
20
Интересно ... У меня есть хороший друг, индийский (тамильский), и я однажды видел, как он полностью замерз, когда кто-то спросил его, как сказать какую-нибудь фразу "на его языке". Позже, поговорив с ним об этом, я узнал, что у него нет языка. Он и его жена выросли на совершенно разных языках, он не может говорить со своими родственниками. Они оба в значительной степени говорят на языке города, где они встретились, и на английском. Это увлекательно. Я понятия не имел, что Индия настолько лингвистически раздроблена.
Дэн Рэй
4
Не случайно, что очень хорошие программисты, как правило, тоже очень хорошие писатели; знание того, как четко выразить свои мысли, является необходимостью для обоих ремесел.
Джон Перди
1
Я не могу не задаться вопросом, было бы меньше толкований слов Дейкстры, если бы они были написаны на его родном языке (голландском), где (я полагаю) он обладал превосходным мастерством.
Брендан,

Ответы:

29

Хотя я согласен с тем, что сказал alex и fast_now, я считаю, что может быть и другое вращение. Это моя собственная теория, и я не предполагаю, что Дейкстра имел в виду то же самое.

Что такое «владение языком»: это способность взять основные строительные блоки языка и поместить их в конструктивные, полезные фразы и предложения. Алфавиты и символы сами по себе бессмысленны. Вы должны соединить их и извлечь из этого смысл. Слова сами по себе бессмысленны; только когда вы помещаете их в правильную последовательность, основанную на синтаксисе и грамматике, они выражают конкретные идеи.

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

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

DPD
источник
3
+1, это была моя первоначальная интерпретация высказывания Дейкстры, когда я его читал.
Роб
1
@quickly_now: «очень многие программисты, которые умеют писать очень хороший код, но у которых нет возможности хорошо общаться на одном из разговоров или написании», я бы оспорил это. Я бы изменил это с очень хорошего на приемлемое . После 30 лет работы подрядчиком я встретил много программистов. Нечеткие могут - в конечном итоге - создать рабочий код. Но хорошие программисты могут писать на разных языках, как естественных, так и искусственных.
С.Лотт
4
Суть того, чтобы быть хорошим программистом, заключается в том, чтобы быть хорошим коммуникатором. Вот как я это интерпретировал.
Нил
8
@quickly_now, Нил, Онисим; Я думаю, что это немного глубже, чем устное или письменное общение. Я полагаю, что он говорит об отношениях между языком и познанием, например. web.mit.edu/newsoffice/2008/language-0624.html . Я думаю, что это означает овладение некоторой тональностью (обычно своей родной тональностью, так как нередко становиться более опытным во втором или третьем языке) указывает на сильные конструкции ментальной лингвистики, которые непосредственно соответствуют способности программирования.
Роб
1
@OnesimusUnbound, я думаю, что Дейкстра упомянул родной язык, потому что логично ожидать, что люди будут хороши на своем родном языке (что во многих случаях, но не во всех, также является их языком необразования), но не обязательно на их вторых / третьих языках , Однако в современном мире все может быть по-другому, например, я лучше на английском, чем на родном языке. Но это потому, что я никогда не изучал это в школе
DPD
23

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

Идея заключается в том , что писать о коде так же важно , как написание самого кода.

Итак, идеальный пример: сколько раз мы видели, как хорошие, острые, ценные вопросы были снесены или закрыты, потому что плакат не мог хорошо выразить себя на английском языке? Ответ: слишком много.

Пит Уилсон
источник
7

Цитата говорит, что вам нужно знать свой родной язык (например, маратхи в вашем случае). Это важный актив.

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

Знание нескольких языков помогает понять разные модели мышления.

alexwriteshere
источник
7
Если «Некоторые говорят, что все мысли, которые мы делаем, ограничены нашим основным языком», верно, то мой родной язык не является (больше не) моим основным языком? Com'on. Мой родной и основной язык - голландский, но мой язык мышления при программировании - английский ... И не только потому, что большая часть терминологии и почти все статьи, которые помогают мне думать о проблемах программирования, написаны на английском языке. На самом деле, мне трудно работать на компьютере, который говорит на нидерландском языке со мной, не может ничего найти и полагается на расположение вещей в меню. (Еще одна причина, почему персонализированное меню отстой).
Марьян Венема
7

Если посмотреть на статью целиком, то это интересный список, но он датируется 1975 годом. Справедливо сказать, что в какой-то степени время изменилось за прошедший период, что делает некоторые части этого списка принципов несколько устаревшими.

Ключевым навыком, который, по моему мнению, должен иметь программист, является умение эффективно общаться. Это не просто объяснение; это означает понимание. Независимо от того, каким будет ваш рабочий язык, в вашем случае английский, хотя и не ваш родной язык, тем, кто испытывает трудности в эффективном общении на своем родном языке, не будет легче в другом месте.

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

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

temptar
источник
Правда. Я думаю, что у Дейкстры есть смысл, но слово «программисты» следует заменить словами «программисты». Конечно, ученый должен уметь спорить и писать на понятном языке. То же самое относится и к программистам: вы не заманиваете меня на мысль, что вы спорите со своими (также носителями языка) коллегами на другом языке. Здесь, в Голландии, все среды разработки написаны на английском языке, но когда я спорю с коллегами о куске кода, мы делаем это на голландском языке.
Встриен
@vstrien, скажи мне, друг, что ты будешь делать, если каждый из твоих коллег говорит на своем родном языке? вот ситуация здесь. каждое тело происходит из другого индийского "штата", и у них свой язык (я не имею в виду диалект .. я имею в виду язык), надеюсь, вы можете обдумать это: P, и это именно то, чем был мой вопрос .. я действительно не думать на определенном языке (я не могу себе этого позволить, так как мне приходится говорить почти 3 языка с 6 различиями в течение часа), что я хотел спросить, будет ли это плохой практикой
Хани,
РЮЗАКИ, это ситуация, в которую попадают люди во многих сферах жизни. Я работал в организации, которая имела 3 рабочих языка. В такой компании, как ваша, если у вас есть один рабочий язык, у вас все хорошо. Вы обнаружите, что некоторые части вашей жизни будут работать на определенных языках.
Темптар
@ РЮЗАКИ: извините, я не давал вам указаний, когда говорил, что вы не спорите со своими коллегами на не родном языке :). Но я думаю, что в этом случае важно найти способы ясного общения - и самое простое, что я могу придумать, - это использовать один язык для объяснения друг другу. Опять же, я не думаю, что это влияет на вас в ваших навыках программирования, но уверен, что это повредит производительности, если вы не можете общаться по коду ..
vstrien
1
@temptar: «значительное и растущее число программистов во всем мире, не имеющих опыта в прикладной математике», вовсе не лишает законной силы утверждение. Ваши наблюдения сводятся к тому, что «люди без формального обучения математике могут все же научиться некоторым прикладным математическим навыкам программирования». Я согласен с вашим наблюдением. Но это вовсе не делает недействительным (или устаревшим) утверждение Дейкстры. Действительно, это кажется дополнительным.
С.Лотт
5

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

(Подчеркну: «Это означает, что в контексте программирования иногда нужно понимать, что люди НЕ говорят или что они говорят, но не очень четко».)

quickly_now
источник
1
Я также добавил бы возможность ясно донести ваши идеи до других. Один так же важен, как и другой, имхо :)
Демиан Брехт
1
Я согласен с тем, что вы говорите, но я не думаю, что об этом вообще говорит Дейкстра.
Роб
1
Все это напоминает мне уроки английской литературы в старшей школе. Вы можете часами спорить о том, что имел в виду автор. Я всегда удивлялся, почему мы не просто идем и спрашиваем их. Ох ... Английская литература. Некоторые из них уже мертвы. (Я всегда считал, что вам не следует слишком сильно интерпретировать Ф. Скотта Фицджеральда - его взгляд на мир формировался, когда он смотрел на него через бутылку виски. Моему учителю английского тоже не нравилось, что я это говорю.)
fast_now
Вы можете бессмысленно спорить часами или подкрепить свои аргументы фактами. Например, посмотрите на другие цитаты Дейкстры на той же странице, например. «Практически невозможно обучить хорошему программированию студентов, которые ранее имели опыт работы с BASIC: как потенциальные программисты, они умственно изуродованы за пределами надежд на возрождение». - опять говорю на тему языка и познания.
Роб
И такое заявление просто подстрекательское. Крики, я начал программировать на Бейсике около 30 лет назад, потому что это было все, что было. Я не считаю себя суперменом, но при этом я не "изуродован мысленно сверх надежды на возрождение". Я считаю такое заявление довольно оскорбительным, и это означает, что я отношусь ко всему, что он говорит, как к ограниченному правдоподобию.
fast_now
2

Я думаю, что хорошо (любой) язык служит этому -

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

essbeev
источник