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

9

Существуют ли какие-либо языки программирования, доступные и расширяемые более чем на одном естественном языке?

Например, английская версия с do..whileциклом, испанская версия с hacer..mientasциклом, французская версия с a faire..pendantи голландская версия с doe..terwijl.

Единственный «язык программирования», о котором я могу думать, такого рода реализует, это Microsoft VBA.

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

Мартейн Бургер
источник
12
Английский язык - это лингва франка большинства языков программирования, в лучшую или в худшую сторону.
Роберт Харви
13
That's a reason why the languages are in English, not why there are no other languages, for example no "Java Indonesian" or "C++ Swahili"- Потому что ваша индонезийская программа на Java поддерживается только индонезийскими программистами.
Роберт Харви
5
@DavidArno эта тема была избита до смерти в. Люди в неанглоязычных странах пишут код на английском языке? и несколько вопросов, связанных с ним
Гнат
8
@MartijnBurger перевод ключевых слов является «второстепенной проблемой» по сравнению с переводом стандартной библиотеки , что является «огромной задачей». И это также то, что может вызвать проблемы совместимости. Java не зависит от написания ключевых слов после компиляции; но это зависит от написания имен пакетов, классов и методов.
Дэн Гетц
3
@DanGetz В Java (и, возможно, в других языках) по-прежнему существует проблема с зарезервированными ключевыми словами. Я не могу определить поле как String for;в Java, так как это будет экспортированный символ в классе. И это было бы то, что я не мог бы назвать поле doeтакже, потому что это в голландской версии и наличие public class Deer { String buck; String doe; }не было бы doeполе было доступно. Все ключевые слова являются зарезервированными словами в Java. Плохие вещи могут случиться с полями, которые конфликтуют с ключевыми словами в других языках.

Ответы:

21

Имена функций в формулах Excel локализованы, где вы можете использовать либо английскую формулировку, либо местный эквивалент.

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

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

Ларс Виклунд
источник
5
Удивительно, что этот ответ - единственное место, где появляется слово «Excel», считающееся эпическим провалом переведенных формул. Оба аргумента верны и очень сильны: электронные таблицы разбиваются , а локализованные версии разделяют сообщества. Это не включает усилия поставщика по переводу документов и программ (компиляторов).
1
Почему так сложно переводить ключевые слова в сценарии? Конечно, их должно быть относительно легко разобрать, так как с ними уже обращаются специально.
SuperBiasedMan
Кроме того, Excel на самом деле не является системой программирования на естественном языке , поскольку она не переводит английские структуры предложений в исполняемые программы.
Андерсон Грин
16

В прошлом веке, особенно в 1960–1970-х годах, они были языками программирования не на английском языке. Во Франции у нас были PAF & LSE с французскими ключевыми словами. Вторая мировая война в Германии была Plankalküll К. Цузе. В Советском Союзе А. Ершов разработал несколько языков (например, рапира ) с русскими ключевыми словами. IIRC PAF (разработанный и реализованный моим покойным отцом, когда я был ребенком - в начале 1960-х годов) также можно было продавать по ключевым словам с английским (или русским, или немецким) языком. А в некоторых языках, например в APL , вообще не было ключевых слов. Другие языки ( PL / I ) не зарезервированыключевые слова. И вы можете переопределить ключевые слова с помощью методов препроцессора (например, сегодня, в C, #define si ifи #define sinon elseдля французских студентов ....; подобные трюки на основе макросов возможны в PL / I или даже в Common Lisp).

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

Кроме того, в английском есть много коротких ключевых слов (сравните sinonпо-французски с elseанглийским или mettreпо-французски с putанглийским), поэтому есть небольшое преимущество в использовании ключевых слов на английском ....

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

PS. Доминирование английского языка не является специфическим для ИТ. Даже если Великобритания выйдет из Европейского союза ( сценарий Brexit) , де-факто официальным языком ЕС останется английский (который не будет языком каких-либо стран-членов ЕС), а проекты H2020 ICT будут написаны на английском языке.

Василий Старынкевич
источник
Не забудьте Plankalküll !
Эрик Эйдт
Спасибо. Не путать с гомофоническим французским Планом Калькула
Василием Старинкевичем
Я не знаю, но я проголосовал за это, так что теперь (увы, только) нейтрально. Я нашел, что это хороший ответ.
Mawg говорит восстановить Монику
5
Английский является одним из двух официальных языков Ирландской Республики, которая является членом ЕС.
Мэтью Флинн
9

Есть очень веские причины, по которым профессиональные языки программирования не переводятся.

1) Усилие: было бы огромной задачей перевести современный язык. Возьмите Java - было бы небольшой задачей перевести 50 или около того ключевых слов, но вам также нужно будет перевести полную стандартную библиотеку, которая состоит из тысяч классов и методов и соответствующей документации.

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

