типизация

Проектирование и разработка идеального средства программирования.

Модератор: Модераторы

Re: типизация

Сообщение Vadim » 21.01.2009 15:04:11

utkin
А может сделать два типа - числа и нечисла?
Vadim
долгожитель
 
Сообщения: 3845
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: типизация

Сообщение utkin » 21.01.2009 17:25:30

Возможно, но все же нужны уточнения. Нечисла это кто? А числа какие? Я за комплексные. Чтобы можно было указывать и без мнимой части (все равно, что умноженная на нуль). Опять же глупые ограчения вроде корни из отрицательных чисел. Зачем корни? Просто возведение любого числа в любую степень. Ну прочие полезные мелочи.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

Re: типизация

Сообщение alexs » 21.01.2009 22:48:11

utkin писал(а):с другой стороны вечное преобразование типов, которое, обратите внимание, для алгоритма не является обязательным процессом

Если по алгоритму - это не обязательный процес - зачем вы это делаете?
на самом деле все преобразования между типами начинаются в 99% при выдаче информации пользователю. А внутри самого алгоритма - это не нужно делать. Если иначе - то скорее всего - что то при проектировании не ладно.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3879
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: типизация

Сообщение perlpunk » 22.01.2009 01:11:25

Нет, человек просто не совсем ясно выразил свою мысль. Тип на самом деле один - тип без типа. Или "один главный тип". А всё остальное - образовано от него.

Мне кажется это более удачной идеей. В Паскале же изначально типы не совместимы.

Хоть один пример, где это может пригодится? Веть обабатывать данные все равно приходится исходя из их типа.
perlpunk
новенький
 
Сообщения: 88
Зарегистрирован: 26.09.2008 21:19:48

Re: типизация

Сообщение Vadim » 22.01.2009 07:11:51

perlpunk писал(а):Хоть один пример, где это может пригодится?

Да пожалуйста. :)
Все знают про такой компонент, как TDataSet. Чтобы прибавить значение одного поля к другому, мы вынуждены писать:
DataSet.FieldByName('поле').AsInteger
А чтобы вывести значения поля в в HTML документ приходится писать так:
DataSet.FieldByName('поле').AsString
Ну и тому подобное.
А в случае концепции единого типа данных, всякие там AsТыры-Пыры писать не надо. Сколько времени экономится...
Vadim
долгожитель
 
Сообщения: 3845
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: типизация

Сообщение utkin » 22.01.2009 09:48:45

Еще пример, вывод даты на экран (я имею ввиду стандартные средства). Еще пример, Boolean и Integer. На самом деле примеров много. Возьмите свою собственную программу с большим числом строк и посмотрите, сколько раз проводилось явное преобразование типов. Почему программист должен обращать на это внимание? Для самоконтроля? Часть таких операций можно автоматизировать.

Добавлено спустя 6 минут 8 секунд:
Если по алгоритму - это не обязательный процес - зачем вы это делаете?


Да необязательный и проектирование здесь не причем. Когда я составляю алгоритм я не отражаю в нем процесс преобразования типов (думаю Вы тоже). Преобразование типов возникает при процессе реализации алгоритма, а не при проектировании, а это не одно и тоже и разницу можно увидеть если реализовывать алгоритм на разных языках программирования.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

Re: типизация

Сообщение perlpunk » 22.01.2009 15:10:07

Vadim писал(а):
perlpunk писал(а):Хоть один пример, где это может пригодится?

Да пожалуйста. :)
Все знают про такой компонент, как TDataSet. Чтобы прибавить значение одного поля к другому, мы вынуждены писать:
DataSet.FieldByName('поле').AsInteger
А чтобы вывести значения поля в в HTML документ приходится писать так:
DataSet.FieldByName('поле').AsString
Ну и тому подобное.
А в случае концепции единого типа данных, всякие там AsТыры-Пыры писать не надо. Сколько времени экономится...


Получается вам нужно просто неявное преобразование типов. Для этого и есть Variant.
Пишете тогда что то типа DataSet.Field['поле'] и ваша проблема решена в большинстве случаев :)

Добавлено спустя 5 минут 23 секунды:
utkin писал(а):Еще пример, вывод даты на экран (я имею ввиду стандартные средства). Еще пример, Boolean и Integer. На самом деле примеров много. Возьмите свою собственную программу с большим числом строк и посмотрите, сколько раз проводилось явное преобразование типов. Почему программист должен обращать на это внимание? Для самоконтроля? Часть таких операций можно автоматизировать.


