Кодирование на других (разговорных) языках - PullRequest
103 голосов
/ 15 октября 2008

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

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

Будет ли этот код:

If (i < size){
    switch
        case 1:
            print "hi there"
        default:
            print "no, thank you"
} else {
    print "yes, thank you"
}

отобразить точно так же, как я вижу это сейчас на английском языке, или какой-нибудь другой не говорящий по-английски человек увидит слова «if», «switch», «case», «default», «print» и "еще" на родном языке?

РЕДАКТИРОВАТЬ - да, это серьезно. Я не знал, если разные локализации языка имеют разные ключевые слова. или если вообще есть разные локализации.

Ответы [ 26 ]

157 голосов
/ 15 октября 2008

Если я правильно понял, вопрос на самом деле таков: «Каждый ли кодировщик в мире знает достаточно английского, чтобы использовать те же слова, что и я?»

Хорошо. Английский здесь не предмет, а язык программирования, зарезервированные слова. Я имею в виду, что когда я начал работать около 10 лет назад, я не имел ни малейшего понятия о английском, и все же я мог программировать простые вещи, изучая язык программирования, даже когда я не знал, что они имели в виду (на английском языке). На самом деле это помогло мне выучить английский.

Например. Я знаю, чтобы сделать "итерацию" (итерацию, конечно), я должен был написать:

 for( i = 0 ; i < 100 ; i++ ) {}

Для меня "за", ";" и "++", где простые иностранные слова или символы. Позже я узнаю, что «for» означало «para» и «while» означало «mientras» и т. Д., Но в то же время мне не нужно было знать английский, но в моем случае мне нужно было знать «C».

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

Таким образом, ответ: нет, я не вижу, если, в то время, для и т. Д. На моем родном языке. Я вижу их по-английски, но для меня они не имели в виду ничего другого, что они имели в виду для языка программирования по очереди.

Похоже на оператор switch в bash: case .. esac. Что такое «esac» ... для меня конец оператора switch в bash.

Я думаю, это то, что мы называем "абстракция"

26 голосов
/ 16 ноября 2008

У меня проблемы с поиском ссылок, но мне вспоминаются три истории.

Лисп-хакер защищает бессмысленные функции, такие как "cdr" и "car", сравнивая их с программированием на вашем неродном языке: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg01171.html

Когда Юкихиро Мацумото ("Matz") начал разрабатывать Ruby, он использовал английские ключевые слова , хотя писал всю документацию на японском языке! . Пару лет не было документации на английском для Ruby, и очень немногие американцы использовали этот язык. Но сейчас это язык мирового уровня, и тот факт, что он родился в Японии, представляет только исторический интерес. Если бы язык использовал ключевые слова в хирагане, ему было бы гораздо сложнее набрать популярность.

Я однажды прочитал эссе - может быть, кто-то другой сможет его найти, Google сегодня не поможет - он предположил, что перевод ключевых слов был ошибочным, потому что слова на самом деле не английские - они жаргонные. Мало того, что (используя приведенные выше примеры) para и pour не совсем имеют точное значение, которое для имеет в английском языке для непрограммистов фразу " для цикла "это бред. Даже американцы должны выучить новый смысл. Таким образом, перевод поверхностного значения слов на другой язык больше похож на мультиязычную игру слов, чем на самом деле.

26 голосов
/ 15 октября 2008

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

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

interface Foo {

  Color getCouleur();

  void setCouleur(Color couleur);
}
25 голосов
/ 14 ноября 2008

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

Использование только операторов языка на японском языке с переменными на английском языке:

// In Japanese, it makes more sense to put the keywords/modifiers as
// postfix expressions rather than prefix expressions.
(i < size)か {
     (l[i])は {
     1だ:
         「もしもし。」を書く;
     省略時値:
         「いいえ、いいですよ。」を書く;
     }
} ない {
     「はい、ありがとうございます。」を書く;
}
13 голосов
/ 15 октября 2008

Как уже отмечали многие люди, в большинстве языков программирования вам просто нужно выучить несколько ключевых слов, поэтому не имеет большого значения, если они на английском (или, в этом отношении, на языке, отличном от вашего). Это просто символ, который вы ассоциируете с какой-то конструкцией. Например, в VB у вас есть «THEN», что во многих языках стиля C было бы «{», и это не имеет большого значения в удобочитаемости (ну, по крайней мере, так я это вижу, будучи неанглийским носитель языка).

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

Я помню, как кто-то однажды дал мне небольшой фрагмент ActionScript, взятый из какого-то блога. Имена были на немецком языке, и так как я не говорю ни слова на этом языке, вещи могли бы называться также var_123, var_562 или func_333 (и, вероятно, мне было бы легче запомнить имена или, по крайней мере, иметь шанс их правописания без копирования и вставки). Поскольку это был короткий, автономный фрагмент, я использовал онлайн-переводчик, чтобы дать этим переменным и функциям значимые имена на моем родном языке (испанском), и после этого все было ясно. Дело в том, что код был на самом деле простым, но я смог понять его только без особых (ненужных) дополнительных усилий, только когда преодолел языковой барьер.

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

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

10 голосов
/ 15 октября 2008

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

Так что да, если все хорошо, вы сможете прочитать код.

Однако языки, такие как Java и Perl, допускают полный набор Unicode для идентификаторов, поэтому, если кто-то напишет имена своих классов на кандзи, у вас, вероятно, возникнет проблема.

Обновление: для Perl есть модуль шутки , который позволяет писать Perl на латыни. Но на самом деле это просто шутка. Никто не использует такие вещи серьезно.

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

7 голосов
/ 12 ноября 2008

На самом деле есть некоторые Неанглийские языки программирования (Википедия)

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

6 голосов
/ 27 ноября 2008

Я британец, и проблема, с которой мы часто сталкиваемся, - это американское / британское столкновение правописания. Это часто происходит с терминами, связанными с программированием, такими как Initialise () или Initialize (), Analyze () или Analyze () и т. Д. Это может (имеет) привести к проблемам при попытке переопределения методов, и иногда это трудно определить.

Поскольку каркас (в нашем случае C #) был разработан американцами, мы обнаружили, что лучше всего быть последовательным и использовать американское написание. Мы даже принимаем цвет.

У нас есть команды разных национальностей, и большинство не британцев, естественно, склонны к американскому правописанию.

4 голосов
/ 14 ноября 2008

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

После просмотра таких языков, как Brainf ** k и Пробелы Я подумал создать такой язык: он был бы идентичен C, за исключением того, что вы используете закрывающие скобки для открытия, открытия скобки, чтобы закрыть, поменять местами значения + и -, * и /,; и:,> и <и т. д. </p>

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

int foo)int i, char c( }
    int six = 2 / 3:
    int two = six + 4:
    if )i > 0( }
        printf)"i is negative"(:
    {
{
4 голосов
/ 17 ноября 2008

Я работаю во французской команде, разрабатывающей систему программного обеспечения на C #. Несмотря на то, что ключевые слова языка программирования якобы являются английскими, я полагаю, что вам будет очень трудно читать код, поскольку все имена функций, переменные, комментарии к коду, таблицы и столбцы базы данных, технические характеристики, протоколы и т. Д. Все в Французский, включая эти прекрасные акцентированные символы ç, é, è, ù и т. Д. Я даже не уверен, будет ли система работать в другом месте из-за ошибок локализации, таких как использование запятой в качестве десятичного разделителя по умолчанию.

В противном случае WinDev является популярной во Франции платформой программирования, и ее язык программирования WLanguage имеет ключевые слова на французском или английском языке, см. И пример здесь: текст ссылки

...