Pull to refresh

Применение национальных языков в программировании на SPL

Reading time3 min
Views4.2K
Наверняка каждый программист считает само собой разумеющимся, что основной код программы пишется на английском языке. Можно поспорить о том, обязательно ли так должно быть или это просто анахронизм, но бывает и по-другому.

Действительно, как-правило, программирование осуществляется на английском языке. И причин тому несколько.

Первая — это стандарт. И существует он не только в программировании. Еще со школы мы приучены писать:

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

Спасибо за внимание!
Tags:
Hubs:
+2
Comments42

Articles