Вот пример с датой - в каком бы виде вы хотели чтоб дата выводилаcь? А если мне в разных случаях нужно выводить эту дату поразному - все равно возвращаемся к использованию процедуры форматирования даты при выводе.
тоже с булеан - когда то надо вывести в виде True : False, а когда то и в другом виде Есть/Нет, On/Off - и тут опять нужна явная проверка значения и подстановка соответствующей строки.
perlpunk
новенький
 
Сообщения: 88
Зарегистрирован: 26.09.2008 21:19:48

Re: типизация

Сообщение utkin » 22.01.2009 16:31:59

Это вопрос стандартизации, а не преобразования типов. Это уже отдельная тема.

Добавлено спустя 4 минуты 50 секунд:
Проблема все равно не решенная. И дело в ни неявном преобразовании типов. Можно использовать такой тип(ы) при работе с которыми у программиста не возникло бы вообще мысли о преобразовании. Тот же Boolean и Integer. Можно же в качестве Boolean использовать Integer? Пусть False это нуль, все остальное true. Или по-другому, не важно. Смысл в том, что при компиляции преобразования типов проходить не будет.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

Re: типизация

Сообщение Vadim » 22.01.2009 17:32:40

perlpunk писал(а):Получается вам нужно просто неявное преобразование типов.

Да не нужно нам неявного преобразования типов. :) Нам вообще не нужно преобразования типов. В принципе. Пускай процессор лучше занимается более полезными вещами. Например, моделирует эффект Марангони. :)
Vadim
долгожитель
 
Сообщения: 3845
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: типизация

Сообщение utkin » 22.01.2009 21:07:14

В общих чертах так, если отбросить иронию в сторону. Я не говорю конечно, что можно избежать полного преобразования типов, но часть вопросов таким образом вполне решаема.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

Re: типизация

Сообщение shade » 01.02.2009 22:18:34

А вот к примеру во многих (если не всех) функциональных языках тип выводиться компилятором ;)
Так например языке caml
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: типизация

Сообщение AbakAngelSoft » 13.10.2009 13:37:44

Типизация это метод уменьшающий возможность выстрелить себе в ногу. И должен максимально эффективно применяться самими программистами.
Если рассматривать исходные коды delphi и тем более лазарус видно, что многие не понимают что такое тип. тип это не только Integer!
Если у нас есть размеры прямоугольной области width и height каких они должны быть типов? Integer? нет! Иначе возможна операция width := height; Это явная ошибка!
Если сделать Width: TWidth и Height: THeight. Все отлично компилятор нам подскажет где мы ошиблись.
Когда мы поворачиваем этот прямоугольник то указываем явно что куда надо преобразовать. Мы рассчитываем по некоторой формуле и знаем что мы делаем если произойдет ошибка мы в курсе где ее искать.

Существует интересная идея применять в языках программирования для числовых данных те же правила что и в физике (2кг/см2 + 3кг/см2)*5см2 = 25кг, а 2кг+3см - недопустимая операция
Аватара пользователя
AbakAngelSoft
постоялец
 
Сообщения: 273
Зарегистрирован: 06.08.2008 19:28:26
Откуда: Краснодар

Re: типизация

Сообщение Max Rusov » 13.10.2009 16:01:51

AbakAngelSoft писал(а):Если сделать Width: TWidth и Height: THeight. Все отлично компилятор нам подскажет где мы ошиблись.


А во FreePascal так можно? Описать 2 числовых типа, которые будут между собой несовместимы?
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: типизация

Сообщение Sergei I. Gorelkin » 13.10.2009 17:20:13

Можно сделать числа полями записей, тогда типы записей будут несовместимы.
Следующим шагом переопределяем для записей операторы присваивания и оказываемся там же, откуда пытались уйти.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1384
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: типизация

Сообщение AbakAngelSoft » 13.10.2009 17:44:52

На FreePascal к сожалению нельзя (или я не знаю как - кто знает подскажите - очень надо!!!) но мы вроде обсуждаем типизацию вообще
Аватара пользователя
AbakAngelSoft
постоялец
 
Сообщения: 273
Зарегистрирован: 06.08.2008 19:28:26
Откуда: Краснодар

Пред.След.

Вернуться в Компилятор / язык программирования

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

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

Рейтинг@Mail.ru