OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 23:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 04 Июнь, 2021 01:31 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Уже многие придумали варианты перевода ключевых слов Оберона на русский язык. А давайте на минуту представим себе, что будет, если сделать такой вариант перевода, который является надмножеством ключевых слов КуМира. ШАЯ - язык, используемый в КуМире, благословлён даже для ЕГЭ и он, видимо, используется. Как я это понял? По количеству просмотров на ютьюбе:

https://www.youtube.com/results?search_ ... 0%B8%D1%80

Первый ролик выдаёт 100 тыс. просмотров за 8 лет. Для сравнения, лучший (русский) ролик по Оберону, который я смог найти, от Ивана Денисова - 2000 просмотров за ~4 года, вот он: https://www.youtube.com/watch?v=0EHa2V0WUYc

Думаю, эти цифры говорят сами за себя.

Я уже успел помедитировать над тем, насколько это возможно. С точки зрения возможностей языка, в КуМире есть многомерные массивы с границами, начинающимися не с нуля. В обычном Обероне такого нет, но в A2 есть мат. массивы. Они хотя бы многомерные, но индексы тоже вроде только с нуля. Здесь явно потребуется допиливание, но это не страшно - можно расширить Оберон (тем более активный, который на звание девственницы уже давно не претендует).

Проблему с многословными идентификаторами вроде сочли отсутствующей - нужно немного допилить парсер.

По семантике я не нашёл существенных отличий. Там есть ограничения на присваивание параметрам, но это всё решается путём транспиляции (пишется конвертер кода, добавляющий новые переменные, чтобы код на Обероне стал соответствовать правилам ШАЯ).

Наиболее неприятное из того, что я на данный момент осознал - это порядок слов в объявлении массивов - он отличается от Оберона кардинально:

Код:
цел таб имяПеременной[границы]


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

Что делать? Я пока не додумал, но слёту приходит на ум несколько вариантов:

  • транспилятор с ШАЯ на Оберон
  • фронтэнд ШАЯ для компилятора Оберон
  • транспилятор с Оберона на ШАЯ++ (позволяет написать ЯОС на ШАЯ++)
  • модификация Оберона так, чтобы он стал надмножеством ШАЯ

Естественно, все эти варианты даны в парадигме лидерства Оберона - другие варианты как-то даже неинтересно рассматривать.

В конечном итоге, получим Кумир++ - т.е. операционную систему, написанную на языке, являющемся расширением КуМира. Поскольку в ЯОС есть и компилятор, и интерпретатор, и гуй, и драйвера, и tcp/ip, и богатый текст, и IDE, и даже веб-браузер с тетрисом, появляется возможность в старших классах на достаточно маленьком и простом коде углубляться в любой аспект программирования из представленных. При быстроте сборки ЯОС школьники могут спокойно сделать свою модифицированную операционную систему, внеся изменения в ядро, в течение одного 45-минутного урока, и опробовать её.

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

Но если сделать ЯОС на ШАЯ++, то это будет наведением моста сразу между несколькими берегами: для школьника возможность погрузиться в профессию не выходя за рамки кумира, для страны - квалифицированные кадры сразу по выходе из школы, для оберон-сообщества - совершенно новый уровень интереса к их технологии.

Другое дело, не повис бы мостик в пустоте. Ваши мысли, господа?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Июнь, 2021 10:14 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Думаю, что КП с русским синтаксисом достаточен, специально наводить мосты к Кумиру - растрата драгоценных ресурсов.
Кумир есть в ЕГЭ - вот и весь его гандикап.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Июнь, 2021 12:03 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Моя точка зрения, что отказ от мостика Оберон-Шая - это не только экономия ресурсов, но и отказ от источника ресурсов.

Илья, ну это по сути дела пока что только мой ресурс, а мой проект Вы вообще считаете лишним, т.е. не должно быть жалко, если я вместо одного лишнего буду делать другое лишнее. Хотя, честно сказать, на Вашу поддержку я в первую очередь рассчитывал. КП или A2/ЯОВ - это вопрос отдельный. Гандикап по исходным данным - да, есть в ЕГЭ, а по фактической популярности - 50x. Судя по количеству просмотров, КуМир массово внедрён в учебный процесс. Где подобные ролики по оберонам и где сотни тысяч просмотров? Или я не так меряю? Тогда как мерять? Я пытался выяснить, в какой доле школ используется КуМир - но узнать не смог. Кушниренко, к примеру, этого не знает, я спрашивал. Поэтому даже нет смысла спрашивать, в каком количестве школ используется Оберон - сравнить так не получится. Сравнение по просмотрам роликов считаю достаточно объективным.

