Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > "Абстрактный" и "НЕ абстрактный" типы данных


Автор: ДокторТуамОсес 3.1.2011, 13:27
У некоторых авторов книг по C++ встречал такую мысль, что "абстрактный тип данных" - это любой производный (т.е. не базовый) тип, определённый программистом.

Т.е. получается, к примеру:

Код

typedef int* P[12] ;

что тип P - это "абстрактный тип данных"?

Или как?

Автор: KaraKum 3.1.2011, 13:32
Скорее всего под "абстрактным типом данных" имеются в виду шаблоны.

Автор: Dem_max 3.1.2011, 14:27
это значит определенный пользователем тип данных

Код

typedef int* Car[12] ;

Автор: KaraKum 3.1.2011, 14:29
А что абстрактного в типах данных, определённых пользователем?

Автор: Dem_max 3.1.2011, 14:42
можно допустим так написать
Код

typedef std:string TString;

typedef MyClass NewType;


вот TString и  NewType будет новым типом пользовательских данных


Автор: KaraKum 3.1.2011, 15:01
Да - новый. Но ничего абстрактного там нет.

Автор: ДокторТуамОсес 3.1.2011, 16:40
Цитата(KaraKum @ 3.1.2011,  13:32)
Скорее всего под "абстрактным типом данных" имеются в виду шаблоны.

Я у некоторых авторов книг по C++ и на форумах встречал такую мысль, что, де, "абстрактный тип данных" - это любой производный (т.е. не базовый) тип, определённый программистом.

Вторые пишут, что в C++ "абстрактный тип" - это только классы.

Третии пишут, "абстрактные типы" - это списки, очереди, деревья и т.п.

Четвёртые пишут, что "абстрактный тип" - это вообще может быть любым образом
(хоть с помощью макросов) описанный тип, посредством которого реализуется концепция
"абстракции данных"

Мне ближе всего 4-я точка зрения.

Автор: KaraKum 3.1.2011, 16:42
Ну, как мы недавно убедились, книги могут быть разные.

Автор: kemiisto 3.1.2011, 16:44
Я как-то http://stackoverflow.com/questions/1692933/what-is-an-abstract-data-type-in-object-oriented-programming/1693383#1693383 про это дело.

Автор: ДокторТуамОсес 3.1.2011, 16:46
Цитата(KaraKum @ 3.1.2011,  14:29)
А что абстрактного в типах данных, определённых пользователем?

Я читал, что люди, понимающие под "абстрактным типом" вообще любой 
производный тип
,апеллируют к тому, что компилятор изначально ничего про них 
не знает (т.е. они как бы не существуют реально), а пользователь всё равно их может 
использовать в программе (естественно после описания) так же как и базовые типы.
Вообщем, как-то так  smile

Добавлено @ 16:50
Цитата(KaraKum @ 3.1.2011,  16:42)
Ну, как мы недавно убедились, книги могут быть разные.

А как пишут в "правильных" книгах , которые написаны реальными/правильными, живущими по "понятиям" пацанами? smile 
Т.е. какая из приведённых мной выше 4-х точек зрения правильная?

Добавлено @ 16:55
Цитата(KaraKum @ 3.1.2011,  14:29)
А что абстрактного в типах данных, определённых пользователем?

А что "абстрактного" во "встроенных абстрактных типах"? (т.е. типах НЕ определяемых пользователем).
Как я выяснил, существуют языки в которые есть встроенные (т.е. базовые) АТД 

Добавлено @ 16:56
Цитата(ДокторТуамОсес @  3.1.2011,  16:40 Найти цитируемый пост)
"абстрактный тип" - это вообще может быть любым образом
(хоть с помощью макросов) описанный тип, посредством которого реализуется концепция
"абстракции данных"

Но тогда встаёт вопрос, что же такое "абстракция данных"?
Тут тоже есть весьма многочисленные разночтения

Автор: KaraKum 3.1.2011, 17:19
Цитата(ДокторТуамОсес @  3.1.2011,  17:46 Найти цитируемый пост)
А что "абстрактного" во "встроенных абстрактных типах"? (т.е. типах НЕ определяемых пользователем).

В том и дело что ничего.
Среди возможностей самого языка С++, связанных с абстрагированием, я вижу лишь шаблоны - с ними осуществляется работа вне зависимости от того какими конкретно данными (типами) они являются. Обычно в таком случае нужно лишь знать размер данных.

Добавлено через 2 минуты и 41 секунду
http://www.cyberguru.ru/programming/cpp/cpp-data-abstraction-page3.html
Судя заданному жаргону - это написал "реальный пацан".

Автор: ДокторТуамОсес 3.1.2011, 17:38
Цитата(ДокторТуамОсес @ 3.1.2011,  16:46)
Цитата(KaraKum @ 3.1.2011,  14:29)
А что абстрактного в типах данных, определённых пользователем?

Я читал, что люди, понимающие под "абстрактным типом" вообще любой 
производный тип
,апеллируют к тому, что компилятор изначально ничего про них 
не знает (т.е. они как бы не существуют реально), а пользователь всё равно их может 
использовать в программе (естественно после описания) так же как и базовые типы.
Вообщем, как-то так  smile

Или ещё к тому, что некоторые типы вообще не "привязаны" ни к какой переменной.

Например коде

Код

typedef int* P ;
typedef P* P2 ;
P2 p = 0; 



не существует переменных типа P и тип P используется
только для построения на его основе других типов.

Автор: KaraKum 3.1.2011, 17:43
typedef существует лишь для удобства печатания, чтобы каждый раз при объявлении переменной не писать сложные конструкции типа "unsigned long long int", а просто:
Код

typedef unsigned long long int int64
int64 myLongInteger = 18 446 744 073 709 551 616;

И, вообще, это равносильно следующему:
Код

#define int64 unsigned long long int
int64 theSame;

но во втором случае нужно быть осторожным с контекстом.

Автор: mes 3.1.2011, 17:49
Цитата(ДокторТуамОсес @  3.1.2011,  12:27 Найти цитируемый пост)
У некоторых авторов книг по C++ встречал такую мысль, что "абстрактный тип данных" -

АТД - это не термин C++.. читайте более обобщенные книги smile 

Цитата(ДокторТуамОсес @  3.1.2011,  12:27 Найти цитируемый пост)
Т.е. получается, к примеру:...
что тип P - это "абстрактный тип данных"?

нет, не получается.. 

Цитата(ДокторТуамОсес @  3.1.2011,  15:40 Найти цитируемый пост)
Я у некоторых авторов книг по C++ и на форумах встречал такую мысль, что, де, "абстрактный тип данных" - это любой производный (т.е. не базовый) тип, определённый 
программистом.

нет.. 

Цитата(ДокторТуамОсес @  3.1.2011,  15:40 Найти цитируемый пост)
Вторые пишут, что в C++ "абстрактный тип" - это только классы.

одна из реализаций АТД - это абстрактные классы.. 


Цитата(ДокторТуамОсес @  3.1.2011,  15:40 Найти цитируемый пост)
третии пишут, "абстрактные типы" - это списки, очереди, деревья и т.п.

нет, не так поняли..  при реализации списков, очередей, деревьев, лучше применять "АТД-подход".. 


Цитата(ДокторТуамОсес @  3.1.2011,  15:40 Найти цитируемый пост)
Четвёртые пишут, что "абстрактный тип" - это вообще может быть любым образом
(хоть с помощью макросов) описанный тип, 

да может.. 

Цитата(ДокторТуамОсес @  3.1.2011,  15:40 Найти цитируемый пост)
посредством которого реализуется концепция
"абстракции данных"

ну так .. АТД, это тип реализующий концепцию "абстракции данных" - а вот что это подробно написано в книжках.. только надо выбрать правильные.. 
;)

Добавлено через 1 минуту и 3 секунды
Цитата(ДокторТуамОсес @  3.1.2011,  16:38 Найти цитируемый пост)
Или ещё к тому, что некоторые типы вообще не "привязаны" ни к какой переменной.

при чем тут переменные , если речь о типе ?!  smile 

Автор: ДокторТуамОсес 3.1.2011, 17:52
Цитата(KaraKum @  3.1.2011,  17:19 Найти цитируемый пост)
Среди возможностей самого языка С++, связанных с абстрагированием, я вижу лишь шаблоны

Но это Вы зря.
В с++ много средств, поддерживающих абстракцию: макросы, функции, классы, перегрузка операций,
шаблоны, ....
Ведь абстракция в программировании по сути есть отделение "интерфейса" от "реализации".
Т.е. когда можно использовать ту или иную сущность зная только её интерфейс,
и изменять/выбирать реализацию этой сущности без необходимости менять код, использующий 
эту сущность.

Т.е. абстракция это (ИМХО), если "объяснять на пальцах"(с),
 когда "мухи отдельно, а котлеты отдельно"(с)  smile

Добавлено через 1 минуту и 10 секунд
"Что касается абстракции, то она состоит в отделении ощутимых свойств тел либо от
других их свойств, либо от самих тел, которые ими обладают.
"©  smile 

Автор: Batbko 3.1.2011, 17:54
IMHO абстрактный тип данных, тот который определяет какие операции могут выполняться над экземплярами этого типа но не предоставляет конкретной реализации этих операций, только семантику.
Т.е в контексте с++ это любой класс имеющий хотя бы один чисто виртуальный метод.

Автор: KaraKum 3.1.2011, 17:54
Здесь, скорее всего, идёт речь про общие принципы ООП, а не конкретно С++.

Автор: ДокторТуамОсес 3.1.2011, 17:57
Цитата(KaraKum @ 3.1.2011,  17:43)
typedef существует лишь для удобства печатания, чтобы каждый раз при объявлении переменной не писать сложные конструкции типа "unsigned long long int", а просто:
Код

typedef unsigned long long int int64
int64 myLongInteger = 18 446 744 073 709 551 616;

И, вообще, это равносильно следующему:
Код

#define int64 unsigned long long int
int64 theSame;

но во втором случае нужно быть осторожным с контекстом.

Я же Вам привёл пример (хоть несколько корявый, но тем не менее), что
когда с помощью typedef вводятся идентификаторы типов,
которые ВООБЩЕ не используются при "объявлениях переменной",
а используются только для конструирования других типов smile 

Автор: KaraKum 3.1.2011, 17:59
Ну и что? Нет разницы.

Автор: ДокторТуамОсес 3.1.2011, 18:03
Цитата(mes @  3.1.2011,  17:49 Найти цитируемый пост)
при чем тут переменные , если речь о типе ?!  smile  

А что такое "тип"? Ведь "тип" - это сокращённое обозначение термина "тип переменной".
А тип переменной определяет:
1) Множество значений, которые может принимать переменная
2) Множество доп. операций/функций, в которых переменная может выступать операндом
3) Внутреннее представление текущего значения переменной в памяти

Как видите во всех 3-х пунктах определения типа фигурирует слово "переменная"  smile 

Автор: KaraKum 3.1.2011, 18:04
"Тип" для С++ - это информация о том сколько байт в памяти занимает переменная, созданная как этот тип, а также какие действия выполнять при стандартных операциях (операторы "+", "-", "*", ...).
Для структур и классов (в С++ это одно и тоже кроме "public") это ещё информация о том где в сегменте кода искать функции-элементы классов.
Всё остальное от лукавого...

Добавлено через 2 минуты и 58 секунд
Вот так, например, можно к строке прибавить число 5:
Код

char* pureString = "I will be increased by five! Oh God!";
(*(int*)pureString) += 5;


Добавлено через 3 минуты и 48 секунд
Это чтобы развеять непонятные предрассудки вроде "привязка типа к переменной" и т.д....

Автор: ДокторТуамОсес 3.1.2011, 18:08
Цитата(mes @ 3.1.2011,  17:49)
Цитата(ДокторТуамОсес @  3.1.2011,  12:27 Найти цитируемый пост)
У некоторых авторов книг по C++ встречал такую мысль, что "абстрактный тип данных" -

АТД - это не термин C++.. читайте более обобщенные книги smile 

Просто я опустил (для краткости) выделенные слова:
Изначально у меня в голове фраза звучала так: 
"У некоторых авторов книг, статей и монографий по C++, 
другим ЯВУ и по программированию вообще ..."
Но я решил абстрагироваться от выделенных слов  smile

Добавлено через 4 минуты и 3 секунды
Цитата(Batbko @  3.1.2011,  17:54 Найти цитируемый пост)
IMHO абстрактный тип данных, тот который определяет какие операции могут выполняться над экземплярами этого типа но не предоставляет конкретной реализации этих операций, только семантику.

Ваше ИМХО весьма близко к моему ИМХО  smile 

Автор: mes 3.1.2011, 18:17
Цитата(ДокторТуамОсес @  3.1.2011,  16:57 Найти цитируемый пост)
только для конструирования других типов

как это конструирование типов ?  в контексте С++.. 


Автор: ДокторТуамОсес 3.1.2011, 18:18
Цитата(KaraKum @  3.1.2011,  17:59 Найти цитируемый пост)
Цитата(ДокторТуамОсес @  3.1.2011,  17:57 Найти цитируемый пост)
Я же Вам привёл пример (хоть несколько корявый, но тем не менее), что
когда с помощью typedef вводятся идентификаторы типов,
которые ВООБЩЕ не используются при "объявлениях переменной",
а используются только для конструирования других типов smile  

Ну и что? Нет разницы. 

Для Вас - нет.
А для сторонников подхода: 
Цитата(ДокторТуамОсес @  3.1.2011,  16:40 Найти цитируемый пост)
"абстрактный тип данных" - это любой производный (т.е. не базовый) тип, определённый программистом.
 - есть принципиальная
разница.

Так как можно установить прямые связи между реальными (базовыми) типами
и кусками кода компилятора, за них отвечающими.
А для абстрактных типов такой прямой связи нет.

Автор: mes 3.1.2011, 18:18
Цитата(ДокторТуамОсес @  3.1.2011,  17:03 Найти цитируемый пост)
А что такое "тип"? Ведь "тип" - это сокращённое обозначение термина "тип переменной"

ух как.. а почему именно переменной,а не постоянной ? smile

Добавлено через 1 минуту и 5 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  17:03 Найти цитируемый пост)
Как видите во всех 3-х пунктах определения типа фигурирует слово "переменная"    

Ну так это Вы просто неправильно сформулировали.. больше ничего "полезного" не вижу smile

Автор: ДокторТуамОсес 3.1.2011, 18:20
Цитата(KaraKum @  3.1.2011,  18:04 Найти цитируемый пост)
"Тип" для С++ - это информация о том сколько байт в памяти занимает переменная

Вот видите? Опять всплыло слово "переменная"  smile 
Что и требовалось доказать: что есть прямая связь между понятием "тип" и понятием "переменная"

Автор: mes 3.1.2011, 18:20
Цитата(KaraKum @  3.1.2011,  17:04 Найти цитируемый пост)
ип" для С++ - это информация о том сколько байт в памяти занимает переменная, созданная как этот тип, а также какие действия выполнять при стандартных операциях (операторы "+", "-", "*", ...).

а при нестандартных операциях, чем определяется ?

Автор: KaraKum 3.1.2011, 18:21
Цитата(ДокторТуамОсес @  3.1.2011,  19:18 Найти цитируемый пост)
"абстрактный тип данных" - это любой производный (т.е. не базовый) тип, определённый программистом.

Нет такого подхода.


Цитата(ДокторТуамОсес @  3.1.2011,  19:18 Найти цитируемый пост)
Так как можно установить прямые связи между реальными (базовыми) типами
и кусками кода компилятора, за них отвечающими.

Не существует "кусков кода компилятора" ибо не существует "кода компилятора".

Автор: mes 3.1.2011, 18:21
Цитата(ДокторТуамОсес @  3.1.2011,  17:20 Найти цитируемый пост)
Вот видите? Опять всплыло слово "переменная"   
Что и требовалось доказать: что есть прямая связь между понятием "тип" и понятием "переменная" 

все селедки - рыбы, но не все рыбы селедки.. ©
так что судить по всплывшей селедке о всех рыбах, как минимум не корректно .. 


Автор: KaraKum 3.1.2011, 18:23
Цитата(ДокторТуамОсес @  3.1.2011,  19:20 Найти цитируемый пост)
Что и требовалось доказать: что есть прямая связь между понятием "тип" и понятием "переменная" 

Вот так можно создать "переменную" без типа:
Код

void* variable = malloc(4);

Автор: mes 3.1.2011, 18:23
Цитата(ДокторТуамОсес @  3.1.2011,  17:18 Найти цитируемый пост)
А для сторонников подхода: 
Цитата(ДокторТуамОсес @  3.1.2011,  16:40 )
"абстрактный тип данных" - это любой производный (т.е. не базовый) тип, определённый программистом.
 - есть принципиальная
разница.

тут два варианта либо Вы не правильно  поняли, что имели ввиду стороники, либо сами стороники  - выбирайте кто не прав сами smile

Автор: KaraKum 3.1.2011, 18:24
Цитата(mes @ 3.1.2011,  19:20)
Цитата(KaraKum @  3.1.2011,  17:04 Найти цитируемый пост)
ип" для С++ - это информация о том сколько байт в памяти занимает переменная, созданная как этот тип, а также какие действия выполнять при стандартных операциях (операторы "+", "-", "*", ...).

а при нестандартных операциях, чем определяется ?

Какие нестандартные операции?
Я знаю только сложение и деление.

Добавлено через 41 секунду
Ой, сравнение ещё забыл и сдвиг.

Автор: mes 3.1.2011, 18:25
Цитата(KaraKum @  3.1.2011,  17:23 Найти цитируемый пост)
Вот так можно создать "переменную" без типа:

она с типом  - указатель на void .. smile 

Автор: ДокторТуамОсес 3.1.2011, 18:25
Цитата(mes @  3.1.2011,  18:18 Найти цитируемый пост)
ух как.. а почему именно переменной,а не постоянной ? smile

Потому что "постоянная" если для неё описывается тип 
(т.е. если она не является "литералом"), является не чем иным, 
как "переменной", описанной с квалификатором const  smile 

Автор: KaraKum 3.1.2011, 18:26
Цитата(mes @ 3.1.2011,  19:25)
Цитата(KaraKum @  3.1.2011,  17:23 Найти цитируемый пост)
Вот так можно создать "переменную" без типа:

она с типом  - указатель на void .. smile

"void" переводится как пустота. Хотя тип указателя, конечно, присутствует - его можно сложить, поделить и даже подвигать  smile 

Автор: ДокторТуамОсес 3.1.2011, 18:27
Цитата(mes @ 3.1.2011,  18:21)
Цитата(ДокторТуамОсес @  3.1.2011,  17:20 Найти цитируемый пост)
Вот видите? Опять всплыло слово "переменная"   
Что и требовалось доказать: что есть прямая связь между понятием "тип" и понятием "переменная" 

все селедки - рыбы, но не все рыбы селедки.. ©
так что судить по всплывшей селедке о всех рыбах, как минимум не корректно ..

Ну тогда дайте определение понятия "Тип" (в контексте C++) не используя 
понятия "переменная" (и его синонимов !!! ) smile

Добавлено через 1 минуту и 24 секунды
Цитата(mes @ 3.1.2011,  18:17)
Цитата(ДокторТуамОсес @  3.1.2011,  16:57 Найти цитируемый пост)
только для конструирования других типов

