Действительно многоязычные языки программирования? - PullRequest
12 голосов
/ 20 марта 2009

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

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

Ответы [ 11 ]

29 голосов
/ 20 марта 2009

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

Внезапно мой словарный запас перестал быть таким же, как у кого-то в Германии, Франции или Японии. Мы больше не можем обмениваться кодом, ошибками, исправлениями ошибок или идеями.

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

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

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

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

Ключевое слово delegate в C # не означает то же самое, что и «делегат» в английском языке. Также не while, return или "конструктор". Это не английские слова, это ключевые слова или понятия в C ++, Java, C #, Python или любом другом языке программирования.

9 голосов
/ 20 марта 2009

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

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

4 голосов
/ 20 марта 2009

Это хорошее место для начала: Неанглийские языки программирования .

Там есть несколько интересных, например, Python в переводе на китайский .

2 голосов
/ 26 марта 2014

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

Например, в Java вы можете создать

public class HoweverYouSayExampleObjectInYourLanguage extends ExampleObjectName {
  }

, а затем создайте функции / методы-оболочки с именами на целевом языке, но в основном вызывающие существующие стандартные методы

private void HoweverYouSayExampleMethodInYourLanguage(parameters) {
      this.ExampleMethod(parameters);
      // Some error handling code
}

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

Недостатком было бы, как уже говорили другие люди, совместное использование исходного кода. Если бы мы все были на одной странице с IDE для данного языка - я не вижу причины, по которой вы не смогли бы создать действительно интернационализированную IDE, в которой исходный код, который вы видите на экране, не является РЕАЛЬНЫМ исходным кодом как таковой, но локальный рендеринг реального исходного кода через некоторую форму отображения.

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

2 голосов
/ 30 марта 2009

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

Такие локализованные DSL могут оказаться полезными и для программистов, если они имеют дело с большим количеством непереводимых терминов. Одна довольно успешная система, с которой я столкнулся, использовалась для расчета зарплаты военнослужащим израильских военных. Он использовал синтаксис на иврите вместе с сотнями терминов, которые могут быть правильно выражены только на иврите. В этом конкретном случае стандартные логические ключевые слова if, then, else и т. Д. Были переведены на иврит, и весь редактор кода был справа налево. Таким образом, по сей день поддерживается очень большой объем бизнес-логики, и, ИМХО, это правильно.

2 голосов
/ 20 марта 2009

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

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

0 голосов
/ 29 января 2013

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

Я думаю, что пример проиллюстрирует, что я имею в виду лучше всего:

% алгоритм нахождения пасхальных дат по данному году (в качестве первого аргумента)

復活節( V1, V2, V3) :-
   A 是 (V1 mod 19),
   B 是 V1// 100,
   C 是 V1 mod 100,
   D 是 B // 4,
   E 是 B mod  4,
   F 是 (B + 8) // 25,
   G 是 (B - F + 1) // 3,
   H 是 (19*A + B - D - G + 15 )mod 30,
   I 是 C // 4,
   J 是 C mod  4,
   K 是 (32 + 2*E + 2*I - H - J) mod  7 ,
   L 是 (A + 11*H + 22*K) // 451,
   M 是 (H + K - 7*L + 114) // 31,
   N 是 (H + K - 7*L + 114)mod  31,
   V2 是 M,
   V3 是 N + 1.

/ *

Пример теста:

? - 復活節 (2013, V2, V3). V2 = 3, V3 = 31

т.е. Пасха в этом году будет 31 марта

* /

  • это то, что я использовал для переопределения оператора построения в 'is' (не стреляйте в меня, если он несовершенен):

    * * Тысяча двадцать-одина: -. Соч (500, XFY, 是) * * тысяча двадцать-дв

    是 (X, Y): -. Есть (X, Y)

0 голосов
/ 01 апреля 2009

Сортировано!

Сортировано! является двуязычным. Он может понимать как английский, так и немецкий код. Насколько мне известно, отсортировано! это единственный язык программирования, который может сделать это в мире.

Какие-нибудь полезные? Это лучший вопрос.

0 голосов
/ 21 марта 2009

А как насчет таких языков, как APL и J ? Все ключевые слова в APL являются отдельными символами; к сожалению, большинство из них не на вашей клавиатуре, поэтому пришел J и заменил большинство из них представлениями ASCII (во многих случаях состоящими из более чем одного символа).

0 голосов
/ 20 марта 2009

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

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

Позже (когда я выучил английский) я подумал ... Эй, это забавно, в английском тоже есть слово "переключатель", как и C. (дох!)

:)

Неважно, насколько хорош или плох ваш английский, вы не можете сказать java

импорт java.util. * На мой CD-ROM;

Потому что это недопустимый синтаксис.

...