Есть веб-версия ШАЯ с исполнителем "Робот", она людям нравится и они пишут комментарии:

https://pikabu.ru/story/web_versiya_sre ... 4#comments

Она весьма простая, всего 1600 строк на JS. Она многого не может из того, что может КуМир, но даже она востребована. Т.е. первая идея была портировать с JS на ЯОС, но потом я стал думать дальше и понял, что тут больше вариантов и нужно глубже копать.


Последний раз редактировалось budden Пятница, 04 Июнь, 2021 13:11, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Июнь, 2021 12:16 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
По синтаксису массивов я думаю можно просто сделать альтернативу, чтобы формально соответствовать определению ШАЯ, но для серьёзных случаев навязывать порядок слов из Оберона. Т.е разрешить несколько вариантов:

Код:
цел таб Имя[1..5,0..8]  | синтаксис ШАЯ
таб 5 из цел | синтаксис Оберона
таб [1..5,0..8] из цел (* шайский по смыслу массив, порядок слов Оберона *)


При этом
Код:
укль на моя запись таб Имя[0..5] (* так нельзя *)
таб [1..5] из укль на моя запись (* а надо так *)


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Июнь, 2021 12:34 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Последняя вещь, которая мне не нравится - это типы цел и вещ. На самом деле, единственный тип цел, который имеет смысл - это integer из лиспа, число неограниченной точности. Для низкоуровнего программирования, каковым является работа с числами в обероне (это машинные числа, а не математические) тип цел без указания разрядности сразу делает программу непригодной даже для арифметики, потому что мы не знаем, для каких чисел она правильно посчитает а + 1. Т.е. только цел32, цел64 и т.п. Но для учебного языка нужно именно цел.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Июнь, 2021 12:37 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
понял ещё одни грабли: в обероне больше ключевых слов, поэтому идентификатор ШАЯ может совпасть с ключевым словом Оберона. Т.е. наличие двух языков неизбежно. Видимо, это можно решить тем, что по началу файла должно распознаваться, используется ли просто ШАЯ или расширенный ШАЯ-Оберон.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Июнь, 2021 23:06 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Ещё три неприятности. Во-первых, любые переменные объявляются без ключевого слова "переменная", а просто как

Код:
тип_переменной имя_переменной


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

Со второй неприятностью справиться можно (я и так планировал сделать такой вариант импорта для некоторых особых случаев), а вот что делать с первой - непонятно. Вероятно, можно поступить так же, как и с массивами, т.е. позволить такие объявления для встроенных типов ШАЯ и его стандартных модулей, но запретить для всех прочих типов.

В-третьих, я сторонник повелительного наклонения, а в ШАЯ используются инфинитивы. Конечно, меня и так все ругают за повелительное наклонение и можно как раз снизить степень раздражения, перейдя на инфинитивы, но по большому счёту повелительное наклонение - это более правильно.

Можно, конечно, и тут сделать варианты-синонимы.

Но в целом многовато тонких мест накапливается. Начинает казаться, что вариант с двумя транспиляторами лучше. При этом начинаем писать на ШАЯ, притом можно подключать какие-то куски из ЯОС, но по достижении определённого порога нам говорят: хотите дальше - транспилируйте вашу программу в Оберон.

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

В соответствии с этим, получается, что нужно переработать набор ключевых слов так, чтобы они были похожи на слова из ШАЯ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Июнь, 2021 23:37 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Писать различные транспиляторы с одного языка на другой изначально не очень хорошая идея. Кроме различий в синтаксисе, потом выясняется, что есть различия в типах данных, в библиотеках языках и так далее. Считаю, что это практически всегда потеря времени.
Надо делать свое, при этом делать правильно: сначала разработать архитектуру, написать спецификации и так далее, тогда всю систему можно будет восстановить практически на любом языке программирования на любой платформе.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Июнь, 2021 23:46 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Своё не пахнет, конечно, но оно никому не нужно. Не только моё не нужно, но и Оберон не нужен. Допустим, моё в 1000 раз более ненужно, чем Оберон. А Кумир - это вагон, который прицеплен к поезду государства, и по индексу ютьюба он в 50 раз нужнее, чем Оберон (в 50000 раз нужнее моей поделки). Даже Стив Джобс, когда его выгнали из Эппл, не смог никому продать свою систему NextStep или как она там называлась. А у него было и имя, и деньги, и спецификация, и архитектура (наверняка передовая). Моя идея проста - сесть на подножку вагона, который уже едет, вместо того, чтобы мускульной силой толкать в гору свой вагон. Оберон для меня никогда не был святыней, я всегда воспринимал его как заготовку. Он в какой-то степени мог бы стать вагоном, но к сожалению, я отказался от блекбокса и выбрал маргинальную даже среди оберонщиков A2, от которой потом ещё и свою лучинку отщепил.

Но к сожалению, из ШАЯ не вырастишь нормальный язык из-за порядка слов. Есть там и другая дичь, например, кодировка при чтении файлов - это глобальная настройка, которая действует на все последующие открытия файлов до отмены. ПРи этом ШАЯ всё же предельно примитивный язык, для него вполне посильная задача написать транспилятор.

Сам подход с транспиляторами вполне стреляет и мы видим это на примере того же Котлина или typescript. Да и в Оберон-мире он побеждает последнее время (слабаки оберонщики сливают Оберон, вместе со всей этой интеллектуальной постижимостью, и соглашаются на транспиляцию в Си).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Июнь, 2021 23:53 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Наверное, если тип обозначен одним словом (а это всегда можно сделать с помощью объявления именованного типа), то можно позволить объявление вида

Код:
тип имя_переменной


Надёжность от этого снижается, зато можно попасть в вагон.
Но кстати ещё из приятного - в ШАЯ гораздо меньше знаков препинания, чем в Обероне. Тут тебе и не нужно точек с запятой в конце, и пробел между типом и именем переменной. Приятно читается в этом отношении.
Надо, правда, понять, сколько это стоит, бесплатных завтраков не бывает, как гласит американская поговорка.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Июнь, 2021 00:10 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
budden писал(а):
Тут тебе и не нужно точек с запятой в конце, и пробел между типом и именем переменной. Приятно читается в этом отношении.
Надо, правда, понять, сколько это стоит, бесплатных завтраков не бывает, как гласит американская поговорка.
На Вижуал Бейсик ещё посмотрите, там можно процедуры вызывать без использования скобок, и в остальных описанных вами случаях тоже используются слова вместо знаков препинания (Dim d As Integer).

На Ютубе популярность не смотрел, но предполагаю.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Июнь, 2021 00:11 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
На самом деле, из-за избытка в Обероне ключевых слов и встроенных типов, совершенно невозможно сделать его совместимым надмножеством РАЯ. Транспилятор нужен, как минимум, чтобы закавычить пользовательские идентификаторы из программы на РАЯ, которые совпали с уже имеющими смысл словами из Оберона. Вопрос лишь в том, насколько итоговый "Оберон" должен быть похож на ШАЯ.

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

Ща попробую составить табличку.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Июнь, 2021 00:14 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
У Бейсика неплохой синтаксис, хотя и не без странностей. Я думал его применить для своего прошлого языка. Но сейчас предлагаю всё же обсудить совершенно конкретную идею - как прокинуть мостик от КуМира в Оберон (конкретно в A2/ЯОС), чтобы на КуМире, допущенном для ЕГЭ и изучаемом во многих школах, можно было не переходить на Си, а оставаться в его рамках или переходить на (Активный) Оберон.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Июнь, 2021 00:25 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Как-то так:

gitlab.com/budden/ja-o-s/-/blob/6b758fdecf01610e5c8b0e5df14d9e0ea8a6ad66/док/яп-активный-оберон/описание-языка.md#c-английские-варианты-ключевых-слов-встроенных-типов-и-модификаторов


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Июнь, 2021 11:22 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
budden писал(а):
Моя точка зрения, что отказ от мостика Оберон-Шая - это не только экономия ресурсов, но и отказ от источника ресурсов.

