OSDev
http://osdev.su/

Real или Float?
http://osdev.su/viewtopic.php?f=30&t=1064
Страница 1 из 2

Автор:  Freeman [ 10 мар 2015, 12:41 ]
Заголовок сообщения:  Real или Float?

Возник вопрос, как правильней назвать семейство типов с плавающей запятой, -- с использованием слова Real (действительное) или Float (плавающее)? Исторически сложилось, что в Паскале числа с плавающей запятой обозначаются словом Real, а в Си -- Float. Это разная терминология, предпочтения разработчиков (вкусовщина), разность мышления, особенности английского языка по разные стороны Атлантики?

Как, с вашей точки зрения будет правильней назвать семейство типов в языке:
  • Real[n] и SingleReal, DoubleReal и ExtendedReal.
  • Float[n] и SingleFloat, DoubleFloat и ExtendedFloat.

На данный момент в языке уже есть типы Integer[n] и Word[n], плюс соответствующие им (ByteInt, ShortInt, LongInt, QuadInt) и (Byte, ShortWord, LongWord и QuadWord).

Автор:  Zealint [ 10 мар 2015, 19:54 ]
Заголовок сообщения:  Re: Real или Float?

Я с присущей мне категоричностью считаю единственно правильным вариант Real[n]. А "поплавок" (float) мне никогда не нравился. И я против всяких косвенных указаний на длину типа (short, long, суперLong и прочее), нужно чётко указывать размер типа без каких-либо затем изменений (вроде тех, что int было словом, а стал двойным словом, а у кого-то даже четверным). Таково моё личное субъективное мнение.

Автор:  Freeman [ 10 мар 2015, 22:13 ]
Заголовок сообщения:  Re: Real или Float?

Zealint писал(а):
Я с присущей мне категоричностью считаю единственно правильным вариант Real[n]. А "поплавок" (float) мне никогда не нравился.

Я задал такжевопрос на "Тостере", и там меня навели на правильные мысли. Поскольку Кантор ориентируется на системное программирование, нужно быть ближе к машине, иначе тебя не поймут. На данный момент рабочая гипотеза -- это FloatingPoint для общего типа и SingleFloat, DoubleFloat и ExtendedFloat -- для конкретных сопроцессорных типов. В именах конкретных типов "Float" -- такое же сокращение, как и "Int" в целых.

Zealint писал(а):
И я против всяких косвенных указаний на длину типа (short, long, суперLong и прочее), нужно чётко указывать размер типа без каких-либо затем изменений (вроде тех, что int было словом, а стал двойным словом, а у кого-то даже четверным).

Символьные имена проще в наборе на клаве, да и визуально смотрятся лучше. Их размерность меняться не будет. Именами можно и не пользоваться, можно каждый раз указывать размерность, раскрывая обобщение вручную. С точки зрения Кантора Integer[32] и LongInt эквивалентны, поскольку LongInt описан как Integer[32] в самом Канторе, а раскрытие обобщений -- это вызовы высших функций.

Автор:  pavia [ 11 мар 2015, 06:26 ]
Заголовок сообщения:  Re: Real или Float?

Цитата:
Возник вопрос, как правильней назвать семейство типов с плавающей запятой, -- с использованием слова Real (действительное) или Float (плавающее)? Исторически сложилось, что в Паскале числа с плавающей запятой обозначаются словом Real, а в Си -- Float.

Си разрабатывался приближенный к железу. Его даже высокоурожайным ассемблером называют.
Паскаль напротив использовал абстрактные типы. В нем нет плавучей точки в нем есть действительные числа без уточнения реализации. А она может быть и фиксированной и плавающей. А может и вовсе определять в виде формулы и вычислять только при выводе.

После появился стандарт на действительные числа. В котором закреплены понятия float и double.
И соответственно стандарт был прописан в Си.

Цитата:
Как, с вашей точки зрения будет правильней назвать семейство типов в языке:
Real[n] и SingleReal, DoubleReal и ExtendedReal.
Float[n] и SingleFloat, DoubleFloat и ExtendedFloat.

За длинные слова разработчики вас побьют или не будут пользоваться вашем языком.
Float[n] и Single, Double и Extended.

Автор:  iz56 [ 11 мар 2015, 09:38 ]
Заголовок сообщения:  Re: Real или Float?

"Single" можно сократить до "S".

Float[S] - SFloat,SingleFloat

Автор:  dragon [ 11 мар 2015, 21:05 ]
Заголовок сообщения:  Re: Real или Float?

