Чем отличается тип данных от класса?
класс - это полноценный класс со всеми вытекающими
primitive type - это вшитая в язык конструкция
не было бы примитивного инта, нельзя было бы написать класс-обертку
примитивные типы быстрее из-за отсутствия наворотов от класса
primitive type - это вшитая в язык конструкция
не было бы примитивного инта, нельзя было бы написать класс-обертку
примитивные типы быстрее из-за отсутствия наворотов от класса
и занимают меньше места (как минимум, за счет возможного выравнивания).
и совместимы
и совместимы
речь идёт о MC++? Насколько я понимаю, так int и System::Int32 - это одно и то же, и Int32 является не классом (который - reference-type а value-type
> Чем отличается тип данных от класса?
В Haskell есть деление на классы и экземпляры (instance которого нет в ООП. Класс только определяет набор и сигнатуры методов, экземпляр только реализует их. Т. о. автоматически отпадает проблема множественного наследования. Классы не наследуют и не переопределяют методы других классов — каждый метод принадлежит только одному классу. Такой подход проще, чем сложная схема взаимоотношений классов в ООП. Некоторый тип данных может принадлежать нескольким классам; класс может требовать, чтобы каждый его тип обязательно принадлежал к другому классу, или даже нескольким; такое же требование может выдвигать экземпляр. Это аналоги множественного наследования. Есть и свойства, не имеющие аналогов в ООП. Например, реализация списков как экземпляра класса сравнимых величин требует, чтобы элементы списка также принадлежали к классу сравнимых величин.%
class type и data type не перепутал? 

Ч0?
хз, я в этом вопросе теоретик.
но типы и классы в хаскелле же правда отличаются. я от этого офигел, когда узнал.
но типы и классы в хаскелле же правда отличаются. я от этого офигел, когда узнал.
ну да, а в жаве/шарпе классы и интерфейсы отличаются. Чудеса, да?
а класс там что такое?
А в питоне никаких типов уже давно нету, все структурные единицы - объекты какого-либо класса
Очень удобно, но язык довольно-таки прожорливый (я про память).
Очень удобно, но язык довольно-таки прожорливый (я про память).
это немного другое, насколько я понимаю.
в хаскелле тип объекта получается композицией классов, которым он принадлежит.
в хаскелле тип объекта получается композицией классов, которым он принадлежит.
Да вот ситуацияпочти такая же, как в Хаскеле, только терминология другая. Интерфейс задаёт контракт, класс - определяет реализацию.
Сорри, не class type, a type class:
http://en.wikipedia.org/wiki/Type_class
Короче, хаскеловские классы - это совсем не то, что в ООП привыкли называть классами. Это классы типов, а не классы объектов. Нечто, напоминающее интерфейсы в языках типа джавы.
http://en.wikipedia.org/wiki/Type_class
Короче, хаскеловские классы - это совсем не то, что в ООП привыкли называть классами. Это классы типов, а не классы объектов. Нечто, напоминающее интерфейсы в языках типа джавы.
В языках типа С++, джавы и шарпа так сложилось исторически - есть примитивные заранее определенные типы, и есть более сложные сущности - классы. Где-то это наследство С (в котором есть int, но нет class Int где-то - проявление архитектуры VM. В некоторых ОО языках, например Руби, такого разделения нет: все - классы.
Кроме того, ООП-теоретики указывали на различия между понятиями класса и типа, которые
проявляются при сравнении subtyping и subclassing..
Кроме того, ООП-теоретики указывали на различия между понятиями класса и типа, которые
проявляются при сравнении subtyping и subclassing..
в таком случае, именно про разницу между typeclass и data type я и попытался написать.
в джаве вроде похоже, потому что объединять интерфейсы в одной реализации можно с помощью наследования.
в джаве вроде похоже, потому что объединять интерфейсы в одной реализации можно с помощью наследования.
(там цитата не моя а с викибукс. сорри, если там что-то не так, я ее понял именно так, как ты потом объяснил).
А есть в каком-нибудь ещё языке кроме питона такое понятие как метаклассы? Это типа конструктор классов, ну что-то вроде класса, объекты которого - классы.
template в C++? Generics в Java/C#? System.Type в .NET?
ну вот в хаскелле классы — это такие штуки, объекты которых — типы.
>А есть в каком-нибудь ещё языке кроме питона такое понятие как метаклассы? Это типа конструктор классов, ну что-то вроде класса, объекты которого - классы.
В Руби есть нечто похожее, вроде.
Правда, сходство в основном в названии.
Тут подробности:
http://mobcode.com/2006/12/22/charting-ruby-class-and-metacl...
В Руби есть нечто похожее, вроде.
Правда, сходство в основном в названии.
Тут подробности:http://mobcode.com/2006/12/22/charting-ruby-class-and-metacl...
О боже мой, как я мог про шаблоны забыть 
Про остальное вообще в первые слышу, надо будет почитать.

Про остальное вообще в первые слышу, надо будет почитать.
В языках типа С++, джавы и шарпа так сложилось исторически - есть примитивные заранее определенные типы, и есть более сложные сущности - классы.Untrue в отношении шарпа (и, практически наверняка, жавы).
typeof(int) == typeof(System.Int32)
Это просто алиас.
При этом System.Int32 есть структура, состоящая ровно из четырёх байтов и являющаяся сишным четырёхбайтным интом for all conceivable purposes. К этой структуре приписаны методы, как статические, так и instance. Static typing в сочетании с правилом structures are sealed (final) (в шарпе есть специальное словосочетание: value type) позволяет реализовать это без дополнительных затрат памяти на classId.
В жаве долгое время не было автоматического боксинга/анбоксинга, поэтому использовались два разных объявления, просто int, который попадал на стек (при объявлении локальной переменной) или непосредственно в структуру encapsulating class (при объявлении члена и другое, боюсь неправильно написать, которое описывало указатель на класс, содержащий инт. В шарпе как-то без этого обошлись, причём забавно, бокснутые инты в принципе существовали, а описывающий их тип появился только во второй версии.
Оставить комментарий
zrab
В С++ можно написатьSystem::Int32 i = 1;
а можно
int i = 1;
чем эти 2 объявления отличаются? И зачем вообще тип данных, если есть классы (кроме удобства)?