3) Программисты все равно должны знать английский. Многие стандарты, такие как HTTP, CSS, HTML, все равно используют английский язык для идентификаторов. Они не могут быть переведены, так как слова включены в стандарт.

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

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

JacquesB
источник
5

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

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

  • Вы ограничите аудиторию своего кода, если не будете придерживаться «универсального» языка. Конечно, не все знают английский, но то же самое верно для каждого языка.
  • Ключевые слова с одним словом не обязательно являются одним словом во всех языках, что усложняет синтаксический анализ. Я никогда не проверял, но могу себе представить, что существует достаточное количество специальных регистров для работы с одним многословным типом c ++ "long long".
  • Если вы начнете переводить ключевые слова, будете ли вы также рассматривать локали и как форматировать числа? Например, запятая или точка в качестве десятичного разделителя. Или требуют, чтобы немецкие существительные были написаны заглавными буквами?
  • Подавляющее большинство текста в данной программе - это переменные, методы и имена классов, не говоря уже о комментариях. Хотя, безусловно, есть библиотеки, написанные на других языках, необходимость поддерживать переводы исходного кода всех библиотек для обслуживания всех пользователей будет большой нагрузкой для большинства разработчиков, не говоря уже о дополнительной сложности при обсуждении такого кода.
  • Компиляторы должны понимать все реализованные языки. Возможно даже несколько языков в одном файле. Конечно, маленький подвиг для компьютера, но все же дополнительная работа. Возможно, вам придется столкнуться с одним и тем же ключевым словом, означающим разные вещи на разных языках, или просто слишком двусмысленными словами, чтобы их можно было читать хорошо.
  • (хорошо, самоуверенно) Конечно, большинство людей, которые имели дело с документами MS Office, запрограммированными и отформатированными на разных языках, отвергнут эту идею как не стоящую проблему.

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

Axl
источник
3

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

Представьте себе язык , где у вас есть свой if, while... do, switchи все другие ключевые слова , определенные ( так или иначе) в стандарте, вы можете отправить системные библиотеки в «токенизированном формате», с локальным кодом , написанным в не токенизированной форме. Тогда фактический компилятор работает на токенизированном слое и, возможно, все будет хорошо.

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

Vatine
источник
2

Все приведенные ответы - отличные ответы, но я все равно дам свои два цента.

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

Позже, когда программное обеспечение стало индустрией , оно также стало глобальным начинанием. Ни для кого не секрет, что программистов меньше, чем нужно, поэтому компании-разработчики программного обеспечения и специально определяющие отрасли компании, такие как IBM, начали нанимать программистов из всех частей света: России, Пакистана, Индии, Франции, Германии, Израиля и т. Д. в основном для программирования на уже существующих глобально успешных языках, которые уже были основаны на английском языке, а также создавались новые языки, и для этого разрозненного источника программистов уже существующий общий язык был лучше, чем любой другой язык.

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

На каком языке человек из Израиля будет сотрудничать с человеком из Шри-Ланки? Скорее всего, они не говорят и даже не читают родной язык друг друга. Так что английский приходит на помощь.

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

Перефразируя Джея Уокера :

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

Смотрите видео "Английская мания" .

Нижняя граница:

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

Тулаинс Кордова
источник
-2

Английский также является языком «без акцента», и у вас нет странного символа, который нуждается в кодировке, отличной от ASCII. Я итальянец, и иногда я сталкиваюсь с ошибками кодирования, если я использую итальянскую раскладку клавиатуры или акцентированные символы, такие как àèéìòù. Более того, «else» переводится как «altrimenti», «in» - это «dentro» ... это было бы неприятно.

JoulinRouge
источник
9
Это круговое рассуждение - ASCII стал стандартным набором символов, потому что английский язык является языком общения.
JacquesB