Илья, ну это по сути дела пока что только мой ресурс, а мой проект Вы вообще считаете лишним, т.е. не должно быть жалко, если я вместо одного лишнего буду делать другое лишнее. Хотя, честно сказать, на Вашу поддержку я в первую очередь рассчитывал.


Денис, я вам всегда категорически желаю успехов!
Дивергенция, накопление вариантов тоже нужно. Ромбик "исходный образец - дивергенция - конвергенция в новой версии".

По поводу источника ресурсов - да нет там никаких адекватно привлекаемых ресурсов по линии ЕГЭ и проч.

Приборка, ВПК, реальный сектор - там да, есть. Моё мнение - туда и следует двигаться. Что, в общем, и происходит у ключевых разработчиков сообщества.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Июнь, 2021 14:52 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Согласен с Ильей, что по линии ЕГЭ и Кумира особых перспектив тоже нет. Кумир оставлен как дань традиции, сегодня есть, а завтра могут сказать, что устарел и уберут.
И еще важный момент, у вас изначально неправильная метрика, вы берете одно видео по Кумиру и одно видео от Ивана и на этом основании говорите, что популярность в 100 раз выше. Надо по совокупности во всем интернете сравнивать. Там не известно еще кто кого популярнее получится.
По поводу ключевых слов и идентификаторов разделенных пробелами, с точки зрения лингвистики - это здравая мысль, но с точки зрения программирования этого практически нигде нет. Почему? А потому, что возникают неоднозначности. Например, хотим ключевое слово "ДЕЛАТЬ ПОКА" и хотим иметь возможность заводить идентификаторы "итератор цикла", или "ИТЕРАТОР ЦИКЛА" или "ИТЕРАТОР ЦИКЛА ДЕЛАТЬ ПОКА ДЕЛАЕТСЯ". Стоп! А что это? Это один идентификатор или же идентификатор "ИТЕРАТОР ЦИКЛА", затем ключевое слово "ДЕЛАТЬ ПОКА", а затем идентификатор "ДЕЛАЕТСЯ".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Июнь, 2021 18:08 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Рифат, думаю, по первой странице выдачи более-менее репрезентативно. Если учитывать несколько роликов, а не только ролики-рекордсмены, то дела у Оберона будут ещё хуже. Трудоёмкость такой оценки, впрочем, выше. Посмотри сам, в ютьюбе есть поиск. Просто я консервативен в оценках. Под "ресурсами" я понимаю не деньги, а живую силу, в т.ч. школьников. Я сам был школьником и вокруг меня были школьники. Я знаю, что школьники - это сила. Им нужно только создать коробочку, куда складывать результат, и поставить задачи - и они будут их решать.

Кумир, наоборот, укрепляется в школе. ШАЯ включён в ЕГЭ. Если его завтра уберут, то тогда ситуация изменится и придётся думать заново, но на данный момент его не убрали и предпосылок к этому не видно.

Цитата:
А потому, что возникают неоднозначности.


Согласен, я тоже на это косо смотрю. В общем, куски оберона можно подключать через механизм импорта в КуМире. Но серьёзные вопросы остаются, например, переход к инфинитивам требует переделать всё, что я уже сделал. Или "исполнители" от Оберона будут выбиваться по стилю.

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


Последний раз редактировалось budden Суббота, 05 Июнь, 2021 18:10, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Июнь, 2021 18:09 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Илья Ермаков писал(а):
Денис, я вам всегда категорически желаю успехов!
Дивергенция, накопление вариантов тоже нужно. Ромбик "исходный образец - дивергенция - конвергенция в новой версии".

Спасибо!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Июнь, 2021 19:04 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Если говорить о транспиляторе с АО в ШАЯ, то можно решить головоломку с типами с помощью скобок. Там, где нужно создать переменную типа, состоящего из нескольких слов, попросить использовать скобки или иные знаки препинания, например:

Код:
(укль на мояЗапись) таб таблица моих записей[0..4]
«укль на МояЗапись» таб таблица моих записей[0..4] | или так
„укль на МояЗапись“ таб таблица моих записей[0..4] | или так


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Июнь, 2021 19:40 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Вот посадить ШАЯ как он есть в экосистему ББ было бы интересно, кстати.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB