Почему компиляторы не поддерживают неанглийские ключевые слова? [закрыто]

Когда вы читаете C, C #, Java, Python, PHP и многие другие языки программирования, весь синтаксис написан на английском языке.

Простой код, подобный этому

if (X+1 > 4) {
}
while (A == true) {
}

написан на английском языке, даже если родной язык программиста - это что-то еще.

Не было бы более эффективным позволить программисту использовать свой собственный родной язык в исходном коде, например (мой плохой испанский так простите меня, если он ошибается)

si (X+1 > 4) {
}
mientras (A == verdadero) {
}

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

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

Почему ни один из основных языков не добавил поддержку языковых пакетов?

6 голосов | спросил cgTag 1 Jpm1000000pmWed, 01 Jan 2014 22:21:56 +040014 2014, 22:21:56

3 ответа


9

В словах непрофессионала:

Они делают.

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

Вот пример исходного кода в Linnotte , французском программировании язык:

 nombre Fibonacci : 
  a est un nombre
  début
   questionne a sur "Entrez un nombre :" 
   affiche fibo(a)

 fibo :    
  * n est un nombre     
  début
   si n est < 2, retourne n          
   retourne fibo(n-1) + fibo(n-2) 

.. и приветственная мировая программа в SAKO , на польском языке:

K) PROGRAM DRUKUJE NAPIS HELLO WORLD
   LINIA
   TEKST:
   HELLO WORLD
   KONIEC

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

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

У английского языка есть и другие преимущества: он не использует акценты и знаки, такие как áéíúóâêîôûäëïöü и т. д., что делает его самым низким общим знаменателем в отношении раскладки клавиатуры.

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

Другое любопытство:

  

Хотя имена и имена функций Perl обычно находятся на английском языке, это   позволяет модифицировать свой синтаксический анализатор для изменения языка ввода, например   как в модуле Lingua :: Romana :: Perligata Damian Conway, который позволяет   программы, которые будут написаны на латыни или его Lingua :: tlhInganHol :: yIghun   Язык Perl в клингоне. Они не просто меняют ключевые слова, но   также грамматику, соответствующую языку.

ответил Tulains Córdova 2 Jam1000000amThu, 02 Jan 2014 01:37:38 +040014 2014, 01:37:38
16

Слишком много усилий для слишком маленькой добавленной стоимости.

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

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

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

ответил Kilian Foth 1 Jpm1000000pmWed, 01 Jan 2014 23:01:20 +040014 2014, 23:01:20
14

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

Причина становится очевидной, когда вы впервые видите фрагмент кода, написанный на незнакомом вам языке. Например:

// Записать изменения конфигурации.
var имя = this.RefreshMeta().ПолныйПуть;
this.Хостинг.Записать(имя);

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

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

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

  1. Как сказано выше, наем de facto ограничен людьми, говорящими по-французски.

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

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

  3. В то время как мы работаем с .NET Framework и SQL Server, которые полностью совместимы с Unicode, коллеги часто боятся размещать соответствующие буквы на письмах, что приводит к едва читаемым и чрезвычайно уродливым именам, таким как DELAI_EXPIRE

    Для людей, которые не говорят по-французски, DELAI_EXPIRE следует писать DÉLAI_EXPIRÉ. Написанная в ее первой форме, это затрудняет понимание и может иметь два значения: либо это означает, что истечение срока действия истекает, либо что задержка уже истек.

    Если ключевые слова языка локализованы, следует ли включать акценты? Должны ли они быть удалены?

  4. Снова связанные с акцентами, французские клавиатуры очень плохи, когда речь заходит о написании писем с акцентированием капитала. Вы можете написать письмо À или Ê , но не É, например, в Également. Это делает довольно сложным использование автозаполнения в среде IDE.

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

Заметка о IDE

IDE локализованы, потому что:

  1. Они содержат много терминов, иногда сложных.

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

  2. Они содержат текст, который предназначен для чтения.

    Для сравнения, ключевые слова - это ключевые слова. Например, ключевое слово var в C # не имеет никакого значения на английском языке. Это аббревиатура от variable, но все же не английское слово. Зная, что var является аббревиатурой от variable не поможет мне понять концепцию неявно типизированных переменных. Это могло быть implicit или imptype или unknown

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

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


Итак, почему английский (5,52% населения мира носит носитель), а не, например, мандарин, (14,1% населения мира - носители языка), илиИспанский (5,85% населения мира является носителем языка)?

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

ответил Arseni Mourzenko 1 Jpm1000000pmWed, 01 Jan 2014 22:45:35 +040014 2014, 22:45:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132