как это конструирование типов ?  в контексте С++..

Дык приводил выше.
И не один раз.
Это когда идентификатор одного типа используется в определении другого типа

Автор: KaraKum 3.1.2011, 18:28
Цитата(ДокторТуамОсес @ 3.1.2011,  19:27)
Цитата(mes @ 3.1.2011,  18:21)
Цитата(ДокторТуамОсес @  3.1.2011,  17:20 Найти цитируемый пост)
Вот видите? Опять всплыло слово "переменная"   
Что и требовалось доказать: что есть прямая связь между понятием "тип" и понятием "переменная" 

все селедки - рыбы, но не все рыбы селедки.. ©
так что судить по всплывшей селедке о всех рыбах, как минимум не корректно ..

Ну тогда дайте определение понятия "Тип" (в контексте C++) не используя 
понятия "переменная" (и его синонимов !!! ) smile

Ну так я же дал: "количество байт в памяти и адреса функций в сегменте кода" - сколько синонимов "переменной" я употребил?

Автор: kemiisto 3.1.2011, 18:30
Цитата(KaraKum @  3.1.2011,  16:28 Найти цитируемый пост)
Ну так я же дал: "количество байт в памяти и адреса функций в сегменте кода" - сколько синонимов "переменной" я употребил?

Это в корне неверное определение. 

Даже в Педивикии очень ничего 
Цитата
Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям и, возможно, способ реализации хранения значений и выполнения операций.

Автор: KaraKum 3.1.2011, 18:32
Цитата(kemiisto @ 3.1.2011,  19:30)
Цитата(KaraKum @  3.1.2011,  16:28 Найти цитируемый пост)
Ну так я же дал: "количество байт в памяти и адреса функций в сегменте кода" - сколько синонимов "переменной" я употребил?

Это в корне неверное определение. 

Даже в Педивикии очень ничего 
Цитата
Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям и, возможно, способ реализации хранения значений и выполнения операций.

Абсолютно тоже самое что и я сказал.

Автор: ДокторТуамОсес 3.1.2011, 18:41
Цитата(Batbko @  3.1.2011,  17:54 Найти цитируемый пост)
IMHO абстрактный тип данных, тот который определяет какие операции могут выполняться над экземплярами этого типа но не предоставляет конкретной реализации этих операций, только семантику.

Согласен.
Но в "строгой теории" говорят, что ещё нужно указать "аксиомы, задающие свойства этих функций"http://citforum.ru/programming/theory/adt/

Т.е. мало описать что, де, есть операция '+','-','*','/'.
Надо ещё указать "аксиомы", которым эти операции подчиняются.
К примеру, что А + B = B + A

Добавлено через 4 минуты и 50 секунд
Цитата(KaraKum @ 3.1.2011,  18:23)
Цитата(ДокторТуамОсес @  3.1.2011,  19:20 Найти цитируемый пост)
Что и требовалось доказать: что есть прямая связь между понятием "тип" и понятием "переменная" 

Вот так можно создать "переменную" без типа:
Код

void* variable = malloc(4);

Как это "без типа".
У неё есть тип "указатель на void".
И ТОЛЬКО благодаря наличию у переменной типа компилятор знает:
1) Какое внутреннее представление в памяти имеет переменная (в частности её sizeof)
2) В каких операциях/функциях можно юзать эту переменную как операнд
3) Множество доп. значений этой переменной

Повторяю, понятие "тип" тесно связано с понятием "переменная"

Добавлено через 6 минут и 55 секунд
Цитата(Batbko @  3.1.2011,  18:41 Найти цитируемый пост)
Не успеваю за нитью разговора ибо биланй модем :( 

Дык я аналогично.
На "джЫ Эп Эр Эс"-е  сижу 
Отключите скрипты, картинки и т.п.
Мне таким образом удалось снизить размер загружаемой страницы с 300..500кБ до 5..7кБ  smile 

Автор: Batbko 3.1.2011, 18:41
Не успеваю за нитью разговора ибо биланй модем :( но :
Шаблоны позволяют абстрагироваться от конкретного типа данных, но не от реализации и предоставляют возможность создавать обобщённые типы, а http://ru.wikipedia.org/wiki/Абстрактный_тип_данных, как Я считаю, должны давать возможность абстрагироваться от способа работы с данными, т.е от реализации.

Хотя все зависит от чего собираешься http://ru.wikipedia.org/wiki/Абстракция smile, если, например, от способа определения типа данных то и шаблоны и typedef вполне подходящий инструмент но ни одно из этих средств не позволяет получить абстракный тип данных. 
К слову об определении типа данных, если не городить сложных определений, то это совокупность струтуры данных и операций возможных над этими данными, переменные, а тем более переменные с++ тут совсем ни при чеё. Переменная это способ обьявить именованную ссылку на экземпляр типа данных.

Автор: Batbko 3.1.2011, 18:51
Цитата(ДокторТуамОсес @  3.1.2011,  18:41 Найти цитируемый пост)
Надо ещё указать "аксиомы", которым эти операции подчиняются.К примеру, что А + B = B + A


Эту семантику определяет конкретная реализация средства для описания абстрактных типов.

В случае компилятора с++ семантика поведения операторов, такая как коммутативность или приоритет, заранее определена в компиляторе и пользователь не имеет средст её изменить, что и делает её аксиомой. С функциями та же история - есть четкие правила, описываемые при задании сигнатуры функции.

Автор: ДокторТуамОсес 3.1.2011, 19:00
Цитата(Batbko @  3.1.2011,  18:41 Найти цитируемый пост)
а абстрактные типы, как Я считаю, должны давать возможность абстрагироваться от способа работы с данными, т.е от реализации.

Ну да.
ИМХО механизм абстрактных типов данных должен позволять описывать типы данных
только через описание интерфейсов допустимых операций над данными данного типа
 (простите за тавтологию) и свойств этих операций.

Т.е. к примеру как-то так (здесь я исп. синтаксис некоего абстр. языка, а не C++):

Код

type T {
  operator + ( x, y) ; // описали абстрактную операцию
  x + y = y + x ;    // Описали свойство операции
}


Добавлено через 10 минут и 49 секунд
Чёта форум что-ли глючит?
Мой ответ Batbko как-то оказался выше его сообщения  smile 

Автор: ДокторТуамОсес 3.1.2011, 19:17
Цитата(Batbko @ 3.1.2011,  18:51)
Цитата(ДокторТуамОсес @  3.1.2011,  18:41 Найти цитируемый пост)
Надо ещё указать "аксиомы", которым эти операции подчиняются.К примеру, что А + B = B + A


Эту семантику определяет конкретная реализация средства для описания абстрактных типов.

В случае компилятора с++ семантика поведения операторов, такая как коммутативность или приоритет, заранее определена в компиляторе и пользователь не имеет средст её изменить, что и делает её аксиомой. С функциями та же история - есть четкие правила, описываемые при задании сигнатуры функции.

Согласен.
В любом случае, компилятор, поддерживающий концепцию абстракции данных, 
должен до определённого момента своей работы (и до определённого этапа
разработки программы) работать с абстрактными типами и данными, 
описанными с помощью этих типов, используя только инфу из описания 
"абстрактных" свойств "абстрактного типа данных" 
не привлекая инфу о его конкретной реализации, которая будет описана
на следующем этапе разработке программы.

Автор: KaraKum 3.1.2011, 19:20
Для компилятора нет понятия "абстрактных типов данных".

Автор: Batbko 3.1.2011, 19:35
Цитата(KaraKum @  3.1.2011,  19:20 Найти цитируемый пост)
Для компилятора нет понятия "абстрактных типов данных".


Ну например gcc при попытке создания экземпляра абстрактного типа данных(ну если вдруг какой то псих определил незакрытый конструктор smile ), примерно так и пишет "немогу создать экземляр абстрактоного класса бла-бла-бла ибо функция труля-ля чисто виртуальная функция"

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


Автор: KaraKum 3.1.2011, 19:38
А, в этом плане абстрактные классы, конечно, существуют.
Классы с чисто виртуальными методами (функциями). Экземпляры которых нельзя создать.

Автор: mes 3.1.2011, 20:03
Цитата(ДокторТуамОсес @  3.1.2011,  17:27 Найти цитируемый пост)
Ну тогда дайте определение понятия "Тип" (в контексте C++) не используя 

ну так это ж Вы книжку пишете, чего мне напрягаться то smile тем более, что на мои вопросы я далеко не всегда получаю от Вас ответы smile
Цитата(ДокторТуамОсес @  3.1.2011,  17:27 Найти цитируемый пост)
понятия "переменная" (и его синонимов !!! )

а какой "синоним переменной" возвращает функция f  ? : 
Код

int f() { return 5; }


Добавлено через 50 секунд
Цитата(KaraKum @  3.1.2011,  17:24 Найти цитируемый пост)
Какие нестандартные операции?

а что с данными работают только стандартные операции ?

Добавлено через 1 минуту и 44 секунды
Цитата(ДокторТуамОсес @  3.1.2011,  17:25 Найти цитируемый пост)
(т.е. если она не является "литералом")

а у литерала типа нет ?  smile

Добавлено через 3 минуты и 9 секунд
Цитата(KaraKum @  3.1.2011,  17:26 Найти цитируемый пост)
"void" переводится как пустота.

то есть если б его назвали бы по другому, то он сразу стал бы типом, а так нет smile

Добавлено через 3 минуты и 47 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  17:27 Найти цитируемый пост)
Дык приводил выше.
И не один раз.
Это когда идентификатор одного типа используется в определении другого типа 

и где ж тут конструировании типов ?!  smile

Добавлено через 5 минут и 34 секунды
Цитата(KaraKum @  3.1.2011,  17:32 Найти цитируемый пост)
Абсолютно тоже самое что и я сказал. 

тогда советую почитать еще несколько раз и обдумать, в чем все таки разница smile а она есть smile

Добавлено через 6 минут и 29 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  17:41 Найти цитируемый пост)
Надо ещё указать "аксиомы", которым эти операции подчиняются.
К примеру, что А + B = B + A

это к АТД никакого отношения не имеет..

Добавлено через 7 минут и 40 секунд
Цитата(Batbko @  3.1.2011,  17:41 Найти цитируемый пост)
Переменная это способ обьявить именованную ссылку на экземпляр типа данных.

способ ? ссылку ?

Добавлено через 8 минут и 59 секунд
Цитата(Batbko @  3.1.2011,  17:51 Найти цитируемый пост)
В случае компилятора с++ семантика поведения операторов, такая как коммутативность или приоритет, заранее определена в компиляторе и пользователь не имеет средст её изменить, что и делает её аксиомой. 

семантику поведения изменить может.. smile

Добавлено через 12 минут и 53 секунды
Цитата(KaraKum @  3.1.2011,  18:20 Найти цитируемый пост)
ля компилятора нет понятия "абстрактных типов данных". 

есть, если реализуется средствами языка, предназначенными для этого smile 

Автор: Batbko 3.1.2011, 20:19
Цитата(mes @  3.1.2011,  20:03 Найти цитируемый пост)
семантику поведения изменить может.. 

если не секрет как ? smile можно ссылку 

Автор: KaraKum 3.1.2011, 20:20
Цитата(mes @  3.1.2011,  21:03 Найти цитируемый пост)
а что с данными работают только стандартные операции ?

О каких операциях идёт речь?

Автор: mes 3.1.2011, 20:21
Цитата(Batbko @  3.1.2011,  18:35 Найти цитируемый пост)
 пишет "немогу создать экземляр абстрактоного класса 

абстрактные классы это в большей степени средства  динамического полиморфизма, нежели поддержки концепции АТД..
т.е. для понимания и использования АТД, абстрактные классы нам не нужны smile

Добавлено через 2 минуты и 34 секунды
Цитата(KaraKum @  3.1.2011,  19:20 Найти цитируемый пост)
О каких операциях идёт речь? 

о стандартных smile что именно под ними подразумевается надо спросить у Вас, ибо Вы употребили это слово smile
но раз имеются стандартные операции, то есть как минимум и нестандартные.. а что именно зависит от Вашего вышеспрашиваемого определения.. smile

Добавлено через 3 минуты и 9 секунд
Цитата(Batbko @  3.1.2011,  19:19 Найти цитируемый пост)
если не секрет как ?  можно ссылку 

перегрузить оператор smile

Автор: KaraKum 3.1.2011, 20:29
Цитата(mes @ 3.1.2011,  19:20)
Цитата(KaraKum @  3.1.2011,  17:04 Найти цитируемый пост)
ип" для С++ - это информация о том сколько байт в памяти занимает переменная, созданная как этот тип, а также какие действия выполнять при стандартных операциях (операторы "+", "-", "*", ...).

а при нестандартных операциях, чем определяется ?

Стандартные операции - это те что определены сементикой языка. НЕстандартные - это перегруженные операторы. Ещё вопросы будут?

Автор: ДокторТуамОсес 3.1.2011, 20:32
Цитата(KaraKum @  3.1.2011,  19:20 Найти цитируемый пост)
Для компилятора нет понятия "абстрактных типов данных". 

Цитата(KaraKum @  3.1.2011,  14:29 Найти цитируемый пост)
А что абстрактного в типах данных, определённых пользователем? 

Цитата(KaraKum @  3.1.2011,  15:01 Найти цитируемый пост)
Да - новый. Но ничего абстрактного там нет. 

Цитата(KaraKum @  3.1.2011,  17:59 Найти цитируемый пост)
Ну и что? Нет разницы. 

Цитата(KaraKum @  3.1.2011,  18:21 Найти цитируемый пост)
Не существует "кусков кода компилятора" ибо не существует "кода компилятора". 

Я конечно понимаю, что "краткость - сестра таланта"(с) и прочее, но не могли бы Вы
высказываться более развёрнуто что ли?
А то у меня дома все телепаты в отпуске, а я по короткой обрывочной фразе зачастую не могу
догадаться, что Вы, пардон, имеете в виду.  smile 

Автор: KaraKum 3.1.2011, 20:33
Цитата(mes @  3.1.2011,  21:03 Найти цитируемый пост)
Добавлено через 3 минуты и 9 секунд
Цитата(KaraKum @  3.1.2011,  17:26 Найти цитируемый пост)
"void" переводится как пустота.

то есть если б его назвали бы по другому, то он сразу стал бы типом, а так нет smile

Неверно. Тип "void*" означает, дословно, "указатель на ячейку памяти, где начинаются данные произвольного (неизвестного) типа произвольной длины". В контексте "целочисленная переменная" или "вещественное число" это означает "неизвестность". Вот такие вот пироги...

Автор: mes 3.1.2011, 20:34
Цитата(KaraKum @  3.1.2011,  17:04 Найти цитируемый пост)
"Тип" для С++ - это информация о том сколько байт в памяти занимает переменная, созданная как этот тип, а также какие действия выполнять при стандартных операциях (операторы "+", "-", "*", ...).


Цитата(KaraKum @  3.1.2011,  19:29 Найти цитируемый пост)
Стандартные операции - это те что определены сементикой языка. НЕстандартные - это перегруженные операторы. Ещё вопросы будут? 

ну так.. а чем не угодили НЕстандартные операции при определении типа ? не говоря о функциях и операторах преобразования..


Автор: Batbko 3.1.2011, 20:34
IMHO любой полиморфизм, наряду с инкапсуляцией и, в рамка с++ наследованием, есть средства для описания АТД и тесно связаны с самим определением.

Цитата(mes @  3.1.2011,  20:21 Найти цитируемый пост)
если не секрет как ?  можно ссылку перегрузить оператор 

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



Цитата(mes @  3.1.2011,  20:03 Найти цитируемый пост)
способ ? ссылку ?
 в общем случае если не проводить параллели с ссылками с++ или какого либо друго ЯП да.

Автор: KaraKum 3.1.2011, 20:35
Цитата(mes @  3.1.2011,  21:03 Найти цитируемый пост)
Добавлено через 12 минут и 53 секунды
Цитата(KaraKum @  3.1.2011,  18:20 Найти цитируемый пост)
ля компилятора нет понятия "абстрактных типов данных". 

есть, если реализуется средствами языка, предназначенными для этого smile 

Нету. И вообще, компьютер с абстракцией не работает. Добро пожаловать в IT.

Автор: ДокторТуамОсес 3.1.2011, 20:35
Цитата(KaraKum @  3.1.2011,  19:38 Найти цитируемый пост)
А, в этом плане абстрактные классы, конечно, существуют.
Классы с чисто виртуальными методами (функциями). Экземпляры которых нельзя создать. 

Повторяю: вообще говоря  <абстрактный тип данных> ≠ <абстрактный класс>

Автор: mes 3.1.2011, 20:36
Цитата(KaraKum @  3.1.2011,  19:33 Найти цитируемый пост)
Неверно. 

ну так, а других выводов из Вашего предложения не следовало  smile

Добавлено через 1 минуту и 22 секунды
Цитата(KaraKum @  3.1.2011,  19:35 Найти цитируемый пост)
Нету. И вообще, компьютер с абстракцией не работает.

ну если смотреть на этот вопрос "глобально", то ЯП вобще то предназначены для абстракции , при том не только данных, но и действий.. smile

Добавлено через 1 минуту и 39 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  19:35 Найти цитируемый пост)
вообще говоря  <абстрактный тип данных> ≠ <абстрактный класс> 

 smile

Добавлено через 3 минуты и 12 секунд
Цитата(Batbko @  3.1.2011,  19:34 Найти цитируемый пост)
IMHO любой полиморфизм, наряду с инкапсуляцией и, в рамка с++ наследованием, есть средства для описания АТД и тесно связаны с самим определением.

ну да.. а сам компьютер со всей периферией, ей средства набора текста..  smile


Автор: KaraKum 3.1.2011, 20:40
Цитата(ДокторТуамОсес @  3.1.2011,  21:32 Найти цитируемый пост)
Я конечно понимаю, что "краткость - сестра таланта"(с) и прочее, но не могли бы Вы
высказываться более развёрнуто что ли?

Я не совсем понимаю вопрос и думаю что он "мутно" задан потому что задавальщику этого вопроса плохо понятна суть дела. Для того чтобы разобраться в степени понимания этой сути я и показал эквивалентность "typedef" и "define" чтобы показать что ничего эфемерного в "typedef" и также показал суть сложения и деления и работы с памятью. Но эта ветвь рассуждений заглохла. Ещё некоторые "знатоки" не замечают абсолютной эквивалентности фраз и указывают на ошибки "в корне".
На практике приходилось встречать код вроде
Код

if(someCondition)
{
     #define SOME_DEFINITION
}

Поэтому иногда приходится не отвечать на прямо заданный вопрос, а переворачивать всё мировоззрение вверх-ногами.

Автор: mes 3.1.2011, 20:42
Цитата(Batbko @  3.1.2011,  19:34 Найти цитируемый пост)
перегрузка оператора никоим образом не позволяет изменить семантику его поведения
так например перегрузка бинарного оператора сложения никогда не заставит перестать сложение быть комутативным

а что семантика поведения ограничена только комутативностью ? сейчас набросаю контрпример smile

а операторы ограничены сложением ? 
погуглите насчет перегрузки  операторов && и || smile

Автор: KaraKum 3.1.2011, 20:42
Цитата(mes @  3.1.2011,  21:36 Найти цитируемый пост)
ну так, а других выводов из Вашего предложения не следовало

