Русскоязычное программирование

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

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


Вы здесь » Русскоязычное программирование » предложения работы » Написание комментариев для НЯ-компилятора


Написание комментариев для НЯ-компилятора

Сообщений 31 страница 60 из 63

31

> Ещё потыкав 3-4 исходника MihalNik заметил что язык сокращается форм. методами примерно на 10-20%
Ага, а затем, после расшифровки всех аббревиатур и добавления комментариев он растянется на 100-200%. А вообще в наше время комментарии считаются злом, а благом считается говорящий код. Во многом я с этим согласен.

0

32

Технический писатель Delphi сказал что имена методам и функциям должны состоять как правило из 1 слова, а как исключение из 2-х.

qualident - Квантиль.
sym/ТекущаяЛексема - Символ

Магических чисел не должно быть.
Поэтому err(100) - стоит прокомментировать.
Лучше конечно макросы I18n, но на их применения нет сил.

obj.КлассИдентификатора/obj.mode - obj.сорт  слово mode относится к  obj а не к Идентификатору.
(obj.КлассИдентификатора = КлассИдентификатораМодуль)  - ( obj.сорт=Модуль)

КомпиляторЛексер - слово компилятор тут лишнее. Тексторез

0

33

Павиа написал(а):

Тексторез

Буквомес, Словодёр, Фразотёрка

0

34

А вообще в наше время комментарии считаются злом, а благом считается говорящий код. Во многом я с этим согласен.

А я категорически против такого подхода. Потом люди начинают искать толмача чтобы посмотреть как там устроен Компонентный Паскаль.

0

35

utkin
Текст он плоский, как не крути. А взгляды на проблематику разные.  Я обычно это кубом представляю. Кому-то нужно  иерархическое представление, кому-то напротив фукциональное, а кому-то предметно ориентированное. Первое нужно начальнику, второе нужно разработчику, третье нужно тестеру.
Плюс человек смотрит на код через призму своих знаний.
Поэтому в крупных фирмах стараются делать перекрёстное коде-ревью. Берут разработчиков модулей и перекрёстно проверяют. Каждый проверяет чужой код.  Если кому что не понравилось, то другой должен исправить.

Учебники никто не отменял.  К примеру я несколько лет разбирался как сделать Гауссово размытие картинки, вернее пытался понять как устроен алгоритм. Потому что ни в одном учебники не написано алгоритм проектирования такого рода фильтров: там используется аппроксимация Паде, для расчёта коэффициентов БИХ фильтра. И да, что-бы фильтр был устойчивым он должен быть рассчитан в Z области, ни в во временной, ни в частотном пространстве Фурье, ни в области Лапласа.

Как и все я считаю что комментарии стоит оставлять.  Комментарии должны пояснять, он не должен повторять написанное он должен добавлять знания. Если это шаблон откуда этот шаблон. Если алгоритм, то откуда теория проектирования. Если не хватает выразительности, то стоит дать разъяснения.
Что касается расписывания сложных слов простыми. То это не вопрос комментариев - это вопрос архитектуры, а вернее грамотного разделения задачи на объекты.  Грамотно разбив задачу на объекты можно описать их методы односложными словами. Если у вас не получается, то это проблема архитектуры.

0

36

Оказывается, есть такое слово qualident в объявлении о языке: http://www.oberon.ch/pdf/CP-Lang.pdf, но оно является сокращением для Qualified identifier.

0

37

> Лучше конечно макросы I18n, но на их применения нет сил.
Вообще-то есть, например, "#Dev:NotImplementedIn", но авторы языка пожлобились сделать нормальную сигнатуру для метода err. Может быть, у них на то были поводы (представим себе чёрный ящик с одним светодиодом, который морзянкой передаёт код ошибки).

0

38

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

0

39

Павиа написал(а):

Технический писатель Delphi сказал что имена методам и функциям должны состоять как правило из 1 слова, а как исключение из 2-х.

Мне думается, что это ООП-бредни. Для не ООП добавляем ещё одно существительное - имя типа нулевого аргумента. И уже становится 2-3. Добавим имя модуля - становится 3-4. А где 3-4, там и сколько угодно. В лиспе полно функций, состоящих из большого количества слов и я должен сказать, что код на лиспе, как правило, достаточно понятен. Компилятор SBCL на порядок сложнее, чем компилятор КП, но сначала я вообще ничего не мог понять в компиляторе КП. Теперь кое-что начинает проясняться. За это же затраченное время в компилятор SBCL я уже вносил правки. Причина - именно в том, что в КП следуют этому идиотскому правилу, а в лиспе называют вещи своими именами. Вообще, лисп - это язык здравого смысла. Он не пытается насиловать предметную область, загоняя её в какие-то рамки типа ООП, ФП и прочих "П".

