Кодирование на других (разговорных) языках
Это то, что мне всегда было интересно, и я нигде не могу найти упоминаний об этом в Интернете. Когда магазин, скажем, из Японии, напишет код, смогу ли я прочитать его на английском? Или у языков, таких как 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 ответов
Если я правильно понял, вопрос на самом деле таков: "Каждый ли кодировщик в мире знает достаточно английского, чтобы использовать те же слова, что и я?"
Ну, английский здесь не предмет, а язык программирования, зарезервированные слова. Я имею в виду, что когда я начал работать около 10 лет назад, я не имел ни малейшего понятия о английском, и все же я мог программировать простые вещи, изучая язык программирования, даже когда я не знал, что они имели в виду (на английском языке). На самом деле это помогло мне выучить английский язык.
Например. Я знаю, чтобы сделать "итерацию" (итерация, конечно), я должен был написать:
for( i = 0 ; i < 100 ; i++ ) {}
Для меня "для", ";" и "++", где простые иностранные слова или символы. Позже я узнаю, что "for" означало "para" и "while" означало "mientras" и т. Д., Но в то же время мне не нужно было знать английский, но в моем случае мне нужно было знать "C".
Конечно, когда мне нужно было больше узнать, мне нужно было учить английский, потому что документация написана на этом языке.
Итак, ответ: нет, я не вижу, если, в то время, и т. Д. На моем родном языке. Я вижу их по-английски, но они не означали для меня ничего другого, что они имели в виду для языка программирования по очереди.
Это как оператор switch в bash: case .. esac. Что такое "esac"... для меня конец оператора switch в bash.
Я думаю, это то, что мы называем "абстракция"
В языке Java некоторые методы должны быть названы (хотя бы частично) с использованием английского языка из-за соглашения JavaBeans.
Это соглашение требует, чтобы свойство X было установлено с помощью пары методов getX() и setX(). Здесь, во франко-канадском, где некоторые разработчики обязаны кодировать на французском языке, это приводит к следующей пародии:
interface Foo {
Color getCouleur();
void setCouleur(Color couleur);
}
У меня проблемы с поиском ссылок, но мне вспомнились три истории.
Хакер Lisp защищает бессмысленные функции, такие как "cdr" и "car", сравнивая их с программированием на вашем родном языке: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg01171.html
Когда Юкихиро Мацумото ("Matz") начал разработку Ruby, он использовал ключевые слова на английском языке, хотя писал всю документацию на японском языке!, Пару лет не было документации на английском для Ruby, и очень немногие американцы использовали этот язык. Но сейчас это язык мирового уровня, и тот факт, что он родился в Японии, представляет только исторический интерес. Если бы язык использовал ключевые слова в хирагане, ему было бы намного труднее завоевать популярность.
Однажды я прочитал эссе - может быть, кто-то другой сможет его найти, сегодня Google не поможет, - в нем предполагалось, что перевод ключевых слов был ошибочным, потому что слова на самом деле не английские, а жаргонные. Мало того, что (используя приведенные выше примеры) para и pour не совсем имеют именно то значение, которое в английском языке имеет для "непрограммистов" фраза "для цикла" - это неряшливость. Даже американцы должны выучить новый смысл. Таким образом, перевод поверхностного значения слов на другой язык больше похож на мультиязычную игру слов, чем на самом деле полезен.
Я действительно не слишком задумывался о программировании на японском языке раньше, но здесь мы используем пример кода вопроса.
Используя только языковые выражения на японском языке с переменными на английском языке:
// In Japanese, it makes more sense to put the keywords/modifiers as
// postfix expressions rather than prefix expressions.
(i < size)か {
(l[i])は {
1だ:
「もしもし。」を書く;
省略時値:
「いいえ、いいですよ。」を書く;
}
} ない {
「はい、ありがとうございます。」を書く;
}
Как уже отмечали многие люди, в большинстве языков программирования вам просто нужно выучить несколько ключевых слов, поэтому не имеет большого значения, если они на английском (или, в этом отношении, на языке, отличном от вашего). Это просто символ, который вы ассоциируете с какой-то конструкцией. Например, в VB у вас есть "THEN", что во многих языках стиля C было бы "{", и это не имеет большого значения в удобочитаемости (ну, по крайней мере, так я это вижу, будучи неанглоязычным) носитель языка).
Но где вещи могут иногда становиться неясными, и где выбор (естественного) языка имеет значение в именовании идентификаторов. Если имена переменных, функций, классов и т. Д. Не имеют для вас значимого имени из-за языкового барьера, следовать даже простейшему коду может быть довольно сложно.
Я помню, как кто-то однажды дал мне небольшой фрагмент ActionScript, взятый из какого-то блога. Имена были на немецком языке, и поскольку я не говорю ни слова на этом языке, вещи могли бы называться также var_123, var_562 или func_333 (и, вероятно, мне было бы легче запомнить имена или, по крайней мере, иметь шанс их правописания без копирования и вставки). Поскольку это был короткий самостоятельный фрагмент, я использовал онлайн-переводчик, чтобы дать этим переменным и функциям значимые имена на моем родном языке (испанском), и после этого все было ясно. Дело в том, что код был на самом деле простым, но я смог понять его только без особых (ненужных) дополнительных усилий, только когда преодолел языковой барьер.
С тех пор я перешел на использование английского языка для именования идентификаторов. Нравится вам это или нет, но это "койне" для программирования, инженерии и вообще технических вещей. Большинство API написаны на английском языке, как и большинство документации (и, вероятно, лучшие ресурсы, которые вы можете найти, также на английском языке). Кроме того, он сохраняет ваш код более согласованным с кодом, с которым вы, вероятно, будете взаимодействовать, и я думаю, что он, как правило, более компактен и лаконичен, чем другие языки, такие как испанский (что в противном случае было бы моим естественным выбором).
Конечно, если вы не понимаете хотя бы немного английского, проблема остается прежней, поэтому это не идеальное решение. Но, учитывая количество разработчиков из разных стран, есть вероятность, что общим языком общения (посредством кода и, конечно, других средств) будет английский. Таким образом, выбор английского языка является, пожалуй, лучшим вариантом, хотя это не было бы идеальным решением этой проблемы.
Язык программирования определяет ключевые слова и стандартные имена классов, и лучше всего давать пользовательским типам, переменным и функциям также английские имена (я могу сказать, что я не являюсь носителем языка;-).
Так что да, если все хорошо, вы сможете прочитать код.
Однако языки, такие как Java и Perl, допускают полный набор Unicode для идентификаторов, поэтому, если кто-то напишет имена своих классов на кандзи, у вас, вероятно, возникнут проблемы.
Обновление: для Perl есть модуль-шутка, который позволяет писать Perl на латыни. Но на самом деле это просто шутка. Никто не использует такие вещи серьезно.
Второе обновление: идея локализованных языков программирования не так уж смешна. Язык макросов Excel локализован, но, к счастью, он хранится в файле на одном каноническом языке (английском), поэтому локализация - это просто слой поверх обычной вещи. Такие вещи имеют смысл только для небольших "программ", для "настоящих" программ их становится сложно поддерживать.
На самом деле есть некоторые неанглийские языки программирования (Википедия)
Я норвежец, но я всегда использовал английский для всего кода, кроме вывода (игнорируя какой-то глупый код из школы). На самом деле я обычно пишу все на английском, а затем переводю это на свой родной язык, используя gettext (или что-то еще).
Я британец, и проблема, с которой мы часто сталкиваемся, - это американское / британское столкновение орфографии Это часто происходит с терминами, связанными с программированием, такими как Initialise () или Initialize (), Analyze() или Analyze() и т. Д. Это может (имеет) привести к проблемам, пытающимся переопределить методы, и иногда это трудно обнаружить.
Поскольку каркас (в нашем случае C#) был разработан американцами, мы обнаружили, что лучше всего быть последовательным и использовать американское правописание. Мы даже принимаем цвет.
У нас есть разные национальности в наших командах разработчиков, и большинство не британцев естественно склонны к американскому правописанию.
Переходя на следующий уровень, как насчет возможности заменить символы?
После просмотра таких языков, как Brainf**k и Whitespace, я подумал о создании такого языка: он будет идентичен C, за исключением того, что вы используете закрывающие скобки, чтобы открывать, открывающие скобки, чтобы закрывать, менять значения + и -, * и /,; и:, > и <и т. д.
Эта концепция - не более чем бесполезный измененный компилятор Си. Но, подобно тому, как вы думаете о ключевых словах по-другому, вам нужно переосмыслить некоторые базовые предположения, если вы никогда не думали о таких вещах раньше. Пример:
int foo)int i, char c( }
int six = 2 / 3:
int two = six + 4:
if )i > 0( }
printf)"i is negative"(:
{
{
Я во французской команде, разрабатывающей систему программного обеспечения на C#. Несмотря на то, что ключевые слова языка программирования якобы являются английскими, я полагаю, что вам будет очень трудно читать код, поскольку все имена функций, переменные, комментарии к коду, таблицы и столбцы базы данных, технические характеристики, протоколы и т. Д. Все в Французский, включая эти прекрасные акцентированные символы ç, é, è, ù и т. Д. Я даже не уверен, будет ли система работать в другом месте из-за ошибок локализации, таких как использование запятой в качестве десятичного разделителя по умолчанию.
В противном случае WinDev является популярной во Франции платформой для программирования, а язык программирования WLanguage имеет ключевые слова на французском или английском языке, см. И пример здесь: текст ссылки
Единственный локализованный язык - это Excel с его макросами. Если вы попытаетесь суммировать столбец, используя итальянскую версию Office, вам придется написать SOMMA(A1:A10)
а не СУММ. Это позор.
Кстати, просто потому, что это весело, вот как ваш код должен выглядеть с итальянскими ключевыми словами:
se (i < size){
commuta
caso 1:
stampa "hi there"
normalmente:
stampa "no, thank you"
} altrimenti {
stampa "yes, thank you"
}
AppleScript когда-то был доступен на французском и японском диалектах. Я не знаю, почему это было снято.
В нескольких проектах VBA, над которыми я работал (да, в самом начале моей карьеры), мы должны были определить версию офиса, установленную на компьютере пользователя, и соответственно изменить формулы, используемые в таблицах.
Поскольку я программирую на португальском языке, "SUM" должен быть переведен на "SOMA" и так далее, и так далее. Я просто не могу представить необходимую работу, чтобы это произошло на нескольких языках. Кто-нибудь еще страдал с этой проблемой?
Не смейся над этим. Несколько лет назад Microsoft анонсировала G# (German Sharp) - C# с немецкими ключевыми словами и API. Конечно, это была первоапрельская шутка, но весь сайт об этом выглядел настолько реальным и профессиональным (и был на microsoft.com). Страшно.
На работе мы используем две системы полевых шин, обе из которых разработаны в немецкоязычных странах, в которых для идентификаторов используется пугающее сочетание немецкого и английского языков, в том числе прекрасных фальшивых друзей. Это беспорядок.
Нет, английские ключевые слова и идентификаторы в порядке. Хотя некоторые могут поспорить, если это будет цвет или цвет:)
Я видел VBA переведены в испанские команды. это одна из самых отвратительных вещей, которые когда-либо видели. мне было бы стыдно иметь что-то подобное на моем компьютере.
П.Д.: Мне кажется, что испанский язык гораздо лучше, чем английский; но перевод НЕПРАВИЛЬНЫЙ
Есть некоторые языки, которые перевели ключевые слова. Формулы Excel, например. Если вы напишите некоторые расчеты в электронной таблице, это будет на вашем языке.
К счастью, это не обычная практика, и даже не говорящие по-английски, такие как я, слава Богу, что есть стандартный язык для ключевых слов:
- Легче поделиться своей работой.
- это препятствует тому, чтобы документация стала большим кошмаром, который это уже есть.
- Английские слова и предложения обычно короткие и синтаксически прагматичные. В литературе латинские языки намного красивее, но для технических вещей - английский.
А где остановиться? Можете ли вы представить C на древнегреческом?
Ключевые слова должны оставаться на одном языке, и все началось с английского, пусть так и останется. Это могло бы быть хуже (азиатский язык?). И поэтому мы должны написать методы и комментарии на английском языке. Хорошо, у нас больше работы, но по крайней мере международная кодовая база остается конгруэнтной.
Однако есть один случай, когда использование имен и комментариев методов на родном языке может быть хорошей практикой: в странах третьего мира. Я собираюсь в Сенегал через несколько месяцев, чтобы управлять проектом Django. Сенегал имеет огромный уровень анфабетизации, и поэтому уже здорово, что они тратят энергию на улучшение своих знаний в области программирования. Французский язык здесь является родным языком, поэтому было бы неэффективно заставлять их одновременно изучать компьютерные технологии и новый язык.
Кстати, это будет ваш код с французскими ключевыми словами:
Si (i < taille) {
cas par cas :
cas 1:
afficher "salut"
défaut:
afficher "non merci"
} sinon {
afficher "oui, merci"
}
Не то, чтобы перевод ключевых слов не имел ничего общего с переводом строк. Конечно, у нас есть "привет, там" переведено на наш язык. Европейские кодеры даже склонны использовать I18N гораздо больше, чем американские, так что их сервис может охватить более широкую аудиторию.
Ну, как отмечали другие, ключевые слова и системные вызовы, скорее всего, останутся на английском языке.
Тем не менее, понимание ключевых слов языка является лишь небольшой частью в понимании кода. Имена переменных, имена функций и комментарии могут быть на родном языке автора.
Редактировать: я просто вспомнил свою молодость, когда я пошел в таблицы сопоставления моего встроенного в TRS-80 Бейсика, чтобы переключить ключевые слова на французский. Я мог бы изменить все ключевые слова, но не смог сделать ни одно из них больше. Сделано для веселых программ.
Язык сценариев Filemaker локализован. Сценарии (и данные!) Хранятся в ужасной "сорта канонической" форме.
Поэтому, если вы напишите скрипт в американской версии, а затем откроете его во французской версии, все ключевые слова и имена встроенных функций будут на французском языке. Но почему это не работает? Ага! Французская версия использует "," в качестве десятичной точки, и, следовательно, во избежание двусмысленности использует ";" для разделения аргументов функции - там, где американская версия использует "." и "," соответственно. Это преобразование вы должны сделать сами.
Таким образом, вы работаете через невероятно плохой интерфейс редактирования скриптов (вы не можете писать скрипты как текстовые файлы), чтобы исправить все эти вещи. Это работает! Большой! Результаты все неверны! о нет! Ага! Дата 7 января 2004 года, которую вы ввели в американской версии, интерпретируется как дата 1 июля 2004 года - очевидно, даты не только отображаются, но и хранятся в зависимости от локали. Я шучу? Нет.
[Примечание: Filemaker 8 и 9 могут быть нормальными - я когда-либо работал только с 3 - 7.]
Когда я был ребенком, мы ездили во Францию, и в музее, куда мы ходили, я помню, как нашел дисплей, который показал вам, как писать компьютерные программы. Язык был своего рода базовым вариантом, и я отчетливо помню его, используя POUR вместо FOR и так далее. Мне было 7 лет, и я только что выучил бейсик, и мне казалось совершенно естественным, что у французов будет свой собственный диалект, подобный этому!!
Я предполагаю, что это была LSE, которую я видел?
Вообще говоря, большинство программистов адаптируются к английской форме. Я научился программировать, когда мне было 7 лет, и говорил только на иврите (справа налево) и без английского, что делало его довольно увлекательным.
Проблема, которую вы обычно получаете, связана с документацией, переменными и именами функций. Я видел свою долю переменных в других языках, используя английский алфавит.
Единственный язык, с которым я знаком, который фактически был переведен, был старый добрый Логотип (все еще удивительный по сей день).
Здесь, в Австралии, мы все еще должны писать цвет как цвет. Однако меня раздражает, когда другие (австралийские) разработчики, работающие над австралийским проектом, решают, что имена внутренних переменных должны быть написаны по-американски.
Ваш вопрос интересен в отношении Perl, поскольку его синтаксис разработан с учетом (английского) естественного языка. Интересно, не затруднит ли это не говорящих по-английски...
Конечно, Perl и Perlers отказываются играть по общепринятым правилам. Безумный ученый Дамиан Конвей написал модуль http://search.cpan.org/perldoc?Lingua::Romana::Perligata, который использует черную магию фильтров исходного кода, чтобы позволить вам писать Perl на латинице!
Я прочитал много кода, но проблема всегда в именах и комментариях переменных / методов, если они комментируют свой код на своем собственном языке, используя специальные символы языка, такие как японский или кириллица, у нас проблемы! но ключевые слова, я думаю, они останутся на английском языке, как они есть.
ИМХО, было бы бессмысленно использовать синтаксис языка. Это просто убило бы любую переносимость.
Единственным исключением являются образовательные языки, такие как LOGO. Они были разработаны для облегчения обучения, поэтому переносимость не является проблемой.
По итальянски
se (i < dimensione){
scegli
caso 1:
stampa "ciao"
mancante:
stampa "no, grazie"
} altrimenti {
stampa "sì, grazie"
}
Чтобы подтвердить беспокойство предыдущего автора, я видел код на Фортране с макросом, включающим перевод всех ключевых слов с английского на французский. Позвольте мне не продолжать это.
Мне также пришлось работать с кодом, одновременно содержащим идентификаторы на итальянском, немецком, английском и французском языках, не только потому, что он был разработан во многих разных местах, но и потому, что основной разработчик счел это забавным и помог ему не дублировать имена идентификаторов (конечно, с рутиной длиной в 2000 строк....)
Я думаю, что WordBasic был локализован. WordBasic использовался для написания макросов в Word до использования VBA.
Если я правильно помню, только WordBasic, написанный на английской версии, будет работать на всех локализованных версиях. Если бы вы написали нидерландскую версию, вы могли бы выполнить ее только на нидерландском языке.