Вот мои 5 копеек: стандартные типы: Int, Int8, Int16, Int32, Int64, UInt, UInt8, UInt16, UInt32, UInt64, Float32, Float64, Float80, Single, Double.
От Word, Long, Short, Small, Quad предлагаю отказаться.
Использование ключевого слова Real достаточно странная затея, т.к. все вышеперечисленные типы также являютя подтипами Real. Название типа Real можно наверное как то с комплексными числами обыграть.
Использование Word - слово, машинное слово. А какова длина машинного слова? Тут неоднозначность, соответственно отталкиваться от этого можно если только принять за аксиому тот хаос, который сложился вокруг размеров "слов" эмпирически (как минимум у меня в голове). Контрольный вопрос (риторический): чему полагаем равным размер слова (и почему) в 32-битном режиме x86 с 36-битной шиной адреса и 64-битной шиной данных?

Автор:  Freeman [ 11 мар 2015, 21:54 ]
Заголовок сообщения:  Re: Real или Float?

Тема что-то расползлась, но всё же попробую ответить.

Цифры в именах типов делают исходник нечитабельным и тяжело набираются на клаве. Уже говорил. Это справедливо для синтаксиса Кантора. Я проводил опыты и понял, что у самого глаза вытекают. Цифр не будет.

Сочетание UInt придумали те, кто боится назвать слово словом. Смотрится ужасно. Я хочу вернуть слову его изначальный смысл. Единственная видимая мной альтернатива -- назвать абстрактное беззнаковое целое полным именем UnsignedInteger, от которого порождать Byte, ShortWord, LongWord и QuadWord.

dragon писал(а):
А какова длина машинного слова?

Длина машинного слова -- размер арифметического регистра. В Канторе нет адресной арифметики, поэтому с этим однозначно.

По поводу длины идентификаторов. Вы еще настоящей длины не видели. :lol:

В Канторе всё распихано по пространствам, поэтому в прикладном коде типы будут выглядеть как Core:SingleFloat или Core:DoubleFloat. Такова организация ООП в Канторе. Из хорошего -- есть with в SQL-ном смысле (не путать с паскалевским). Уважаемый iz56 сможет написать так:
Код:
with
  S = Core:SingleFloat;
class iz56 of
  var S maxVelocity = 0;
end;

То есть, как и в SQL, в Канторе всему можно дать локальный синоним, который потом использовать. Синоним ничего не стоит, он типа как макроподстановка, но контролируемая компилятором. Как в SQL, повторюсь.

Типы придется указывать только в тех местах, где их и нужно указывать -- в объявлениях различной степени абстрактности. Во всех других случаях будет работать вывод типов. Пример:
Код:
Core:LongWord two = 2;
three = two + 1; // тоже имеет тип Core:LongWord

Автор:  Freeman [ 11 мар 2015, 22:01 ]
Заголовок сообщения:  Re: Real или Float?

Да, самое главное забыл!

pavia писал(а):
Паскаль напротив использовал абстрактные типы. В нем нет плавучей точки в нем есть действительные числа без уточнения реализации. А она может быть и фиксированной и плавающей. А может и вовсе определять в виде формулы и вычислять только при выводе.

Чёрт возьми! Вот наложить шкалу времени разработку Паскаля и Си и появления стандарта IEEE 754 я не догадался! Тогда всё сходится. Типы в Си контролируются внешним стандартом, как и положено в системном программировании. В Канторе будет аналогично. Unicode есть, SGML есть, теперь еще IEEE 754 до кучи. В интерфейсе будут стандарты W3C, с этим тоже решено.

Автор:  scuter [ 11 мар 2015, 23:17 ]
Заголовок сообщения:  Re: Real или Float?

назови fpu.

Автор:  dragon [ 13 мар 2015, 12:18 ]
Заголовок сообщения:  Re: Real или Float?

UInt vs UnsignedInteger - это конечно же уже вкусовщина. Поскольку я использую UInt, в защиту скажу просто что это тупо быстрее набирается, и это основной аргумент для меня. Впрочем всегда можно написать type UInt = UnsignedInteger и продолжать, что я успешно и сделал для паскаля.

Интересен другой вопрос:

Цитата:
Длина машинного слова -- размер арифметического регистра.


Отлично. Чему будет равен размер word на 8-битном процессоре? На 16-битном процессоре (или в 16-битном режиме x86)? Правильно ли я понимаю, QuadWord на 8-битном процессоре будет 32 бит? Как мне задать тип беззнакового целого размерностью не менее 32 бит? Или может быть я каких то подходов к выбору типов не знаю, если у меня такие вопросы возникают?

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/