Отредактировано budden (2018-11-01 17:35:30)

0

40

И еще. Мне как новичку сложно разобраться. В каком месте лежат исходники компилятора Компонентного Паскаля? Вот я во Фри паскале ковырялся, все там ОК. Такая там классическая структура. А где исходники вот Компонентного Паскаля? Задача простая как колобок - сделать вот как в обычном паскале не чувствительность к регистрам.

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

Здорово. Но Лисп это же в основном на иглише. А вот например, как это выглядит в 1С:

ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент

Отредактировано utkin (2018-11-01 17:52:48)

0

41

> ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент
И что, разве так непонятно? Причём здесь инглиш-не инглиш? Важно, что количество слов существенно больше 1. А вот если бы его назвали "Процессор", было бы непонятно. А КП так всё и называется - вне контекста не поймёшь никак.

> И еще. Мне как новичку сложно разобраться.
Вступая на путь изучения КП, нужно сразу приготовиться к лишениям. Самое простое - это скачать какую-то сборку, запустить её, зайти в пункт меню "справка" и прочитать все туториалы. Для нашего времени тратить столько времени на ознакомление с предметом - это дикость, но у них вот так вот. Главное, чем я отличаюсь от КП-шников - их это устраивает и они терпят. А я готов терпеть только временно. Это чтобы вы не подумали, что я принимаю все их недоделки как норму :) Всё, что там делается, для современного пользователя неинтуитивно. Хотя иногда в их способах делать вещи есть свой цимус.

> Задача простая как колобок - сделать вот как в обычном паскале не чувствительность к регистрам
Он так сломается, ведь в нём Ab и AB - это разные идентификаторы. Т.е. случайная наперёд взятая программа перестанет работать после вашего преобразования с большой вероятностью. Если вас ужасает вид ключевых слов капслоком, то я адаптировался так: вече.программирование-по-русски.рф/viewtopic.php?f=2&t=22.

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

И да, в нём уже есть идентификаторы procedure, Procedure, pointer, record, array,  и прочая :) Т.е. он сломается не "если не повезёт", а совершенно точно и сразу.

Отредактировано budden (2018-11-01 19:47:52)

0

42

разве так непонятно?

Так понятно, но избыточно.
Потому что:
ПроцессорВывода
это Выводитель
а
РезультатКомпоновкиДанных
это СкомпонованныеСобранныеДанные
ВТабличныйДокумент
это в таблицу
а всё вместе
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент
русским языком это просто ВыводящийТаблицы или Таблицезаписыватель или Таблицеписец

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

Самое простое - это скачать какую-то сборку, запустить её, зайти в пункт меню "справка" и прочитать все туториалы. Для нашего времени тратить столько времени на ознакомление с предметом - это дикость, но у них вот так вот

А я открыл исходники и по мне так их можно сразу править :rolleyes: Надо пойти к budden'у на работу, на пару выходных для начала.

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

Названия модулей взяты так, чтобы не нарушить традиции оригинала (см. исходные названия)

Этот подход не сочетается с русским языком. См. 1С и оды любви к нему. Далее - в английском не идут существит. подряд, а первые становится прилагат-ыми.
Поэтому там КомпиляторскийЛексер или ЛексерКомпилятора, но что Компилятора и так понятно, как и что других лексеров там просто нет. Поэтому просто Лексер.
А если не нужен посыл за определением в словари, книги и латинский язык - то Знакоразбор.

Отредактировано MihalNik (2018-11-01 20:33:43)

0

43

И что, разве так непонятно?

Да, но таких переменных там может быть с десяток. Они отличаются там немного, типа

ПроцессорВыводаРезультатаКомпоновкиДанныхВШапку
ПроцессорВыводаРезультатаКомпоновкиДанныхВПодвал

И это реально вырвиглазно выглядит в коде.

Причём здесь инглиш-не инглиш?

Инглиш слова инопланетянские и не несут других смыслов. Поэтому их абракадабра воспринимается норм.

А вот если бы его назвали "Процессор", было бы непонятно.

Конечно. Потому что назвать нужно было как-нибудь типа: Список_с_товарами или вообще Прайс_лист. Или Список_Контрагентов. Поэтому и нужны комментарии.

Вступая на путь изучения КП, нужно сразу приготовиться к лишениям. Самое простое - это скачать какую-то сборку, запустить её, зайти в пункт меню "справка" и прочитать все туториалы.