Да - всё изначально было понятно как раз-два.

Автор: ДокторТуамОсес 3.1.2011, 20:44
Цитата(mes @ 3.1.2011,  20:03)
Цитата(ДокторТуамОсес @  3.1.2011,  17:27 Найти цитируемый пост)
понятия "переменная" (и его синонимов !!! )

а какой "синоним переменной" возвращает функция f  ? : 
Код

int f() { return 5; }


Знамо дело какой.
Безымянную переменную типа int, в которую копируется результат работы функции f smile 

Автор: KaraKum 3.1.2011, 20:45
Цитата(mes @ 3.1.2011,  21:42)
Цитата(Batbko @  3.1.2011,  19:34 Найти цитируемый пост)
перегрузка оператора никоим образом не позволяет изменить семантику его поведения
так например перегрузка бинарного оператора сложения никогда не заставит перестать сложение быть комутативным

а что семантика поведения ограничена только комутативностью ? а операторы ограничены сложением ? 
погуглите насчет перегрузки  операторов && и || smile

Похоже в обсуждениях С++ пошли приёмы русского языка.
Выражение
Цитата

перегрузка бинарного оператора сложения никогда не заставит перестать сложение быть комутативным

абсолютно верно и не нужно биться головой об стену в поисках ошибок.

Автор: mes 3.1.2011, 20:46
Цитата(mes @  3.1.2011,  19:42 Найти цитируемый пост)
сейчас набросаю контрпример 

Код

struct A {};
int operator + (A const, int) {
 return 5;
}

int main ()
{
      A a;
      std::cout << (a+5);
//      std::cout << (5+a);
}

http://liveworkspace.org/code/5b1dc2fe1ef6c05c735a9ad709a826ea

Автор: KaraKum 3.1.2011, 20:46
Цитата(mes @  3.1.2011,  21:34 Найти цитируемый пост)
ну так.. а чем не угодили НЕстандартные операции при определении типа ?

Вопросы всё-таки ещё будут. Что мне в чём-то не угодило?? Не понимаю. В чём вообще смысл этой фразы?

Автор: mes 3.1.2011, 20:47
Цитата(KaraKum @  3.1.2011,  19:45 Найти цитируемый пост)
перегрузка бинарного оператора сложения никогда не заставит перестать сложение быть комутативным

абсолютно верно и не нужно биться головой об стену в поисках ошибок. 

а как же пример, чуть выше этого поста ?

Автор: ДокторТуамОсес 3.1.2011, 20:47
Цитата(mes @ 3.1.2011,  20:03)
Добавлено @ 20:05
Цитата(ДокторТуамОсес @  3.1.2011,  17:25 Найти цитируемый пост)
(т.е. если она не является "литералом")

а у литерала типа нет ?  smile

Есть. Для литералов нет определений, они   с а м о о п р е д е л я е м ы е  smile 

Автор: mes 3.1.2011, 20:48
Цитата(KaraKum @  3.1.2011,  19:46 Найти цитируемый пост)
Вопросы всё-таки ещё будут. Что мне в чём-то не угодило?? Не понимаю. В чём вообще смысл этой фразы?

так Вы сказали что тип определяет как работают с данными стандартные операции... 
так  кто определяет как работают с данными нестандартные операции ?

Добавлено через 1 минуту и 6 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  19:47 Найти цитируемый пост)
Есть. Для литералов нет определений, они   с а м о о п р е д е л я е м ы е

при чем тут определение ?!  smile 
я спрашивал про тип .. 

Автор: KaraKum 3.1.2011, 20:52
Короче, ДокторТуамОсес, я сдаюсь. Доверяю тебя в руки знатокам русского языка и цитировщикам эквивалентных фраз, видящих в них "коренные" различия.
Удачи, она тебе понадобится.

Добавлено @ 20:53
"Истина где-то рядом..."

Автор: mes 3.1.2011, 20:53
Код

   auto s = "string";


в общем откуда берется тип у s smile

Автор: ДокторТуамОсес 3.1.2011, 20:53
Цитата(mes @ 3.1.2011,  20:03)
Цитата(ДокторТуамОсес @  3.1.2011,  17:27 Найти цитируемый пост)
Дык приводил выше.
И не один раз.
Это когда идентификатор одного типа используется в определении другого типа 

и где ж тут конструировании типов ?!  smile

В приведённом мной примере smile 

Автор: mes 3.1.2011, 20:55
Цитата(ДокторТуамОсес @  3.1.2011,  19:53 Найти цитируемый пост)
В приведённом мной примере

никакой тип там не конструируется.. 

Автор: ДокторТуамОсес 3.1.2011, 20:55
Цитата(mes @ 3.1.2011,  20:03)
Цитата(ДокторТуамОсес @  3.1.2011,  17:41 Найти цитируемый пост)
Надо ещё указать "аксиомы", которым эти операции подчиняются.
К примеру, что А + B = B + A

это к АТД никакого отношения не имеет..

Забыли добавить ",ИМХО, "  smile 

Автор: mes 3.1.2011, 20:57
может имели ввиду инстанируется ? (как оно по русски то правильно пишется)

Добавлено через 1 минуту и 14 секунд
все равно смысла фразы не вижу .. 

Автор: ДокторТуамОсес 3.1.2011, 21:02
Цитата(KaraKum @ 3.1.2011,  20:33)
Цитата(mes @  3.1.2011,  21:03 Найти цитируемый пост)
Добавлено через 3 минуты и 9 секунд
Цитата(KaraKum @  3.1.2011,  17:26 Найти цитируемый пост)
"void" переводится как пустота.

то есть если б его назвали бы по другому, то он сразу стал бы типом, а так нет smile

Неверно. Тип "void*" означает, дословно, "указатель на ячейку памяти, где начинаются данные произвольного (неизвестного) типа произвольной длины". В контексте "целочисленная переменная" или "вещественное число" это означает "неизвестность". Вот такие вот пироги...

А в контексте компилятора означает много чего известность.
Как минимум:
1) размер памяти, выделяемой под переменную
2) внутреннее представление ("указатель")
3) множество доп. операций, в которые может входить переменная 
( к примеру нельзя переменной, являющейся указателем на void присвоить
 НЕПОСРЕДСТВЕННО значение типа int)

Учитывая п1, ..., п3 делаем вывод, что переменная, описанная как указатель на void,
имеет тип. smile 

Автор: Batbko 3.1.2011, 21:04
Цитата(mes @  3.1.2011,  20:46 Найти цитируемый пост)
Код

struct A {};
int operator + (A const, int) {
 return 5;
}

int main ()
{
      A a;
      std::cout << (a+5);
//      std::cout << (5+a);
}



оператор не потерял свойство комутативности просто в выражении участвуют операнды для которых не определена верная перегрузка оператора отсюда и ошибка в закоментированном участке кода, которая может быть исправленна использованием outline определения оператора, т.е в качестве свободной функции.

Но не будем о с++.Все ниже написанное это только моё понимание АТД .

АТД должен предоставить набор операций с заданной раз и навсегда семантикой(которая в большинстве случаев задаеться в конкретной реализации ЯП) ака интерфейс.
АТД должен предоставить своим реализациям интерфейс для изменения реализации, НО не семантики, операций.
АТД должен предоставить возможность инкапсулировать конкретной реализации данные в любом доступном для хранения виде, и гарантировать доступность этих данных пользователю только через предоставляемые им интерфейсы.

В очень общем виде любой тип данных используемых в ЯП это абстракция.Поясню: цпу, ну или гпу даже на уровне ассемблера предоставляют абстракции над физическими процессами происходящими в этих устройствах. Просто эта абстракция удобна для восприятия простому человеку.

Вот как то так  smile .


Автор: ДокторТуамОсес 3.1.2011, 21:07
Цитата(Batbko @ 3.1.2011,  20:34)
IMHO любой полиморфизм, наряду с инкапсуляцией и, в рамка с++ наследованием, есть средства для описания АТД и тесно связаны с самим определением.

Цитата(mes @  3.1.2011,  20:21 Найти цитируемый пост)
если не секрет как ?  можно ссылку перегрузить оператор 

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



Цитата(mes @  3.1.2011,  20:03 Найти цитируемый пост)
способ ? ссылку ?
 в общем случае если не проводить параллели с ссылками с++ или какого либо друго ЯП да.

Позволю себе не согласиться.
То что Вы описали - не семантика, а алгебраические свойства операций.
А семантику то как раз поменять можно.

Можно например сделать, чтобы
- для объектов класса Т1 А+В означало действительно сложение в том смысле как мы привыкли
- для объектов класса Т2 А+В означало операцию умножения

Автор: mes 3.1.2011, 21:07
Цитата(Batbko @  3.1.2011,  20:04 Найти цитируемый пост)
оператор не потерял свойство комутативности просто в выражении участвуют операнды для которых не определена верная перегрузка оператора отсюда и ошибка в закоментированном участке кода, 

А кто это решил, что неверная ?! мне именно такое поведение и требовалось.. 
тогда и у потоков операторы >>,<< не правильно перегружены.. не смотряя на то что входят в стандарт smile

Автор: ДокторТуамОсес 3.1.2011, 21:10
Цитата(KaraKum @  3.1.2011,  20:35 Найти цитируемый пост)
Нету. И вообще, компьютер с абстракцией не работает. Добро пожаловать в IT. 

Я же просил Вас как человека  smile  
Цитата(ДокторТуамОсес @  3.1.2011,  20:32 Найти цитируемый пост)
Я конечно понимаю, что "краткость - сестра таланта"(с) и прочее, но не могли бы Вы
высказываться более развёрнуто что ли?
А то у меня дома все телепаты в отпуске, а я по короткой обрывочной фразе зачастую не могу
догадаться, что Вы, пардон, имеете в виду.  smile  


А Вы опять всё загадками изъясняетесь.
Каждый Ваш ответ порождает 10 уточняющих вопросов.

Вот что Вы КОНКРЕТНО имеете в виду говоря "компьютер с абстракцией не работает."
То что проц понимает только язык машинных кодов? Или что? smile 

Автор: KaraKum 3.1.2011, 21:13
Цитата(ДокторТуамОсес @  3.1.2011,  22:02 Найти цитируемый пост)
1) размер памяти, выделяемой под переменную

Это известно только в момент создания переменной и то если эта переменная создавалась. Указателем на "void" может быть адрес буфера железа (неизвестный размер), параметр для потока (неизвестный размер).

Цитата(ДокторТуамОсес @  3.1.2011,  22:02 Найти цитируемый пост)
2) внутреннее представление ("указатель")

Абсолютно любая переменная является указателем на ячейку памяти.

Цитата(ДокторТуамОсес @  3.1.2011,  22:02 Найти цитируемый пост)
( к примеру нельзя переменной, являющейся указателем на void присвоить
 НЕПОСРЕДСТВЕННО значение типа int)

Можно.

Добавлено через 1 минуту и 38 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  22:10 Найти цитируемый пост)
Каждый Ваш ответ порождает 10 уточняющих вопросов.

Вот именно это я имел в виду под "переворачиванием мировоззрения с ног-на-голову". Звучит слишком громко для такого плёвого дела, но порой некоторые узнают какие-то факты вот с таким лицом:  smile 

Автор: ДокторТуамОсес 3.1.2011, 21:16
Цитата(KaraKum @  3.1.2011,  20:40 Найти цитируемый пост)
Для того чтобы разобраться в степени понимания этой сути я и показал эквивалентность "typedef" и "define" 

А я сказал на это:
 
Цитата(ДокторТуамОсес @  3.1.2011,  16:40 Найти цитируемый пост)
"абстрактный тип" - это вообще может быть любым образом (хоть с помощью макросов) описанный тип


Автор: Batbko 3.1.2011, 21:17
Цитата(ДокторТуамОсес @  3.1.2011,  21:07 Найти цитируемый пост)
- для объектов класса Т2 А+В означало операцию умножения

но приоритет операции или способ её вызова это не изменит, а будет означать только то что правильной операцией сложения для этих обьектов будет на самом деле их умножение.


Цитата(mes @  3.1.2011,  21:07 Найти цитируемый пост)
А кто это решил, что неверная ?! мне именно такое поведение и требовалось.. 

никто и не решал smile просто не определена операция сложения целого с обьектом класса, от этого комутативность не утеряна и будет сохранена для обьектов этого типа.Возможность получения такой  неоднозначности недостаток ЯП.


Под http://ru.wikipedia.org/wiki/Семантика_(программирование) я понимаю совокупность правил по которым происходит выполнение операций, а не то что операции должны делать.

Но перегрузки операторов и тому подобные средства, это все элементы конкретного ЯП.




Автор: ДокторТуамОсес 3.1.2011, 21:22
Цитата(KaraKum @ 3.1.2011,  20:45)
Похоже в обсуждениях С++ пошли приёмы русского языка.
Выражение
Цитата

перегрузка бинарного оператора сложения никогда не заставит перестать сложение быть комутативным

абсолютно верно и не нужно биться головой об стену в поисках ошибок.

Это верно то верно.
Только вопрос: "А что? Семантика оператора исчерпывается только правилами коммутативности,ассоциативности и приоритета?"  smile

Добавлено через 1 минуту и 41 секунду
Цитата(mes @ 3.1.2011,  20:47)
Цитата(KaraKum @  3.1.2011,  19:45 Найти цитируемый пост)
перегрузка бинарного оператора сложения никогда не заставит перестать сложение быть комутативным

абсолютно верно и не нужно биться головой об стену в поисках ошибок. 

а как же пример, чуть выше этого поста ?

 smile  smile  smile  smile

Добавлено через 6 минут и 26 секунд
Цитата(mes @ 3.1.2011,  20:53)
Код

   auto s = "string";


в общем откуда берется тип у s smile

Из типа стоящего справа выражения smile 

Автор: KaraKum 3.1.2011, 21:33
Короче, вундеркинды, и kemiisto в их числе со своими отсылками на "в корне неверными суждениями".
Дабы не засорять просторы рунета безосновательным и неконструктивным обсуждением каких-то несуществующих "абстракций" в С++, следует объяснить все "взаимоотношения" между компилятором и пресловутыми "типами переменными". Вот кусочек вселенской мудрости:
Код

//здесь ничего не просиходит в run-tim'e - это просто текстовая информация:
class SomeClass
{
     int someVariable;
     void someFunction();
     int anotherVariable;
};

//здесь происходит выделение памяти в 4 байта:
SomeClass *someClass = new SomeClass;
//здесь совершается отступ в стеке, записывается адрес кода возврата и текущая процессорная команда перепрыгивает на другой участок
someClass->someFunction(); //после вызова функции совершается прыжок по коду возврата - то есть сюда же
//здесь к ячейкам памяти, находящимся со сдвигом в 4 байта от "someClass", прибавляется число 5:
someClass->anotherVariable += 5;


Добавлено @ 21:34
Нет здесь никаких аристотелевских метафизических абстракций.

Автор: ДокторТуамОсес 3.1.2011, 21:34
Цитата(mes @ 3.1.2011,  20:55)
Цитата(ДокторТуамОсес @  3.1.2011,  19:53 Найти цитируемый пост)
В приведённом мной примере

никакой тип там не конструируется..

А мне представляется, что конструируется.
Сначала мы из "лексем" [typedef], [int], [*] и [;] "сконструировали тип" P 
А потом из "лексем" [typedef], [*],  [P] и [;] "сконструировали тип" P2
 smile

Добавлено через 4 минуты и 55 секунд
Цитата(KaraKum @ 3.1.2011,  21:13)
Цитата(ДокторТуамОсес @  3.1.2011,  22:02 Найти цитируемый пост)
1) размер памяти, выделяемой под переменную

Это известно только в момент создания переменной и то если эта переменная создавалась. Указателем на "void" может быть адрес буфера железа (неизвестный размер), параметр для потока (неизвестный размер).

И что?

В этом примере:
Код

{
  ...
  char c ;
  std::cin >> c ;
 ...
}

значение переменной c до выполнения программы неизвестно.
Но это вовсе не значит, что у неё нет типа  smile

Добавлено через 8 минут и 23 секунды
Цитата(KaraKum @ 3.1.2011,  21:13)
Цитата(ДокторТуамОсес @  3.1.2011,  22:02 Найти цитируемый пост)
2) внутреннее представление ("указатель")

Абсолютно любая переменная является указателем на ячейку памяти.

Опять загадками говорите?
Вы имеете в виду если рассматривать программу на уровне машинного кода?

Добавлено через 9 минут и 39 секунд
Цитата(KaraKum @ 3.1.2011,  21:13)
Цитата(ДокторТуамОсес @  3.1.2011,  22:02 Найти цитируемый пост)
( к примеру нельзя переменной, являющейся указателем на void присвоить
 НЕПОСРЕДСТВЕННО значение типа int)

Можно.

 smile

Добавлено через 12 минут и 1 секунду
Цитата(KaraKum @ 3.1.2011,  21:13)
Цитата(ДокторТуамОсес @  3.1.2011,  22:10 Найти цитируемый пост)
Каждый Ваш ответ порождает 10 уточняющих вопросов.

Вот именно это я имел в виду под "переворачиванием мировоззрения с ног-на-голову". Звучит слишком громко для такого плёвого дела, но порой некоторые узнают какие-то факты вот с таким лицом:  smile

А Вы не могли вместо "переворачивания мировоззрения с ног-на-голову" просто озвучивать
"факты", которые люди узнают "вот с таким лицом:  smile  "

А? smile 

Автор: ДокторТуамОсес 3.1.2011, 21:49
Цитата(Batbko @ 3.1.2011,  21:17)
Цитата(ДокторТуамОсес @  3.1.2011,  21:07 Найти цитируемый пост)
- для объектов класса Т2 А+В означало операцию умножения

но приоритет операции или способ её вызова это не изменит

Ну "приоритетом операции" и "способом её вызова" - далеко не исчерпывается семантика 
перегруженных операторов.

Добавлено через 2 минуты и 11 секунд
Цитата(Batbko @  3.1.2011,  21:17 Найти цитируемый пост)
Под семантикой я понимаю совокупность правил по которым происходит выполнение операций, а не то что операции должны делать.

То что Вы "считаете семантикой" - это скорей уж алгебраические аксиомы, которым подчиняются 
операции

Автор: KaraKum 3.1.2011, 21:54
Цитата(ДокторТуамОсес @  3.1.2011,  22:34 Найти цитируемый пост)
значение переменной c до выполнения программы неизвестно.

Я сказал размер, а не значение!

Добавлено через 58 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  22:34 Найти цитируемый пост)
А Вы не могли вместо "переворачивания мировоззрения с ног-на-голову" просто озвучивать
"факты

Я их "озвучиваю" - они игнорируются.

Добавлено через 2 минуты и 17 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  22:34 Найти цитируемый пост)
Добавлено через 9 минут и 39 секунд
Цитата(KaraKum @ 3.1.2011,  21:13)
Цитата(ДокторТуамОсес @  3.1.2011,  22:02 Найти цитируемый пост)
( к примеру нельзя переменной, являющейся указателем на void присвоить
 НЕПОСРЕДСТВЕННО значение типа int)

Можно.

 smile

Код

void* whatTheFuckAmIDoingOnThisThread;
int justValue = 5;
whatTheFuckAmIDoingOnThisThread = justValue;


