Какую пользу получают языки программирования от английского? [закрыто]


14

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

Я видел упоминания о немецких языках (см., Например, Plankalkul, фактически первый в мире язык программирования, о котором мы знаем очень мало, благодаря Второй мировой войне), а также русский язык Algol, существовавший еще в 80-х годах в хотя бы на бумаге, не уверен, существовал ли он когда-либо в двоичном виде или нет. Оба выглядели немного вялыми, потому что было больше сокращенных слов и странных сокращений, чем полных слов, как в языках на основе EN. Поэтому, если вам известны какие-либо другие PL, основанные на национальном языке, даже архаичные и не имеющие отношения к сегодняшнему дню, чисто теоретические или какие-либо еще, было бы интересно взглянуть на них.

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

(На самом деле в Википедии есть список неанглийских языков программирования (конечно, где еще?), Но было бы интересно услышать мнения носителей этих языков о том, как на самом деле чувствует себя тот или иной «национальный» язык программирования. нравиться.)


3
@Michael: он сказал "я думаю". Он выражает свое мнение. Вы можете спросить, как он пришел к такому мнению, но я не думаю, что ему нужно ссылаться на источник. Мы можем поверить ему на слово, что если он говорит, что это его мнение, это его мнение. Кроме того, он не сказал, что не было НИКАКИХ исторических или экономических обстоятельств, только что он полагал, что это были не единственные факторы, и он больше заинтересован в обсуждении других.
HedgeMage

1
@Michael: вы говорите: «Компьютеры были изобретены и созданы в основном в англоязычных странах», теперь это исторические / экономические обстоятельства. Например, мы можем вызвать промышленную революцию в 19-м веке в Великобритании (и фактически всей империи) или «утечку мозгов» во время / после Второй мировой войны в США, или что США, вероятно, имели наименьшие потери во время Второй мировой войны среди индустриальные страны и т. д.
моджуба

3
Какой бы это ни был язык, он должен быть гендерно нейтральным.
JeffO

1
@ Джефф О: абсолютно, а не только пол. В основном все ваши глаголы должны быть нейтральными, потому что иначе вы в конечном итоге будете думать, в какой именно форме (время, пол и т. Д.) Должно быть «делать» в вашем «пока ... делать ...». Морфология глаголов в английском языке настолько расслаблена по сравнению со многими другими европейскими языками, что, я думаю, именно это делает английский язык настолько полезным для программирования.
Моджуба

2
Мы могли бы также спросить, почему итальянский язык предоставляет ключевые слова для музыки, в то время как мы на это. Там могут быть некоторые идеи.
Дэвид Торнли

Ответы:


17

Отказ от ответственности: мой родной язык немецкий.

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

Но поскольку мы говорим о языках программирования, а не о документации / API / именах и т. Д., Я должен возразить: языки программирования не основаны на английском - или на каком-либо другом естественном языке, в этом отношении. Языки программирования являются официальными языками. Они в той или иной степени используют несколько слов из (обычно) английского. Некоторые даже пытаются подражать его грамматике - но совершенно не читают как английский независимо. Чтобы добавить оскорбление к ране, они связывают только одно (в редких случаях горстку) значение (я) с каждым словом, которое они заимствуют. Часто это значение очень жаргонное, специализированное или основано на сомнительной аналогии. Поэтому знание бесчисленных значений слова на естественном языке, заимствованных языком программирования, на самом деле не помогает понять концепцию программирования, лежащую в основе ключевого слова. Примеры с верхней части моей головы: array,type, goto, class, void. (Интересный факт , что возникли на ум , как я перечитал вопрос: все из них, за исключением того goto, есть немецкие переводы , которые являются не более чем один символ больше: Feld, Typ, Klasse, Leere. Все они звучат странно для меня, но это, наверное, дело привычки .)


2
Класс-вид означает, что это означает на английском языке. «Класс» определяет тип, который является «классом объектов». Вы можете сказать, что все значения Int или все записи Person относятся к классу, поскольку они имеют определенные функции. Однако большинство C-подобных программистов не мыслит категорично, поэтому «класс» для них просто означает «объектный план».
CodexArcanum

7
Ваш английский отлично между прочим
Аллен

Как немец, я должен сказать, что полностью согласен с вами. Я думаю, й Emain причины, как вы упомянули, что английский является языком в IT-мире. Люди со всего мира говорят, обсуждают и программируют на английском языке каждый день - так что почти каждая соответствующая статья впервые публикуется на английском языке. То же самое относится и к книгам. Кроме того, большинство книг, переведенных на немецкий язык, читаются неправильно. Некоторые фразы и ключевые слова переведены. Это полностью убивает поток .
mhr

Я полностью согласен с тем, что попытка ввести грамматику английского языка в языки программирования является полной ошибкой. Я не согласен с "это значение очень жаргонно, специализировано". Как носитель английского языка, описание понятий как аналогов ранее существовавших терминов типично для повседневного общения. Английский как язык просто свободно интерпретируется и в целом очень специфичен для конкретного контекста. Что касается немецких аналогов, это не большой сюрприз. Английский заимствует большую часть своей структуры из немецкого языка, а большую часть словарного запаса - из других языков. Это как «загадочное мясо» естественных языков.
Эван Плейс

@EvanPlaice Да, это спорно , как неестественно это на самом деле. В них явно есть какая-то заслуга, иначе их бы давно отменили. Я не могу судить, помогают ли они обычно носителям английского языка, я просто знаю, что эквивалент (выбор наиболее близкого перевода, а затем построение эквивалентных аналогий с этим переводом) имеет тенденцию создавать неправильные ассоциации в мозгах студентов. Re переводы: Да, это не удивительно, что есть похожие слова; Я был нацелен на то, что «здесь было больше сокращенных слов и странных сокращений, чем полных слов».

8

Английский является языком программирования lingua franca .

Из той же статьи:

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


9
lingua franca - латинская фраза, которая (сегодня) означает французский. И все же мы используем его для обозначения английского языка.

6
@Graham Lee: Как ни парадоксально, но эта фраза стала означать (как заимствованный английский термин) «общий язык, используемый людьми разного происхождения для общения друг с другом».
Greyfade

Почему итальянский язык - это музыкальная нотация, а латынь - музыка науки? Для технологии это английский. С международным признанием «lingua franca» неизбежно, что у английского языка будет самый обширный словарь, специфичный для технологии. Богатый словарный запас необходим для эффективного (и универсального) общения, поэтому люди готовы принять язык.
Эван Плейс

5

Английский язык благоприятен, потому что:

  1. Лучше соответствует ограничениям текущей периферии.

Легкость типа. Вы можете использовать стандартную клавиатуру. Я знаю, это звучит как "лама навоз", но вы пробовали печатать на китайском? Существует 1000 символов, и, поскольку у китайцев нет адекватной техники построения «символов», подходящей для концепции клавиатуры, для мировой аудитории было бы нелегко учиться.

  1. Может быть преобразован в не слова, которые одинаково узнаваемы. Английский язык предпочитает сокращения из-за отсутствия символов акцента.

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

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

Сборка использовала маленькие слова, которые не имели структуры предложений. Затем появились языки, такие как COBOL и FORTRAN, которые пытались максимально приспособить английскую структуру предложений. Более новые языки реализовали большую зависимость от универсальных алгебраических символов, потому что они имели лучшую предсказуемость. (В COBOL добавьте X к Y, вычтите Y из X, Compute Y = X + A; Compute делает ненужными предыдущие операторы и уменьшает сложность синтаксического анализа языка). Мне не потребовалось бы намного больше, чтобы считать языки, подобные C ++, более символичными, чем языки. Есть небольшой возврат к программированию на основе слов с помощью C #, но в основном это связано с поддержкой популярных шаблонов программирования.

Вывод:

В конечном счете, периферия ограничивается символьным языком (например, английским). Кроме того, западные языки лучше поддерживают математические концепции (например, концепция 0, в частности, Китай заимствует цифры вместо своего собственного представления числовых значений, чтобы лучше передавать числа, потому что писать их короче (в среднем)). Помимо числовых значений, я бы увидел, что языки на основе символов (китайский) лучше подходят для морфологии языка программирования, чем английский, так как большинство современных языков уже используют символы, и это было бы универсально эквивалентно обучению. Однако нам пришлось бы навязывать C ++-подобную структуру, поскольку для большинства людей в мире было бы нелегко читать блоки символов.


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

2
То, что вы сказали о китайцах, является ложным. Китайский можно вводить с помощью стандартной клавиатуры.
Грокус

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

@grokus Если вы не имеете в виду PinYin, вы не можете напрямую вводить китайский язык. Вы должны использовать нажатия клавиш или PinYin и выбрать ближайший соответствующий символ. В любом случае, вы должны включить процесс выбора, потому что стандартная клавиатура не поддерживает четыре китайских тона. ЕСЛИ вы не модифицируете стандартную клавиатуру, тем самым нарушая требования.
Ли Лувьер

-1, 0 не было западной концепцией (сначала на Среднем Востоке), сборка вообще не использует слова (обычно основанные на автономных / регистровых именах и 3-5-символьные команды вместо 0x86, являющиеся LDA), английская структура убивает программирование, потому что английский язык имеет одну из худших структур в «западных» языках. Не-слова, которые являются «узнаваемыми», представляют собой конкретную идею местности и предмета и могут быть такими же плохими, как «неанглийский» набор слов для понимания. Все языки являются символическими, это часть того, как вы делаете их формальным языком: int представляет целые числа, Double представляет числа с плавающей запятой двойной точности ...
Джефф Лангемайер

5

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

Если бы компьютеры были изобретены 2000 лет назад, они бы использовали греческий. Если бы они были изобретены 200 лет назад, они бы использовали французский. Если бы они были изобретены через 200 лет, они, вероятно, использовали бы китайский ...


3

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

  1. Это небольшой набор символов (в отличие от, скажем, кандзи)
  2. Обычно не использует диакритические знаки (в отличие от французского, испанского, немецкого и т. Д.)
  3. Каждый верхний регистр имеет нижний регистр (в отличие от немецкого Eszett)
  4. Это сопоставление прямо вперед

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


5
Интересно, если бы в Китае были изобретены компьютеры, мы бы обсуждали, как кто-то может написать код, который не был написан на китайском, потому что все символы допускают более короткие имена.
CodexArcanum

3
Я не согласен. Например, греческий алфавит такой же маленький; диакритические знаки могли быть исключены специально для программирования, то же самое для немецкого ß; в настоящее время сопоставление нормализовано, то есть приведено к некоторой «простой» форме для вычислений / баз данных и т. д. практически на всех существующих языках. Так же, как английские статьи "the" и "a" в основном не используются или не используются в вычислениях, любой другой язык мог бы пройти некоторую оптимизацию.
Моджуба

3
Я не вижу, что прописные и строчные буквы имеют много общего с языком программирования.
Дэвид Торнли

1
@ Дэвид Торнли, но для компилятора программа - это данные.
Конрад Frix

1
@ Инго Я не уверен, что ты имеешь в виду. Например, давайте предположим, что я использовал переменную с именем étudiant. С юникодом первая буква может быть выражена как U+00E9 LATIN SMALL LETTER E WITH ACUTEили может eсопровождаться U+0301 COMBINING ACUTE ACCENT. Если бы вы были автором компилятора для одного из этих языков, вы бы хотели поддерживать именование переменных следующим образом? Как именно вы относитесь к двум переменным в одной области именованных \u00e9tudiantи e\u0301tudiant?
Конрад Фрикс

2

Я не уверен, что сами языки программирования выигрывают от того, что основаны на английском. По объяснению:

  • Наименование методов, переменных, объектов и т. Д. Для компьютера не имеет значения
  • Содержание комментария не имеет значения для компьютера
  • Логика программирования выразима в большинстве (и я полагаю, ВСЕ) разговорных языков.

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

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

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


Интересно, что вы упоминаете комментарии; Я работал в японской компании, где все файлы C хранились в Unicode, потому что комментарии были на японском языке.
Марк Авениус

1

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

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

  • Английский может быть представлен в меньшем наборе символов, чем, например, китайский, японский, кириллица или даже романские языки, в которых используются акцентированные латинские символы.
  • Английский алфавит, в значительной степени из-за его полного отсутствия акцентированных символов, очень визуально ясен. У нас достаточно ошибок из-за несовпадающих скобок или пропущенных точек с запятой, было бы глупо добавлять проблемы, различающие «ē», «ĕ» и «ě».

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

@mojuba Я не согласен. Английский технический словарь богат, потому что технологии, которые давно предшествовали компьютерам, были в основном разработаны на английском языке. Эти технологии были разработаны на английском языке в основном по экономическим причинам, но к тому времени, когда появились компьютеры, английский язык был уже освоен и готов.
HedgeMage

2
Пульхра есть лингва латина! («Латинский язык прекрасен!») Я на самом деле говорю на классической латыни и получаю огромное удовольствие, используя ее в своем коде. К сожалению, он постоянно висит на грани мертвого языка, поэтому нецелесообразно основывать язык программирования. (Тем не менее, теперь я испытываю желание разработать один только для удовольствия.) Из не говорящих по-английски языков появилось множество хороших технологий, но их недостаточно на любом языке, чтобы соответствовать богатому словарному запасу английского языка на любом языке, который также соответствует другой фактор, который я упомянул: маленький, ясный алфавит.
HedgeMage

1
@mojuba + HedgeMage, на самом деле не имеет значения, где разрабатываются технологии, английский является такой большой мешаниной заимствованных слов и словарного запаса, что любая терминология, которая не была разработана на английском языке, быстро впадает в язык. Основным преимуществом английского языка является то, что он предлагает много сложных времен, которые могут точно описать абстрактные понятия, что очень полезно.
whatsisname

5
Английский язык богат, потому что имеет привычку грабить другие языки в темных переулках и красть все их полезные слова. Это не столько источник заимствованных слов, сколько базар слов.
Дэвид Торнли

1

Для забавного прочтения о контексте языка и о том, как мы в конечном итоге ухмыляемся:

Материал мысли Стивен Пинкер

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

  1. Отсутствие структуры (мы можем поместить предмет / предикат / существительные / прилагательные, где нам угодно),
  2. Изменчивость наших слов (мы чувствуем, что можем сокращать НИЧЕГО)
  3. БОЛЬШОЙ: тот, кто свободно владеет английским языком, не будет лучше понимать раздел кода, чем тот, кто не понимает английского языка.

Спросить, почему языки программирования используют «английский», все равно, что спросить, почему в периодической таблице все еще есть буква «W», идентифицирующая вольфрам, большинство людей не могут сказать вам, почему, если они не знают историю. И если вам нужна история языков программирования, мы должны вернуться к перфокартам, байтовым инструкциям и сборке.

Сборка не имеет основных «английских» конструкций, но она настолько близка, насколько вы можете добраться до машинного кода, не ненавидя себя. Кроме того, все структурные элементы языков более высокого уровня могут и регулярно внедряются теми из нас, кто достаточно сумасшедший, чтобы наслаждаться этим. LD, MV, ST, BRA и остальная часть набора команд совсем не похожи на английский, но я могу прочитать их отлично и получить полное значение.

Мы присваиваем одинаковое значение LD или MV в сборке для конструкций более высокого уровня, мне не нужно знать, что означает переменная, и во многих случаях этого не произойдет, если она все равно будет на английском языке из-за # 2 в моем списке. Набор идентификаторов, таких как int, str, enum и т. Д., - это способ рассказать, с чем вы работаете, не более того. Если бы вместо int идентификатором была чайка, мы все знали бы, что означает чайка в контексте кодирования, не потому, что это английский, а то, что охватывает этот идентификатор.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.