Теперь Кью работает в режиме чтения

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

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

ПрограммированиеИнформатика+1
Вадим Романский
  ·   · 2,8 K
вероисповедание - симпатия к православному язычест...  · 16 окт 2021
ассемблер - можно посредством макросов перегрузить имеющиеся директивы резервирования и определения данных или создать подобие собственных директив так чтоб к ним добавилась переменная времени компиляции(точнее переменная этапа ассемблирования), такая переменная не пойдет в выходной файл, но она может участвовать в вычислениях на этапе ассемблирования.
Далее нужно за счет макросов перегрузить все мнемоники, так чтоб они проверяли наличе этих переменных у операндов.
В виду того что мнемоник операций много (даже тех что можно задействовать под вычисления), а над операндами придется производить сложный разбор (операнды могут быть как регистрами, так и непосредственными значениями, так и ячейками в памяти заключеными в квадратные скобки, и еще перед ними может стоять модификатор переопределения размера, а может и нет), но это лишь шатаный парсинг когда надо добавить в мнемонику какое нибудь эдакое поведение, а туда еще надо добавить проверку переменных времени выполнения. Еще придется учесть что в обработку типов надо будет добавить типы ссылки на типы которые вы хотите добавить, и типы ссылки на ссылки, если и в них есть необходимость.
Все вышеперечисленное просто похоронит препроцессор под нагрузкой на вышеописанные макросы. Данное решение превратится в игрушку - сможете наслаждаться всей красотой задумки на программах с максимум 40 строчками кода, и временем компиляции в минуте на строчку (когда нормально доли секунды ).
Поэтому под ассемблером конечно можно реализовать все - любой синтаксис, любое поведение, но вопрос в цене - сколько ресурсов препроцессора заьерет то или иное удобство.
Кстати, в ассемблере fasmg все инструкции и так реализованы через макросы (а вернее даже через макросоподобные CALM-инструкции, они много быстрее макросов), поэтому разбор операндов каждой инструкции там уже есть, остается дополнить его еще и работой с размерностями.
То что не могут языки высокого уровня всегда могут ассемблеры.
1 эксперт не согласен
Автор не ответил на вопрос.
)
Веб-разработчик, геймер, специалист по этике  · 15 окт 2021
Отличный вопрос, и ответ на него, насколько мне известно, "нет". Традиционно на уровне языка среди атомарных типов определяются просто "числа", а конкретный смысл этих чисел остаётся за разработчиком. Термин, который вам нужно... Читать далее
Увлекаюсь естественными науками и математикой...  · 15 окт 2021
Во всех серьёзных математических пакетах предусмотрены и встроенные средства программирования, и возможность работы с размерностями через подгрузку тех или иных библиотек. В Mathematica для работы с размерностями требуется... Читать далее
про математику не знал, спасибо. Но мне интересны обычные языки. Составные типы это хорошо, но это ж сколько... Читать дальше
Погромист на C#  · 19 окт 2021
Если под размерностью имеется в виду единица измерения, то например в F# есть такое. Аналогичная функция должна быть во многих языках для научных вычислений. Также это может быть реализовано через паттерн newtype - это когда мы... Читать далее
1 эксперт согласен
Спасибо, теперь буду знать.
)
Программист, преподаватель программирования...  · 21 нояб 2021
Для начала, язык C++ позволяет реализовать библиотечную поддержку размерностей. Вроде, они есть в библиотеке boost, среди других ответов была ссылка на библиотеку с единицами Си https://github.com/bernedom/SI В стандарте C++ и... Читать далее
Научные заметки о жизни: zen.yandex.ru/id/5c434983...  · 16 окт 2021
Такой механизм был предусмотрен еще в Алголе-68. Увы, международный комитет по созданию языка себя не оправдал. Туда было натолкано еще много разного и реализация оказалась слишком сложной. В современных языках можно воспользова... Читать далее
2 эксперта согласны
достоверно сказано и об объектах и производительности
Разработчик встроенных систем, немного радиолюбите...  · 19 окт 2021  · vladimir-coslow.narod.ru/index.html
1. Размерность переменных в смысле количества измерений массива существует в любом высокоуровневом языке программирования, кроме может быть Бейсика. Поэтому думаю, что вопрос был в другом смысле. 2. Размерность переменных в... Читать далее
Чтобы ни дня в жизни не работать, на практике совмещаю работу с хобби.Перейти на vladimir-coslow.narod.ru/index.html
Наука, критическое мышление. Инженер Вселенной.  · 15 окт 2021  · lytkins.ru
В смысле? Переменная в любом языке это указатель на ячейку оперативной памяти, и только. В языке C (Си) много интересного по работе с указателями.
2 эксперта согласны
а в каком-нибудь высокоуровневом языке она может обладать еще миллионом дополнительных свойств. Например как... Читать дальше
Программист. Интересна физика  · 15 окт 2021
Я только недавно узнал это слово "размерность". Насколько я понимаю, размерности это метры, граммы, секунды и т.д. Если так, то получается что вам нужно чтобы одной переменной соответствовало не одно число, а число и текст... Читать далее
2 эксперта согласны
я хочу чтобы компилятор ругался если я буду складывать метры с килограммами. Так что просто введение дополнительных... Читать дальше
IT, телеком, телефония, базы данных, интеграционны...  · 22 окт 2021
Нет. Языки не развиваются в этом направлении. В решительном большинстве языков программирования есть арифметические типы и есть нативная реализация операций над ними. Эти типы часто опираются на архитектуру процессора и у... Читать далее
1 эксперт не согласен
Существует язык программирования F#, где эта функция уже реализована.
)