Наверняка каждый программист считает само собой разумеющимся, что основной код программы пишется на английском языке. Можно поспорить о том, обязательно ли так должно быть или это просто анахронизм, но бывает и по-другому.
Действительно, как-правило, программирование осуществляется на английском языке. И причин тому несколько.
Первая — это стандарт. И существует он не только в программировании. Еще со школы мы приучены писать:
y = sin(x)
а вовсе не:
в = син(г)
Поэтому, конечно, любая библиотечная функция должна иметь свое базовое обозначение, и оно, скорее всего, будет на английском языке.
Второе — это международность. Вряд-ли кто-то специально разрабатывает язык программирования для использования исключительно в одной стране мира и только на одном языке — русском, китайском, хинди… Это было бы крайне непрактично. Язык должен быть максимально доступен всем желающим, если, конечно, это не специальный мнемокод для ограниченного круга задач. Ну а раз международность, то это — английский, как самый простой и распространенный международный язык.
Третье — это, конечно, история создания языка. Не смотря на большое количество программистов как в России, так и из России, технологии программирования разрабатываются, как-правило, крупными международными корпорациями. И язык там выбирается, разумеется, английский.
Справедливости ради нужно отметить, что существуют разработки языков программирования, основой которых являются национальные языки, отличные от английского. То есть можно встретить и такие образцы кода:
(Тип1 Эл, Тип2 Зн, (Фн1) Фн):
_Примесь лТ___;
*лА=лТ___.Тип1;
лА=Эл;
лТ___._ЗнПримесь=Зн;
лТ___._ФнПримесь=Фн;
=лТ___;
Вопрос удобства подобного кодирования оставим открытым.
Короче говоря, совершенно понятно и не удивительно, что за исключением комментариев, код программы будет англоязычным.
А вот теперь насчет того, может ли быть по-другому.
Как разработчик языка, скажу сразу — возможность использования написания имен переменных, функций пользователя, библиотечных функций на произвольном языке должна закладываться в возможности языка, в его синтаксис изначально, в момент создания этого языка. То есть чтобы одновременная возможность как такой записи:
y = sin(x)
так и такой записи:
в = син(г)
была бы одинаково приемлемой как для компьютера, так и для программиста.
И тут есть хорошая новость: во-первых, давно уже изобрели Юникод, а во-вторых, продолжают изобретать новые языки программирования, например язык SPL.
В SPL нет ограничений на то, на каком языке называются имена переменных, функций, других объектов. Примеры допустимых имен:
N
x1
123k
текст
颜色
Ладно, хорошо. Допустим с именами переменных проблем нет и их можно называть как угодно. Но как быть с конструкциями самого языка? Циклы, переходы, ключевые слова, которые есть в любом языке программирования — как быть с ними?
Элементарно. В SPL нет ключевых слов. Этот язык настолько прост, что они ему просто не нужны. Циклы и переходы? Вот цикл и переход:
>
'тело цикла
<
1 -> 'а это переход на метку с именем "1"
Символы вместо ключевых слов? Да, а почему бы и нет! Ведь вряд ли вы уже забыли, что "->" это переход на метку. То есть ничего сложного тут нет.
Ну а как быть с библиотечными функциями?
Тут все просто. Конечно, базовый вариант библиотечных функций имеет англоязычное написание. Функция синуса там именно привычный всем sin(). Но в SPL функции — это такие же объекты. И их можно присваивать другим объектам. То есть вы можете написать:
син = #.sin
что означает, что теперь объект «син» равен библиотечной функции «sin()», и, если хотите, то теперь запросто пишите:
в = син(г)
В SPL очень просто организована вставка файлов программ в другие файлы — всего один символ "$":
$file.txt
и файл «file.txt» будет вставлен в это место программы. А в этом файле может быть, к примеру, список ваших собственных переопределений библиотечных функций.
В заключение приведу пример одной и той же функции рекурсивного расчета факториала числа, записанной по-разному. Обратите внимание, что все эти варианты легко могут находиться в одном и том же коде программы. Так что писать код программы на английском, русском или любом другом языке — исключительно выбор самого пользователя, а не требование языка, если эта программа написана на SPL.
fact(n)=
? n!>1
<=1
.
<= n * fact(n-1)
.
#.output(fact(5))
печать=#.output
фактор(н)=
? н!>1
<=1
.
<= н * фактор(н-1)
.
печать(фактор(5))
$中文
阶乘(号)=
? 号!>1
<=1
.
<= 号 * 阶乘(号-1)
.
印(阶乘(5))
где содержимое файла 中文:
印=#.output
P.S.
Более подробная информация об SPL здесь
Автор: Mr_Kibernetik