OSDev

для всех
Текущее время: 17 дек 2017, 01:20

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Real или Float?
СообщениеДобавлено: 10 мар 2015, 12:41 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Возник вопрос, как правильней назвать семейство типов с плавающей запятой, -- с использованием слова 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).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Real или Float?
СообщениеДобавлено: 10 мар 2015, 19:54 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Real или Float?
СообщениеДобавлено: 10 мар 2015, 22:13 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Zealint писал(а):
Я с присущей мне категоричностью считаю единственно правильным вариант Real[n]. А "поплавок" (float) мне никогда не нравился.

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Real или Float?
СообщениеДобавлено: 11 мар 2015, 06:26 
Аватара пользователя

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

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Real или Float?
СообщениеДобавлено: 11 мар 2015, 09:38 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 319
Откуда: Псковская обл.
"Single" можно сократить до "S".

Float[S] - SFloat,SingleFloat


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Real или Float?
СообщениеДобавлено: 11 мар 2015, 21:05 

Зарегистрирован: 04 ноя 2007, 14:48
Сообщения: 113
Вот мои 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-битной шиной данных?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Real или Float?
СообщениеДобавлено: 11 мар 2015, 21:54 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Тема что-то расползлась, но всё же попробую ответить.

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

Сочетание 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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Real или Float?
СообщениеДобавлено: 11 мар 2015, 22:01 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Да, самое главное забыл!

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Real или Float?
СообщениеДобавлено: 11 мар 2015, 23:17 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 274
назови fpu.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Real или Float?
СообщениеДобавлено: 13 мар 2015, 12:18 

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

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

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


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


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

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


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

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB