OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 01:49

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: заменяемые "встроенные" типы
СообщениеДобавлено: Суббота, 25 Сентябрь, 2021 22:06 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Я думал, что это моё ноу-хау, но всё уже украли до нас :lol:

Вчера я узнал, что в C# и в Котлине можно переопределить смысл таких встроенных типов, как Int, в любом модуле, если импортировать "другой системный модуль" или если просто определить тип с таким именем. Т.е. совершенно нет нужды спорить о том, как должны начинать выглядеть INTEGER-ы при переходе к 64 разрядам - они могут выглядеть так, как надо, в каждом конкретном месте. Другое дело, что при портировании кода и библиотек вопрос всё равно всплывёт, но поскольку его можно решать контекстно-зависимо, то его острота снижается. Я планирую реализовать такую возможность в ЯОС, но об этом мало кто знает.

Поскольку эта фича, оказывается, уже давно в мейнстриме и ничего нового из себя не представляет, нет смысла и скрывать это :lol:

В Си, на самом деле, тоже можно переопределить встроенные типы, например, написать

Код:
#define int char


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: заменяемые "встроенные" типы
СообщениеДобавлено: Воскресенье, 26 Сентябрь, 2021 00:09 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: заменяемые "встроенные" типы
СообщениеДобавлено: Воскресенье, 26 Сентябрь, 2021 10:32 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 293
Откуда: Russia
Здесь нет никакого "ноу-хау" - именно так Оберон изначально и работал: Можно было написать, например, так:
TYPE INTEGER = LONGINT;
или как-то так:
CONST TRUE = FALSE;
Разумеется, от этой дряни избавились.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: заменяемые "встроенные" типы
СообщениеДобавлено: Воскресенье, 26 Сентябрь, 2021 12:00 

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

В этой системе координат сменный глобальный модуль никакой беды не порождает.

Сергей, я это как-то и подозревал. Однако смысл сменного глобального модуля в том, чтобы не было фиксированного набора примитивов вообще, а он возникал бы в результате импорта того или иного глобального модуля. И не обязательно альтернативные встроенные типы должны выражаться через уже существующие - для них может потребоваться писать куски бекенда. Как самый простой пример, заменить оберонову систему типов на числовую башню, как в лиспе, или на бухгалтерские типы с большой мантиссой и автоокруглением до копеек. Для примера, ЕМНИП в 1С тип числа не является числом с плавающей точкой - он больше похож на BCD из SQL, но при этом он является встроенным типом. В АО с его перегрузкой операций это доступно. Но из литералов всё равно будут возникать встроенные типы Оберона. Концепция сменного глобального модуля должна и этот вопрос как-то решать, чтобы литералы получали встроенные типы. Великовато получается для идеи именно "сменного глобального модуля", тут уже и синтаксис может быть затронут. Но смысл именно в этом - если сменный модуль поставили, то должна быть защита от протекания встроенных типов в этот модуль.

Но я очень прошу не вставлять эту, как Вы изволили выразиться, "дрянь" в A2 - потому что в этом случае у ЯОС будет меньше конкурентных преимуществ :lol:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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


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

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


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

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