frontend и backend компилятора

Переводим термины и придумываем новые, в т.ч. для ЯОС
Ответить
БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

frontend и backend компилятора

Сообщение БудДен » 22.07.20 21:44

Назвать как их?

Аватара пользователя
Лис [Вежливый]
Сообщения: 561
Зарегистрирован: 08.10.18 13:32

Re: frontend и backend компилятора

Сообщение Лис [Вежливый] » 23.07.20 03:04

Парсинг и кодогенерация (парсер и кодогенератор)
Анализ и синтез (анализатор и синтезатор)
Словозабор и кодоуклад (словозаборник и кодоукладчик)

Павиа
Сообщения: 136
Зарегистрирован: 23.05.19 21:28

Re: frontend и backend компилятора

Сообщение Павиа » 23.07.20 05:57

Передник и задник будем называть тексторез и кодоукладчик.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: frontend и backend компилятора

Сообщение БудДен » 23.07.20 13:05

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

Вы слишком революционны для меня. Я бы хотел быть более-менее понятным.

Как насчёт "фасада" для фронтенда?

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

Аватара пользователя
Лис [Вежливый]
Сообщения: 561
Зарегистрирован: 08.10.18 13:32

Re: frontend и backend компилятора

Сообщение Лис [Вежливый] » 23.07.20 18:33

> Как насчёт "фасада" для фронтенда?

А зачем? Как насчёт фронтенда для frontend-а ?

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: frontend и backend компилятора

Сообщение БудДен » 23.07.20 22:10

Тоже сойдёт, но вдруг есть что получше?

Аватара пользователя
Лис [Вежливый]
Сообщения: 561
Зарегистрирован: 08.10.18 13:32

Re: frontend и backend компилятора

Сообщение Лис [Вежливый] » 23.07.20 23:39

