Обсуждение:Система типов

message: "Типы данных, которыми оперируют реальные средства разработки — это не совсем то же самое, что «обобщённые» типы данных в математике. К примеру, в математике «целое число» — элемент множества всех возможных целых чисел, к которому применим набор арифметических операций: сложить, вычесть, умножить и разделить. Реализация такого типа данных на конкретной вычислительной машине и в конкретном языке программирования будет отклоняться от описанного: допустимыми окажутся не все возможные целые числа, а только какой-то ограниченный диапазон (например, от −256 до +255 или от −4294967294 до 4294967295), а набор операций может быть, наоборот, расширен — добавятся деление по модулю, битовый сдвиг и т. д."
Мысль автора либо не ясна, либо ошибочна.
Правильнее было бы сказать, что: "Тип "целое число" большинства языков программирования не соответствует принятому в математике типу "целое число", т.к. в математике указаный тип не имеет ограничений ни сверху, ни снизу, а в языках программирования данные ограничения имеются." Olenin 11:01, 9 мая 2008 (UTC)
replies: text: Что конкретно здесь неверно? Ведь вы сказали то же самое, только короче и ограниченнее: ограничения на представление множества значений могут быть не связаны (и в большинстве языков действительно не связаны) с собственно языком: это ограничения, накладываемые реализацией. Только в некоторых (и очень немногих) языках они прописаны именно в описании языка, а не определяются конкретной реализацией. Вот набор операций действительно задаётся языком. Ошибочного же, как ни стараюсь, не нахожу - всё вполне корректно, хотя, может быть, сложновато выражено. --dm обсужд. 21:59, 10 мая 2008 (UTC)
"В них переменная может принимать значение любого типа, в параметры функции можно передавать значения любых типов, и вернуть функция также может значение любого типа. Сопоставление типов значений переменных и параметров с применяемыми к ним операциями производится непосредственно при выполнении этих операций. Например, выражение a+b, может трактоваться как сложение чисел, если a и b имеют числовые значения, как конкатенация строк, если a и b имеют строковые значения, и как недопустимая (ошибочная) операция, если типы значений a и b несовместимы. Такой порядок называют ещё «динамической типизацией». Языки, поддерживающие только динамическую типизацию, называют иногда «бестиповыми». Это название не следует понимать как признак отсутствия понятия типов в языке — типы данных всё равно есть."
Неверно, в таких языках либо присутсвуют полиморфные типы (С++, Руби, Лисп, Пролог, MS Visual Basic etc) либо типы задаются неявно (классический BASIC - A$ - строка, A[] - массив, A - число) Olenin 11:24, 9 мая 2008 (UTC)

text: Что конкретно неверно? Вы просто пишете о другом. Вторая часть Вашей фразы вообще не к месту - неявное задание типа суффиксом имени (точно так же, как, например, неявное задание типа в Фортране IV) - это ровно такое же описание, как и любое другое, поскольку тип жёстко привязывается к переменной и не может быть изменён. Принципиально от явного описания Паскаля, например, это ничем не отличается. --dm обсужд. 21:59, 10 мая 2008 (UTC)
О чем Вы вообще всед за статьей говорите? В математике понятия тип данных я никогда не встречал. Посмотрев эту статью открыл специально Математический энциклопедический словарь, справочник по математике Корнов и еще несколько книг. Нигде в математике нет такого термина, как тип данных! --Владимир Грызлов 17:23, 2 января 2010 (UTC)
thread_title: Untitled

message: "Современные языки программирования (включая Ассемблер) поддерживают оба способа задания типа (см. "Определение"). Так, в С++ тип enum является примером задания типа через набор значений."
а также
"Перечислимый тип. Может хранить только те значения, которые прямо указаны в его описании."
Вероятно перечисление Си++ -- это не лучший пример на этот счет. Несмотря на то, что перечисления действительно определяются перечислением значений, диапазон представимых значения перечисления не ограничивается этими перечисленными в определении значениями. На деле перечисление всегда совместимо (в языке Си) или имеет подлежащим типом (в языке Си++) один из целочисленных типов, и диапазон представимых значений перечисления -- это диапазон представимых значений этого целочисленного типа.
Может быть аналогичная конструкция в Паскале будет более удачным примером.  Ivan A. Kosarev 18:30, 19 августа 2008 (UTC)
thread_title:  Перечисление в Си++ в качестве примера 

message: "При этом правила обращения с переменными, выражениями и параметрами разных типов могут быть как очень строгими (С++), так и весьма либеральными (Си). Например, в классическом языке Си практически все типы данных совместимы — их можно применять совместно в любых выражениях, присваивать значение переменной одного типа переменной другого почти без ограничений."
То, что принято называть строгой типизацией Си++ на деле не имеет отношения к совместимости типов. Кроме того, правила совместимости типов, как они определены в Си и Си++, практически идентичны. Более, неявные преобразования в Си и Си++ тоже практически идентичны. В этом смысле "строгость обращения с типами" в Си++ не строже, чем в Си. Например, и в Си, и в Си++ есть неявное преобразование из long в char. Ivan A. Kosarev 18:30, 19 августа 2008 (UTC)
thread_title:  Строгость типизации 

message: Отсутствует в классификации Fractaler 17:03, 14 октября 2008 (UTC)
thread_title: [[Класс (программирование)]]

message: Что это такое?
~== История == Ещё в 1960-х гг. Р. Хинд
>> Kron7 12:25, 29 июля 2013 (UTC)
thread_title:  Раздела "История" 

message: Упоминая ассемблер в определении типизации данных, следует различать данные и операнды, которые  имеют формат и лишь некоторое отношение к типу данных. Здесь принято говорить о формате (форме представления) данных, но не о типе и типизации. Не путайте аппаратные вещи (элементы) с программными. Например, регистр указатель с типом указатель. Как формат данных и инструкций с типом данных.
DmitriBon 18:53, 3 декабря 2013 (UTC)
thread_title:  Ассемблер. Формат операнда инструкции (команды)