типизация

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

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

Re: типизация

Сообщение Дож » 01.02.2010 14:45:48

AbakAngelSoft
Можно, и в предыдущем от тебя посту Sergei I. Gorelkin описал как это делается.

А в php есть проверка типов по время выполнения?
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: типизация

Сообщение Brainenjii » 01.02.2010 15:07:29

IsInteger() с товарищами там вроде есть
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: типизация

Сообщение Дож » 01.02.2010 21:12:38

Brainenjii
Я имел ввиду что произойдет если я попробую перемножить две строки
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: типизация

Сообщение AbakAngelSoft » 02.02.2010 10:30:43

получишь 0 или false, что равнозначно. Зачем спрашивать - можно и попробовать.

Добавлено спустя 2 минуты 55 секунд:
кстати gettype возвратит тип полученного значения integer!
Аватара пользователя
AbakAngelSoft
постоялец
 
Сообщения: 273
Зарегистрирован: 06.08.2008 19:28:26
Откуда: Краснодар

Re: типизация

Сообщение kovinik » 07.04.2010 15:32:33

из учебника: "тип переменной описывает НАБОР значений, которые она может принимать, и ДЕЙСТВИЯ, кторорые могут быть над ней выполнены."

пример:
var
s1, s2, s3: string;
begin
s2 := '1';
s3 := '1';
s1 := s2 + s3;

вопрос: какой должен быть результат, '11' или '2' ?

типы и нужны для того что-бы правильно определить ДЕЙСТВИЕ выполняемое оператором. в данном случае '+'. иначе нужно будет плодить кучу операторов для каждого спорного случая.
в принципе можно, дело вкуса.

в принципе базовых типов немного: целый(перечислимый), плавающий(вещественный), строковой, ссылочный, структурный, процедурный.

компилятор сам определяет количество байт для типа, по дельте.
byte = 0..255; delta = 255-0+1 = 256 = 1 byte
word = 0..65535; delta = 65535-0+1 = 65536 = 2 byte
и т.д.
хотя плавающие фиксированны, но в принципе можно и сними тоже самое. зависит от компилятора.

переменная - это объект. для его(их) преобразования нужны операции, если они уникальны то тип переменной не нужен, если они перегружены, то нужен.
kovinik
незнакомец
 
Сообщения: 5
Зарегистрирован: 07.04.2010 14:18:34

Re: типизация

Сообщение Дож » 08.04.2010 18:06:21

kovinik
Еще есть такая вещь, как динамическая типизация (python, например). И люди спокойно себе пишут проги.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: типизация

Сообщение runewalsh » 16.05.2010 20:37:53

Max Rusov писал(а):Описать 2 числовых типа, которые будут между собой несовместимы

Меня интересует возможность заставить это не компилироваться:
Код: Выделить всё
type
  tWidth = type longint;
  tHeight = type longint;

var
  w : tWidth;
  h : tHeight;

begin
  w := 5;
  h := 6;
  w := h;  // даёшь ошибку компиляции в таких случаях
end.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: типизация

Сообщение alexrayne » 16.05.2010 22:34:12

Есть языки в которых етот код вызвал бы ошибку и нужно явно делать приведение типов (ада вдхл), однако по моему опыту такая паранойя со стороны компилятора ничего кроме тошноты и раздражения не вызывает. что кстати и подтверждается известной распространенностью этих языков.
В данном коде кажись что дельфа что фрюха выдадут ворнинг и имхо этого достаточно.
основная защита от ошибок была и остаетс имхо культура программиста и качественное тестирование.
alexrayne
постоялец
 
Сообщения: 125
Зарегистрирован: 03.12.2008 16:56:26

Re: типизация

Сообщение Максим » 17.05.2010 01:21:10

runewalsh писал(а):Меня интересует возможность заставить это не компилироваться:

Обычно это достигается объявлением tWidth, tHeight записями.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 597
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: типизация

Сообщение ev » 01.09.2013 15:03:37

Модульного тестирования недостаточно. Нужна статическая типизация!
полная версия статьи
В своём исследовании я обратил внимание на доводы сторонников динамической типизации, которые считают, что статическая типизация не нужна для выявления ошибок.

Суть их рассуждений в следующем:
  • Статической типизации недостаточно для выявления багов, поэтому необходимы модульные тесты;
  • Статическая типизация становится лишней, так как у вас есть тесты;
  • Из-за статической типизации некоторые корректные программы могут выдавать предупреждения на стадии компиляции.

Несмотря на то, что я много раз слышал эти утверждения, я не мог найти им подтверждение. Поэтому я решил выяснить: действительно ли модульные тесты помогают устранить ошибки типизации. Также меня интересовал еще один вопрос: как часто разработчики используют конструкции языков с динамической типизацией, которые невозможно выразить в языках со статической.
ev
долгожитель
 
Сообщения: 1763
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Re: типизация

Сообщение Vapaamies » 02.09.2013 02:31:26


Жду теперь статьи "Виртуальная машина не имеет преимуществ перед непосредственной компиляцией".
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 291
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Пред.

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

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

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

Рейтинг@Mail.ru