строит дерево разбора и, возможно, даже связывает его
Я смело выделю это в отдельный этап и назову его "переваривание" (Digestion - https://ru.qwe.wiki/wiki/Digestion).
Изображение

словозаборник -> перевариватель -> кодоукладчик

Слышал, программисты так и говорят: "кишки́ компилятора".

могло бы быть
ухо -> мозг -> горло
но программисты не говорят "мозги компилятора", и продукт компиляции не попадает с выхода на вход этого же компилятора.

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

У Мельчука, например, это "Смысл <-> Текст", стрелочки в обе стороны.

Павиа
Сообщения: 136
Зарегистрирован: 23.05.19 21:28

Re: frontend и backend компилятора

Сообщение Павиа » 24.07.20 06:28

Как насчёт "фасада" для фронтенда?
Точно нет. Перевод вещ сложная, дословно переводить нет смысла. А использовать, то чему есть устоявшеся норма. Вас не поймут.
Тут баланс нужен. Лучше всё же закладывать смысл, а не просто не пойми что.
Фасад -это штукотурка отделка. У компилятора её нет у сайта ещё с натяжкой.

440440
Сообщения: 37
Зарегистрирован: 20.12.19 22:35

Re: frontend и backend компилятора

Сообщение 440440 » 30.07.20 08:06

Парсер и кодогенератор. Парсер осуществляет разбор исходного кода - лексический (на уровне грамматики) и синтаксический (на уровне семантики).
Фасад - есть такой шаблон проектирования. В целом конечно фасад немного не то, по смыслу. Скорее именно генератор.
Последний раз редактировалось 440440 05.08.20 08:32, всего редактировалось 1 раз.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: frontend и backend компилятора

Сообщение БудДен » 30.07.20 21:45

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: frontend и backend компилятора

Сообщение БудДен » 26.01.21 22:28

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

Павиа
Сообщения: 136
Зарегистрирован: 23.05.19 21:28

Re: frontend и backend компилятора

Сообщение Павиа » 27.01.21 06:26

, но я не очень понимаю, равен ли синтаксический анализатор сумме лексического и грамматического, или тут происходит просто смешение разных систем обозначения частей компилятора.
Тут у вас ошибка. Правила грамматик делятся на синтаксические и лексические.
frontend и backend компилятора
Это абстрактные понятия, лучше названия давать конкретные. Поэтому модули называть конкретными и именами, а фронтэнд и бэкэнд оставить для имён папок.

Я бы оставил
Тексторез - лексер
Разборщик - парсер - грамматический анализ
Смыслоуловитель - семантический анализ

начальный этап -фронтэнд
конечный этап -бэкэнд

Над голова, тело хвост надо подумать.

Павиа
Сообщения: 136
Зарегистрирован: 23.05.19 21:28

Re: frontend и backend компилятора

Сообщение Павиа » 27.01.21 07:14

Подготовка - фронт
обработка - бэк
завершение - доводка

Подготовительный этап - основной этап - завершающий этап.
Стадия подготовки - стадия обработки - стадия доводки

Фронт и бэк вне конкуренции 5 и 3 букв.

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: frontend и backend компилятора

Сообщение БудДен » 27.01.21 10:36

Павиа писал(а):
27.01.21 06:26
, но я не очень понимаю, равен ли синтаксический анализатор сумме лексического и грамматического, или тут происходит просто смешение разных систем обозначения частей компилятора.
Тут у вас ошибка. Правила грамматик делятся на синтаксические и лексические.
Да, Вы правы. Я пытался взять терминологию из русского языка, но ошибся. Ветелинар - это тоже грамматическая ошибка. Значит, нужно пере-переводить грамматические анализаторы на синтаксические или парсеры. А лексические можно оставить.
Это абстрактные понятия, лучше названия давать конкретные. Поэтому модули называть конкретными и именами, а фронтэнд и бэкэнд оставить для имён папок.
В ЯОС нет папок (все исходники лежат в одной директории, так истерически сложилось), но там есть модули и файлы с модулями: *Frontend*.Mod, *Backend.Mod*, *SemanticChecker*.Mod и т.п.


Я бы оставил
Тексторез - лексер
Разборщик - парсер - грамматический анализ
Смыслоуловитель - семантический анализ
Разборщик недостаточно специфичен, в остальном интересно, но сейчас обсуждается более высокий уровень.
Пока примерно так:

Фронтенд = Лексер + Парсер (но это не точно)
Середина = Смыслоуловитель (SemanticChecker - на самом деле и смыслоуловитель, и semanticChecker неточно передают происходящее - в лисокомпиляторе он разрешает имена в "символы", проверяет правильность смыслов и даже делает некоторые оптимизации) + Генератор промежуточного кода
Бекенд - преобразует промежуточный код в платформо-специфичный

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

И самое главное! Я не знаю всех нюансов, может вдруг оказаться, что где-то чёткость разбиения на эти этапы нарушена, тогда вообще лучше называть Этап1, Этап2, Этап3, чтобы названия были в явном виде условными, а не вводящими в заблуждение.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: frontend и backend компилятора

Сообщение БудДен » 27.01.21 11:02

В общем, похоже, что надо описать структуру компилятора и прочитать все исходники, тогда будет ясно, какая часть чем занимается и можно будет лучше придумать перевод. Но пока всё же переводим frontend как голову, а backend - как хвост. Я практически уверен, что эти названия условны. Например, в лисокомпиляторе смыслоуловитель не входит во frontend, а вот тут - входит. Если искать картинки, то большинство из них всё же относят семантический анализатор к фронтэнду. Это кажется мне странным, ведь если цель выделения фронтэнда и бекэнда состоит в смене не только платформы, но и входного языка, то семантический анализатор для разных языков будет иметь много общего (хотя и не всё). Видимо, картинки описывают компилятор одного языка для нескольких платформ, а не компилятор нескольких языков для нескольких платформ. Лисокомпилятор сейчас понимает только АО, но в нём существовали фронтэнды для Явы и C# (возможно, что я даже сам часть из них выкидывал. Т.е. у него точно должно быть не меньше трёх частей - сменная голова, тело и сменный хвост.

Список модулей лисокомпилятора:

Код: Выделить всё

 LisScanner.Mod LisУтилитыДляПереводаКода.Mod LisSyntaxTree.Mod 
 LisОтлПеч.Mod LisGlobal.Mod LisParser.Mod LisFormats.Mod 
 LisFingerprinter.Mod 
 LisГенЗагСлов.Mod LisПереводчик.Mod LisPrintout.Mod LisSemanticChecker.Mod 

 LisFormats.Mod LisSections.Mod LisBinaryCode.Mod LisFrontend.Mod LisBackend.Mod 
  LisRasshirenieOpcijjKompiljatora.Mod LisTextCompiler.Mod LisOberonFrontend.Mod 

 LisAssembler.Mod LisIntermediateCode.Mod LisInterfaceComparison.Mod LisTextualSymbolFile.Mod 
 LisIntermediateBackend.Mod LisCodeGenerators.Mod LisAMD64Assembler.Mod LisGenericObjectFile.Mod 

 LisAMDBackend.Mod LisARMInstructionSet.Mod LisARMBackend.Mod LisCompiler.Mod 

Аватара пользователя
Сандро
Сообщения: 86
Зарегистрирован: 07.10.18 14:39

Re: frontend и backend компилятора

Сообщение Сандро » 04.02.21 21:44

БудДен писал(а):
26.01.21 22:28
Хм, может надо "голова, тело, хвост"?
Я у себя чаще всего пишу "шапка, тело, тапки"
Вот пробная версия внешнего вида редактора кода: (там как раз "шапка, тело, тапки)
Если пощёлкать по стрелочкам - увидим свёртываемость частей кода...

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: frontend и backend компилятора

Сообщение БудДен » 04.02.21 23:15

Пишет "the debug view was expired"

Тут не по вертикали процесс идёт, а по горизонтали. Уже сделал голову и хвост, получилось
одно из сообщений об ошибке "не удалось подключить голову". "Ошибка хвоста" тоже забавно звучит.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: frontend и backend компилятора

Сообщение БудДен » 10.05.21 13:25

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

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: frontend и backend компилятора

Сообщение MihalNik » 10.05.21 16:34

БудДен писал(а):
10.05.21 13:25
Вероятно, что слово "кодогенератор" лучше, чем "хвост", хотя оно намного длиннее. Возможно, их можно использовать как синонимы, где хвост будет применяться внутри, а кодогенератор - во внешнем контексте.
Так тут длинная часть это генератор.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: frontend и backend компилятора

Сообщение БудДен » 10.05.21 16:35

кодород? В общем, я уже забил на это, оставил "хвост".

Ответить