Ну я еще не настолько там КП знаю, чтобы сделать такие выводы. Пока просто все непонятно и нет нормального объяснения, указателя. То есть это я мог просто тупо не найти в Интернете. А оказывается вон оно что.

Он так сломается, ведь в нём Ab и AB - это разные идентификаторы.

Не, идентификаторы всегда распознаются в другом месте. В общем я знаю рецепт этой магии.

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

Ну, если не получится, я никому ничего не скажу :). А получится буду гордый как павлин.

И да, в нём уже есть идентификаторы procedure, Procedure, pointer, record, array,  и прочая  Т.е. он сломается не "если не повезёт", а совершенно точно и сразу.

Значит требуется переименование. Тут уже другая проблема.

РезультатКомпоновкиДанных

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

ВТабличныйДокумент
это в таблицу

Правильно в 1с она называется табличная часть это такой элемент формы, типа делфийского DBGrid. Обычно туда или оттуда строки пишутся в БД после небольшой обработки (типа авторасчета суммы из количества и цены).

русским языком это просто ВыводящийТаблицы или Таблицезаписыватель или Таблицеписец

Что также не отражает смысл. Смысл отражают те данные, которые пишутся в таблицу. Именно это и должно быть в имени переменной. Просто потому что это стандартная операция и Результат компоновки данных практически всегда пишется в Табличную часть формы. То есть это и так понятно без самого имени просто по применяемым к переменной операциям.

А я открыл исходники и по мне так их можно сразу править

И я так думал... Но тут какая-то философия. Она может и правильная если заморачиваться. Но просто результат хочется здесь и сейчас "а распятье оставь на потом".

0

44

ПроцессорВыводаРезультатаКомпоновкиДанныхВШапку
ПроцессорВыводаРезультатаКомпоновкиДанныхВПодвал


И это реально вырвиглазно выглядит в коде.

Потому что нужно хотя бы знание разных частей речи:
ВыводящийВШапку
ВыводящийВПодвал

Инглиш слова инопланетянские и не несут других смыслов. Поэтому их абракадабра воспринимается норм.

Они несут другие смыслы при любом пересечении областей.
Программисты: слова инопланетянские - называем что хотим
Бухи: слова инопланетянские - называем что хотим
Юристы: слова инопланетянские - называем что хотим
Потом эта компания друг друга просто не понимает.

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

Это частый жаргоный сленг 1совцев.

Это не жаргон это не владение русским языком. Замена одной части речи на другую.
Это проблема не 1С-овцев а программистов вообще. Потому что английский язык этому никогда не научит.

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

Что также не отражает смысл. Смысл отражают те данные, которые пишутся в таблицу. Именно это и должно быть в имени переменной.

Этого же нет в приведённом контексте. Что делает Таблицеписец мы по нему просто не знаем, но он от этого он не перестанет вып. свою функцию.

Отредактировано MihalNik (2018-11-01 21:15:39)

0

45

ВыводящийВШапку
ВыводящийВПодвал

Так условно разделяется форма. Шапка это типа заголовка. В середину обычно помещается таблица. А подвал это типа футера в веб-страница - низ или зданица формы.
По такой схеме построены большинство документов - форм для заполнения в 1С.
http://v8.1c.ru/o7/201310sale/%D0%A0%D0%A2%D0%A31.png
Вот посмотрите, типично. Сверху обычно все основные настройки, потом таблица, потом всякие подписи, комментарии и пр.
Шапка и подвал это попытка как-то переиначить header и footer.

Потом эта компания друг друга просто не понимает.

Ну да, это тоже есть.

Отредактировано utkin (2018-11-01 20:52:42)

0

46

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

Шапка это типа заголовка. В середину обычно помещается таблица. А подвал это типа футера в веб-страница

Мы тут все, скорее всего, это знаем.

Отредактировано MihalNik (2018-11-01 21:02:03)

0

47

За сегодня расшифровал и переименовал порядка 10 объектов, в т.ч. по просьбам радиослушателей - НяЛ в НяЛексер. Теперь надо ещё успеть отработать часы. В парсере сейчас 38 англоязычных и 12 русскоязычных. В лексере - 8 и 1.

Отредактировано budden (2018-11-01 21:46:38)

0

48

27 из 40 процедур модуля НяПарсер переименованы. Правда, это всего лишь 1 модуль из где-то 7, и в нём ещё до сотни констант, из которых смысл более чем половины неясен.

0

49

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