Добавлено через 3 минуты и 27 секунд
Достаточно ли тут НЕПОСРЕДСТВЕННОСТИ? Или чего-то не хватает? Какой-нибудь семантики, аксиоматики, абстрактности, сиплюсплюсности?

Добавлено через 3 минуты и 47 секунд
Или я "в корне не прав"?

Автор: ДокторТуамОсес 3.1.2011, 21:58
Цитата(KaraKum @  3.1.2011,  21:33 Найти цитируемый пост)
//здесь ничего не просиходит в run-tim'e

Зато в "compile-Time" много чего происходит  smile 
P.S. Всё-таки я обладаю хотя бы в малой степени телепатическими способностями и догадался
по Вашим загадочным фразам, что Вы клоните к тому, что в конечном счёте любая программа это 
не более чем последовательность машинных команд. Но Вы зря на этом пытаетесь меня поймать,
и "в корне перевернуть моё мировоззрение". Я ассемблерщик с более чем 20-ти летним стажем.
Поэтому очень хорошо себя представляю во что превращаются всякие там абстракции
на уровне машинного кода

Автор: KaraKum 3.1.2011, 22:01
Цитата(ДокторТуамОсес @  3.1.2011,  22:58 Найти цитируемый пост)
 в конечном счёте любая программа это 
не более чем последовательность машинных команд

Нет - я такого не хотел сказать и сейчас не говорю.

Автор: ДокторТуамОсес 3.1.2011, 22:01
Цитата(KaraKum @ 3.1.2011,  21:54)
Цитата(ДокторТуамОсес @  3.1.2011,  22:34 Найти цитируемый пост)
значение переменной c до выполнения программы неизвестно.

Я сказал размер, а не значение!

Дык размер указателя на void тоже известен во время компиляции. smile 

Автор: mes 3.1.2011, 22:02
Цитата(Batbko @  3.1.2011,  20:17 Найти цитируемый пост)
но приоритет операции или способ её вызова это не изменит, 

а значит семантика не изменилась .. так ?


Цитата(Batbko @  3.1.2011,  20:17 Найти цитируемый пост)
 просто не определена операция сложения целого с обьектом класса, от этого комутативность не утеряна и будет сохранена для обьектов этого типа.Возможность получения такой  неоднозначности недостаток ЯП.

коммутативность это не обязательное требование, которое жестко привязанно к оператору +..
наоборот реализация оператора + для операции сложения (желательно) должна предоставлять коммутативность.. т.е. не стоит путать причину и следствие smile

Добавлено через 2 минуты и 24 секунды
Цитата(Batbko @  3.1.2011,  20:17 Найти цитируемый пост)
Под семантикой я понимаю совокупность правил по которым происходит выполнение операций, а не то что операции должны делать

ну так коммутативность Вы туда сами притянули ? перечитайте свой пост..
а насчет "остальных" свойств семантики , были приведены другие операторы, которые сильно меняют свое поведение smile

Автор: Batbko 3.1.2011, 22:06
Цитата

Эй вы, херувимы и серафимы! — сказал Остап, вызывая врагов на диспут.— Бога нет!

Цитата(KaraKum @  3.1.2011,  21:33 Найти цитируемый пост)
Короче, вундеркинды, и kemiisto в их числе со своими отсылками на "в корне неверными суждениями".


Не смог удержаться smile

Автор: mes 3.1.2011, 22:06
Цитата(ДокторТуамОсес @  3.1.2011,  20:22 Найти цитируемый пост)
Из типа стоящего справа выражения

но справа же не переменная, откуда у нее тип ?  smile 

Автор: ДокторТуамОсес 3.1.2011, 22:06
Цитата(KaraKum @ 3.1.2011,  21:54)
Цитата(ДокторТуамОсес @  3.1.2011,  22:34 Найти цитируемый пост)
Добавлено через 9 минут и 39 секунд
Цитата(KaraKum @ 3.1.2011,  21:13)
Цитата(ДокторТуамОсес @  3.1.2011,  22:02 Найти цитируемый пост)
( к примеру нельзя переменной, являющейся указателем на void присвоить
 НЕПОСРЕДСТВЕННО значение типа int)

Можно.

 smile

Код

void* whatTheFuckAmIDoingOnThisThread;
int justValue = 5;
whatTheFuckAmIDoingOnThisThread = justValue;


Достаточно ли тут НЕПОСРЕДСТВЕННОСТИ? Или чего-то не хватает? Какой-нибудь семантики, аксиоматики, абстрактности, сиплюсплюсности?

Всё бы хорошо, только компилятор отказывается это "переваривать":

error: invalid conversion from `int' to `void*' 

 smile 

Автор: KaraKum 3.1.2011, 22:07
Увы  smile 

Автор: mes 3.1.2011, 22:08
Цитата(ДокторТуамОсес @  3.1.2011,  20:34 Найти цитируемый пост)
А мне представляется, что конструируется.
Сначала мы из "лексем" [typedef], [int], [*] и [;] "сконструировали тип" P 
А потом из "лексем" [typedef], [*],  [P] и [;] "сконструировали тип" P2

во первых typedef не определяет новый тип, а определяет синоним типа smile
во вторых перечитайте свое оригинальное сообщение, от которого и возник вопрос.. 

Автор: KaraKum 3.1.2011, 22:08
Цитата(ДокторТуамОсес @  3.1.2011,  23:06 Найти цитируемый пост)
Всё бы хорошо, только компилятор отказывается это "переваривать":

error: invalid conversion from `int' to `void*' 

Компилятор капризный. gcc с радостью бы "схавал". Можно ублажить его, написав (void*).

Автор: ДокторТуамОсес 3.1.2011, 22:10
Цитата(KaraKum @ 3.1.2011,  22:01)
Цитата(ДокторТуамОсес @  3.1.2011,  22:58 Найти цитируемый пост)
 в конечном счёте любая программа это 
не более чем последовательность машинных команд

Нет - я такого не хотел сказать и сейчас не говорю.

"Дык как же тебя понять, если ты ничего не говоришь?   smile  "© - к/ф "Иван Василич меняет профессию" 

 smile 

Автор: KaraKum 3.1.2011, 22:13
Каждое моё второе сообщение остаётся без внимания.
Вот на данный момент какой конкретно вопрос открыт? На всё отвечу! (интим не предлагать)

Автор: mes 3.1.2011, 22:14
Цитата(KaraKum @  3.1.2011,  21:13 Найти цитируемый пост)
аждое моё второе сообщение остаётся без внимания.

привыкайте к стилю общения ДокторТуамОсес ©

Автор: ДокторТуамОсес 3.1.2011, 22:15
Цитата(mes @ 3.1.2011,  22:06)
Цитата(ДокторТуамОсес @  3.1.2011,  20:22 Найти цитируемый пост)
Из типа стоящего справа выражения

но справа же не переменная, откуда у нее тип ?  smile

Справа стоит стоит то, что будет присваиваться переменной, 
а как можно присвоить тому, что имеет тип, то, что типа не имеет?   smile  

R-Value - частный случай переменной.

Автор: mes 3.1.2011, 22:16
Цитата(ДокторТуамОсес @  3.1.2011,  21:15 Найти цитируемый пост)
R-Value - частный случай переменной. 

да, частный случай, но не переменной.. smile но уже близко smile

Автор: KaraKum 3.1.2011, 22:16
Цитата(mes @  3.1.2011,  23:14 Найти цитируемый пост)
привыкайте к стилю общения ДокторТуамОсес ©

Да уж его стиль по-приятнее будет чем некоторых  smile

Добавлено через 48 секунд
А на зачёркнутые вопросы нужно отвечать?

Добавлено через 3 минуты и 57 секунд
А вообще, я думаю что автор уже и сам не рад что задал этот вопрос  smile 

Автор: ДокторТуамОсес 3.1.2011, 22:22
Цитата(mes @ 3.1.2011,  22:08)
Цитата(ДокторТуамОсес @  3.1.2011,  20:34 Найти цитируемый пост)
А мне представляется, что конструируется.
Сначала мы из "лексем" [typedef], [int], [*] и [;] "сконструировали тип" P 
А потом из "лексем" [typedef], [*],  [P] и [;] "сконструировали тип" P2

во первых typedef не определяет новый тип, а определяет синоним типа smile

Что однако ни сколько мне не помешало сначала
сконструировать определение P, а потом, используя P как "кирпичик",
сконструировать определение P2  smile 

Автор: KaraKum 3.1.2011, 22:24
Кстати говоря, если под "абстрактными данными" понимается одна из парадигм ООП, то этот вопрос полезно рассматривать вне области С++, так как ООП это отдельная тема и ООП можно реализовать даже на языке "С" - примером может послужить библиотека GTK+.

Автор: mes 3.1.2011, 22:30
Цитата(ДокторТуамОсес @  3.1.2011,  21:22 Найти цитируемый пост)
Что однако ни сколько мне не помешало сначала
сконструировать определение P, а потом, используя P как "кирпичик",
сконструировать определение P2  

только, плиз, в своей книжке об этом конструировании не пишете smile

Автор: ДокторТуамОсес 3.1.2011, 22:32
Цитата(KaraKum @  3.1.2011,  22:13 Найти цитируемый пост)
Каждое моё второе сообщение остаётся без внимания.

Просто вас много - я один.
Поэтому я, зачастую, просто не успеваю отвечать на все вопросы всех участников,
поэтому отвечаю выборочно, на те вопросы, которые 
во-первых, поставлены корректно и точно и по сабжу
во-вторых, которые мне интересны


Цитата(KaraKum @  3.1.2011,  22:13 Найти цитируемый пост)
Вот на данный момент какой конкретно вопрос открыт?

Сейчас в процессе несколько нитей беседы.
Поэтому мне уже трудно все их удерживать в голове

Автор: KaraKum 3.1.2011, 22:33
Все нити в студию!  smile 

Автор: ДокторТуамОсес 3.1.2011, 22:36
Цитата(mes @  3.1.2011,  22:08 Найти цитируемый пост)
typedef не определяет новый тип, а определяет синоним типа smile

Понятие синонима, псевдонима и т.п. подразумевает наличие некоторого "основного" ИМЕНИ,
по отношению к которому другие имена являются синонимами, псевдонимами и т.п.

А какое основное имя, к примеру, имеет тип, синоним которого описан ниже как P?

Код

typedef int** P[10][20] ;

А? smile

Добавлено через 1 минуту и 47 секунд
Цитата(KaraKum @ 3.1.2011,  22:08)
Цитата(ДокторТуамОсес @  3.1.2011,  23:06 Найти цитируемый пост)
Всё бы хорошо, только компилятор отказывается это "переваривать":

error: invalid conversion from `int' to `void*' 

Компилятор капризный. gcc с радостью бы "схавал". 

Как раз в GCC (Используя Dev-C++ 4.9.9.2) я и компилил  smile

Добавлено через 3 минуты и 53 секунды
Цитата(mes @ 3.1.2011,  22:16)
Цитата(ДокторТуамОсес @  3.1.2011,  21:15 Найти цитируемый пост)
R-Value - частный случай переменной. 

да, частный случай, но не переменной.. smile но уже близко smile

Понятия, являющегося аналогом/"синонимом" понятия "переменная"? 
 smile  smile  smile  smile 
 smile  smile  smile  smile

Добавлено через 5 минут и 46 секунд
Цитата(KaraKum @ 3.1.2011,  22:24)
Кстати говоря, если под "абстрактными данными" понимается одна из парадигм ООП, то этот вопрос полезно рассматривать вне области С++, так как ООП это отдельная тема и ООП можно реализовать даже на языке "С" - примером может послужить библиотека GTK+.

Я фкурсе. smile 
Также как и "абстракцию данных" можно реализовать хоть Цэ  smile

Добавлено через 9 минут и 33 секунды
Цитата(KaraKum @ 3.1.2011,  22:08)
Цитата(ДокторТуамОсес @  3.1.2011,  23:06 Найти цитируемый пост)
Всё бы хорошо, только компилятор отказывается это "переваривать":

error: invalid conversion from `int' to `void*' 

Компилятор капризный. gcc с радостью бы "схавал". Можно ублажить его, написав (void*).

Но тогда это не будет "непосредственным" присваиванием.
Увы  smile 

Так что что-то Вы опростоволосились smile 

Автор: mes 3.1.2011, 22:46
Цитата(ДокторТуамОсес @  3.1.2011,  21:36 Найти цитируемый пост)
А какое основное имя, к примеру, имеет тип, синоним которого описан ниже как P?

 
Код

  int** x1[10][20];
   P x2;

x1 и x2 определены одним типом.. каким сами догадайтесь smile

Автор: ДокторТуамОсес 3.1.2011, 22:47
Цитата(mes @ 3.1.2011,  22:30)
Цитата(ДокторТуамОсес @  3.1.2011,  21:22 Найти цитируемый пост)
Что однако ни сколько мне не помешало сначала
сконструировать определение P, а потом, используя P как "кирпичик",
сконструировать определение P2  

только, плиз, в своей книжке об этом конструировании не пишете smile

Обязательно напишу.
Ибо это отражает моё мировоззрение

Автор: KaraKum 3.1.2011, 22:49
Цитата(ДокторТуамОсес @  3.1.2011,  23:36 Найти цитируемый пост)
Также как и "абстракцию данных" можно реализовать хоть Цэ

Так "мы", оказывается, знаем что такое "абстракция данных"  smile 
О чём тогда разговор??

Автор: ДокторТуамОсес 3.1.2011, 22:50
Цитата(mes @ 3.1.2011,  22:46)
Цитата(ДокторТуамОсес @  3.1.2011,  21:36 Найти цитируемый пост)
А какое основное имя, к примеру, имеет тип, синоним которого описан ниже как P?

 
Код

  int** x1[10][20];
   P x2;

x1 и x2 определены одним типом.. каким сами догадайтесь smile

Нет.
Так никуда не годится  smile 
Я требую, что Вы назвали ИМЯ (т.е. идентификатор) типа, 
синонимом которого является имя P 

Автор: KaraKum 3.1.2011, 22:51
Цитата(ДокторТуамОсес @  3.1.2011,  23:47 Найти цитируемый пост)
это отражает моё мировоззрение 

Пока ещё никому не удавалось выразить мировоззрение посредством С++  smile 

Автор: mes 3.1.2011, 22:52
Цитата(ДокторТуамОсес @  3.1.2011,  21:47 Найти цитируемый пост)
Ибо это отражает моё мировоззрение 

вот это и ужасно, что будете учить этому других smile

Добавлено через 2 минуты и 54 секунды
Цитата(ДокторТуамОсес @  3.1.2011,  21:50 Найти цитируемый пост)
Я требую, что Вы назвали ИМЯ (т.е. идентификатор) типа, 
синонимом которого является имя P  

прошу что либо взамен smile иначе я не согласен smile

Автор: ДокторТуамОсес 3.1.2011, 22:56
Цитата(KaraKum @ 3.1.2011,  22:49)
Цитата(ДокторТуамОсес @  3.1.2011,  23:36 Найти цитируемый пост)
Также как и "абстракцию данных" можно реализовать хоть Цэ

Так "мы", оказывается, знаем что такое "абстракция данных"  smile 
О чём тогда разговор??

"Я знаю только то, что ничего не знаю"(с) - один очень много знавший чел

Я знаю только вот что:

Цитата
 у некоторых авторов книг по C++ и на форумах встречал такую мысль, что, де, "абстрактный тип данных" - это любой производный (т.е. не базовый) тип, определённый программистом.

Вторые пишут, что в C++ "абстрактный тип" - это только классы.

Третии пишут, "абстрактные типы" - это списки, очереди, деревья и т.п.

Четвёртые пишут, что "абстрактный тип" - это вообще может быть любым образом
(хоть с помощью макросов) описанный тип, посредством которого реализуется концепция
"абстракции данных"


А есть ещё и 5-я, 6-я, 7-я, ... и т.д. точки зрения.

Вот я и хотел здесь выяснить/уточнить/уяснить что же всё-таки за зверь такой "абстрактный тип данных",
и что за "абстракция данных" такая, которую он поддерживает smile 

Автор: KaraKum 3.1.2011, 22:58
Цитата(ДокторТуамОсес @  3.1.2011,  23:56 Найти цитируемый пост)
Вот я и хотел здесь выяснить/уточнить/уяснить что же всё-таки за зверь такой "абстрактный тип данных",
и что за "абстракция данных" такая, которую он поддерживает

Ну так как? Выяснилось/уточнилось/уяснилось?

Автор: ДокторТуамОсес 3.1.2011, 22:59
Цитата(KaraKum @ 3.1.2011,  22:51)
Цитата(ДокторТуамОсес @  3.1.2011,  23:47 Найти цитируемый пост)
это отражает моё мировоззрение 

Пока ещё никому не удавалось выразить мировоззрение посредством С++  smile

А кто-то хотел/пытался это сделать?  smile 
УЖОС  smile

Добавлено через 1 минуту и 15 секунд
Цитата(mes @ 3.1.2011,  22:52)
Цитата(ДокторТуамОсес @  3.1.2011,  21:47 Найти цитируемый пост)
Ибо это отражает моё мировоззрение 

вот это и ужасно, что будете учить этому других smile


Что одним кажется ужасным, другим - прекрасным. И наоборот.
Как говорится, "на вкус и цвет  - товарищей нет"(с) smile

Добавлено через 3 минуты и 57 секунд
Цитата(KaraKum @ 3.1.2011,  22:58)
Цитата(ДокторТуамОсес @  3.1.2011,  23:56 Найти цитируемый пост)
Вот я и хотел здесь выяснить/уточнить/уяснить что же всё-таки за зверь такой "абстрактный тип данных",
и что за "абстракция данных" такая, которую он поддерживает

Ну так как? Выяснилось/уточнилось/уяснилось?

Что-то прояснилось, а что-то ещё больше "затемнилось".  smile 
Короче я понял, что "я знаю только то, что ничего не знаю"(с) smile

Добавлено через 8 минут и 3 секунды
Цитата(mes @ 3.1.2011,  22:52)
Цитата(ДокторТуамОсес @  3.1.2011,  21:50 Найти цитируемый пост)
Я требую, что Вы назвали ИМЯ (т.е. идентификатор) типа, 
синонимом которого является имя P  

прошу что либо взамен smile иначе я не согласен smile

О'кей.
Дай вам "взамен".

Есть два описания идентификатора S:

1.
Код

struct S { char s ; };



2.
Код

typedef struct { char s ; } S;


Вопрос чем ПРИНЦИПИАЛЬНО отличаются друг от друга эти 2 идентификатора S?  smile

Добавлено через 11 минут и 4 секунды
Цитата(ДокторТуамОсес @  3.1.2011,  22:59 Найти цитируемый пост)
Вопрос чем ПРИНЦИПИАЛЬНО отличаются друг от друга эти 2 идентификатора S?  smile  

Или, если смотреть на вопрос ширше и глубже, чем отличается
синоним имени типа от имени типа?

Автор: ДокторТуамОсес 3.1.2011, 23:23
А (возвращаясь к сабжу) викепедия вот что говорит:

Существует несколько способов определения абстрактных типов: 
  • алгебраический (используются методы алгебраических отношений) 
  • модельный (элементы данных определяются явным образом)
  • аксиоматический (используется логическая формализация)

