ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » конструирование языков » Как должны выглядеть тексты программ на русском? (тема не раскрыта)


Как должны выглядеть тексты программ на русском? (тема не раскрыта)

Сообщений 1 страница 29 из 29

1

Погуглил и пояндексил этот вопрос, нашел такое:

ГОСТ 19.401-78, Единая система программной документации. Текст программы. Требования к содержанию и оформлению

3. Основная часть документа должна состоять из текстов одного или нескольких разделов, кото­
рым даны наименования.
Допускается вводить наименование также и для совокупности разделов.
4. Каждый из этих разделов реализуется одним из типов символической записи, например:
символическая запись на исходном языке;
символическая запись на промежуточных языках:
символическое представление машинных кодов и т. п.
В символическую запись разделов рекомендуется включать комментарии, которые могут отра­
жать. например функциональное назначение, структуру.

https://ru-wiki.ru/wiki/Алгоритм

слово «алгоритм» происходит от имени хорезмского учёного аль-Хорезми. Около 825 года он написал сочинение Китаб аль-джебр валь-мукабала («Книга о сложении и вычитании»). В первой половине XII века книга аль-Хорезми в латинском переводе проникла в Европу. Переводчик, имя которого до нас не дошло, дал ей название Algoritmi de numero Indorum («Алгоритми о счёте индийском»). Знаменитый французский трувер Готье де Куанси (Gautier de Coincy, 1177—1236) в одном из стихотворений использовал слова algorismus-cipher (которые означали цифру 0) как метафору для характеристики абсолютно никчёмного человека. Около 1250 года английский астроном и математик Иоанн Сакробоско написал труд по арифметике Algorismus vulgaris, на столетия ставший основным учебником по вычислениям в десятичной позиционной системе счисления во многих европейских университетах. слово algorism (или algorismus), неизменно присутствовавшее в названиях математических сочинений, обрело значение способа выполнения арифметических действий посредством арабских цифр, то есть на бумаге, без использования абака. Именно в таком значении оно вошло во многие европейские языки. Историки датируют 1691 годом один из списков древнерусского учебника арифметики, известного как «Счётная мудрость». Это сочинение известно во многих вариантах (самые ранние из них почти на сто лет старше) и восходит к ещё более древним рукописям XVI в. По ним можно проследить, как знание арабских цифр и правил действий с ними постепенно распространялось на Руси. Полное название этого учебника — «Сия книга, глаголемая по-еллински и по-гречески арифметика, а по-немецки алгоризма, а по-русски цифирная счётная мудрость». слово «алгорифм» можно найти и в популярном дореволюционном Энциклопедическом словаре братьев Гранат, и в первом издании Большой советской энциклопедии (БСЭ), изданном в 1926 г. И там, и там оно трактуется одинаково: как правило, по которому выполняется то или иное из четырёх арифметических действий в десятичной системе счисления. К началу XX в. для математиков слово «алгоритм» уже означало любой арифметический или алгебраический процесс, выполняемый по строго определённым правилам, и это объяснение также даётся в следующих изданиях БСЭ. В третьем издании Большой советской энциклопедии (1969 г.) алгоритм уже характеризуется как одна из основных категорий математики, «не обладающих формальным определением в терминах более простых понятий, и абстрагируемых непосредственно из опыта». в начале 70-х гг. прошлого столетия, когда компьютеры перестали быть экзотической диковинкой, слово «алгоритм» стремительно входит в обиход. Это чутко фиксируют энциклопедические издания. В «Энциклопедии кибернетики» (1974 г.) в статье «Алгоритм» он уже связывается с реализацией на вычислительных машинах, а в «Советской военной энциклопедии» (1976 г.) даже появляется отдельная статья «Алгоритм решения задачи на ЭВМ».

https://refdb.ru/look/2572330.html

Сейчас это понятие используется для обозначения последовательности любых действий (арифметических, логических, взятия логарифмов, вычисления синуса и т.п.).
Алгоритмы обладают следующими основными свойствами:
1. Дискретность алгоритма заключается в том, что он разбивается на конечное число действий-шагов (предписаний, команд), которые могут быть пронумерованы. Причем только после выполнения одного предписания можно перейти к выполнению другого.
2. Результативность алгоритма означает, что при всех начальных условиях число шагов алгоритма конечно, и он приводит к решению задачи.
3. Массовость алгоритма предполагает, что по данному алгоритму может быть решен целый ряд типовых задач (они отличаются лишь различными начальными условиями).
4. Детерминированность алгоритма заключается в том, что при многократном решении одной и той же задачи с одинаковыми начальными условиями всегда получается один и тот же результат.
5. Формализованность алгоритма состоит в том, что тот, кто его выполняет (человек, машина), может не вникать в смысл того, что он делает согласно предписаниям алгоритма, и все равно придет к верному результату.

https://otvet.mail.ru/question/21790238

«Алгоритм — это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность» . (Д. Э. Кнут)

Как научить учащихся составлять алгоритмы на уроках русского языка.

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

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

Все ринулись упражняться в остроумии по поводу 1С и программирования на русском, а ведь у автора проблема совсем не в этом. Автору не хочется изучать синтаксис языка, на котором он хочет программировать. Причем даже не самые сложные конструкции (цикл, объявление и присвоение значений переменных и т.д.).
Оставив в стороне предметную область, в том же 1С только описание встроенного языка с минимальными примерами кода составляет объем в 7 книг. + еще столько же по особенностям применения тех или иных конструкций и объектов языка, языку запросов и администрированию системы в целом.
Да, блин, даже если блок-схемами программу рисовать и то придется запомнить, что обозначает ромбик, а что - прямоугольничек.
...
в IT все переводы отстают на год-полтора от текущей ситуации, а это много :(

5 языков программирования, которые надо учить первыми (Python, JavaScript, C#, Swift, Java)

2015-05-05, Как сделать exception message на русском?

Согласитесь, от муштры орфографии и пунктуации мало толка, если человек всё равно не может ничего толком написать.
...
«Умение не делать грамматических ошибок» фактически приравнивается в школьном обучении к «умению писать», между тем, первое не составляет даже 10% от второго.
(q)

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

https://ru.stackoverflow.com/questions/636546/Как-писать-псевдокод

Основу словаря любого алгоритмического языка составляют ключевые слова, смысл и способ употребления которых строго определен.

Отредактировано Лис (2019-12-03 06:03:06)

0

2

Материал Вершина
   Часть Исходящие рёбра это набор Рёбер

Материал Ребро
   Часть Вершины ребра это набор Вершин

абстрактный алгоритм обработки/обрабатывания для Некоего исполнителя и Некоей вершины
  ...

алгоритм обхода вершин дерева в глубину для Некоего исполнителя (далее Чудесный исполнитель) и Некоей вершины (далее Текущая вершина)
  для каждого Ребра (далее Очередное ребро) из набора Исходящих рёбер Текущей вершины
    для каждой Вершины (далее Очередная вершина) из набора Вершин ребра Очередного ребра
      если Очередная вершиная не совпадает с Текущей вершиной, то
        обойди вершины дерева в глубину с Очередной вершины, Чудесный исполнитель
  обработай/обрабатывай Текущую вершину, Чудесный исполнитель

Исполнитель Гусеница
   алгоритм сжирания (ранее обработки/обрабатывания) для Гусеницы (ранее Некоего исполнителя) и Вкусного листа (ранее Некоей вершины)
      реализован хтонически (в функции "sozhratx_vkusnyj_list" исполняемого файла "gusenitsa")
   алгоритм поедания целиком (ранее обхода вершин дерева в глубину) для Гусеницы (ранее Некоего исполнителя) и Вкусной ветки (ранее Некоей вершины)

Герой Прожорливая гусеница это Гусеница

Материал Дерево с корнем и ветками
  Часть Корень это Вершина

Объект Высокое дерево это Дерево с корнем и ветками

поедай целиком Корень Высокого дерева, Прожорливая гусеница

Кстати, транслитератор БудДена не работает на странице программирование-по-русски.рф/яролит.яргт/

Материал ~= struct в C++
Исполнитель ~= class в C++
Герой/Объект ~= new в C++

Мне только не нравится, что Высокое дерево это материал. Неправильно это как-то. На самом деле дерево - это Чудовище (Non player character, NPC), потому что оно Самостоятельно растёт. Спиленное высокое дерево таких проблем не имеет (после просушки). Спиленное дерево - это поверженное чудовище, и оно ещё может прорасти и восстать. А просушеное разделанное спиленное дерево теряет ветки на этапе разделки и превращается сначала в брёвна, а потом, возможно, в доски...

И гусеницу надо на белку заменить, обход в глубину на обход в ширину, а поедание на растекание. Тогда можно будеть "растечься мысью по древу".

Вершины и Рёбра - это не материалы. Это абстракции, или понятия.

Отредактировано Лис (2019-12-03 08:47:44)

0

3

Лис написал(а):

Герой Прожорливая гусеница это Гусеница

Можно в два предложения:
Белка это Герой.
Мысь это Белка.
Тогда нужно будет меньше ключевых слов для разных синтаксических структур.
И слово "Часть" тоже лишнее.

Отредактировано Лис (2019-12-03 10:17:53)

0

4

Очень тяжело воспринимать текст. Почему? Во-первых, самое главное, беспорядочный набор понятий разных областей.
Вершины и ребра - от графов, а корни - от деревьев.
Но вершины обычного дерева - это не то, что вершины графа.
Как итог вот такое сочетание кому угодно вырвет мозг:

Лис написал(а):

Часть Корень это Вершина

Во-вторых, нужно отказаться от идолопоклонничества:

Лис написал(а):

слово «алгоритм» происходит от имени хорезмского учёного аль-Хорезми.

В-третьих, очень странное сопоставление:

Материал ~= struct в C++
Исполнитель ~= class в C++
Герой/Объект ~= new в C++

Ну хотя бы Лис за прилагательные и местоимения взялся - уже огромное продвижение на лисцо.

Отредактировано MihalNik (2019-12-04 16:41:48)

0

5

MihalNik написал(а):

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

Такова реальность. Действительно, вершины дерева не совсем то же самое, что вершины графа.
И достоинством моего языка является возможность сопоставления различных терминов (через слова "далее" и "ранее").

MihalNik написал(а):

такое сочетание кому угодно вырвет мозг:

Лис написал(а):

Часть Корень это Вершина

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

Ок, ты пишешь, что слово "это" тут неправильное. Как тогда написать по-другому?

абстракция Вершина

Вершина графа это Вершина

Вершина дерева это Вершина

Дерево
  Особая вершина (далее Корень дерева (далее Корень)) это Вершина дерева

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

У меня в языке слово "это" имеет значение "является подклассом". Таким образом,
Вершина дерева это Вершина графа
MihalNik воспринимает слово "это" как операцию декларации тождественного равенства ("==").
Что тут можно сделать? На какие две разных синтаксических конструкции перейти, чтобы разделить эти сценарии использования?

[html]
абстракция <b>Вершина дерева</b> <span style="padding-bottom: 2px;background: url(http://mike.mchedlishvili.me/my-include … vyline.gif) repeat-x 100% 100%;">специализирует</span> абстракцию <b>Вершина графа</b>
[/html]

«Специализирует» потому что "Конкретизация", это ведь другое. Т.е. то же самое, но в этом случае неприменимо, так как тут конкретизации не происходит.

Вообще говоря, у меня два сценария уже были разделены:
"это" - специализация
"далее", "ранее" - синонимизация
но MihalNik-у этого не хватило.

Можно ещё добавить ключевое слово "есть" для операции инстанциирования:
Прожорливая гусеница есть Гусеница
Высокое дерево есть Дерево с корнем и ветками

Ну, или можно поменять местами:
"есть" - специализация;
"это" - инстанциирование.
Тогда:
Вершина есть абстракция
Вершина графа есть Вершина
Вершина дерева есть Вершина графа

Дерево с корнем и ветками
  Особая вершина (далее Корень дерева (далее Корень)) это Вершина дерева

Гусеница есть исполнитель
  сжирание (ранее обработка/обрабатывание) есть алгоритм (далее наставление) для Гусеницы (ранее Некоего исполнителя) и Вкусного листа (ранее Некоей вершины)

Прожорливая гусеница это Гусеница
Высокое дерево это Дерево с корнем и ветками

Надо какую-нибудь модель по-крупнее взять, чтобы больше текста получилось, и чтобы там внутри вычисления были. Тогда больше ньюансов выявится, всё станет нагляднее.

Отредактировано Лис (2019-12-05 03:44:25)

0

6

Лис написал(а):

Ок, ты пишешь, что слово "это" тут неправильное.

Речь шла про корень и вершину.

Лис написал(а):

MihalNik воспринимает слово "это" как операцию декларации тождественного равенства ("==").

С чего бы вдруг?

Вообще говоря, у меня два сценария уже были разделены:
"это" - специализация
"далее", "ранее" - синонимизация
но MihalNik-у этого не хватило.

Можно ещё добавить ключевое слово "есть" для операции инстанциирования:
Прожорливая гусеница есть Гусеница
Высокое дерево есть Дерево с корнем и ветками

Ну, или можно поменять местами:
"есть" - специализация;
"это" - инстанциирование.
Тогда:
Вершина есть абстракция
Вершина графа есть Вершина
Вершина дерева есть Вершина графа

Нельзя так просто поменять значения слова в естественном языке. Ничего не смущает?

Лис написал(а):

Надо какую-нибудь модель по-крупнее взять, чтобы больше текста получилось, и чтобы там внутри вычисления были. Тогда больше ньюансов выявится, всё станет нагляднее.

Для того, чтобы нейросеть "прозрела" нужно много примеров.

Отредактировано MihalNik (2019-12-05 07:49:08)

0

7

MihalNik написал(а):

Нельзя так просто поменять значения слова в естественном языке. Ничего не смущает?

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

0

8

Лис написал(а):

Во-вторых, в естественном языке можно "вкладывать в слова значения".

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

Отредактировано MihalNik (2019-12-05 08:13:24)

0

9

MihalNik написал(а):

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

Мне не ясно, что по-твоему тут с чем совпадает.

0

10

А значит "можно поменять местами"?

0

11

MihalNik написал(а):

А значит "можно поменять местами"?

Нет, не "значит". Поменял я местами, потому что так удобнее моему языковому чувству.

0

12

Есть императивные языки (сидим в чате с эн исполнителями, включая, возможно безымянный исполнитель "глобальное пр-во имён" и раздаём им команды).
Есть декларативные (описываем то, что имеем в виду, не говоря о том, как оно должно возникнуть).
В программировании они обычно вложены друг в друга почти как фрактал.
Отсюда надо плясать. Команду создать что-то обычно выполняет кто-то (фабрика) или анонимный исполнитель.

Код:
яйцо, яви гусеницу
дух леса, яви гусеницу
явись, гусеница
родись, гусеница
будь, гусеница

Изображать порождение словом "есть" неправильно (я демократически голосую против), но я боюсь, что Лис слишком тоталитарен.
Впрочем, как и все мы. В декларативных же языках нужно отличать "существует", от "является". Оба могут обозначаться словом "есть", но
является можно заменить словом "суть", а "существует" можно оставить за словом "есть" или сказать "имеется".

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

Отредактировано БудДен (2019-12-05 13:21:47)

0

13

(словом "есть" можно, наоборот, изображать уничтожение). Например, "Лис собрался есть кролика".

0

14

Меня смущает "направление действия" слова "суть".

Берёза суть Дерево
Дерево - суть Берёзы

Отредактировано Лис (2019-12-05 16:08:23)

0

15

Лаконичность и однозначность противостоят. Можно было бы как-то удлиннить (не знаю, как) или зафиксировать порядок слов.
Я не претендую на идеальность своего предложения, а всего лишь вношу в круг рассматриваемых некоторые короткие слова (а такие слова связки должны быть короткими - это достаточно важно). Но есть ещё слово "это".

Код:
Береза - это дерево

В лиспе, кстати, для утверждения типовой принадлежности объекта испольузется the:

Код:
(the tree x)

Что переводится примерно как "x (кстати являющееся деревом)" и может использоваться внутри предложения:

Код:
(chop-down (the tree x))

сруби дерево x (а если x - не дерево, то undefined consequences).

Отредактировано БудДен (2019-12-05 16:21:52)

0

16

Хотя если речь о берёзе и дереве, которые оба являются типами, а не конкретными объектами, то это в лиспе выражается как истинность выражения

Код:
(subtypep берёза дерево) 

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

Отредактировано БудДен (2019-12-05 16:21:04)

0

17

БудДен написал(а):

есть ещё слово "это".
Береза - это дерево

У меня так с самого начала и было, но MihalNik-у это демократически не понравилось...

0

18

Лис написал(а):

У меня так с самого начала и было, но MihalNik-у это демократически не понравилось...

Ну не надо привирать:

MihalNik написал(а):

Речь шла про корень и вершину.

точнее:

MihalNik написал(а):

беспорядочный набор понятий разных областей.
Вершины и ребра - от графов, а корни - от деревьев.

Что мешает построить вменяемое подобие, например, оставить дерево с ветками, в т.ч. стволом?
Разумеется, понятие корня/ствола и дерева избыточные, потому что на самом деле сводятся к какой-то ветке.
Просто Лис развел ООП-шный зоопарк, а потом его фантастические чудовища начали неконтролируемо скрещиваться.

Отредактировано MihalNik (2019-12-05 18:03:49)

0

19

Если я заменю слово "это" на слово "является" и скажу, что
Корень является Вершиной
что-то изменится?

Как надо написать правильно?

0

20

Лис написал(а):

Как надо написать правильно?

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

Отредактировано MihalNik (2019-12-05 18:16:22)

0

21

Узел дерева соответствует Вершине графа
Корневой узел дерева (далее Корень дерева (далее Корень)) является Узлом дерева

0

22

/* Чудовищный пример №2 */

Вершина графа (далее Вершина)
   Исходящие рёбра есть набор Рёбер графа

Ребро графа
   Первая вершина ребра (далее Первая вершина) есть Вершина
   Вторая вершина ребра (далее Вторая вершина) есть Вершина

Узел дерева (далее Узел) соответствует Вершине графа
   Исходящие ветви соответствуют Исходящим рёбрам

Ветвь дерева соответствует Ребру графа
   Первый узел соответствет Первой вершине
   Второй узел соответствет Второй вершине

Корневой Узел (далее Корень дерева (далее Корень)) суть Узел

Дерево
   Комель есть Корень

Герой деревьев это абстракция
   обработай/обрабатывай суть абстрактное наставление для Некоего героя и Некоего узла

/* Если неопределённая форма глагола - то это static
а если повелительное наклонение, то это member */

обходить дерево в ширину суть наставление для Некоего героя и Некоего дерева
   обходить дерево в ширину начиная с узла для Некоего героя, Некоего дерева и Комеля Некоего дерева

обходить дерево в ширину начиная с узла суть наставление для Некоего героя, Некоего дерева и Рассматриваемого узла
  обработай/обрабатывай Рассматриваемый узел, Некий герой
  для каждого Ребра (далее Очередное ребро) из набора Исходящих ветвей Рассматриваемого узла
      если Второй узел Очередного ребра (далее Следующий узел) не совпадает с Рассматриваемым узлом, то
        обходи дерево в ширину начиная с узла для Некоего дерева и Следующего узла, Некий герой

Белка является Героем деревьев
   растекайся по дереву (ранее обходи дерево в ширину) суть наставление для Белки и Дерева
   грызи орехи (ранее обработай/обрабатывай) суть наставление для Белки (ранее Некоего героя) и Некоего узла
      реализовано хтонически (в функции 'gryzi_orikhi' линкуемого файла 'belochka')

Мысь соответствует Белке

Кот учёный (далее Кот) соответствует Мыси

Баян это Кот
Дуб Лукоморья это Дерево

растекайся по дереву для Дуба Лукоморья, Баян

Отредактировано Лис (2019-12-05 22:02:35)

0

23

Лис написал(а):

Баян это Кот

Бедный кот.

0

24

https://ru.wikipedia.org/wiki/Кот_Баюн
Да, невежливо получилось...

0

25

Транслитератор починил, спасибо!

0

26

Лис написал(а):

слово «алгоритм» происходит от имени хорезмского учёного аль-Хорезми.


- Опять "сову на глобус" тянут. (и почему не "аль-каид-ми"... (?)))
Алгоритм - от тюркского "алга", гораздо более сходного по смыслу, поскольку "вперёд".

Отредактировано Сандро (2019-12-22 21:01:01)

0

27

Берёза - подвид широколиственных...
Лес - надвид "в-нём-растущих"...

0

28

БудДен написал(а):

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

Можно принадлежность сущности к типу записывать таким образом:

Код:
это х береза

0

29

А у меня он выглядит так пока что:

Код:
(* Утилиты для переводов кода - служат для перевода исходных текстов. 
  См. также LisScanner.НазначьНовоеИмяДляIdentifier и т.п. *)
модуль УтилитыДляПереводаКода;

использует ПЭК := ПереводыЭлементовКода;

перем
 (* нужна, чтобы в синт. дереве отличать случай ненайденной и пустой областей видимости *)
 нулеваяОбластьВидимости*: ПЭК.ИменованнаяОбластьВидимости;


(* ПереведиИмяМодуляЕслиНадо: если данное имя имеет русский или английский переод, то ПереведиИмяМодуляЕслиНадо вычисляет такой из этих двух переводов, 
   который существует (или должен существовать) на самом деле. 
   См. также LisGlobal.ПереведиИмяМодуляЕслиНадо - там сделано то же самое, но для компилятора. Пока что
   инфраструктура для рантайма и компилятора всегда совпадают, но для кросс-компиляции они должны различаться. *)
проц ПереведиИмяМодуляЕслиНадо*(базаПереводов: ПЭК.Модуль; конст имя: ряд из CHAR; перем имяНаВыбранномЯзыке : ПЭК.СтрокаИдентификатора);
перем м: ПЭК.Модуль; 
тело
 м := ДайЯчейкуМодуля(базаПереводов, имя);
 если м = НУЛЬ то 
  COPY(имя, имяНаВыбранномЯзыке)
 иначе
  если м.russianExists = 1 то
   COPY(м.ru^, имяНаВыбранномЯзыке)
  иначе
   ASSERT(м.russianExists = 0);
   COPY(м.en^, имяНаВыбранномЯзыке) кн кн кн ПереведиИмяМодуляЕслиНадо;
  
(* ДайОбаИмениМодуля возвращает русское и английское имена модуля. 
   м может быть НУЛ, тогда берётся «имя» *)
проц ДайОбаИмениМодуля*(м: ПЭК.Модуль; конст имя: ряд из CHAR;
 перем имя_ru : ПЭК.СтрокаИдентификатора; перем имя_en : ПЭК.СтрокаИдентификатора);
тело
 если м # НУЛЬ то 
  COPY(м.ru^, имя_ru); COPY(м.en^, имя_en)
 иначе
  COPY(имя, имя_ru); COPY(имя, имя_en) кн кн ДайОбаИмениМодуля;
 
 
проц ДайПереводыПсевдонима*(м: ПЭК.Модуль; конст псевдоним: ряд из CHAR; перем псевд_ru : ПЭК.СтрокаИдентификатора; перем псевд_en : ПЭК.СтрокаИдентификатора);
перем ПсевдРусскийЛи: BOOLEAN; пп: ПЭК.ПопулярныйПсевдоним;
тело
 ПсевдРусскийЛи := ПЭК.НеАнглийскийИдентификатор(псевдоним);
 если м # НУЛЬ то
  пп := м.популярныеПсевдонимы;
  цикл
   если пп = НУЛЬ то прерви_цикл кн;
   если ПсевдРусскийЛи и (пп.ru^ = псевдоним) или ~ПсевдРусскийЛи и (пп.en^ = псевдоним) то
    COPY(пп.ru^, псевд_ru); COPY(пп.en^, псевд_en);
    возврат кн;
   пп := пп.следующий кн кн;
 COPY(псевдоним, псевд_ru); COPY(псевдоним, псевд_en)
кн ДайПереводыПсевдонима;
 

проц ДайЯчейкуМодуля*(базаПереводов: ПЭК.Модуль; конст имя: ряд из CHAR): ПЭК.Модуль;
перем ИмяРусскоеЛи: BOOLEAN; м: ПЭК.Модуль;
тело
 ИмяРусскоеЛи := ПЭК.НеАнглийскийИдентификатор(имя);
 м := базаПереводов;
 цикл
  если м = НУЛЬ то возврат НУЛЬ кн;
  если ИмяРусскоеЛи и (м.ru^ = имя) или ~ИмяРусскоеЛи и (м.en^ = имя) то
   возврат м кн;
  м := м.следующий кн кн ДайЯчейкуМодуля;


(* ПереведиИмяМодуляИКомандыЕслиНадо: если данная пара из имени модуля и команды имеет русский или английский переод, то вычисляет для имён модуля и команды такие 
  из этих двух переводов, которые существуют (или должны существовать) на самом деле *)
проц ПереведиИмяМодуляИКомандыЕслиНадо*(базаПереводов: ПЭК.Модуль; конст имяМодуля: ряд из CHAR; конст имяКоманды: ряд из CHAR; 
  перем имяМодуляНаВыбрЯз: ПЭК.СтрокаИдентификатора; перем имяКомандыНаВыбрЯз : ПЭК.СтрокаИдентификатора);
 перем м: ПЭК.Модуль; 
 тело
  м := ДайЯчейкуМодуля(базаПереводов, имяМодуля);
  если м = НУЛЬ то
   COPY(имяМодуля, имяМодуляНаВыбрЯз);
  иначе
   если м.russianExists = 1 то
    COPY(м.ru^, имяМодуляНаВыбрЯз)
   иначе
    ASSERT(м.russianExists = 0);
    COPY(м.en^, имяМодуляНаВыбрЯз) кн кн;
  ПереведиИмяКомандыВМодулеЕслиНадо(м, имяКоманды, имяКомандыНаВыбрЯз);
 кн ПереведиИмяМодуляИКомандыЕслиНадо;

 (* Внутренняя процедура *)
проц ПереведиИмяКомандыВМодулеЕслиНадо(конст мод: ПЭК.Модуль; конст имя: ряд из CHAR; перем имяНаВыбранномЯзыке : ПЭК.СтрокаИдентификатора);
перем ч: ПЭК.ИменованнаяОбластьВидимости; ИмяРусскоеЛи: BOOLEAN;
тело
 COPY(имя, имяНаВыбранномЯзыке);
 если мод = НУЛЬ то возврат кн;
 ИмяРусскоеЛи := ПЭК.НеАнглийскийИдентификатор(имя);
 ч := мод.члены;
 цикл
  если ч = НУЛЬ то возврат кн;
  если ИмяРусскоеЛи и (ч.ru^ = имя) или ~ИмяРусскоеЛи и (ч.en^ = имя) то
   если ч.russianExists = 1 то
    COPY(ч.ru^, имяНаВыбранномЯзыке)
   иначе
    ASSERT(ч.russianExists = 0);
    COPY(ч.en^, имяНаВыбранномЯзыке) кн;
   возврат кн;
  ч := ч.следующий кн кн ПереведиИмяКомандыВМодулеЕслиНадо;

  
кн УтилитыДляПереводаКода.
тело
 NEW(нулеваяОбластьВидимости);
слово

(не до конца переведён, зато это настоящий код - часть ЯОС).

Отредактировано БудДен (2020-08-11 23:28:53)

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » конструирование языков » Как должны выглядеть тексты программ на русском? (тема не раскрыта)