А я открыл исходники и по мне так их можно сразу править

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

По сути-то перевод исходников - не самоцель. Нужно сделать исходники понятными, и я их заодно перевожу.
Если они кому-то уже понятны и он может сразу внести нужные изменения, то и документировать нет нужды.

Или вы имеете в виду, что они настолько ужасны, что их сразу нужно править?

0

50

budden
Исходники просты и понятны. И можно вносить изменения. Но стиль написания мне не нравится.

0

51

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

Или вы имеете в виду, что они настолько ужасны, что их сразу нужно править?

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

исходники настолько вам понятны

См. выше:

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

потыкав 3-4 исходника


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

язык окращается форм. методами примерно на 10-20%

Конкретно эти исходники, видимо, поболее.

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

внести нужные изменения

Тут вопрос о характере этих изменений. Одно дело - кодировка или синтаксис, совершенно другое - семантика языка. Русификация тоже имеет разные степени.

Нужно сделать исходники понятными

а) Комментарии к каждой строке
б) Замена ключевых слов на русские или условные знаки
в) Замена идентификаторов на русские

Отредактировано MihalNik (2018-11-02 20:13:54)

0

52

Ну я смотрю, тут монстры написания компиляторов собрались  o.O

Тогда могу сразу озадачить желающих на более интересных условиях :) Хотя скидка на патриотизм всё равно будет обсуждаться.

Вот одна нитка из клубка (там постановка задачи).

https://zx.oberon2.ru/forum/viewtopic.php?f=2&t=415

В файле System\Mod\Meta.kp есть тип Item, который уже может хранить "любое значение" (или почти любое - я не смотрел так подробно).
Нужно добавить в компилятор встроенную функцию (я бы назвал это макросом или специальным оператором, если бы это был лисп) ITEM( x ),
которая для любого выражения создаёт ITEM с этим объектом. Соответственно, по ссылке приведены разные возможные подходы.

Но я думаю, нужно действовать по аналогии с уже существующими подобными функциями, ENTIER, LONG и т.п.

0

53

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

скидка на патриотизм всё равно будет обсуждаться.

Мне кажется, что budden не русский, а представитель горячих южных парней (турки, грузины, горцы). Другая ментальность - пока нож в печень не всунешь - не понимают.

0

54

Лис, никто же не запрещает никому свои предложения)

0

55

Да, два раза зарекался иметь дело с Лисом, и правильно зарекался. Для дальнейших обсуждений прошу на вече.

0

56

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

Да, два раза зарекался иметь дело с Лисом, и правильно зарекался.

Неа.

Смотри, текущая ситуация:
1) ты страдаешь
2) ты занимаешься пафосным превозмоганием
3) ты несешь свои страдания другим разумных
4) после этого ты на других обижаешься

Желательная ситуация:
1) ты перестаёшь страдать, и всё у тебя становится хорошо
2) вместо занятий пафосным превозмоганием, ты черпаешь свою силу и славу из других соображений
3) другим разумным ты начинаешь делать добро
4) после этого становится хорошо не только тебе, но и всем вокруг тебя.

Я могу предложить план по переходу из текущего состояния в желательное:
(вообще избавлением от страданий буддизм традиционно занимается,
но раз ты яростно православный, то нужно исповедоваться святому отцу)
- нужно найти хорошего психолога.
- найти источник твоих страданий (жена тебя что-ли пилит, что ты ничего в жизни не добился?)
- поработать с этим

Мне кажется, ситуация должна улучшиться.

Отредактировано Лис (2018-11-03 07:03:51)

0

57

но раз ты яростно православный, то нужно исповедоваться святому отцу)

Но это все равно не поможет. Иначе не было бы профессии психолога, психиатра, психотерапевта и других психов.

Отредактировано utkin (2018-11-03 07:09:05)

0

58

Павиа, спасибо за запрос на слияние, но я его только сейчас заметил, а с тех пор уже поменялся и Mark, и комментарии к Object Modes уже совсем другие.
По остальному могу сказать, что константы типа comma пока менять слишком страшно, т.к. они встречаются во многих файлах. Поменять только в одном - станет хуже.
Поэтому я пока ограничился тем, что прокомментировал в одном файле (а надо бы во всех) те значки, которые непонятны.
И всё в целом это назвал "классы лексем", а не "символы".

По остальному:

Код:
 (* object modes *) -  (* сорта объекта*)