Как способ имеет место быть в C++?  smile 

Автор: KaraKum 3.1.2011, 23:28
Цитата(ДокторТуамОсес @  3.1.2011,  23:59 Найти цитируемый пост)

Или, если смотреть на вопрос ширше и глубже, чем отличается
синоним имени типа от имени типа? 

Вот опять же - я прежде всё описал - где выделяется память, где берутся смещения для данных, а где адреса кода функций-элементов. И исходя из той информации (что я дал) можно сделать вывод (то есть ответить на этот вопрос, имея некие фундаментальные сведения) что существенным для типов данных являются лишь эти физические понятия, а они ИДЕНТИЧНЫ для двух приведённых примеров (я не всматривался в примеры, но, думаю, с контекстом я не ошибся), следовательно и сами типы переменных (данных или чего там ещё...) ИДЕНТИЧНЫ.

Уффф, насколько понятно теперь? Вроде как тут телепаты не нужны...

 smile 

Автор: ДокторТуамОсес 3.1.2011, 23:29
Оттуда же:
Цитата
Различие между абстрактными типами данных и структурами данных, которые реализуют абстрактные типы, можно пояснить на следующем примере. Абстрактный тип данных список может быть реализован при помощи массива или линейного списка, с использованием различных техник динамического выделения памяти. Однако каждая реализация определяет один и тот же набор функций, который должен работать одинаково (по результату, а не по скорости) для всех реализации.


О как !!!  smile 

Т.е. мы можем работать к примеру, со "списком", даже не подозревая о том, что на уровне
реализации, он является, к примеру "деревом". О как!  smile 

Вот оказывается в чём заключается "абстрактность"
 "абстрактных типов данных"  smile

Добавлено через 7 минут и 11 секунд
Цитата(KaraKum @  3.1.2011,  23:28 Найти цитируемый пост)
существенным для типов данных являются лишь эти физические понятия, а они ИДЕНТИЧНЫ для двух приведённых примеров

Вот  smile  smile  smile 
Именно к этому я и "клонил".
Не важно как "оно" называется, главное как "оно" используется.
А используется одинаково.  smile 
Как говориться, "Хоть горшком назови только в печь не клади"(с)

Автор: mes 3.1.2011, 23:38
Цитата(ДокторТуамОсес @  3.1.2011,  22:29 Найти цитируемый пост)
Т.е. мы можем работать к примеру, со "списком", даже не подозревая о том, что на уровне
реализации, он является, к примеру "деревом". О как!

 smile 
Цитата(ДокторТуамОсес @  3.1.2011,  22:29 Найти цитируемый пост)
Вот оказывается в чём заключается "абстрактность"
 "абстрактных типов данных"

 smile 

Автор: KaraKum 3.1.2011, 23:39
Значит, победило добро??  smile 

Автор: mes 3.1.2011, 23:40
Цитата(ДокторТуамОсес @  3.1.2011,  21:59 Найти цитируемый пост)
Или, если смотреть на вопрос ширше и глубже, чем отличается
синоним имени типа от имени типа? 

а чем отличается два одинаковых типа, от двух разных типов Вы понимаете ?
 smile 

Автор: ДокторТуамОсес 3.1.2011, 23:41
Поэтому в моём пример не важно как называется идентификатор P: именем типа, синонимом типа
или как-то ещё.
Главное, что я могу использовать ЭТО ИМЯ для конструирования других, 
более сложных типов, использовать в операциях приведения типа, использовать для 
описания переменных и т.д.
Т.е. могу использовать его как тип. smile

Добавлено через 3 минуты и 35 секунд
Цитата(mes @ 3.1.2011,  23:40)
Цитата(ДокторТуамОсес @  3.1.2011,  21:59 Найти цитируемый пост)
Или, если смотреть на вопрос ширше и глубже, чем отличается
синоним имени типа от имени типа? 

а чем отличается два одинаковых типа, от двух разных типов Вы понимаете ?
 smile

Я отвечаю на Ваш вопрос: "Да".
Заметьте, я даже не обиделся что Вы ответили своим вопросом на мой вопрос
хотя это считается моветоном в беседе

Теперь Вы ответите на мой вопрос? smile

Добавлено через 7 минут и 27 секунд
Цитата(KaraKum @ 3.1.2011,  23:39)
Значит, победило добро??  smile

Не совсем.
mes ещё на  отдельных  направлениях сопротивляется.
"Но победа будет за нами и враг будет разбит! Наше дело правое и поэтому мы победим!"(с)

 smile  smile  smile 

Автор: mes 3.1.2011, 23:50
Цитата(ДокторТуамОсес @  3.1.2011,  22:41 Найти цитируемый пост)
Заметьте, я даже не обиделся что Вы ответили своим вопросом на мой вопрос
хотя это считается моветоном в беседе

это был не простой вопрос.. это была подсказка .. в надежде, что попытаетесь найти ответ раньше, чем Вам его подскажут smile

Добавлено через 3 минуты и 55 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  22:41 Найти цитируемый пост)
Поэтому в моём пример не важно как называется идентификатор P: именем типа, синонимом типа
или как-то ещё.
Главное, что я могу использовать ЭТО ИМЯ для конструирования других, 
более сложных типов, использовать в операциях приведения типа, использовать для 
описания переменных и т.д.
Т.е. могу использовать его как тип. 

Цитата(ДокторТуамОсес @  3.1.2011,  22:41 Найти цитируемый пост)
Я отвечаю на Ваш вопрос: "Да".

не стыкуется smile

Добавлено через 9 минут и 59 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  22:41 Найти цитируемый пост)
Теперь Вы ответите на мой вопрос? 

после того как ознакомитесь с тем, что уже написано (например у Стауструпа) о typedef и о том как можно определить новый тип.. (если конечно после внимательного прочтения потребуются мои дополнения )
smile

Автор: mes 4.1.2011, 00:08
Цитата(mes @  3.1.2011,  22:50 Найти цитируемый пост)
например у Стауструпа

или в стандарте.. могу дать направление : 3.9  и 7.1.3.
smile

Автор: KaraKum 4.1.2011, 00:08
Цитата(mes @  4.1.2011,  01:08 Найти цитируемый пост)
направление : 3.9  и 7.1.3.

Это широта и долгота?  smile 

Автор: mes 4.1.2011, 00:11
Цитата(ДокторТуамОсес @  3.1.2011,  22:41 Найти цитируемый пост)
mes ещё на  отдельных  направлениях сопротивляется.

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

Добавлено через 1 минуту и 33 секунды
Цитата(KaraKum @  3.1.2011,  23:08 Найти цитируемый пост)
Это широта и долгота? 

оставляю возможность догадаться самим.. smile

Автор: KaraKum 4.1.2011, 00:18
Цитата(mes @  4.1.2011,  01:11 Найти цитируемый пост)
оставляю возможность догадаться самим..

ага, и фонариком светить не придётся

Автор: mes 4.1.2011, 00:21
Цитата(KaraKum @  3.1.2011,  23:18 Найти цитируемый пост)
ага, и фонариком светить не придётся

хм, а освещение "долготы и широты" разве не считается ?!
или нужно нужную строчку осветить ? тогда что ж автору будущей книги останется делать ?
 smile 

Автор: ДокторТуамОсес 4.1.2011, 01:01
Цитата(mes @ 3.1.2011,  23:50)
Цитата(ДокторТуамОсес @  3.1.2011,  22:41 Найти цитируемый пост)
Заметьте, я даже не обиделся что Вы ответили своим вопросом на мой вопрос
хотя это считается моветоном в беседе

это был не простой вопрос.. это была подсказка .. в надежде, что попытаетесь найти ответ раньше, чем Вам его подскажут smile

Добавлено @ 23:54
Цитата(ДокторТуамОсес @  3.1.2011,  22:41 Найти цитируемый пост)
Поэтому в моём пример не важно как называется идентификатор P: именем типа, синонимом типа
или как-то ещё.
Главное, что я могу использовать ЭТО ИМЯ для конструирования других, 
более сложных типов, использовать в операциях приведения типа, использовать для 
описания переменных и т.д.
Т.е. могу использовать его как тип. 

Цитата(ДокторТуамОсес @  3.1.2011,  22:41 Найти цитируемый пост)
Я отвечаю на Ваш вопрос: "Да".

не стыкуется smile

Добавлено @ 00:00
Цитата(ДокторТуамОсес @  3.1.2011,  22:41 Найти цитируемый пост)
Теперь Вы ответите на мой вопрос? 

после того как ознакомитесь с тем, что уже написано (например у Стауструпа) о typedef и о том как можно определить новый тип.. (если конечно после внимательного прочтения потребуются мои дополнения )
smile

mes
Т.е. Вы уклоняетесь от конкретного ответа на конкретно поставленный вопрос? Нехорошо smile 
Я Вам задал конкретный вопрос, а Вы меня отправляете читать Страуструпа? Да читал я его.
А чо не в Гуголь послали? Боитесь "санкций" модераторов?  smile 
Очень хорошую позицию Вы заняли: чтобы "сохранить хорошую мину при плохой игре"(с),
Вы, вместо того, чтобы признаться, что не знаете ответа (или то, что боитесь, что Ваш ответ
покажет Вашу некомпетентность), посылаете меня в гуголь читать Страуструпа.
Вы молодец.

Заметьте, что я ни кого не посылаю ... отправляю в Гуголь "читать Страуструпа"
даже когда мне задают глупые вопросы вроде "какой тип имеет переменная s в
определении auto s = "stroka" ; " и др. подобных.

Автор: mes 4.1.2011, 01:34
Цитата(ДокторТуамОсес @  4.1.2011,  00:01 Найти цитируемый пост)
Т.е. Вы уклоняетесь от конкретного ответа на конкретно поставленный вопрос? Нехорошо  

Нехорошо будущим авторам книг, переворачивающих не помню что, выпрашивать ответы на форуме, когда конкретно показали, где написан ответ.. Иль Вы надеетесь что я буду тут пару страниц пересказывать ? я подсказками пробовал, не помагает.. да и по краткому не стоит, для будущей книги нужно внимательнее ознакомиться с проблемой... 
если б Вам это просто надо было, для себя, я б мог конечно скопировать наиболее важные цитаты.. но Вы ж хотите принести добро "всему человечеству".. поэтому лишнее звено пересказа лучше убрать smile

Цитата(ДокторТуамОсес @  4.1.2011,  00:01 Найти цитируемый пост)

Я Вам задал конкретный вопрос, а Вы меня отправляете читать Страуструпа? Да читал я его.
А чо не в Гуголь послали? Боитесь "санкций" модераторов?   

неа не боюсь.. просто в гугле Вы можете не то найти, да и искать долго.. 
а тут просто найти нужную страницу и внимательно почитать.. 

Цитата(ДокторТуамОсес @  4.1.2011,  00:01 Найти цитируемый пост)
Очень хорошую позицию Вы заняли: чтобы "сохранить хорошую мину при плохой игре"(с),

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

Цитата(ДокторТуамОсес @  4.1.2011,  00:01 Найти цитируемый пост)
Вы, вместо того, чтобы признаться, что не знаете ответа (или то, что боитесь, что Ваш ответ покажет Вашу некомпетентность), посылаете меня в гуголь читать Страуструпа.

Да я не настолько компетентен, чтоб заменить Страуструпа со стандартом.. 
поэтому предпочитаю не пересказывать, а подсказать , где можно почитать в оригинале smile

Цитата(ДокторТуамОсес @  4.1.2011,  00:01 Найти цитируемый пост)
Заметьте, что я ни кого не посылаю ... отправляю в Гуголь "читать Страуструпа"
даже когда мне задают глупые вопросы вроде "какой тип имеет переменная s в
определении auto s = "stroka" ; " и др. подобных. 

Хм.. вопрос, как вы называете, был задан не для того, чтоб спросить у Вас ответ, а для того, чтоб на толкнуть Вас на мысль.. Кстати посмотрите через мой профиль как часто я задаю вопросы.. Это поможет сделать выводы , о том как часто я ищу ответы самостоятельно.. 
smile

Добавлено через 1 минуту и 10 секунд
В общем вместо того, чтоб радоваться мелким подсказкам, которые Вам дают, Вы пытаетесь спровоцировать, думая что я поведусь на это.. не дождетесь smile

Автор: KaraKum 4.1.2011, 01:37
Цитата(mes @  4.1.2011,  02:34 Найти цитируемый пост)
посмотрите через мой профиль как часто я задаю вопросы.. Это поможет сделать выводы , о том как часто я ищу ответы самостоятельно.. 

А может вопросы задаются через другой профиль?

Например через ДокторТуамОсес  smile 

Автор: ДокторТуамОсес 4.1.2011, 01:40
mes!!!
Если Вы уже забыли как звучал вопрос, я Вам напомню:
Есть два описания идентификатора S:

1.
Код

struct S { char s ; };



2.
Код

typedef struct { char s ; } S;


Вопрос чем ПРИНЦИПИАЛЬНО отличаются друг от друга эти 2 идентификатора S?  smile
KaraKum дал конкретный ответ:
Цитата(KaraKum @  3.1.2011,  23:28 Найти цитируемый пост)
существенным для типов данных являются лишь эти физические понятия, а они ИДЕНТИЧНЫ для двух приведённых примеров (я не всматривался в примеры, но, думаю, с контекстом я не ошибся), следовательно и сами типы переменных (данных или чего там ещё...) ИДЕНТИЧНЫ.


Теперь хотелось бы услышать Ваше ЛИЧНОЕ мнение. 

P.S. Просьба не посылать меня в гуголь, к Страуструпу или куда-либо ещё и 
не отвечать вопросом на вопрос. 
Так как, во-первых, в соответствии с форумным этикетом это считается  хамством.
А во-вторых, у меня есть понимание того, что такое typedef, "typedef-определения vs # макроопределения vs", анонимные типы, "псевдонимы типов vs реальные типы" и т.п.
Т.к. в процессе написания своей книги по C++ я проштудировал гигабайты инфы по 
этим вопросам. 
А в третьих, я спрашиваю не потому что я не знаю ответа, а потому что хочу узнать, 
совпадают ли Ваши знания с моими. 


Автор: mes 4.1.2011, 01:49
Цитата(KaraKum @  4.1.2011,  00:37 Найти цитируемый пост)
А может вопросы задаются через другой профиль?

Логино.. я не подумал о таком варианте.. 
smile

Цитата(KaraKum @  4.1.2011,  00:37 Найти цитируемый пост)
Например через ДокторТуамОсес 

Ну это вряд ли smile

Автор: ДокторТуамОсес 4.1.2011, 01:49
Цитата(mes @ 4.1.2011,  01:34)
Цитата(ДокторТуамОсес @  4.1.2011,  00:01 Найти цитируемый пост)
Т.е. Вы уклоняетесь от конкретного ответа на конкретно поставленный вопрос? Нехорошо  

Нехорошо будущим авторам книг, переворачивающих не помню что, выпрашивать ответы на форуме, когда конкретно показали, где написан ответ.. Иль Вы надеетесь что я буду тут пару страниц пересказывать ? я подсказками пробовал, не помагает.. да и по краткому не стоит, для будущей книги нужно внимательнее ознакомиться с проблемой... 
если б Вам это просто надо было, для себя, я б мог конечно скопировать наиболее важные цитаты.. но Вы ж хотите принести добро "всему человечеству".. поэтому лишнее звено пересказа лучше убрать smile

Если абстрагироваться (в соответствии с сабжем темы  smile  ) от сарказма, с помощью которого Вы (весьма неудачно) пытаетесь 
Цитата(ДокторТуамОсес @  4.1.2011,  01:01 Найти цитируемый пост)
"сохранить хорошую мину при плохой игре"(с)


то Ваши уклонение дать ответ своими словами или хотя бы скопипастить его откуда-либо говорит
о том, что Вы 
Цитата(ДокторТуамОсес @  4.1.2011,  01:01 Найти цитируемый пост)
 не знаете ответа (или то, что боитесь, что Ваш ответ покажет Вашу некомпетентность)
 smile 

Автор: KaraKum 4.1.2011, 01:55
Цитата(mes @  4.1.2011,  02:49 Найти цитируемый пост)
Цитата(KaraKum @  4.1.2011,  00:37 Найти цитируемый пост)
Например через ДокторТуамОсес 

Ну это вряд ли smile

Эх, а была бы такаааая классная развязка...

Автор: mes 4.1.2011, 01:57
Цитата(ДокторТуамОсес @  4.1.2011,  00:40 Найти цитируемый пост)
 Просьба не посылать меня в гуголь, к Страуструпу или куда-либо ещё и 
не отвечать вопросом на вопрос. 
Так как, во-первых, в соответствии с форумным этикетом это считается  хамством.

Если посылается в никуда.. Вам же были указаны "долгота и широта"


Цитата(ДокторТуамОсес @  4.1.2011,  00:40 Найти цитируемый пост)
А во-вторых, у меня есть понимание того, что такое typedef, "typedef-определения vs # макроопределения vs", анонимные типы, "псевдонимы типов vs реальные типы" и т.п.

по высказываниям , прозвучавшим в этой теме, оно (понимание) не совсем верное.. 
особенно после того как настаивали на том, что тайпдеф конструирует типы.. 

Цитата(ДокторТуамОсес @  4.1.2011,  00:40 Найти цитируемый пост)
Т.к. в процессе написания своей книги по C++ я проштудировал гигабайты инфы по 
этим вопросам

Наверно гнались за кол-вом, а не качеством .. 

Цитата(ДокторТуамОсес @  4.1.2011,  00:40 Найти цитируемый пост)
я спрашиваю не потому что я не знаю ответа, а потому что хочу узнать, 
совпадают ли Ваши знания с моими. 

Если только для этого, то опять таки, ориентируясь на сказанное в этой теме, могут Вам сразу сказать ответ :
не совпадают
smile
К тому же если интересует именно совпадение, почему я должен писать ответ, а не Вы.. а я просто оценю совпадения.. 

Автор: ДокторТуамОсес 4.1.2011, 01:59
Цитата(mes @  4.1.2011,  01:34 Найти цитируемый пост)
я может хочу показать, что искать ответ самому намного интереснее и полезнее, чем получать разжеванное.. тем более , что и вопрос не сложный .. 


Цитата(ДокторТуамОсес @  4.1.2011,  01:40 Найти цитируемый пост)
А в третьих, я спрашиваю не потому что я не знаю ответа, а потому что хочу узнать, совпадают ли Ваши знания с моими. 


Автор: mes 4.1.2011, 02:00
Цитата(ДокторТуамОсес @  4.1.2011,  00:49 Найти цитируемый пост)
о Ваши уклонение дать ответ своими словами или хотя бы скопипастить его откуда-либо говорит
о том, что Вы 
Цитата(ДокторТуамОсес @  4.1.2011,  01:01 )
 не знаете ответа (или то, что боитесь, что Ваш ответ покажет Вашу некомпетентность)

У Вас какая цель, найти ответ и понимание или признать меня некомпетентным ?
если второе, я могу сделать Вам подарок.. считайте меня некомпетентным..
если все ж нужно понимание, я до сих пор, не смотря на Ваши провакационные попытки готов помочь.. но с условием , если я буду видеть в вас заинтересованность найти истину.. 

