Какой естественный язык имеет преимущество в программировании? [закрыто]

21

Лингвистическая относительность - это идея, согласно которой язык формирует наше мышление. Мой вопрос: сколько и в какой степени это относится к программированию?

  • Являются ли некоторые естественные языки более подходящими для размышлений о программировании, чем другие? Например, можно ли более кратко изложить следующее на неанглийском языке? Select a pivot. Move all the items less than the pivot to one side of the list, and all the items greater than the pivot to the other side.
  • Видит ли китайскоязычный программист программирование в совершенно ином объективе, чем англоязычный программист, или различия исчезают, когда оба погружаются в предмет?
  • Являются ли некоторые языки программирования и домены более понятными на одном или другом языке? Например, проще ли выманивать Ruby, если вы японец, потому что создатель Ruby - японец?

Обратите внимание, что этот вопрос сфокусирован не на том, «как языки программирования влияют на то, как люди думают о программировании», а на «как естественные языки влияют на то, как люди думают о программировании».

Чтобы избавиться от этого, один язык, который имеет прагматическое преимущество, это английский . Я думаю , что преимущество имеет мало общего с языками программирования выбирая английские слова , такие как if, for, while, и do, так же , как музыканты , которые не говорят на итальянском не споткнулся на такие слова , как форте . Это в большей степени связано с обменом идеями с другими программистами, так как в наши дни английский язык является языком общения, по крайней мере, в мире программирования. Например, чтобы задать вопрос в StackOverflow, вам действительно нужно знать английский язык и знать его очень хорошо, если вы хотите получить хорошие ответы. Хотя это звучит как империалистическая позиция, на практике это действительно так.

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

Джои Адамс
источник
2
Вы можете заявить об этом очень просто любому компетентному программисту. Implement quick sort,
Джош К

Ответы:

3

Ах, гипотеза Сапир-Уорфа против войн с гипотезой о глубокой структуре Хомского ...

Программирование это математика. Математика - это прикладная философия. Тогда возникает вопрос, какой естественный язык может точно описать математические понятия без значительных головных болей. Иными словами, с какими языками можно легко разобраться в аристотелевской метафизике?

Пресловутый «дикий» язык может иметь начальную трудность , выражающие абстракции первого порядка, которые необходимы. Однако, однако! - люди могут выучить новые слова и новые понятия. Древнегреческий не начинался с философских терминов; они должны были быть изобретены и затем перенесены в другие языки.

Полагая, что математика универсальна, я постулирую, что сильная гипотеза Сапира-Уорфа неверна.

Пол Натан
источник
"Математика - это прикладная философия" Объясните?
Фрэнк Шиарар
1
@Frank: Исторически так было. Когда вы бегло смотрите на «основы математики», становится довольно очевидно, что это философски обосновано. Например, весь интуиционистский аргумент.
Пол Натан
Я не буду спорить, что некоторые математические вопросы, как вы говорите, философские. Мне кажется, это далеко от того, чтобы сказать, что «Математика - это прикладная философия».
Фрэнк Шиарар
@Frank: хорошо, если основы математики философские, то кажется, что то, что происходит от основ, тоже философское. Нет? Да?
Пол Натан
1
@Frank: Ужасно, а? Бьюсь об заклад, какой-то майор гуманитарных наук хихикает от своего латте. :)
Пол Натан
13

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

Дейкстра сказал в одном из своих последних интервью (как перепечатано в CACM, том 53, № 8, стр. 44):

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

Фрэнк Шиарар
источник
6

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

В прошлом "osekososlavyalılaştıramadıklarımızdan mısınız?" что означает "Вы один из тех людей, которых мы не могли сделать похожими из Чехословакии?" был очень популярен и принят как самое длинное слово на турецком языке. Однако суффиксы вопроса (в данном случае - mısınız) пишутся отдельно, поэтому, хотя это одно слово, при написании слова оно выглядит как два слова. Кроме того, более длинные версии этого слова могут быть легко сделаны, такие как «osekos Slovakyalılaştırabildiklerimizden miydiniz?». По этим причинам слово утратило свою популярность, но все еще популярно в Турции.

разговор по-турецки заставляет меня задуматься о том, чего я хочу достичь, какую информацию я хочу передать, и меньше о том, какие слова использовать.

редактировать
, конечно , турецкий имеет слово представлять биологический пол. Но у этого нет разделения на он / она / это - в турецком «о».

Или по-испански вы бы сказали «profesor / profesora», а по-немецки «Lehrer / Lehrerin». В турецком языке вы должны использовать дополнительные слова для обозначения пола - аналогично английскому.
По-турецки учитель öğretmen. Чтобы указать учительницу, вы бы сказали «kadın öğretmen» - учительница. Но, несмотря на немецкий, где - если не женский, добавив "-in" - по умолчанию мужской, у öğtmen нет пола, как нет.

Еще одна вещь, которая не доступна на турецком языке, это такие статьи, как «el / la», «the», «der / die / das» - так как обычно это просто информация, которая уже доступна контексту.
Но есть слова для выражения «это», «este / esta», «diese / dieses / diese», например «bu».
Это дополнительная информация, так как она указывает на определенный объект.

VikingoS говорит восстановить Монику
источник
1
Без грамматического секса, откуда придут маленькие тюрки? (Кстати, когда я увидел вопрос, но прежде чем посмотреть сюда, я подумал о турецком. Хотя я не говорю на нем, я слышал о том, насколько это регулярно.)
Рэндалл Шульц,
Очевидно, синтаксис Smalltalk даже ближе к турецкому, чем к английскому: smalltalk.gnu.org/blog/zuluuuuuu/smalltalk-and-turkish
Фрэнк Шеарар,
@Frank Shearer: время, чтобы узнать Smalltalk!
VikingoS говорит восстановить Monica
@Randall Schulz: У меня есть;) Я всегда смешиваю термин пол и пол ...
VikingoS говорит, что восстановите Монику
Я слышал, что по некоторым исследованиям санскрит считается самым похожим на компьютерный язык, вы можете его погуглить. Я не уверен, насколько это может быть правдой, но, поскольку санскрит никогда не воспринимался как основной разговорный язык, а также потому, что он использовался в научных кругах для технических исследований того времени, вероятно, он не похож на естественные разговорные языки сегодня. Турецкий звучит очень мило для моих ушей (просто на слух), но если бы все это и санскрит говорили как языки программирования, мальчик, это было бы очень скучно. Последнее, что я хочу услышать, когда меня спросят: "это мальчик или девочка?" Да".
nawfal
2

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

MetaGuru
источник
1

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

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

совать
источник
0

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

Я сохранил ссылку, на которую наткнулся на днях : «Разные языки равны разным реалиям?» это немного касается (читайте также комментарии). Некоторые из них интересны.

В любом случае ...

ладья
источник
-1

Английский на самом деле довольно эффективный и лаконичный. Перевод на большинство языков сделает идею дольше выразить .

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

Джори Себрехтс
источник
Я считаю, что китайский язык, пожалуй, самый лаконичный язык, с которым я когда-либо сталкивался, как в письменной, так и в устной форме. Длина перевода обычно составляет чуть больше половины английского.
Джон Перди
4
Но разве сложность символа не выше?
Джори Себрехтс
Вы имеете в виду APL из разговорных языков? :)
nawfal