mode - сорт - может быть, потом переведём, но пока не совсем понятно, что это
fld - поле - это пока и так понятно
link - ссылка  - тоже
(* reinsert *) - (* подстановка *) - от перевода не становится понятнее, а тогда зачем переводить? 
Insert - Вставь - само слово понятно, а вот что и куда вставь - непонятно.
InsertField - ВставьПоле - то же.
Init - Подготовься - потом сделаем как один из вариантов, сейчас пока и так ясно
BaseTyp - ОсновнойТип - на мой взгляд, это БазовыйТип, но всё равно и так ясно
leaf - крайняя - встречается во многих файлах
root - корень - 
vis - предписание - насколько я понимаю, это ОбластьВидимости. Почему предписание?
Mark - Засеки - это я уже как-то иначе назвал за это время. Вот как: ВставьЗнакОшибкиВИсходник
FindField - НайдиПоле - тоже очевидно, но неясно, где это поле нужно искать. 


Т.е. методически у нас нет задачи перевести отдельные слова, тем более простые. У нас есть задача расшифровать смысл.
Например, я не смог понять, что такое IProc, но мне подсказали, что это обработчик прерывания. Вот такого рода знания
ценны.

Просто переводить слова из простого словарного запаса английского пока что не нужно - это всегда успеем.
Пока что МихалНик согласился поработать над НяД.kp, посмотрим, что выйдет.

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

Давайте лучше, если хотите предложить варианты, то делайте запросы на одну замену или просто пишите (лучше на "вече").
Сейчас мы работаем по возможности только над внутренними (неэкспортированными) процедурами модулей, да и то, мы
их скорее пока будем больше комментировать, чем переименовывать.

Если хотите покомментировать, я буду только рад (например, файл Фс). А перевод оказался делом тонким, не обижайтесь, пожалуйста!

Отредактировано budden (2018-11-06 22:49:06)

0

59

vis  - это сокращение от var is - определяет вид переменной: постоянная, константа, параметр, вводная, выходная.
var par const, out, in
Примеры:
var a:Integer;
Out a:Integer;
Так как эта характеристика переменной пишется перед я использовал приставку пред.
Хотя в КП она используется не ограничивается только выше озвученными словами, там есть и те которые пишутся после.  И флаги локальная переменная, глобальная или из заголовка функции(параметр)

Почему предписание, а не вид, род, сорт?  У меня просто закончились русские слова.
Вид - цел32, и тд.
Род- type
Сорт - целое, плавающей точкой, массив, структура, функция

Отредактировано Павиа (2018-11-07 06:42:26)

0

60

ВставьЗнакОшибкиВИсходник - это неверно.
mark - метка или лучше заклалка используется в опережающем чтении.
Mark - функция. Засеки или заруби на носу. ;)
В языке паскаль и в КП есть правила которые  не подчиняются LR(1) парсеру. Для правильной группировки лексем в нетерминальной символ недостаточно хранить текущую и следующую лексему. Нужно хранить 2-3. Но это бы замедлило бы разбор. Поэтому вместо этого используют опережающее чтение, грязный хак.

Типичный случай
Type PNode: ^TNode; //1
TNode=record //2
Next:PNode;
End;

В строке 1 TNode ещё не объявлен парсер должен проскачить точку с запятой пробелы комментарии и проверить следующую лексему. Если она совпадает то ок, а иначе выдать ошибку.

Таких случаев много. Но я у себя неиспользую такой механизм. Больше обхожусь якорными символами anchors.

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

FindField - НайдиПоле - тоже очевидно, но неясно, где это поле нужно искать.

Михаил уже говорил одно дело перевод другое рефакторинг. И в третьих что бы понять надо пропустить через себя. Каждый видит по своему у каждого свой уклад мыслий. Поэтому я ии не надеялся что вы поймёте.

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

FindField - НайдиПоле - тоже очевидно, но неясно, где это поле нужно искать.

Где искать вполне очевидно. Поле есть только у структур и объектов. В языке КП - я так понимаю есть только компоненте. Поэтому поиск будет в компоненте.

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

mode - сорт - может быть, потом переведём, но пока не совсем понятно, что это

У каждого нетерминального правила есть свой объект. Этот объект это элемент дерева AST.
Для примера SimpleStatement - простая фраза.
Простая фраза может содержать одну из 8 дочек. Цикл for, цикл repeat, goto, if и тд.
Вот mode определяет какая дочка прикреплена.
Помимо дочки там ещё есть поля для дочек которые могут пересекаться(иметь одинаковые имена)

Отредактировано Павиа (2018-11-07 08:07:52)

0


Вы здесь » Русскоязычное программирование » предложения работы » Написание комментариев для НЯ-компилятора