Добавлено через 2 минуты и 16 секунд
Цитата(ДокторТуамОсес @  4.1.2011,  00:40 Найти цитируемый пост)
опрос чем ПРИНЦИПИАЛЬНО отличаются друг от друга эти 2 идентификатора S?

В  одном определение нового типа S, 
в другом определение псевдонима S для определенного безымянного типа.. 

Автор: ДокторТуамОсес 4.1.2011, 02:03
Цитата(mes @  4.1.2011,  01:34 Найти цитируемый пост)
Кстати посмотрите через мой профиль как часто я задаю вопросы.. Это поможет сделать выводы , о том как часто я ищу ответы самостоятельно.. 

Ну это ещё не показатель Вашей компетентности.
Может Вы не задаёте много вопросов потому что они у Вас просто не возникают.
А "не возникают", потому что Вы весьма поверхностно изучаете предмет изучения (простите за тавтологию)  smile 
Как Вам такое объяснение?

Автор: mes 4.1.2011, 02:05
Цитата(ДокторТуамОсес @  4.1.2011,  00:49 Найти цитируемый пост)
 с помощью которого Вы (весьма неудачно) пытаетесь 
"сохранить хорошую мину при плохой игре"(с)

мне мина не нужна.. я лишь свечу фонариком, чтоб Вы не заблудились.. тянуть Вас за руку у меня пока желания нет.. 
так как не вижу исходящей от Вас заинтересованности.. 


Автор: ДокторТуамОсес 4.1.2011, 02:06
Цитата(mes @  4.1.2011,  01:34 Найти цитируемый пост)
В общем вместо того, чтоб радоваться мелким подсказкам, которые Вам дают, Вы пытаетесь спровоцировать, думая что я поведусь на это.. не дождетесь smile

Да я уж понял. Что не дождусь от Вас конкретного развёрнутого ответа на конкретный вопрос.
Боитесь Вы что вскроется Ваша некомпетентность. Ибо даже чтобы скопипастить откуда-то ответ, нужно
ещё знать откуда и что именно копипастить.  А Вы, видимо, и этого не знаете наверняка.  smile 

Автор: mes 4.1.2011, 02:08
Цитата(ДокторТуамОсес @  4.1.2011,  01:03 Найти цитируемый пост)
Ну это ещё не показатель Вашей компетентности.
Может Вы не задаёте много вопросов потому что они у Вас просто не возникают

Я приводил это не в доказательство компетентности.. жаль (хотя и не сильно) что не поняли smile

Автор: ДокторТуамОсес 4.1.2011, 02:10
Цитата(mes @  4.1.2011,  01:57 Найти цитируемый пост)
особенно после того как настаивали на том, что тайпдеф конструирует типы.. 

А Вы не обратили внимание, что "сконструировали тип" было написано в кавычках?  smile 
Т.е. мы создали описание <лексемы> P используя как "кирпичики" другие <лексемы>

Автор: mes 4.1.2011, 02:11
Цитата(ДокторТуамОсес @  4.1.2011,  01:06 Найти цитируемый пост)
Что не дождусь от Вас конкретного развёрнутого ответа на конкретный вопрос.

Развернутого не дождетесь.. пока..  В меру полный был приведен выше.. 

Цитата(ДокторТуамОсес @  4.1.2011,  01:06 Найти цитируемый пост)
 Ибо даже чтобы скопипастить откуда-то ответ, нужно
ещё знать откуда и что именно копипастить.  А Вы, видимо, и этого не знаете наверняка.  

если б глянули по "широту и долготе" то знали бы наверняка, знаю откуда скопипастить или нет smile

Добавлено @ 02:13
Цитата(ДокторТуамОсес @  4.1.2011,  01:10 Найти цитируемый пост)
А Вы не обратили внимание, что "сконструировали тип" было написано в кавычках?

а Вы не заметили, что я не один раз уточнял этот вопрос ?.. однако уточнения от Вас не последовало..
так что чего Вы там за кавычками себе представляете, я не знаю 
 smile 

Автор: ДокторТуамОсес 4.1.2011, 02:15
Цитата(mes @  4.1.2011,  02:11 Найти цитируемый пост)
если б глянули по "широту и долготе" то знали бы наверняка, знаю откуда скопипастить или нет smile

У меня в наличии есть только ISO/IEC 14882 от 2003 года.
Там таких "координат" нет smile 
Короче давайте прекращать играть в редиску и отвечайте либо своими словами,
либо скопипастите сюда чужие слова, в которых, как Вы считаете, содержится
ответ на мой вопрос smile

Добавлено через 2 минуты и 3 секунды
Цитата(mes @  4.1.2011,  01:57 Найти цитируемый пост)
К тому же если интересует именно совпадение, почему я должен писать ответ, а не Вы.. а я просто оценю совпадения..  

Потому что вопрос то мой, а не Ваш.
Почему я должен писать ответ на свой же собственный вопрос?  smile 

Автор: mes 4.1.2011, 02:20
Цитата(ДокторТуамОсес @  4.1.2011,  01:15 Найти цитируемый пост)
У меня в наличии есть только ISO/IEC 14882 от 2003 года.


уточнение координат :
Цитата

3.9 Types..................................52
7.1.3 The typedef specifier...............107



Цитата(ДокторТуамОсес @  4.1.2011,  01:15 Найти цитируемый пост)
Короче давайте прекращать играть в редиску и отвечайте либо своими словами,
либо скопипастите сюда чужие слова, в которых, как Вы считаете, содержится
ответ на мой вопро


Цитата(mes @  4.1.2011,  01:11 Найти цитируемый пост)
В меру полный был приведен выше.. 


Цитата(mes @  4.1.2011,  01:00 Найти цитируемый пост)
В одном - определение нового типа S, 
в другом - определение псевдонима S для определенного безымянного типа.. 




Автор: ДокторТуамОсес 4.1.2011, 02:24
Цитата(ДокторТуамОсес @ 4.1.2011,  01:40)
mes!!!
Если Вы уже забыли как звучал вопрос, я Вам напомню:
Есть два описания идентификатора S:

1.
Код

struct S { char s ; };



2.
Код

typedef struct { char s ; } S;


Вопрос чем ПРИНЦИПИАЛЬНО отличаются друг от друга эти 2 идентификатора S?  smile
KaraKum дал конкретный ответ:
Цитата(KaraKum @  3.1.2011,  23:28 Найти цитируемый пост)
существенным для типов данных являются лишь эти физические понятия, а они ИДЕНТИЧНЫ для двух приведённых примеров (я не всматривался в примеры, но, думаю, с контекстом я не ошибся), следовательно и сами типы переменных (данных или чего там ещё...) ИДЕНТИЧНЫ.


Теперь хотелось бы услышать Ваше ЛИЧНОЕ мнение. 

P.S. Просьба не посылать меня в гуголь, к Страуструпу или куда-либо ещё и 
не отвечать вопросом на вопрос. 
Так как, во-первых, в соответствии с форумным этикетом это считается  хамством.
А во-вторых, у меня есть понимание того, что такое typedef, "typedef-определения vs # макроопределения vs", анонимные типы, "псевдонимы типов vs реальные типы" и т.п.
Т.к. в процессе написания своей книги по C++ я проштудировал гигабайты инфы по 
этим вопросам. 
А в третьих, я спрашиваю не потому что я не знаю ответа, а потому что хочу узнать, 
совпадают ли Ваши знания с моими. 

Ещё больше уточню вопрос (чтобы Вам было проще, раз уж Вы так боитесь попасть в просак)

Изменится ли в программе:
1) Внутреннее представление в памяти переменных типа S
2) Множество допустимых операций, для переменных типа S
3) Множество допустимых значений переменных типа S
если вместо 1-го определения идентификатора S я буду использовать 2-е?
В программе именно на С++, а не на С
И считаем, что в программе больше нет других определений S


Добавлено через 4 минуты и 39 секунд
Цитата(mes @  4.1.2011,  02:00 Найти цитируемый пост)
В  одном определение нового типа S, 
в другом определение псевдонима S для определенного безымянного типа.. 

Я спрашивал про ПРИНЦИПИАЛЬНЫЕ отличия, влияющих на:

Цитата(ДокторТуамОсес @  4.1.2011,  02:24 Найти цитируемый пост)

1) Внутреннее представление в памяти переменных типа S
2) Множество допустимых операций, для переменных типа S
3) Множество допустимых значений переменных типа S

 smile

Добавлено через 7 минут и 53 секунды
Цитата(mes @  4.1.2011,  02:00 Найти цитируемый пост)
У Вас какая цель, найти ответ и понимание или признать меня некомпетентным ?

У меня цель КРИТИЧЕСКИ сравнить своё понимание с Вашим и, возможно, понять что-то, 
что я не понимал, узнать что-то, что я не знал. И возможно подкорректировать своё понимание,
если я увижу Ваши ответы достаточно обоснованными и убедительными

Автор: mes 4.1.2011, 02:37
Цитата(ДокторТуамОсес @  4.1.2011,  01:24 Найти цитируемый пост)
изменится ли в программе:

изменится.. но ваше уточняющие вопросы не корректны.. 
Цитата(ДокторТуамОсес @  4.1.2011,  01:24 Найти цитируемый пост)

1) Внутреннее представление в памяти переменных типа S
2) Множество допустимых операций, для переменных типа S
3) Множество допустимых значений переменных типа S
если вместо 1-го определения идентификатора S я буду использовать 2-е?


чтоб понять , вот что Вы написали :
Код

Вариант 1. Вот мальчик Миша
Вариант 2. Вот Мальчик, имя неизвестно, но все зовут Мишей.. 

1. изменится ли внешность мальчика
2. способ общения с ним
3. широта восприятия мальчика 


 


Автор: ДокторТуамОсес 4.1.2011, 02:39
Цитата(mes @ 4.1.2011,  02:08)
Цитата(ДокторТуамОсес @  4.1.2011,  01:03 Найти цитируемый пост)
Ну это ещё не показатель Вашей компетентности.
Может Вы не задаёте много вопросов потому что они у Вас просто не возникают

Я приводил это не в доказательство компетентности.. жаль (хотя и не сильно) что не поняли smile

Да понял я прекрасно.
Вы хотели тем, что у Вас в профиле мало тем, которые Вы создали с целью найти ответ
на какой-либо вопрос, показать, что Вы ответы на возникающие у Вас вопросы
находите самостоятельно. Не прибегая к помощи форума.

На что я предположил свою версию: что у Вас просто мало возникает вопросов
в силу поверхностности изучения Вами С++. Т.е. Вы усваиваете то, что лежит на поверхности,
а глубже не копаете. Поэтому и вопросов мало.

Вот Вы усвоили, к примеру, что есть псевдонимы типов, а есть определения новых типов.
И всё. Вам этой инфы достаточно и глубже копать Вы не стали.

А я не такой. Я всегда люблю залезть в дебри/глубины и докапываться до самой сути.

Соответственно у меня и вопросов больше smile 

Автор: mes 4.1.2011, 02:40
Цитата(ДокторТуамОсес @  4.1.2011,  01:24 Найти цитируемый пост)
У меня цель КРИТИЧЕСКИ сравнить своё понимание с Вашим и, возможно, понять что-то, 
что я не понимал, узнать что-то, что я не знал. И возможно подкорректировать своё понимание,
если я увижу Ваши ответы достаточно обоснованными и убедительными

пока я вижу только Вашу выгоду... заинтересуйте меня, чтоб мне охота было напрягать мозги.. smile

Добавлено @ 02:42
Цитата(ДокторТуамОсес @  4.1.2011,  01:39 Найти цитируемый пост)
А я не такой. Я всегда люблю залезть в дебри/глубины и докапываться до самой сути.

вот ! поэтому я и показал тропинку в дебрях.. чтоб сразу вышли к разыскиваемому местечку, и уже копали до полного просвещения smile

Добавлено @ 02:45
Цитата(ДокторТуамОсес @  4.1.2011,  01:39 Найти цитируемый пост)
 Т.е. Вы усваиваете то, что лежит на поверхности,
а глубже не копаете.

если о способе нахождения ответов, я предложил Вам судить по кол-ву вопросов,
то о глубине моих знаний ( хотя я и сам признаюсь , что не глубоких) можно судить по ответам.. (в других темах)  smile

Добавлено @ 02:47
Цитата(ДокторТуамОсес @  4.1.2011,  01:24 Найти цитируемый пост)
У меня цель КРИТИЧЕСКИ сравнить своё понимание с Вашим и, возможно, понять что-то, 
что я не понимал, узнать что-то, что я не знал. И возможно подкорректировать своё понимание,
если я увижу Ваши ответы достаточно обоснованными и убедительными

я так понимаю, что Вы готовы дать обещание разобраться, а не просто почитать эту тему, если я приведу Вам пару примеров отличий для вышеуказанного примера ? и в следующий раз вместо спора стараться прибегать к самостоятельному ознакомлению, особенно в случаях когда дают "координаты".. 
smile

Автор: ДокторТуамОсес 4.1.2011, 02:59
Цитата(mes @ 4.1.2011,  02:37)
Цитата(ДокторТуамОсес @  4.1.2011,  01:24 Найти цитируемый пост)
изменится ли в программе:

изменится.. но ваше уточняющие вопросы не корректны.. 
Цитата(ДокторТуамОсес @  4.1.2011,  01:24 Найти цитируемый пост)

1) Внутреннее представление в памяти переменных типа S
2) Множество допустимых операций, для переменных типа S
3) Множество допустимых значений переменных типа S
если вместо 1-го определения идентификатора S я буду использовать 2-е?


чтоб понять , вот что Вы написали :
Код

Вариант 1. Вот мальчик Миша
Вариант 2. Вот Мальчик, имя неизвестно, но все зовут Мишей.. 

1. изменится ли внешность мальчика
2. способ общения с ним
3. широта восприятия мальчика 

Вы даже привести подходящую (для нашего случая) аллегорию не можете.

Ну что ж.

Я Вам помогу. Опишу подходящую для моего вопроса аллегорию.

В гараже может находится только один из 2-х типов автомобилей:
Тип 1. автомобиль шкода
Тип 2. абсолютно точно такой же автомобиль, имя которого не известно,
но который все называют шкодой

Изменится ли в гараже
1.Масса у автомобилей
2.Способ управления автомобилями
3.Число передач, которое имеется у каждого автомобиля
если все автомобили 1-го типа заменить на автомобили 2-го типа

Автор: mes 4.1.2011, 03:06
Цитата(ДокторТуамОсес @  4.1.2011,  01:59 Найти цитируемый пост)
Вы даже привести подходящую (для нашего случая) аллегорию не можете.

smile ну да в час ночи я еще на аллегории не напрягался.. и так сойдет smile

Автор: ДокторТуамОсес 4.1.2011, 03:08
Цитата(mes @ 4.1.2011,  02:40)
Цитата(ДокторТуамОсес @  4.1.2011,  01:24 Найти цитируемый пост)
У меня цель КРИТИЧЕСКИ сравнить своё понимание с Вашим и, возможно, понять что-то, 
что я не понимал, узнать что-то, что я не знал. И возможно подкорректировать своё понимание,
если я увижу Ваши ответы достаточно обоснованными и убедительными

я так понимаю, что Вы готовы дать обещание разобраться, а не просто почитать эту тему, если я приведу Вам пару примеров отличий для вышеуказанного примера ? 

А если я сам Вам приведу более 2-х отличий (правда не влияющих на те 3 пункта,
что я указал) для указанного мной примера? Вы обещаете впредь
не считать, априори, своего собеседника глупей себя и будете отвечать нормально без отсылания
к Страуструпу, стандарту и т.п.?

Автор: mes 4.1.2011, 03:08
Цитата(ДокторТуамОсес @  4.1.2011,  01:59 Найти цитируемый пост)
 абсолютно точно такой же а

так в том то и дело, что не абсолютно точно такой же..
а оригинал заменить на подделку.. 
скажу так.. есть способы и не один чтоб выявить кодом, оригинал ли тип или псевдоним, даже не подглядывая в хидер.. 



Автор: ДокторТуамОсес 4.1.2011, 03:11
Цитата(mes @ 4.1.2011,  03:06)
Цитата(ДокторТуамОсес @  4.1.2011,  01:59 Найти цитируемый пост)
Вы даже привести подходящую (для нашего случая) аллегорию не можете.

smile ну да в час ночи я еще на аллегории не напрягался.. и так сойдет smile

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

Автор: mes 4.1.2011, 03:11
Цитата(ДокторТуамОсес @  4.1.2011,  02:08 Найти цитируемый пост)
Вы обещаете впредь
не считать, априори, своего собеседника глупей себя и будете отвечать нормально без отсылания
к Страуструпу, стандарту и т.п.? 

прежде всего я никогда не считаю собеседника глупей себя.. Но стиль общения я выбираю исходя из его поведения.. 

Цитата(ДокторТуамОсес @  4.1.2011,  02:08 Найти цитируемый пост)
А если я сам Вам приведу более 2-х отличий

можно подумать я тут задал вопрос  и ищу ответа smile

Добавлено @ 03:12
Цитата(ДокторТуамОсес @  4.1.2011,  02:11 Найти цитируемый пост)
то 
действительно шиза какая-то получается. 

во-во.. правильно.. это я и почувствовал smile

Добавлено @ 03:16
ДокторТуамОсес, в конце концов с целью то определитесь.. спорить я устал.. если есть корректные вопросы, могу постараться помочь найти на них ответы.. если нет, и будут продолжаться провокации, пойду заниматься своими делами, а то я и так потратил на Вас уйму времени.. надеялся что не зря.. 

Автор: ДокторТуамОсес 4.1.2011, 03:16
Цитата(mes @ 4.1.2011,  03:08)
Цитата(ДокторТуамОсес @  4.1.2011,  01:59 Найти цитируемый пост)
 абсолютно точно такой же а

так в том то и дело, что не абсолютно точно такой же..
а оригинал заменить на подделку.. 
скажу так.. есть способы и не один чтоб выявить кодом, оригинал ли тип или псевдоним, даже не подглядывая в хидер..

Есть.
И они мне известны.

Но мой вопрос был не в чём отличия псевдонимов, введённых с помощью typedef, от
"реальных" типов ВООБЩЕ И В ЦЕЛОМ, а в том, проявляются ли эти различия, в конкретных, 
указанные мной,  3-х пунктах

Добавлено через 2 минуты и 13 секунд
Цитата(ДокторТуамОсес @  4.1.2011,  03:16 Найти цитируемый пост)
в конкретных, 
указанные мной,  3-х пунктах 

А именно, на "физических" свойствах, описанных с помощью этих типов, переменных

Автор: mes 4.1.2011, 03:22
Цитата(ДокторТуамОсес @  4.1.2011,  02:16 Найти цитируемый пост)
Но мой вопрос был не в чём отличия псевдонимов, введённых с помощью typedef, от
"реальных" типов ВООБЩЕ И В ЦЕЛОМ, а в том, проявляются ли эти различия, в конкретных, 
указанные мной,  3-х пунктах 

с такой поправкой хоть ответить можно.. еще б слово переменная заменили бы на то, на которое я Вам вначале намекал, и до которого Вы почти дошли, было б еще лучше smile

В остальном ответ :  нет 
smile

Автор: ДокторТуамОсес 4.1.2011, 03:27
Цитата(mes @  4.1.2011,  03:11 Найти цитируемый пост)
ДокторТуамОсес, в конце концов с целью то определитесь.. будете продолжать провоцировать, я уйду в другую.. спорить я устал.. если есть корректные вопросы, могу постараться помочь найти на них ответы.. если нет, пойду заниматься своими делами, а то я и так потратил на Вас уйму времени.. надеялся что не зря.. 

Ладно.
"Замнём для ясности"(с)
Я сам уже заколебался с Вами. И спать хочу.
Просто меня "напрягает" Ваш стиль общения.
Типа "а я вот кое-что знаю, но не скажу"
Вы либо вообще ничего не пишите, либо пишите чётко и ясно "что? когда? с кем? как? зачем? и почему?", а не ходите со своими намёками "вокруг да около".
Может статься что Ваше "кое-что" мне уже известно или не относится к моему случаю,
и Вы только время у меня зря отняли своими "загадками" и "хождением вокруг да около".

Всё. Я спать. Всем спокойной ночи

Добавлено через 7 минут и 4 секунды
Цитата(mes @  4.1.2011,  03:22 Найти цитируемый пост)
В остальном ответ :  нет 

Понятно.
Долго же я у Вас вымучивал этот ответ.
Который не принёс мне ничего нового, так как он совпадает с моим.
Поэтому получается, что я впустую потратил несколько часов своего времени.
Если бы Вы сразу не говорили загадками, а отвечали чётко, ясно и по делу - этого
можно было избежать.

Всё.. Спать. Спать. Спать.

Добавлено через 10 минут и 7 секунд
Цитата(ДокторТуамОсес @  4.1.2011,  03:27 Найти цитируемый пост)
Может статься что Ваше "кое-что" мне уже известно или не относится к моему случаю

Я "как в воду смотрел"(с) так и оказалось, блин. И я просто с Вами зря потерял время  smile 

Автор: mes 4.1.2011, 03:44
Цитата(ДокторТуамОсес @  4.1.2011,  02:27 Найти цитируемый пост)
Просто меня "напрягает" Ваш стиль общения.

Взаимно.. 

Цитата(ДокторТуамОсес @  4.1.2011,  02:27 Найти цитируемый пост)
Типа "а я вот кое-что знаю, но не скажу"

я ж не скрываю.. а прямо говорю где искать.. Вместо Вас мне этого делать не хочется.. 

Цитата(ДокторТуамОсес @  4.1.2011,  02:27 Найти цитируемый пост)
Вы либо вообще ничего не пишите, либо пишите чётко и ясно "что? когда? с кем? как? зачем? и почему?", а не ходите со своими намёками "вокруг да около"

разжевывать я не собираюсь, я это уже ни раз повторял.. а направить иль посветить фонариком - пожалуйста smile

Цитата(ДокторТуамОсес @  4.1.2011,  02:27 Найти цитируемый пост)
Может статься что Ваше "кое-что" мне уже известно или не относится к моему случаю,

может и известно, но высказано неверно, на что я и обращал Ваше внимание...

Цитата(ДокторТуамОсес @  4.1.2011,  02:27 Найти цитируемый пост)
Вы только время у меня зря отняли своими "загадками" и "хождением вокруг да около".

Не стоит переводить стрелки.. Загадки Вы сами провоцировали... Я Вам сказал что typedef не определяет новый тип, а задает псевдоним.. подробности по координатам.. Этого вполне достаточно чтоб Вам определить просвящены ли Вы в этом вопросе или нет.. Однако ж Вы все пытались вытянуть из меня цитату, адрес которой я Вам и так назвал.. Копировать ради того, что Вам лень посмотреть - не в моем вкусе.. 

Цитата(ДокторТуамОсес @  4.1.2011,  02:27 Найти цитируемый пост)
Всем спокойной ночи 

Взаимно

Автор: mes 4.1.2011, 09:43
Цитата(ДокторТуамОсес @  4.1.2011,  01:24 Найти цитируемый пост)
Я спрашивал про ПРИНЦИПИАЛЬНЫЕ отличия, влияющих на:

вопросы которые Вы задали, сравнивают не два "случая" идентификаторов S,
a структуру S и безымянную структуру... во втором случае идентификатор S не задействован.. 
и как следствие эти вопросы принципиально не могут выявить принципиальные различия..

Автор: mes 5.1.2011, 00:28
Цитата(kemiisto @  3.1.2011,  15:44 Найти цитируемый пост)
Я как-то писал про это дело. 

 
kemiisto, прочитал..  не согласен.. точнее не совсем согласен smile

Автор: KaraKum 5.1.2011, 00:36
Цитата(mes @  5.1.2011,  01:28 Найти цитируемый пост)
не согласен.. точнее не совсем согласен

В корне?  smile 

Автор: kemiisto 6.1.2011, 12:55
Цитата(mes @  4.1.2011,  22:28 Найти цитируемый пост)
kemiisto, прочитал..  не согласен.. точнее не совсем согласен

А с чем не согласен то?

Автор: mes 6.1.2011, 15:15
Цитата(kemiisto @  6.1.2011,  11:55 Найти цитируемый пост)
А с чем не согласен то? 

на сколько я знаю :
1. ADS, является не предшествием ADT, как это показано
а наоборот ADS может реализоваться посредством ADT..
т.е. во всех трех примерах идет ADS, и в последних двух ADS как ADT... 

2. ADT не предоставляет возможность (по крайней мере старается выполнить это условие)
что во втором примере не соблюдается.. 
решается добавлением (комментария) private, либо переносом определения структуры в cpp файл.. 

P.S. второй пункт хоть и мелочь, но, имхо, сильно сказывается на понимание сути
smile


Автор: baldina 6.1.2011, 17:06
имхо тема плавно перехолит в религиозные войны.
2ТС: читать вам надо больше, а не писать.

2mes & kemiisto: the type is the more common concept than structure, so mes is right

Добавлено через 11 минут и 29 секунд
Абстракция:
Цитата

The main advantage is ability to hide realization details.

Отчасти. Основная цель - отбросить лишнее, оставив лишь необходимое для анализа/взаимодействия. Сокрытие деталей лишь один из элементов.
Обобщение концепций см. например в "В.Ш.Кауфман «Языки программирования: концепция и принципы»"

Автор: mes 6.1.2011, 17:31
Цитата(baldina @  6.1.2011,  16:06 Найти цитируемый пост)
 Основная цель - отбросить лишнее, оставив лишь необходимое для анализа/взаимодействия. 

другими словами : выявить суть 
smile

Автор: kemiisto 6.1.2011, 17:38
Цитата(mes @  6.1.2011,  13:15 Найти цитируемый пост)
1. ADS, является не предшествием ADT, как это показано
а наоборот ADS может реализоваться посредством ADT..

Где там хотя бы намёк на какую-то приемственность?

Цитата(mes @  6.1.2011,  13:15 Найти цитируемый пост)
т.е. во всех трех примерах идет ADS, и в последних двух ADS как ADT...

Ничерта не понял.

Второй пункт - вообще-вообще не понял.

Добавлено через 2 минуты и 8 секунд
Цитата(baldina @  6.1.2011,  15:06 Найти цитируемый пост)
2mes & kemiisto: the type is the more common concept than structure, so mes is right

Это вообще к чему? Я где-то заявлял обратное? Что такое structure?

Автор: mes 6.1.2011, 17:43
Цитата(kemiisto @  6.1.2011,  16:38 Найти цитируемый пост)
Где там хотя бы намёк на какую-то приемственность?

как я понял, у Вас первый пример демонстриует ADS, a два других ADT..
a на мой взгляд все три  - ADS..

Цитата(kemiisto @  6.1.2011,  16:38 Найти цитируемый пост)
Второй пункт - вообще-вообще не понял.

У Вас поставляется (предоставляется) структура stack для клиента..
В зависимости от языковых возможностей, это можно решить как минимум двумя способами :
1. документативно, грубо говоря поставить коментарий, что трогать нельзя..
2. вынести за пределы доступного клиенту, грубо говоря поместить в .cpp файл или пометить как приват.. 

Автор: kemiisto 6.1.2011, 17:46
Цитата(mes @  6.1.2011,  15:43 Найти цитируемый пост)
как я понял, у Вас первый пример демонстриует ADS, a два других ADT..
a на мой взгляд все три  - ADS..

Почему же? В последних двух вариантах есть определение нового пользовательского типа данных. Появляется возможность объявлять и использовать переменные этого типа.

Автор: mes 6.1.2011, 17:48
Цитата(kemiisto @  6.1.2011,  16:46 Найти цитируемый пост)
Почему же? В последних двух вариантах есть определение нового пользовательского типа данных. 

от того, что появился ADT, ADS никуда не делась.. 

т.е. ADS может быть реализована :
1. без участия типа данных
2. как тип данных
3. как совокупность типов..

мне надо уйти-скоро вернусь

Автор: kemiisto 6.1.2011, 17:58
Цитата(mes @  6.1.2011,  15:48 Найти цитируемый пост)
от того, что появился ADT, ADS никуда не делась.. 

Если рассматривать только серверный модуль, то ещё как делась. Исчезла бесследно.


Цитата(mes @  6.1.2011,  15:48 Найти цитируемый пост)
т.е. ADS может быть реализована :
1. без участия типа данных
2. как тип данных

Так.

Во-первых, у меня написано следующее:
Цитата


  • Server module can supply an abstract data structure (ADS) itself.
  • Server module can supply an abstract data type (ADT).


И далее по тексту я поясняю:
Цитата
Each abstract data structure is variable of abstract data type.


В клиентском коде ADS никуда не делись и обратного я не утверждал. Напротив. А вот в серверном модуле ...

Автор: mes 6.1.2011, 18:34
Цитата(kemiisto @  6.1.2011,  16:58 Найти цитируемый пост)
Если рассматривать только серверный модуль, то ещё как делась. Исчезла бесследно.

помоему мы одним и тем же термином  называем разные вещи..
надо бы сформулировать.. сейчас подумаю как..

Добавлено @ 18:38
Цитата(kemiisto @  6.1.2011,  16:58 Найти цитируемый пост)
Each abstract data structure is variable of abstract data type.

smile

вот попробовал сформулировать свое представление на примере :
  ADS (std::)list и взаимодействие с ним,  реализуется с помощью АDT list и АDT iterator.. 

Автор: ДокторТуамОсес 6.1.2011, 20:09
Цитата(mes @ 6.1.2011,  17:31)
Цитата(baldina @  6.1.2011,  16:06 Найти цитируемый пост)
 Основная цель - отбросить лишнее, оставив лишь необходимое для анализа/взаимодействия. 

другими словами : выявить суть 
smile

Не совсем так.
К примеру, суть автомобиля - это сгорающий бензин, заставляющий двигаться поршень.
А мне кроме того, где находится руль и на какие педали жать (чтобы тормозить/ехать) ничего
знать не требуется.

Так и в программировании. Суть некоторой сущности может быть одной, а абстракция это сущности,
с которой работает юзверь - совсем другой smile

Добавлено через 2 минуты и 7 секунд
А вообще, господа, Вы уже в дебри/частности полезли.
И ушли в сторону от сабжа темы.

Автор: mes 6.1.2011, 20:12
Цитата(ДокторТуамОсес @  6.1.2011,  19:09 Найти цитируемый пост)
Не совсем так.
К примеру, суть автомобиля - это сгорающий бензин, заставляющий двигаться поршень

у автомобиля это не суть.. суть в авто (сам) мобиль (движется)
smile

Добавлено @ 20:14
Цитата(ДокторТуамОсес @  6.1.2011,  19:09 Найти цитируемый пост)
А мне кроме того, где находится руль и на какие педали жать (чтобы тормозить/ехать) ничего знать не требуется.

ну так оно и есть.. каждому аспекту свое виденье..
smile

Добавлено @ 20:15
Цитата(ДокторТуамОсес @  6.1.2011,  19:09 Найти цитируемый пост)
Суть некоторой сущности может быть одной, а абстракция это сущности,
с которой работает юзверь - совсем другой 

абстракция посредством интерфейса и выражает суть взгляда на сущность.. а не суть сущности smile

Добавлено через 4 минуты и 30 секунд
Цитата(ДокторТуамОсес @  6.1.2011,  19:09 Найти цитируемый пост)
А мне кроме того, где находится руль и на какие педали жать (чтобы тормозить/ехать) ничего
знать не требуется.

хоть телегу с рулем подавай.. smile

Добавлено через 6 минут и 38 секунд
Цитата(ДокторТуамОсес @  6.1.2011,  19:09 Найти цитируемый пост)
А вообще, господа, Вы уже в дебри/частности полезли.
И ушли в сторону от сабжа темы. 

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

Автор: ДокторТуамОсес 6.1.2011, 21:05

"Абстракция данных" (а есть ещё абстракция управления) - парадигма/идиома программирования, придуманная "для «обуздания» сложности очень больших систем." которая подразумевает в частности:
  • Определение программистом своих типов данных, отражающих базовые 
    концепции предметной области. 
  • Упрятывание деталей реализации; 
  • Разделение на интерфейс(спецификацию) и реализацию; поддержка последовательных уточнения/конкретизации;
  • Cоздание объектов данных и манипулирование ими только через строго определённые операции
  • Использование различных существенно различающихся принципов построения абстракций
    в зависимости от решаемой задачи
  • Работу на различных уровнях абстракции
  • Что абстракция данных является важнейшей составной частью объектно-ориентированного программирования

Иногда говоря об абстракции данных употребляют выражение "принцип чёрного ящика"

Вообщем, пока как-то так

Автор: mes 6.1.2011, 21:15
Цитата(ДокторТуамОсес @  6.1.2011,  20:05 Найти цитируемый пост)
Вообщем, пока как-то так 

ну и ? где увидели противоречие ?


Цитата(ДокторТуамОсес @  6.1.2011,  20:05 Найти цитируемый пост)
об абстракции данных употребляют выражение "принцип чёрного ящика"

тут тоже нужно понимать что имеется  в виду..
  главное не то, что мы не знаем что спрятано внутри, а то что все_так_удобно, что нам не требуется заглядывать внутрь..

Автор: ДокторТуамОсес 6.1.2011, 21:30
Цитата(mes @ 6.1.2011,  20:12)
Цитата(ДокторТуамОсес @  6.1.2011,  19:09 Найти цитируемый пост)
Суть некоторой сущности может быть одной, а абстракция это сущности,
с которой работает юзверь - совсем другой 

абстракция посредством интерфейса и выражает суть взгляда на сущность.. а не суть сущности smile

Вот это уже другое дело.
Вы молодец, что исправили ошибку в своём определении (правда с моей помощью.... ну да ладно). smile 

Автор: mes 6.1.2011, 21:42
Цитата(ДокторТуамОсес @  6.1.2011,  20:30 Найти цитируемый пост)

Цитата

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

ошибку в определении ?  smile  может ошибку в трактовке моего определения ?!

вернемся к контексту моего "определения"
Цитата(mes @  6.1.2011,  16:31 Найти цитируемый пост)
Цитата

Основная цель - отбросить лишнее, оставив лишь необходимое для анализа/взаимодействия. 

другими словами : выявить суть 

т.е. выявить суть необходимую для анализа/взаимодействия..
а то что при взаимодействие учитывается именно точка зрения взаимодействующего, а не дяди из с соседнего подъезда и так следует..
smile

Цитата(ДокторТуамОсес @  6.1.2011,  20:30 Найти цитируемый пост)
(правда с моей помощью.... ну да ладно

ну а как же без этого.. если б с полуслова бы все поняли, не зачем было устранять ошибку трактовки.. 
smile

Автор: baldina 6.1.2011, 23:45
ДокторТуамОсес, браво. Редкое умение...

Автор: baldina 7.1.2011, 00:01
модераторы, закройте уже.
противно...

Добавлено через 6 минут и 33 секунды
блин, ДокторТуамОсес, ты уже пол рунета зомбировал. я те случайно плюс вместо минуса поставил.
завтра исправлюсь... хотя если кто поможет исправить, буду весьма признателен.

Автор: ДокторТуамОсес 7.1.2011, 02:19
Прошу прощения, что повёлся на провокации

Автор: Modul 7.1.2011, 13:58
Цитата(baldina @  7.1.2011,  00:01 Найти цитируемый пост)
модераторы, закройте уже.


А модераторам нравится !  smile 

А тема хорошая в самом сабже !

Человек может абстрагироваться от реальности, машина нет !

Она тупая, может выполнять действия по некоторому алгоритму,
алгоритм придумал КТО ?

ЧЕЛОВЕК ! РАЗУМНЫЙ ! 
вместе получается ЧЕЛОВЕК РАЗУМНЫЙ !

А зачем это надо ?!!

ЧЕЛОВЕК НЕ МАШИНА, ДУМАЕТ ОБРАЗАМИ И АБСТРАКЦИЯМИ,
быстрее решает сложные проблемы.

НО, машина думает БЫСТРЕЕ !

ИТОГ
УЖЕ ДАВНО НАСТУПИЛА ИНФОРМАЦИОННАЯ РЕВОЛЮЦИЯ !

p.s. Иногда мне кажется, что компьютер живой.

Автор: KaraKum 18.1.2011, 14:51
Цитата(Modul @  7.1.2011,  14:58 Найти цитируемый пост)
машина думает БЫСТРЕЕ !

А вот это откуда такое умозаключение?

Автор: mes 18.1.2011, 16:53
Цитата(KaraKum @  18.1.2011,  13:51 Найти цитируемый пост)
Цитата

ашина думает БЫСТРЕЕ !


А вот это откуда такое умозаключение? 

да судя по всему Modul под тролль-бота закосил.. чтоб поставить точку в этой теме.. однако точки не получилось... всего лишь запятая smile


Автор: KaraKum 19.1.2011, 15:20
И чьё же будет последнее слово-то...  smile 

Автор: kemiisto 19.1.2011, 16:33
Последнее слово. smile 

Автор: mes 19.1.2011, 22:28
Цитата(kemiisto @  19.1.2011,  15:33 Найти цитируемый пост)
Последнее слово.   

Если так пойдет дальше, то последнее будет за модератором, закрывшим эту тему smile

Автор: ДокторТуамОсес 5.2.2011, 00:48
На днях перечитывал Страуса. 
И наткнулся на мысль, что отец русской демократии C++ под абстрактным типом 
понимает такой тип, который можно юзать через интерфейс.
Но это ещё не всё. Главное! Под "абстрактностью" типа он понимает такую фичу: что 
можно изменить реализацию типа в другом файле и при этом нам не придётся перекомпилировать 
те файлы, в которых этот тип юзается. Короче под абстрактными типами он понимает абстрактные классы (ну те, в которых чисто виртуальные функции-члены). Т.е. когда есть абсолютное разделение (и независимость) интерфейса класса от его реализация.

И "абсолютность" абстрактности (по его мнению) заключена в том, что можно изменить 
реализацию типа и  при этом будет не нужно не то, что править файлы, юзающие этот тип, 
но даже и перекомпилировать их. Достаточно будет только откомпилить заново только файл,
 содержащий описание реализации типа

Автор: ДокторТуамОсес 5.2.2011, 18:29
Чо молчим? Все ушли на фронт RSDN что ли? 

Автор: mes 5.2.2011, 21:08
Цитата(ДокторТуамОсес @  5.2.2011,  17:29 Найти цитируемый пост)
Чо молчим? Все ушли на фронт RSDN что ли?  

наверное никому неохота начинать вторую волну и снова повторяться... 

разве что уточню :
Цитата(ДокторТуамОсес @  4.2.2011,  23:48 Найти цитируемый пост)
И "абсолютность" абстрактности

абстрактность и абстрактный тип данных это не одно и то же  smile 

Автор: миг 6.2.2011, 16:47
http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

Автор: likenix 7.2.2011, 04:35
Цитата(ДокторТуамОсес @ 5.2.2011,  00:48)
На днях перечитывал Страуса. 
И наткнулся на мысль, что отец русской демократии C++ под абстрактным типом 
понимает такой тип, который можно юзать через интерфейс.
Но это ещё не всё. Главное! Под "абстрактностью" типа он понимает такую фичу: что 
можно изменить реализацию типа в другом файле и при этом нам не придётся перекомпилировать 
те файлы, в которых этот тип юзается. Короче под абстрактными типами он понимает абстрактные классы (ну те, в которых чисто виртуальные функции-члены). Т.е. когда есть абсолютное разделение (и независимость) интерфейса класса от его реализация.

И "абсолютность" абстрактности (по его мнению) заключена в том, что можно изменить 
реализацию типа и  при этом будет не нужно не то, что править файлы, юзающие этот тип, 
но даже и перекомпилировать их. Достаточно будет только откомпилить заново только файл,
 содержащий описание реализации типа

Вы похоже добрались до 9 ой главы, которая называется "Исходные файлы и программы". Поздравляю. Скоро начнете читать про классы. 

Автор: baldina 7.2.2011, 11:05
ДокторТуамОсес, в русском переводе читал? ню-ню...

Автор: ДокторТуамОсес 8.2.2011, 11:48
Цитата(mes @  5.2.2011,  21:08 Найти цитируемый пост)
абстрактность и абстрактный тип данных это не одно и то же  smile 

Дык абстрактный тип данных как раз и призван для поддержки этой пресловутой "абстрактности".
Разве не так?

Добавлено через 9 минут и 49 секунд
Цитата(mes @  5.2.2011,  21:08 Найти цитируемый пост)
наверное никому неохота начинать вторую волну и снова повторяться... 

Почему же "повторяться"?
А Вы не допускаете мысль, что за две недели у "старых" участников темы могли появиться новые мысли?
Или не допускаете мысль, что тему могут посетить новые участники, которые ещё не высказывались?

Автор: mes 8.2.2011, 12:02
Цитата(ДокторТуамОсес @  8.2.2011,  10:48 Найти цитируемый пост)
Дык абстрактный тип данных как раз и призван для поддержки этой пресловутой "абстрактности".
Разве не так?

грубо говоря это один из шагов на пути к абстрактности.. 

Автор: ДокторТуамОсес 8.2.2011, 12:02
Цитата(likenix @ 7.2.2011,  04:35)
Цитата(ДокторТуамОсес @ 5.2.2011,  00:48)
На днях перечитывал Страуса. 
И наткнулся на мысль, что отец русской демократии C++ под абстрактным типом 
понимает такой тип, который можно юзать через интерфейс.
Но это ещё не всё. Главное! Под "абстрактностью" типа он понимает такую фичу: что 
можно изменить реализацию типа в другом файле и при этом нам не придётся перекомпилировать 
те файлы, в которых этот тип юзается. Короче под абстрактными типами он понимает абстрактные классы (ну те, в которых чисто виртуальные функции-члены). Т.е. когда есть абсолютное разделение (и независимость) интерфейса класса от его реализация.

И "абсолютность" абстрактности (по его мнению) заключена в том, что можно изменить 
реализацию типа и  при этом будет не нужно не то, что править файлы, юзающие этот тип, 
но даже и перекомпилировать их. Достаточно будет только откомпилить заново только файл,
 содержащий описание реализации типа

Вы похоже добрались до 9 ой главы, которая называется "Исходные файлы и программы". Поздравляю. Скоро начнете читать про классы.

Вы плохо понимаете русский язык? И не знаете значение слова "перечитывал"?
Тогда я Вам поясню. Слово "перечитывал" говорит о том, что человек прочитал книгу уже столько раз, что замусолил её уже до дыр.

Автор: mes 8.2.2011, 12:04
Цитата(ДокторТуамОсес @  8.2.2011,  10:48 Найти цитируемый пост)
А Вы не допускаете мысль, что за две недели у "старых" участников темы могли появиться новые мысли?
Или не допускаете мысль, что тему могут посетить новые участники, которые ещё не высказывались? 

допускаю, но молчание подозрительно и вижу только две аргументации такому поведению :
1. все важное, что хотелось сказать, уже сказали..
2. неохота перечитывать 14 страниц, чтоб узнать о чем уже говорили.. 
 smile 

Автор: ДокторТуамОсес 8.2.2011, 12:06
Цитата(миг @ 6.2.2011,  16:47)
http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

Научились гуглем пользоваться? Поздравляю.
Теперь идите и учитесь пользоваться нигмой, экактусом и аск.нетом

Автор: mes 8.2.2011, 12:08
Цитата(ДокторТуамОсес @  8.2.2011,  11:02 Найти цитируемый пост)
Слово "перечитывал" говорит о том, что человек прочитал книгу уже столько раз, что замусолил её уже до дыр. 

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

Автор: ДокторТуамОсес 8.2.2011, 12:10
Цитата(mes @ 8.2.2011,  12:04)
Цитата(ДокторТуамОсес @  8.2.2011,  10:48 Найти цитируемый пост)
А Вы не допускаете мысль, что за две недели у "старых" участников темы могли появиться новые мысли?
Или не допускаете мысль, что тему могут посетить новые участники, которые ещё не высказывались? 

допускаю, но молчание подозрительно и вижу только две аргументации такому поведению :
1. все важное, что хотелось сказать, уже сказали..
2. неохота перечитывать 14 страниц, чтоб узнать о чем уже говорили.. 
 smile

Ну лень перечитывать всего-то 14 страниц (не 500 же) тому, кому тема не очень-то и интересна.
А ответы от товарищей, которые никогда не интересовались данной темой и которым в лом потратить 10 минут (чтобы прочитать то, что уже написано)  мне не очень интересны

Добавлено @ 12:13
Цитата(mes @  8.2.2011,  12:04 Найти цитируемый пост)
все важное, что хотелось сказать, уже сказали..

Что-то "не густо" важного-то тогда.
В основном оффтоп и флуд

Автор: mes 8.2.2011, 12:16
Цитата(ДокторТуамОсес @  8.2.2011,  11:10 Найти цитируемый пост)
Ну лень перечитывать всего-то 14 страниц (не 500 же) тому, кому тема не очень-то и интересна.

если б тема действительно была посвещена обсуждению поднятой проблемы, то я согласился бы с высказыванием.. 
однако ж.. в теме больше мусора, чем полезного материала.. при том начавшийся с первой страницы.. так что сомневаюсь, что найдется много желающих smile

Добавлено через 2 минуты и 23 секунды
Цитата(ДокторТуамОсес @  8.2.2011,  11:10 Найти цитируемый пост)
Что-то "не густо" важного-то тогда.
В основном оффтоп и флуд

Во сами так считаете.. и чего ж тогда предлагаете перечитывать это остальным  smile 

Автор: ДокторТуамОсес 8.2.2011, 12:23
Цитата(mes @ 8.2.2011,  12:16)
Цитата(ДокторТуамОсес @  8.2.2011,  11:10 Найти цитируемый пост)
Что-то "не густо" важного-то тогда.
В основном оффтоп и флуд

Во сами так считаете.. и чего ж тогда предлагаете перечитывать это остальным  smile

Ну я не виноват, что народ оффтопит и флудит. Я им рот закрыть не могу (я не модератор).
Но полезная информация в теме тоже есть. А оффтоп и флуд можно просто пропускать. Поэтому 14 страниц темы можно прочитать ещё быстрее. Поэтому не вижу причин не читать то, что написано в этой теме ранее прежде чем отвечать

Автор: миг 8.2.2011, 14:23
Цитата(ДокторТуамОсес @ 8.2.2011,  12:06)
Цитата(миг @ 6.2.2011,  16:47)
http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

Научились гуглем пользоваться? Поздравляю.
Теперь идите и учитесь пользоваться нигмой, экактусом и аск.нетом

  это тактичное оскорбление не вписывается в тему разговора.. я заметил когда нечего возразить начинают, говорить идите туда-то и поучитесь тому-то..)))
вот скажите вам было бы легче осмыслить если бы я скопировал текст с первоисточника и разместил его на форуме? там с вики есть ссылка на Бьерна Страуструпа.. Если вам до сих пор не понятно, что такое абстракция данных, то там все доходчиво написано.. Кстати, никогда не понимал людей у которых дома на столе лежит книжка к примеру: по геометрии, а они на форуме спрашивают про теорему Пифагора. Да еще потом активно спорят действительно это та теорема или нет? и не читайте больше Страуса..  читайте Страуструпа..

Автор: ДокторТуамОсес 8.2.2011, 15:17
Цитата(миг @ 8.2.2011,  14:23)
Цитата(ДокторТуамОсес @ 8.2.2011,  12:06)
Цитата(миг @ 6.2.2011,  16:47)
http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

Научились гуглем пользоваться? Поздравляю.
Теперь идите и учитесь пользоваться нигмой, экактусом и аск.нетом

  это тактичное оскорбление не вписывается в тему разговора.. 

Это не «оскорбление», а тактичный намёк, что это хамство - постить ссылку, которую выдаёт гуголь в первой же строке результатов поиска. <агрессивный смайлик>. 
Но Вы видно не поняли.

P.S. Открою Вам секрет, что то, что выдаёт гуголь в первых же строках не всегда является «истиной в последней инстанции»(с) и в википедии часто пишут полную галиматью

Автор: mes 8.2.2011, 15:44
ДокторТуамОсес, позвольте уточнить, в чем состоит текущий вопрос, из за чего тема была открыта на продолжение?

Добавлено через 1 минуту и 32 секунды
Цитата(ДокторТуамОсес @  8.2.2011,  14:17 Найти цитируемый пост)
Открою Вам секрет, что то, что выдаёт гуголь в первых же строках не всегда является «истиной в последней инстанции»(с)

 smile, а то что не в первых всегда является (не является)?

Автор: миг 8.2.2011, 15:51
Цитата(ДокторТуамОсес @ 8.2.2011,  15:17)
Цитата(миг @ 8.2.2011,  14:23)
Цитата(ДокторТуамОсес @ 8.2.2011,  12:06)
Цитата(миг @ 6.2.2011,  16:47)
http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

Научились гуглем пользоваться? Поздравляю.
Теперь идите и учитесь пользоваться нигмой, экактусом и аск.нетом

  это тактичное оскорбление не вписывается в тему разговора.. 

Это не «оскорбление», а тактичный намёк, что это хамство - постить ссылку, которую выдаёт гуголь в первой же строке результатов поиска. <агрессивный смайлик>. 
Но Вы видно не поняли.

P.S. Открою Вам секрет, что то, что выдаёт гуголь в первых же строках не всегда является «истиной в последней инстанции»(с) и в википедии часто пишут полную галиматью

Я в яндексе нашел.. Ну, тогда приведите оттуда цитату с которой вы не согласны и скажите, что это галиматья.. а еще лучше приведи  цитату из своей настольной книжки и начни  спорить сам с собой галиматья это или нет))

P.S. А задавать вопрос на который может ответить гугль на первой странице поиска это не хамство?

Автор: likenix 8.2.2011, 18:40
Цитата(ДокторТуамОсес @  8.2.2011,  12:02 Найти цитируемый пост)
Вы плохо понимаете русский язык? И не знаете значение слова "перечитывал"?
Тогда я Вам поясню. Слово "перечитывал" говорит о том, что человек прочитал книгу уже столько раз, что замусолил её уже до дыр. 

Я хорошо понял Вашу не сложную мысль.  Просто Абстрактные классы всегда пишутся в отдельном файлике, и обычно для всех классов создается отдельный заголовочный файлик и файлик реализации который может быть и не один, чтобы тем самым меняя реализацию класса не перекомпилировать весь код куда был включен заголовочный файл этого класаа. А абстрактность это не тоже самое что отделение интерфейса от реализации. 

Я это все к тому что абстракция непосредственно к языку и к файлам отношения не имеет. Абстракция имеет значение непосредственно при моделировании.

Вам пора к санитарам если честно они Вас ждут.

ДокторТуамОсес. вообще надо иметь талант читать книгу до дыр и так ни чего не понять.

Автор: ДокторТуамОсес 8.2.2011, 19:28
Цитата(likenix @  8.2.2011,  18:40 Найти цитируемый пост)
Вам пора к санитарам если честно они Вас ждут.

На это раз не буду обращаться к модераторам.
Но делаю Вам последнее китайское предупреждение.


Цитата(likenix @  8.2.2011,  18:40 Найти цитируемый пост)
А абстрактность это не тоже самое что отделение интерфейса от реализации. 

А поподробней можно?


Цитата(likenix @  8.2.2011,  18:40 Найти цитируемый пост)
Я это все к тому что абстракция непосредственно к языку и к файлам отношения не имеет.

Но мы то говорим здесь об "абстракции" именно применительно к программированию, а не "вообще"


Цитата(likenix @  8.2.2011,  18:40 Найти цитируемый пост)
Абстракция имеет значение непосредственно при моделировании.

А подробней (и желательно с конкретными примерами) можно?

Добавлено через 2 минуты и 8 секунд
Цитата(likenix @  8.2.2011,  18:40 Найти цитируемый пост)
ДокторТуамОсес. вообще надо иметь талант читать книгу до дыр и так ни чего не понять.

Намекаете, что у Вас есть такой талант?  smile 

Автор: ДокторТуамОсес 8.2.2011, 19:46
У меня тут неожиданно появился такой вот вопрос:
"Без поддержки абстракции (того или иного вида, "под тем или иным соусом"(с)) сейчас не возможно представить ни один используемый в промышленных масштабах  язык программирования. А что делать? Такова уж особенность человеческого мозга: когда задача слишком сложна - приходится дробить задачу на части, абстрагироваться от не существенных деталей и прочее.  Можно и не использовать абстракцию и писать в машинных кодах. Но тогда написание, к примеру, Windows XP заняло бы миллионы лет. .... А вот интересно: а не придумали ли в наше время чё-нить покруче для "борьбы" со сложностью программных систем? Что придёт на смену методу (или в помощь ему) абстрагирования. Хотя бы какие-то идеи есть? Что кроме дальнейшего повышения уровня абстракции поможет нам справиться со всё возрастающей сложностью разрабатываемых программ?"

Добавлено @ 19:52
И вообще за последние лет 30 в программировании было изобретено хоть что-нибудь ПРИНЦИПИАЛЬНО новое? Или просто "дорабатывалось напильником" и "доводилось до ума" то, что придумали ещё в 50-е ... 60-е годы (так или иначе связаное с "абстракцией")

ИМХО, нет. А как вы, дамы и господа, считаете

Добавлено @ 19:59
Как мне видится выход - это создание автоматических писунов - самообучающиеся программы с искусственным интеллектом , самостоятельно пишущие программы по ТЗ

Автор: likenix 8.2.2011, 20:22
Цитата(ДокторТуамОсес @  8.2.2011,  19:28 Найти цитируемый пост)
Цитата(likenix @  8.2.2011,  18:40 )
Я это все к тому что абстракция непосредственно к языку и к файлам отношения не имеет.

Но мы то говорим здесь об "абстракции" именно применительно к программированию, а не "вообще"


Цитата(ДокторТуамОсес @  8.2.2011,  19:28 Найти цитируемый пост)
Цитата(likenix @  8.2.2011,  18:40 )
Абстракция имеет значение непосредственно при моделировании.

А подробней (и желательно с конкретными примерами) можно?


За подробностями к любому языку моделирования в частности UML. Вот там это фундаментальное понятие.

Вот цитата из книги Г Буч, Д Рамбо, А Джекобсон
Язык UML Руководство пользователя. Если Вы вдруг не вкурсе то эта троица и стала авторами языка UML.


Цитата

Итак, что же такое модель? Попросту говоря, она является упрощенным представлением реальности. Модель - это чертеж системы: в нее может входить как детальный план, так и более абстрактное представление системы "с высоты птичьего полета". Хорошая модель всегда включает элементы, существенно влияющие на результат, и не включает те, которые малозначимы на данном уровне абстракции. Каждая система может быть описана с разных точек зрения, для чего используются различные модели, каждая из которых, следовательно, является семантически замкнутой абстракцией системы. Модель может быть структурной, подчеркивающей организацию системы, или поведенческой, то есть отражающей ее динамику.



У вас в корне не правильное понимание абстракции. Мы выделяем абстракции не на этапе программирования, а не этапе проектирования. И в каждой модели свои абстракции, в зависимости от конкретного видения системы. 

Это я опять же к тому что глупо выделять абстракции на этапе программрования, скажите для чего они., особенно про те которые вы как бы поняли у Страуструпа, которые только реализуются разделением на файл заголовочный и файл реализации, за вас это прекрасно сделает система документирования например doxygen или подобная ей. Если только вы вдруг программируете по уже по какой согласованной модели. И тут бац Вас осинило и Вам пришло в голову надо создать новую австракцию и добавить ее в конкретную модель, но это только издержки проектирования. Хотя может вы всегда так программируете, и модели у Вас появлябтся во время написания кода.

Абстракция в языке C++ может быть реализована и не одним классом, а  10 и более классов.

Цитата(ДокторТуамОсес @  8.2.2011,  19:28 Найти цитируемый пост)
Добавлено через 2 минуты и 8 секунд
Цитата(likenix @  8.2.2011,  18:40 )
ДокторТуамОсес. вообще надо иметь талант читать книгу до дыр и так ни чего не понять.

Намекаете, что у Вас есть такой талант?

Я в свое время читал книгу Страуструпа и распознавал ее(в том смысле что из печатного издания в перенес в формат doc) делал там свои пометки дополнял другими изданиями. Сравнивал мнения и тд и тп. 


Автор: ДокторТуамОсес 8.2.2011, 21:23
Цитата(likenix @  8.2.2011,  20:22 Найти цитируемый пост)
Я в свое время читал книгу Страуструпа и распознавал ее(в том смысле что из печатного издания в перенес в формат doc) делал там свои пометки дополнял другими изданиями. Сравнивал мнения и тд и тп. 


Тогда, быть может, у Вас есть что-то подобное http://yandex.ru/yandsearch?text=%D0%94%D0%B5%D1%80%D0%B5%D0%B2%D1%8F%D0%B3%D0%BE+%D0%A1%D0%B5%D1%80%D0%B3%D0%B5%D0%B9.+C%2B%2B+3rd%3A+%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B8.&text=46510&text=3&lr=3?

Интересно было бы почитать
P.S. Я кстати сейчас как раз и занимаюсь тем, чем Вы занимались  "в свое время"©

Автор: baldina 9.2.2011, 12:34
Цитата(ДокторТуамОсес @  8.2.2011,  19:46 Найти цитируемый пост)
Что придёт на смену методу (или в помощь ему) абстрагирования.

Ничего. Ибо абстрагирование есть свойство человеческого мозга.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)