| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > "Абстрактный" и "НЕ абстрактный" типы данных |
| Автор: ДокторТуамОсес 3.1.2011, 13:27 | ||
| У некоторых авторов книг по C++ встречал такую мысль, что "абстрактный тип данных" - это любой производный (т.е. не базовый) тип, определённый программистом. Т.е. получается, к примеру:
что тип P - это "абстрактный тип данных"? Или как? |
| Автор: KaraKum 3.1.2011, 13:32 |
| Скорее всего под "абстрактным типом данных" имеются в виду шаблоны. |
| Автор: Dem_max 3.1.2011, 14:27 | ||
это значит определенный пользователем тип данных
|
| Автор: KaraKum 3.1.2011, 14:29 |
| А что абстрактного в типах данных, определённых пользователем? |
| Автор: Dem_max 3.1.2011, 14:42 | ||
можно допустим так написать
вот TString и NewType будет новым типом пользовательских данных |
| Автор: KaraKum 3.1.2011, 15:01 |
| Да - новый. Но ничего абстрактного там нет. |
| Автор: ДокторТуамОсес 3.1.2011, 16:40 | ||
Я у некоторых авторов книг по 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 про это дело. |
| Автор: KaraKum 3.1.2011, 17:19 | ||
В том и дело что ничего. Среди возможностей самого языка С++, связанных с абстрагированием, я вижу лишь шаблоны - с ними осуществляется работа вне зависимости от того какими конкретно данными (типами) они являются. Обычно в таком случае нужно лишь знать размер данных. Добавлено через 2 минуты и 41 секунду http://www.cyberguru.ru/programming/cpp/cpp-data-abstraction-page3.html Судя заданному жаргону - это написал "реальный пацан". |
| Автор: ДокторТуамОсес 3.1.2011, 17:38 | ||||||
Или ещё к тому, что некоторые типы вообще не "привязаны" ни к какой переменной. Например коде
не существует переменных типа P и тип P используется только для построения на его основе других типов. |
| Автор: KaraKum 3.1.2011, 17:43 | ||||
typedef существует лишь для удобства печатания, чтобы каждый раз при объявлении переменной не писать сложные конструкции типа "unsigned long long int", а просто:
И, вообще, это равносильно следующему:
но во втором случае нужно быть осторожным с контекстом. |
| Автор: mes 3.1.2011, 17:49 | ||||||||||||||||
АТД - это не термин C++.. читайте более обобщенные книги
нет, не получается..
нет..
одна из реализаций АТД - это абстрактные классы..
нет, не так поняли.. при реализации списков, очередей, деревьев, лучше применять "АТД-подход"..
да может..
ну так .. АТД, это тип реализующий концепцию "абстракции данных" - а вот что это подробно написано в книжках.. только надо выбрать правильные.. ;) Добавлено через 1 минуту и 3 секунды
при чем тут переменные , если речь о типе ?! |
| Автор: ДокторТуамОсес 3.1.2011, 17:52 | ||
Но это Вы зря. В с++ много средств, поддерживающих абстракцию: макросы, функции, классы, перегрузка операций, шаблоны, .... Ведь абстракция в программировании по сути есть отделение "интерфейса" от "реализации". Т.е. когда можно использовать ту или иную сущность зная только её интерфейс, и изменять/выбирать реализацию этой сущности без необходимости менять код, использующий эту сущность. Т.е. абстракция это (ИМХО), если "объяснять на пальцах"(с), когда "мухи отдельно, а котлеты отдельно"(с) Добавлено через 1 минуту и 10 секунд "Что касается абстракции, то она состоит в отделении ощутимых свойств тел либо от других их свойств, либо от самих тел, которые ими обладают."© |
| Автор: Batbko 3.1.2011, 17:54 |
| IMHO абстрактный тип данных, тот который определяет какие операции могут выполняться над экземплярами этого типа но не предоставляет конкретной реализации этих операций, только семантику. Т.е в контексте с++ это любой класс имеющий хотя бы один чисто виртуальный метод. |
| Автор: KaraKum 3.1.2011, 17:54 |
| Здесь, скорее всего, идёт речь про общие принципы ООП, а не конкретно С++. |
| Автор: ДокторТуамОсес 3.1.2011, 17:57 | ||||||
Я же Вам привёл пример (хоть несколько корявый, но тем не менее), что когда с помощью typedef вводятся идентификаторы типов, которые ВООБЩЕ не используются при "объявлениях переменной", а используются только для конструирования других типов |
| Автор: KaraKum 3.1.2011, 17:59 |
| Ну и что? Нет разницы. |
| Автор: ДокторТуамОсес 3.1.2011, 18:03 |
А что такое "тип"? Ведь "тип" - это сокращённое обозначение термина "тип переменной". А тип переменной определяет: 1) Множество значений, которые может принимать переменная 2) Множество доп. операций/функций, в которых переменная может выступать операндом 3) Внутреннее представление текущего значения переменной в памяти Как видите во всех 3-х пунктах определения типа фигурирует слово "переменная" |
| Автор: KaraKum 3.1.2011, 18:04 | ||
| "Тип" для С++ - это информация о том сколько байт в памяти занимает переменная, созданная как этот тип, а также какие действия выполнять при стандартных операциях (операторы "+", "-", "*", ...). Для структур и классов (в С++ это одно и тоже кроме "public") это ещё информация о том где в сегменте кода искать функции-элементы классов. Всё остальное от лукавого... Добавлено через 2 минуты и 58 секунд Вот так, например, можно к строке прибавить число 5:
Добавлено через 3 минуты и 48 секунд Это чтобы развеять непонятные предрассудки вроде "привязка типа к переменной" и т.д.... |
| Автор: ДокторТуамОсес 3.1.2011, 18:08 | ||||||
Просто я опустил (для краткости) выделенные слова: Изначально у меня в голове фраза звучала так: "У некоторых авторов книг, статей и монографий по C++, другим ЯВУ и по программированию вообще ..." Но я решил абстрагироваться от выделенных слов Добавлено через 4 минуты и 3 секунды
Ваше ИМХО весьма близко к моему ИМХО |
| Автор: mes 3.1.2011, 18:17 |
как это конструирование типов ? в контексте С++.. |
| Автор: ДокторТуамОсес 3.1.2011, 18:18 | ||||||
Для Вас - нет. А для сторонников подхода:
разница. Так как можно установить прямые связи между реальными (базовыми) типами и кусками кода компилятора, за них отвечающими. А для абстрактных типов такой прямой связи нет. |
| Автор: mes 3.1.2011, 18:18 | ||||
ух как.. а почему именно переменной,а не постоянной ? Добавлено через 1 минуту и 5 секунд
Ну так это Вы просто неправильно сформулировали.. больше ничего "полезного" не вижу |
| Автор: ДокторТуамОсес 3.1.2011, 18:20 | ||
Вот видите? Опять всплыло слово "переменная" Что и требовалось доказать: что есть прямая связь между понятием "тип" и понятием "переменная" |
| Автор: mes 3.1.2011, 18:20 | ||
а при нестандартных операциях, чем определяется ? |
| Автор: KaraKum 3.1.2011, 18:21 | ||||
Нет такого подхода.
Не существует "кусков кода компилятора" ибо не существует "кода компилятора". |
| Автор: mes 3.1.2011, 18:21 | ||
все селедки - рыбы, но не все рыбы селедки.. © так что судить по всплывшей селедке о всех рыбах, как минимум не корректно .. |
| Автор: KaraKum 3.1.2011, 18:23 | ||||
Вот так можно создать "переменную" без типа:
|
| Автор: mes 3.1.2011, 18:23 | ||
тут два варианта либо Вы не правильно поняли, что имели ввиду стороники, либо сами стороники - выбирайте кто не прав сами |
| Автор: KaraKum 3.1.2011, 18:24 | ||||
Какие нестандартные операции? Я знаю только сложение и деление. Добавлено через 41 секунду Ой, сравнение ещё забыл и сдвиг. |
| Автор: mes 3.1.2011, 18:25 |
она с типом - указатель на void .. |
| Автор: ДокторТуамОсес 3.1.2011, 18:25 |
Потому что "постоянная" если для неё описывается тип (т.е. если она не является "литералом"), является не чем иным, как "переменной", описанной с квалификатором const |
| Автор: KaraKum 3.1.2011, 18:26 | ||
"void" переводится как пустота. Хотя тип указателя, конечно, присутствует - его можно сложить, поделить и даже подвигать |
| Автор: ДокторТуамОсес 3.1.2011, 18:27 | ||||||
Ну тогда дайте определение понятия "Тип" (в контексте C++) не используя понятия "переменная" (и его синонимов !!! ) Добавлено через 1 минуту и 24 секунды
Дык приводил выше. И не один раз. Это когда идентификатор одного типа используется в определении другого типа |
| Автор: KaraKum 3.1.2011, 18:28 | ||||||
Ну так я же дал: "количество байт в памяти и адреса функций в сегменте кода" - сколько синонимов "переменной" я употребил? |
| Автор: kemiisto 3.1.2011, 18:30 | ||||
Это в корне неверное определение. Даже в Педивикии очень ничего
|
| Автор: KaraKum 3.1.2011, 18:32 | ||||||
Абсолютно тоже самое что и я сказал. |
| Автор: ДокторТуамОсес 3.1.2011, 18:41 | ||||||||
Согласен. Но в "строгой теории" говорят, что ещё нужно указать "аксиомы, задающие свойства этих функций"http://citforum.ru/programming/theory/adt/ Т.е. мало описать что, де, есть операция '+','-','*','/'. Надо ещё указать "аксиомы", которым эти операции подчиняются. К примеру, что А + B = B + A Добавлено через 4 минуты и 50 секунд
Как это "без типа". У неё есть тип "указатель на void". И ТОЛЬКО благодаря наличию у переменной типа компилятор знает: 1) Какое внутреннее представление в памяти имеет переменная (в частности её sizeof) 2) В каких операциях/функциях можно юзать эту переменную как операнд 3) Множество доп. значений этой переменной Повторяю, понятие "тип" тесно связано с понятием "переменная" Добавлено через 6 минут и 55 секунд Дык я аналогично. На "джЫ Эп Эр Эс"-е сижу Отключите скрипты, картинки и т.п. Мне таким образом удалось снизить размер загружаемой страницы с 300..500кБ до 5..7кБ |
| Автор: Batbko 3.1.2011, 18:41 |
| Не успеваю за нитью разговора ибо биланй модем :( но : Шаблоны позволяют абстрагироваться от конкретного типа данных, но не от реализации и предоставляют возможность создавать обобщённые типы, а http://ru.wikipedia.org/wiki/Абстрактный_тип_данных, как Я считаю, должны давать возможность абстрагироваться от способа работы с данными, т.е от реализации. Хотя все зависит от чего собираешься http://ru.wikipedia.org/wiki/Абстракция К слову об определении типа данных, если не городить сложных определений, то это совокупность струтуры данных и операций возможных над этими данными, переменные, а тем более переменные с++ тут совсем ни при чеё. Переменная это способ обьявить именованную ссылку на экземпляр типа данных. |
| Автор: Batbko 3.1.2011, 18:51 | ||
Эту семантику определяет конкретная реализация средства для описания абстрактных типов. В случае компилятора с++ семантика поведения операторов, такая как коммутативность или приоритет, заранее определена в компиляторе и пользователь не имеет средст её изменить, что и делает её аксиомой. С функциями та же история - есть четкие правила, описываемые при задании сигнатуры функции. |
| Автор: ДокторТуамОсес 3.1.2011, 19:00 | ||||
Ну да. ИМХО механизм абстрактных типов данных должен позволять описывать типы данных только через описание интерфейсов допустимых операций над данными данного типа (простите за тавтологию) и свойств этих операций. Т.е. к примеру как-то так (здесь я исп. синтаксис некоего абстр. языка, а не C++):
Добавлено через 10 минут и 49 секунд Чёта форум что-ли глючит? Мой ответ Batbko как-то оказался выше его сообщения |
| Автор: ДокторТуамОсес 3.1.2011, 19:17 | ||||
Согласен. В любом случае, компилятор, поддерживающий концепцию абстракции данных, должен до определённого момента своей работы (и до определённого этапа разработки программы) работать с абстрактными типами и данными, описанными с помощью этих типов, используя только инфу из описания "абстрактных" свойств "абстрактного типа данных" не привлекая инфу о его конкретной реализации, которая будет описана на следующем этапе разработке программы. |
| Автор: KaraKum 3.1.2011, 19:20 |
| Для компилятора нет понятия "абстрактных типов данных". |
| Автор: Batbko 3.1.2011, 19:35 |
Ну например gcc при попытке создания экземпляра абстрактного типа данных(ну если вдруг какой то псих определил незакрытый конструктор Сущность не может не иметь понятия о сущностях с которыми она работает, как минимум она должна иметь представление об их интерфейсах, а в случае компилятора просто обязана иметь информацию о том какой должна быть реализация. |
| Автор: KaraKum 3.1.2011, 19:38 |
| А, в этом плане абстрактные классы, конечно, существуют. Классы с чисто виртуальными методами (функциями). Экземпляры которых нельзя создать. |
| Автор: mes 3.1.2011, 20:03 | ||||||||||||
ну так это ж Вы книжку пишете, чего мне напрягаться то а какой "синоним переменной" возвращает функция f ? :
Добавлено через 50 секунд а что с данными работают только стандартные операции ? Добавлено через 1 минуту и 44 секунды а у литерала типа нет ? Добавлено через 3 минуты и 9 секунд то есть если б его назвали бы по другому, то он сразу стал бы типом, а так нет Добавлено через 3 минуты и 47 секунд
и где ж тут конструировании типов ?! Добавлено через 5 минут и 34 секунды тогда советую почитать еще несколько раз и обдумать, в чем все таки разница Добавлено через 6 минут и 29 секунд
это к АТД никакого отношения не имеет.. Добавлено через 7 минут и 40 секунд
способ ? ссылку ? Добавлено через 8 минут и 59 секунд
семантику поведения изменить может.. Добавлено через 12 минут и 53 секунды есть, если реализуется средствами языка, предназначенными для этого |
| Автор: Batbko 3.1.2011, 20:19 |
если не секрет как ? |
| Автор: KaraKum 3.1.2011, 20:20 |
О каких операциях идёт речь? |
| Автор: mes 3.1.2011, 20:21 |
абстрактные классы это в большей степени средства динамического полиморфизма, нежели поддержки концепции АТД.. т.е. для понимания и использования АТД, абстрактные классы нам не нужны Добавлено через 2 минуты и 34 секунды о стандартных но раз имеются стандартные операции, то есть как минимум и нестандартные.. а что именно зависит от Вашего вышеспрашиваемого определения.. Добавлено через 3 минуты и 9 секунд перегрузить оператор |
| Автор: KaraKum 3.1.2011, 20:29 | ||||
Стандартные операции - это те что определены сементикой языка. НЕстандартные - это перегруженные операторы. Ещё вопросы будут? |
| Автор: ДокторТуамОсес 3.1.2011, 20:32 | ||
Я конечно понимаю, что "краткость - сестра таланта"(с) и прочее, но не могли бы Вы высказываться более развёрнуто что ли? А то у меня дома все телепаты в отпуске, а я по короткой обрывочной фразе зачастую не могу догадаться, что Вы, пардон, имеете в виду. |
| Автор: KaraKum 3.1.2011, 20:33 | ||
Неверно. Тип "void*" означает, дословно, "указатель на ячейку памяти, где начинаются данные произвольного (неизвестного) типа произвольной длины". В контексте "целочисленная переменная" или "вещественное число" это означает "неизвестность". Вот такие вот пироги... |
| Автор: mes 3.1.2011, 20:34 | ||||
ну так.. а чем не угодили НЕстандартные операции при определении типа ? не говоря о функциях и операторах преобразования.. |
| Автор: Batbko 3.1.2011, 20:34 |
| IMHO любой полиморфизм, наряду с инкапсуляцией и, в рамка с++ наследованием, есть средства для описания АТД и тесно связаны с самим определением. перегрузка оператора никоим образом не позволяет изменить семантику его поведения так например перегрузка бинарного оператора сложения никогда не заставит перестать сложение быть комутативным. в общем случае если не проводить параллели с ссылками с++ или какого либо друго ЯП да. |
| Автор: KaraKum 3.1.2011, 20:35 | ||
Нету. И вообще, компьютер с абстракцией не работает. Добро пожаловать в IT. |
| Автор: ДокторТуамОсес 3.1.2011, 20:35 | ||
Повторяю: вообще говоря <абстрактный тип данных> ≠ <абстрактный класс> |
| Автор: mes 3.1.2011, 20:36 | ||||
ну так, а других выводов из Вашего предложения не следовало Добавлено через 1 минуту и 22 секунды ну если смотреть на этот вопрос "глобально", то ЯП вобще то предназначены для абстракции , при том не только данных, но и действий.. Добавлено через 1 минуту и 39 секунд
Добавлено через 3 минуты и 12 секунд
ну да.. а сам компьютер со всей периферией, ей средства набора текста.. |
| Автор: KaraKum 3.1.2011, 20:40 | ||||
Я не совсем понимаю вопрос и думаю что он "мутно" задан потому что задавальщику этого вопроса плохо понятна суть дела. Для того чтобы разобраться в степени понимания этой сути я и показал эквивалентность "typedef" и "define" чтобы показать что ничего эфемерного в "typedef" и также показал суть сложения и деления и работы с памятью. Но эта ветвь рассуждений заглохла. Ещё некоторые "знатоки" не замечают абсолютной эквивалентности фраз и указывают на ошибки "в корне". На практике приходилось встречать код вроде
Поэтому иногда приходится не отвечать на прямо заданный вопрос, а переворачивать всё мировоззрение вверх-ногами. |
| Автор: mes 3.1.2011, 20:42 | ||
а что семантика поведения ограничена только комутативностью ? сейчас набросаю контрпример а операторы ограничены сложением ? погуглите насчет перегрузки операторов && и || |
| Автор: KaraKum 3.1.2011, 20:42 |
Да - всё изначально было понятно как раз-два. |
| Автор: ДокторТуамОсес 3.1.2011, 20:44 | ||||
Знамо дело какой. Безымянную переменную типа int, в которую копируется результат работы функции f |
| Автор: KaraKum 3.1.2011, 20:45 | ||||||
Похоже в обсуждениях С++ пошли приёмы русского языка. Выражение
абсолютно верно и не нужно биться головой об стену в поисках ошибок. |
| Автор: mes 3.1.2011, 20:46 | ||
http://liveworkspace.org/code/5b1dc2fe1ef6c05c735a9ad709a826ea |
| Автор: KaraKum 3.1.2011, 20:46 | ||
Вопросы всё-таки ещё будут. Что мне в чём-то не угодило?? Не понимаю. В чём вообще смысл этой фразы? |
| Автор: mes 3.1.2011, 20:47 | ||
а как же пример, чуть выше этого поста ? |
| Автор: ДокторТуамОсес 3.1.2011, 20:47 | ||
Есть. Для литералов нет определений, они с а м о о п р е д е л я е м ы е |
| Автор: mes 3.1.2011, 20:48 | ||||
так Вы сказали что тип определяет как работают с данными стандартные операции... так кто определяет как работают с данными нестандартные операции ? Добавлено через 1 минуту и 6 секунд
при чем тут определение ?! я спрашивал про тип .. |
| Автор: KaraKum 3.1.2011, 20:52 |
| Короче, ДокторТуамОсес, я сдаюсь. Доверяю тебя в руки знатокам русского языка и цитировщикам эквивалентных фраз, видящих в них "коренные" различия. Удачи, она тебе понадобится. Добавлено @ 20:53 "Истина где-то рядом..." |
| Автор: mes 3.1.2011, 20:53 | ||
в общем откуда берется тип у s |
| Автор: ДокторТуамОсес 3.1.2011, 20:53 | ||||
В приведённом мной примере |
| Автор: mes 3.1.2011, 20:55 |
никакой тип там не конструируется.. |
| Автор: ДокторТуамОсес 3.1.2011, 20:55 | ||||
Забыли добавить ",ИМХО, " |
| Автор: mes 3.1.2011, 20:57 |
| может имели ввиду инстанируется ? (как оно по русски то правильно пишется) Добавлено через 1 минуту и 14 секунд все равно смысла фразы не вижу .. |
| Автор: ДокторТуамОсес 3.1.2011, 21:02 | ||||
А в контексте компилятора означает много чего известность. Как минимум: 1) размер памяти, выделяемой под переменную 2) внутреннее представление ("указатель") 3) множество доп. операций, в которые может входить переменная ( к примеру нельзя переменной, являющейся указателем на void присвоить НЕПОСРЕДСТВЕННО значение типа int) Учитывая п1, ..., п3 делаем вывод, что переменная, описанная как указатель на void, имеет тип. |
| Автор: Batbko 3.1.2011, 21:04 | ||||
оператор не потерял свойство комутативности просто в выражении участвуют операнды для которых не определена верная перегрузка оператора отсюда и ошибка в закоментированном участке кода, которая может быть исправленна использованием outline определения оператора, т.е в качестве свободной функции. Но не будем о с++.Все ниже написанное это только моё понимание АТД . АТД должен предоставить набор операций с заданной раз и навсегда семантикой(которая в большинстве случаев задаеться в конкретной реализации ЯП) ака интерфейс. АТД должен предоставить своим реализациям интерфейс для изменения реализации, НО не семантики, операций. АТД должен предоставить возможность инкапсулировать конкретной реализации данные в любом доступном для хранения виде, и гарантировать доступность этих данных пользователю только через предоставляемые им интерфейсы. В очень общем виде любой тип данных используемых в ЯП это абстракция.Поясню: цпу, ну или гпу даже на уровне ассемблера предоставляют абстракции над физическими процессами происходящими в этих устройствах. Просто эта абстракция удобна для восприятия простому человеку. Вот как то так |
| Автор: ДокторТуамОсес 3.1.2011, 21:07 | ||
Позволю себе не согласиться. То что Вы описали - не семантика, а алгебраические свойства операций. А семантику то как раз поменять можно. Можно например сделать, чтобы - для объектов класса Т1 А+В означало действительно сложение в том смысле как мы привыкли - для объектов класса Т2 А+В означало операцию умножения |
| Автор: mes 3.1.2011, 21:07 | ||
А кто это решил, что неверная ?! мне именно такое поведение и требовалось.. тогда и у потоков операторы >>,<< не правильно перегружены.. не смотряя на то что входят в стандарт |
| Автор: ДокторТуамОсес 3.1.2011, 21:10 | ||||
Я же просил Вас как человека
А Вы опять всё загадками изъясняетесь. Каждый Ваш ответ порождает 10 уточняющих вопросов. Вот что Вы КОНКРЕТНО имеете в виду говоря "компьютер с абстракцией не работает." То что проц понимает только язык машинных кодов? Или что? |
| Автор: KaraKum 3.1.2011, 21:13 | ||
Это известно только в момент создания переменной и то если эта переменная создавалась. Указателем на "void" может быть адрес буфера железа (неизвестный размер), параметр для потока (неизвестный размер). Абсолютно любая переменная является указателем на ячейку памяти.
Можно. Добавлено через 1 минуту и 38 секунд Вот именно это я имел в виду под "переворачиванием мировоззрения с ног-на-голову". Звучит слишком громко для такого плёвого дела, но порой некоторые узнают какие-то факты вот с таким лицом: |
| Автор: ДокторТуамОсес 3.1.2011, 21:16 | ||||
А я сказал на это:
|
| Автор: Batbko 3.1.2011, 21:17 | ||
но приоритет операции или способ её вызова это не изменит, а будет означать только то что правильной операцией сложения для этих обьектов будет на самом деле их умножение.
никто и не решал Под http://ru.wikipedia.org/wiki/Семантика_(программирование) я понимаю совокупность правил по которым происходит выполнение операций, а не то что операции должны делать. Но перегрузки операторов и тому подобные средства, это все элементы конкретного ЯП. |
| Автор: ДокторТуамОсес 3.1.2011, 21:22 | ||||||||||||
Это верно то верно. Только вопрос: "А что? Семантика оператора исчерпывается только правилами коммутативности,ассоциативности и приоритета?" Добавлено через 1 минуту и 41 секунду
Добавлено через 6 минут и 26 секунд
Из типа стоящего справа выражения |
| Автор: KaraKum 3.1.2011, 21:33 | ||
| Короче, вундеркинды, и kemiisto в их числе со своими отсылками на "в корне неверными суждениями". Дабы не засорять просторы рунета безосновательным и неконструктивным обсуждением каких-то несуществующих "абстракций" в С++, следует объяснить все "взаимоотношения" между компилятором и пресловутыми "типами переменными". Вот кусочек вселенской мудрости:
Добавлено @ 21:34 Нет здесь никаких аристотелевских метафизических абстракций. |
| Автор: ДокторТуамОсес 3.1.2011, 21:34 | ||||||||||||||
А мне представляется, что конструируется. Сначала мы из "лексем" [typedef], [int], [*] и [;] "сконструировали тип" P А потом из "лексем" [typedef], [*], [P] и [;] "сконструировали тип" P2 Добавлено через 4 минуты и 55 секунд
И что? В этом примере:
значение переменной c до выполнения программы неизвестно. Но это вовсе не значит, что у неё нет типа Добавлено через 8 минут и 23 секунды
Опять загадками говорите? Вы имеете в виду если рассматривать программу на уровне машинного кода? Добавлено через 9 минут и 39 секунд
Добавлено через 12 минут и 1 секунду
А Вы не могли вместо "переворачивания мировоззрения с ног-на-голову" просто озвучивать "факты", которые люди узнают "вот с таким лицом: А? |
| Автор: ДокторТуамОсес 3.1.2011, 21:49 | ||||
Ну "приоритетом операции" и "способом её вызова" - далеко не исчерпывается семантика перегруженных операторов. Добавлено через 2 минуты и 11 секунд
То что Вы "считаете семантикой" - это скорей уж алгебраические аксиомы, которым подчиняются операции |
| Автор: KaraKum 3.1.2011, 21:54 | ||||||
Я сказал размер, а не значение! Добавлено через 58 секунд
Я их "озвучиваю" - они игнорируются. Добавлено через 2 минуты и 17 секунд
Добавлено через 3 минуты и 27 секунд Достаточно ли тут НЕПОСРЕДСТВЕННОСТИ? Или чего-то не хватает? Какой-нибудь семантики, аксиоматики, абстрактности, сиплюсплюсности? Добавлено через 3 минуты и 47 секунд Или я "в корне не прав"? |
| Автор: ДокторТуамОсес 3.1.2011, 21:58 |
Зато в "compile-Time" много чего происходит P.S. Всё-таки я обладаю хотя бы в малой степени телепатическими способностями и догадался по Вашим загадочным фразам, что Вы клоните к тому, что в конечном счёте любая программа это не более чем последовательность машинных команд. Но Вы зря на этом пытаетесь меня поймать, и "в корне перевернуть моё мировоззрение". Я ассемблерщик с более чем 20-ти летним стажем. Поэтому очень хорошо себя представляю во что превращаются всякие там абстракции на уровне машинного кода |
| Автор: KaraKum 3.1.2011, 22:01 | ||
Нет - я такого не хотел сказать и сейчас не говорю. |
| Автор: ДокторТуамОсес 3.1.2011, 22:01 | ||
Дык размер указателя на void тоже известен во время компиляции. |
| Автор: mes 3.1.2011, 22:02 | ||||
а значит семантика не изменилась .. так ?
коммутативность это не обязательное требование, которое жестко привязанно к оператору +.. наоборот реализация оператора + для операции сложения (желательно) должна предоставлять коммутативность.. т.е. не стоит путать причину и следствие Добавлено через 2 минуты и 24 секунды
ну так коммутативность Вы туда сами притянули ? перечитайте свой пост.. а насчет "остальных" свойств семантики , были приведены другие операторы, которые сильно меняют свое поведение |
| Автор: Batbko 3.1.2011, 22:06 | ||||
Не смог удержаться |
| Автор: mes 3.1.2011, 22:06 |
но справа же не переменная, откуда у нее тип ? |
| Автор: ДокторТуамОсес 3.1.2011, 22:06 | ||||||
Всё бы хорошо, только компилятор отказывается это "переваривать": error: invalid conversion from `int' to `void*' |
| Автор: KaraKum 3.1.2011, 22:07 |
| Увы |
| Автор: mes 3.1.2011, 22:08 | ||
во первых typedef не определяет новый тип, а определяет синоним типа во вторых перечитайте свое оригинальное сообщение, от которого и возник вопрос.. |
| Автор: KaraKum 3.1.2011, 22:08 | ||
Компилятор капризный. gcc с радостью бы "схавал". Можно ублажить его, написав (void*). |
| Автор: ДокторТуамОсес 3.1.2011, 22:10 | ||||
"Дык как же тебя понять, если ты ничего не говоришь? |
| Автор: KaraKum 3.1.2011, 22:13 |
| Каждое моё второе сообщение остаётся без внимания. Вот на данный момент какой конкретно вопрос открыт? На всё отвечу! (интим не предлагать) |
| Автор: mes 3.1.2011, 22:14 |
привыкайте к стилю общения ДокторТуамОсес © |
| Автор: ДокторТуамОсес 3.1.2011, 22:15 | ||
Справа стоит стоит то, что будет присваиваться переменной, а как можно присвоить тому, что имеет тип, то, что типа не имеет? R-Value - частный случай переменной. |
| Автор: mes 3.1.2011, 22:16 |
да, частный случай, но не переменной.. |
| Автор: KaraKum 3.1.2011, 22:16 |
Да уж его стиль по-приятнее будет чем некоторых Добавлено через 48 секунд А на зачёркнутые вопросы нужно отвечать? Добавлено через 3 минуты и 57 секунд А вообще, я думаю что автор уже и сам не рад что задал этот вопрос |
| Автор: ДокторТуамОсес 3.1.2011, 22:22 | ||||
Что однако ни сколько мне не помешало сначала сконструировать определение P, а потом, используя P как "кирпичик", сконструировать определение P2 |
| Автор: KaraKum 3.1.2011, 22:24 |
| Кстати говоря, если под "абстрактными данными" понимается одна из парадигм ООП, то этот вопрос полезно рассматривать вне области С++, так как ООП это отдельная тема и ООП можно реализовать даже на языке "С" - примером может послужить библиотека GTK+. |
| Автор: mes 3.1.2011, 22:30 | ||
только, плиз, в своей книжке об этом конструировании не пишете |
| Автор: ДокторТуамОсес 3.1.2011, 22:32 |
Просто вас много - я один. Поэтому я, зачастую, просто не успеваю отвечать на все вопросы всех участников, поэтому отвечаю выборочно, на те вопросы, которые во-первых, поставлены корректно и точно и по сабжу во-вторых, которые мне интересны Сейчас в процессе несколько нитей беседы. Поэтому мне уже трудно все их удерживать в голове |
| Автор: KaraKum 3.1.2011, 22:33 |
| Все нити в студию! |
| Автор: ДокторТуамОсес 3.1.2011, 22:36 | ||||||||||||||
Понятие синонима, псевдонима и т.п. подразумевает наличие некоторого "основного" ИМЕНИ, по отношению к которому другие имена являются синонимами, псевдонимами и т.п. А какое основное имя, к примеру, имеет тип, синоним которого описан ниже как P?
А? Добавлено через 1 минуту и 47 секунд
Как раз в GCC (Используя Dev-C++ 4.9.9.2) я и компилил Добавлено через 3 минуты и 53 секунды
Понятия, являющегося аналогом/"синонимом" понятия "переменная"? Добавлено через 5 минут и 46 секунд
Я фкурсе. Также как и "абстракцию данных" можно реализовать хоть Цэ Добавлено через 9 минут и 33 секунды
Но тогда это не будет "непосредственным" присваиванием. Увы Так что что-то Вы опростоволосились |
| Автор: mes 3.1.2011, 22:46 | ||||
x1 и x2 определены одним типом.. каким сами догадайтесь |
| Автор: ДокторТуамОсес 3.1.2011, 22:47 | ||||
Обязательно напишу. Ибо это отражает моё мировоззрение |
| Автор: KaraKum 3.1.2011, 22:49 |
Так "мы", оказывается, знаем что такое "абстракция данных" О чём тогда разговор?? |
| Автор: ДокторТуамОсес 3.1.2011, 22:50 | ||||||
Нет. Так никуда не годится Я требую, что Вы назвали ИМЯ (т.е. идентификатор) типа, синонимом которого является имя P |
| Автор: KaraKum 3.1.2011, 22:51 |
Пока ещё никому не удавалось выразить мировоззрение посредством С++ |
| Автор: mes 3.1.2011, 22:52 | ||
вот это и ужасно, что будете учить этому других Добавлено через 2 минуты и 54 секунды
прошу что либо взамен |
| Автор: ДокторТуамОсес 3.1.2011, 22:56 | ||||
"Я знаю только то, что ничего не знаю"(с) - один очень много знавший чел Я знаю только вот что:
А есть ещё и 5-я, 6-я, 7-я, ... и т.д. точки зрения. Вот я и хотел здесь выяснить/уточнить/уяснить что же всё-таки за зверь такой "абстрактный тип данных", и что за "абстракция данных" такая, которую он поддерживает |
| Автор: KaraKum 3.1.2011, 22:58 | ||
Ну так как? Выяснилось/уточнилось/уяснилось? |
| Автор: ДокторТуамОсес 3.1.2011, 22:59 | ||||||||||||||||||
А кто-то хотел/пытался это сделать? УЖОС Добавлено через 1 минуту и 15 секунд
Что одним кажется ужасным, другим - прекрасным. И наоборот. Как говорится, "на вкус и цвет - товарищей нет"(с) Добавлено через 3 минуты и 57 секунд
Что-то прояснилось, а что-то ещё больше "затемнилось". Короче я понял, что "я знаю только то, что ничего не знаю"(с) Добавлено через 8 минут и 3 секунды
О'кей. Дай вам "взамен". Есть два описания идентификатора S: 1.
2.
Вопрос чем ПРИНЦИПИАЛЬНО отличаются друг от друга эти 2 идентификатора S? Добавлено через 11 минут и 4 секунды
Или, если смотреть на вопрос ширше и глубже, чем отличается синоним имени типа от имени типа? |
| Автор: ДокторТуамОсес 3.1.2011, 23:23 |
| А (возвращаясь к сабжу) викепедия вот что говорит: Существует несколько способов определения абстрактных типов:
Как способ имеет место быть в C++? |
| Автор: KaraKum 3.1.2011, 23:28 | ||
Вот опять же - я прежде всё описал - где выделяется память, где берутся смещения для данных, а где адреса кода функций-элементов. И исходя из той информации (что я дал) можно сделать вывод (то есть ответить на этот вопрос, имея некие фундаментальные сведения) что существенным для типов данных являются лишь эти физические понятия, а они ИДЕНТИЧНЫ для двух приведённых примеров (я не всматривался в примеры, но, думаю, с контекстом я не ошибся), следовательно и сами типы переменных (данных или чего там ещё...) ИДЕНТИЧНЫ. Уффф, насколько понятно теперь? Вроде как тут телепаты не нужны... |
| Автор: ДокторТуамОсес 3.1.2011, 23:29 | ||||
Оттуда же:
О как !!! Т.е. мы можем работать к примеру, со "списком", даже не подозревая о том, что на уровне реализации, он является, к примеру "деревом". О как! Вот оказывается в чём заключается "абстрактность" "абстрактных типов данных" Добавлено через 7 минут и 11 секунд
Вот Именно к этому я и "клонил". Не важно как "оно" называется, главное как "оно" используется. А используется одинаково. Как говориться, "Хоть горшком назови только в печь не клади"(с) |
| Автор: mes 3.1.2011, 23:38 | ||||
|
| Автор: KaraKum 3.1.2011, 23:39 |
| Значит, победило добро?? |
| Автор: mes 3.1.2011, 23:40 | ||
а чем отличается два одинаковых типа, от двух разных типов Вы понимаете ? |
| Автор: ДокторТуамОсес 3.1.2011, 23:41 | ||||||
| Поэтому в моём пример не важно как называется идентификатор P: именем типа, синонимом типа или как-то ещё. Главное, что я могу использовать ЭТО ИМЯ для конструирования других, более сложных типов, использовать в операциях приведения типа, использовать для описания переменных и т.д. Т.е. могу использовать его как тип. Добавлено через 3 минуты и 35 секунд
Я отвечаю на Ваш вопрос: "Да". Заметьте, я даже не обиделся что Вы ответили своим вопросом на мой вопрос хотя это считается моветоном в беседе Теперь Вы ответите на мой вопрос? Добавлено через 7 минут и 27 секунд
Не совсем. mes ещё на отдельных направлениях сопротивляется. "Но победа будет за нами и враг будет разбит! Наше дело правое и поэтому мы победим!"(с) |
| Автор: mes 3.1.2011, 23:50 | ||||
это был не простой вопрос.. это была подсказка .. в надежде, что попытаетесь найти ответ раньше, чем Вам его подскажут Добавлено через 3 минуты и 55 секунд
не стыкуется Добавлено через 9 минут и 59 секунд после того как ознакомитесь с тем, что уже написано (например у Стауструпа) о typedef и о том как можно определить новый тип.. (если конечно после внимательного прочтения потребуются мои дополнения ) |
| Автор: mes 4.1.2011, 00:08 |
или в стандарте.. могу дать направление : 3.9 и 7.1.3. |
| Автор: KaraKum 4.1.2011, 00:08 |
Это широта и долгота? |
| Автор: mes 4.1.2011, 00:11 |
ого.. я Вам фонариком путь освещаю.. чтоб с дороги не сбились.. а меня оказывается за врага держат.. Добавлено через 1 минуту и 33 секунды оставляю возможность догадаться самим.. |
| Автор: KaraKum 4.1.2011, 00:18 |
ага, и фонариком светить не придётся |
| Автор: mes 4.1.2011, 00:21 |
хм, а освещение "долготы и широты" разве не считается ?! или нужно нужную строчку осветить ? тогда что ж автору будущей книги останется делать ? |
| Автор: ДокторТуамОсес 4.1.2011, 01:01 | ||||||
mes Т.е. Вы уклоняетесь от конкретного ответа на конкретно поставленный вопрос? Нехорошо Я Вам задал конкретный вопрос, а Вы меня отправляете читать Страуструпа? Да читал я его. А чо не в Гуголь послали? Боитесь "санкций" модераторов? Очень хорошую позицию Вы заняли: чтобы "сохранить хорошую мину при плохой игре"(с), Вы, вместо того, чтобы признаться, что не знаете ответа (или то, что боитесь, что Ваш ответ покажет Вашу некомпетентность), посылаете меня в гуголь читать Страуструпа. Вы молодец. Заметьте, что я ни кого не посылаю ... отправляю в Гуголь "читать Страуструпа" даже когда мне задают глупые вопросы вроде "какой тип имеет переменная s в определении auto s = "stroka" ; " и др. подобных. |
| Автор: mes 4.1.2011, 01:34 | ||||||||||
Нехорошо будущим авторам книг, переворачивающих не помню что, выпрашивать ответы на форуме, когда конкретно показали, где написан ответ.. Иль Вы надеетесь что я буду тут пару страниц пересказывать ? я подсказками пробовал, не помагает.. да и по краткому не стоит, для будущей книги нужно внимательнее ознакомиться с проблемой... если б Вам это просто надо было, для себя, я б мог конечно скопировать наиболее важные цитаты.. но Вы ж хотите принести добро "всему человечеству".. поэтому лишнее звено пересказа лучше убрать
неа не боюсь.. просто в гугле Вы можете не то найти, да и искать долго.. а тут просто найти нужную страницу и внимательно почитать..
Вы не правильно поняли мою позицию.. я может хочу показать, что искать ответ самому намного интереснее и полезнее, чем получать разжеванное.. тем более , что и вопрос не сложный ..
Да я не настолько компетентен, чтоб заменить Страуструпа со стандартом.. поэтому предпочитаю не пересказывать, а подсказать , где можно почитать в оригинале
Хм.. вопрос, как вы называете, был задан не для того, чтоб спросить у Вас ответ, а для того, чтоб на толкнуть Вас на мысль.. Кстати посмотрите через мой профиль как часто я задаю вопросы.. Это поможет сделать выводы , о том как часто я ищу ответы самостоятельно.. Добавлено через 1 минуту и 10 секунд В общем вместо того, чтоб радоваться мелким подсказкам, которые Вам дают, Вы пытаетесь спровоцировать, думая что я поведусь на это.. не дождетесь |
| Автор: KaraKum 4.1.2011, 01:37 | ||
А может вопросы задаются через другой профиль? Например через ДокторТуамОсес |
| Автор: ДокторТуамОсес 4.1.2011, 01:40 | ||||||
| mes!!! Если Вы уже забыли как звучал вопрос, я Вам напомню: Есть два описания идентификатора S: 1.
2.
Вопрос чем ПРИНЦИПИАЛЬНО отличаются друг от друга эти 2 идентификатора S? KaraKum дал конкретный ответ:
Теперь хотелось бы услышать Ваше ЛИЧНОЕ мнение. P.S. Просьба не посылать меня в гуголь, к Страуструпу или куда-либо ещё и не отвечать вопросом на вопрос. Так как, во-первых, в соответствии с форумным этикетом это считается хамством. А во-вторых, у меня есть понимание того, что такое typedef, "typedef-определения vs # макроопределения vs", анонимные типы, "псевдонимы типов vs реальные типы" и т.п. Т.к. в процессе написания своей книги по C++ я проштудировал гигабайты инфы по этим вопросам. А в третьих, я спрашиваю не потому что я не знаю ответа, а потому что хочу узнать, совпадают ли Ваши знания с моими. |
| Автор: mes 4.1.2011, 01:49 |
Логино.. я не подумал о таком варианте.. Ну это вряд ли |
| Автор: ДокторТуамОсес 4.1.2011, 01:49 | ||||||
Если абстрагироваться (в соответствии с сабжем темы то Ваши уклонение дать ответ своими словами или хотя бы скопипастить его откуда-либо говорит о том, что Вы
|
| Автор: KaraKum 4.1.2011, 01:55 | ||
Эх, а была бы такаааая классная развязка... |
| Автор: mes 4.1.2011, 01:57 | ||||||||
Если посылается в никуда.. Вам же были указаны "долгота и широта"
по высказываниям , прозвучавшим в этой теме, оно (понимание) не совсем верное.. особенно после того как настаивали на том, что тайпдеф конструирует типы..
Наверно гнались за кол-вом, а не качеством ..
Если только для этого, то опять таки, ориентируясь на сказанное в этой теме, могут Вам сразу сказать ответ : не совпадают К тому же если интересует именно совпадение, почему я должен писать ответ, а не Вы.. а я просто оценю совпадения.. |
| Автор: ДокторТуамОсес 4.1.2011, 01:59 | ||||
|
| Автор: mes 4.1.2011, 02:00 | ||||
У Вас какая цель, найти ответ и понимание или признать меня некомпетентным ? если второе, я могу сделать Вам подарок.. считайте меня некомпетентным.. если все ж нужно понимание, я до сих пор, не смотря на Ваши провакационные попытки готов помочь.. но с условием , если я буду видеть в вас заинтересованность найти истину.. Добавлено через 2 минуты и 16 секунд
В одном определение нового типа S, в другом определение псевдонима S для определенного безымянного типа.. |
| Автор: ДокторТуамОсес 4.1.2011, 02:03 | ||
Ну это ещё не показатель Вашей компетентности. Может Вы не задаёте много вопросов потому что они у Вас просто не возникают. А "не возникают", потому что Вы весьма поверхностно изучаете предмет изучения (простите за тавтологию) Как Вам такое объяснение? |
| Автор: mes 4.1.2011, 02:05 | ||
мне мина не нужна.. я лишь свечу фонариком, чтоб Вы не заблудились.. тянуть Вас за руку у меня пока желания нет.. так как не вижу исходящей от Вас заинтересованности.. |
| Автор: ДокторТуамОсес 4.1.2011, 02:06 | ||
Да я уж понял. Что не дождусь от Вас конкретного развёрнутого ответа на конкретный вопрос. Боитесь Вы что вскроется Ваша некомпетентность. Ибо даже чтобы скопипастить откуда-то ответ, нужно ещё знать откуда и что именно копипастить. А Вы, видимо, и этого не знаете наверняка. |
| Автор: mes 4.1.2011, 02:08 | ||
Я приводил это не в доказательство компетентности.. жаль (хотя и не сильно) что не поняли |
| Автор: ДокторТуамОсес 4.1.2011, 02:10 | ||
А Вы не обратили внимание, что "сконструировали тип" было написано в кавычках? Т.е. мы создали описание <лексемы> P используя как "кирпичики" другие <лексемы> |
| Автор: mes 4.1.2011, 02:11 | ||||||
Развернутого не дождетесь.. пока.. В меру полный был приведен выше..
если б глянули по "широту и долготе" то знали бы наверняка, знаю откуда скопипастить или нет Добавлено @ 02:13
а Вы не заметили, что я не один раз уточнял этот вопрос ?.. однако уточнения от Вас не последовало.. так что чего Вы там за кавычками себе представляете, я не знаю |
| Автор: ДокторТуамОсес 4.1.2011, 02:15 | ||||
У меня в наличии есть только ISO/IEC 14882 от 2003 года. Там таких "координат" нет Короче давайте прекращать играть в редиску и отвечайте либо своими словами, либо скопипастите сюда чужие слова, в которых, как Вы считаете, содержится ответ на мой вопрос Добавлено через 2 минуты и 3 секунды
Потому что вопрос то мой, а не Ваш. Почему я должен писать ответ на свой же собственный вопрос? |
| Автор: mes 4.1.2011, 02:20 | ||||||
уточнение координат :
|
| Автор: ДокторТуамОсес 4.1.2011, 02:24 | ||||||||||||||
Ещё больше уточню вопрос (чтобы Вам было проще, раз уж Вы так боитесь попасть в просак) Изменится ли в программе: 1) Внутреннее представление в памяти переменных типа S 2) Множество допустимых операций, для переменных типа S 3) Множество допустимых значений переменных типа S если вместо 1-го определения идентификатора S я буду использовать 2-е? В программе именно на С++, а не на С И считаем, что в программе больше нет других определений S Добавлено через 4 минуты и 39 секунд
Я спрашивал про ПРИНЦИПИАЛЬНЫЕ отличия, влияющих на:
Добавлено через 7 минут и 53 секунды
У меня цель КРИТИЧЕСКИ сравнить своё понимание с Вашим и, возможно, понять что-то, что я не понимал, узнать что-то, что я не знал. И возможно подкорректировать своё понимание, если я увижу Ваши ответы достаточно обоснованными и убедительными |
| Автор: mes 4.1.2011, 02:37 | ||||
изменится.. но ваше уточняющие вопросы не корректны..
чтоб понять , вот что Вы написали :
|
| Автор: ДокторТуамОсес 4.1.2011, 02:39 | ||||
Да понял я прекрасно. Вы хотели тем, что у Вас в профиле мало тем, которые Вы создали с целью найти ответ на какой-либо вопрос, показать, что Вы ответы на возникающие у Вас вопросы находите самостоятельно. Не прибегая к помощи форума. На что я предположил свою версию: что у Вас просто мало возникает вопросов в силу поверхностности изучения Вами С++. Т.е. Вы усваиваете то, что лежит на поверхности, а глубже не копаете. Поэтому и вопросов мало. Вот Вы усвоили, к примеру, что есть псевдонимы типов, а есть определения новых типов. И всё. Вам этой инфы достаточно и глубже копать Вы не стали. А я не такой. Я всегда люблю залезть в дебри/глубины и докапываться до самой сути. Соответственно у меня и вопросов больше |
| Автор: mes 4.1.2011, 02:40 | ||||||||
пока я вижу только Вашу выгоду... заинтересуйте меня, чтоб мне охота было напрягать мозги.. Добавлено @ 02:42
вот ! поэтому я и показал тропинку в дебрях.. чтоб сразу вышли к разыскиваемому местечку, и уже копали до полного просвещения Добавлено @ 02:45
если о способе нахождения ответов, я предложил Вам судить по кол-ву вопросов, то о глубине моих знаний ( хотя я и сам признаюсь , что не глубоких) можно судить по ответам.. (в других темах) Добавлено @ 02:47
я так понимаю, что Вы готовы дать обещание разобраться, а не просто почитать эту тему, если я приведу Вам пару примеров отличий для вышеуказанного примера ? и в следующий раз вместо спора стараться прибегать к самостоятельному ознакомлению, особенно в случаях когда дают "координаты".. |
| Автор: ДокторТуамОсес 4.1.2011, 02:59 | ||||||
Вы даже привести подходящую (для нашего случая) аллегорию не можете. Ну что ж. Я Вам помогу. Опишу подходящую для моего вопроса аллегорию. В гараже может находится только один из 2-х типов автомобилей: Тип 1. автомобиль шкода Тип 2. абсолютно точно такой же автомобиль, имя которого не известно, но который все называют шкодой Изменится ли в гараже 1.Масса у автомобилей 2.Способ управления автомобилями 3.Число передач, которое имеется у каждого автомобиля если все автомобили 1-го типа заменить на автомобили 2-го типа |
| Автор: mes 4.1.2011, 03:06 | ||
|
| Автор: ДокторТуамОсес 4.1.2011, 03:08 | ||||
А если я сам Вам приведу более 2-х отличий (правда не влияющих на те 3 пункта, что я указал) для указанного мной примера? Вы обещаете впредь не считать, априори, своего собеседника глупей себя и будете отвечать нормально без отсылания к Страуструпу, стандарту и т.п.? |
| Автор: mes 4.1.2011, 03:08 |
так в том то и дело, что не абсолютно точно такой же.. а оригинал заменить на подделку.. скажу так.. есть способы и не один чтоб выявить кодом, оригинал ли тип или псевдоним, даже не подглядывая в хидер.. |
| Автор: ДокторТуамОсес 4.1.2011, 03:11 | ||||
Не сойдёт. Ибо если трактовать мой вопрос, как Вы описали в своей аллегории, то действительно шиза какая-то получается. |
| Автор: mes 4.1.2011, 03:11 | ||
прежде всего я никогда не считаю собеседника глупей себя.. Но стиль общения я выбираю исходя из его поведения.. можно подумать я тут задал вопрос и ищу ответа Добавлено @ 03:12 во-во.. правильно.. это я и почувствовал Добавлено @ 03:16 ДокторТуамОсес, в конце концов с целью то определитесь.. спорить я устал.. если есть корректные вопросы, могу постараться помочь найти на них ответы.. если нет, и будут продолжаться провокации, пойду заниматься своими делами, а то я и так потратил на Вас уйму времени.. надеялся что не зря.. |
| Автор: ДокторТуамОсес 4.1.2011, 03:16 | ||
Есть. И они мне известны. Но мой вопрос был не в чём отличия псевдонимов, введённых с помощью typedef, от "реальных" типов ВООБЩЕ И В ЦЕЛОМ, а в том, проявляются ли эти различия, в конкретных, указанные мной, 3-х пунктах Добавлено через 2 минуты и 13 секунд А именно, на "физических" свойствах, описанных с помощью этих типов, переменных |
| Автор: mes 4.1.2011, 03:22 | ||
с такой поправкой хоть ответить можно.. еще б слово переменная заменили бы на то, на которое я Вам вначале намекал, и до которого Вы почти дошли, было б еще лучше В остальном ответ : нет |
| Автор: ДокторТуамОсес 4.1.2011, 03:27 | ||||
Ладно. "Замнём для ясности"(с) Я сам уже заколебался с Вами. И спать хочу. Просто меня "напрягает" Ваш стиль общения. Типа "а я вот кое-что знаю, но не скажу" Вы либо вообще ничего не пишите, либо пишите чётко и ясно "что? когда? с кем? как? зачем? и почему?", а не ходите со своими намёками "вокруг да около". Может статься что Ваше "кое-что" мне уже известно или не относится к моему случаю, и Вы только время у меня зря отняли своими "загадками" и "хождением вокруг да около". Всё. Я спать. Всем спокойной ночи Добавлено через 7 минут и 4 секунды Понятно. Долго же я у Вас вымучивал этот ответ. Который не принёс мне ничего нового, так как он совпадает с моим. Поэтому получается, что я впустую потратил несколько часов своего времени. Если бы Вы сразу не говорили загадками, а отвечали чётко, ясно и по делу - этого можно было избежать. Всё.. Спать. Спать. Спать. Добавлено через 10 минут и 7 секунд
Я "как в воду смотрел"(с) так и оказалось, блин. И я просто с Вами зря потерял время |
| Автор: mes 4.1.2011, 03:44 | ||||||
Взаимно.. я ж не скрываю.. а прямо говорю где искать.. Вместо Вас мне этого делать не хочется..
разжевывать я не собираюсь, я это уже ни раз повторял.. а направить иль посветить фонариком - пожалуйста
может и известно, но высказано неверно, на что я и обращал Ваше внимание...
Не стоит переводить стрелки.. Загадки Вы сами провоцировали... Я Вам сказал что typedef не определяет новый тип, а задает псевдоним.. подробности по координатам.. Этого вполне достаточно чтоб Вам определить просвящены ли Вы в этом вопросе или нет.. Однако ж Вы все пытались вытянуть из меня цитату, адрес которой я Вам и так назвал.. Копировать ради того, что Вам лень посмотреть - не в моем вкусе.. Взаимно |
| Автор: mes 4.1.2011, 09:43 |
вопросы которые Вы задали, сравнивают не два "случая" идентификаторов S, a структуру S и безымянную структуру... во втором случае идентификатор S не задействован.. и как следствие эти вопросы принципиально не могут выявить принципиальные различия.. |
| Автор: mes 5.1.2011, 00:28 |
kemiisto, прочитал.. не согласен.. точнее не совсем согласен |
| Автор: KaraKum 5.1.2011, 00:36 |
В корне? |
| Автор: kemiisto 6.1.2011, 12:55 |
А с чем не согласен то? |
| Автор: mes 6.1.2011, 15:15 |
на сколько я знаю : 1. ADS, является не предшествием ADT, как это показано а наоборот ADS может реализоваться посредством ADT.. т.е. во всех трех примерах идет ADS, и в последних двух ADS как ADT... 2. ADT не предоставляет возможность (по крайней мере старается выполнить это условие) что во втором примере не соблюдается.. решается добавлением (комментария) private, либо переносом определения структуры в cpp файл.. P.S. второй пункт хоть и мелочь, но, имхо, сильно сказывается на понимание сути |
| Автор: baldina 6.1.2011, 17:06 | ||
| имхо тема плавно перехолит в религиозные войны. 2ТС: читать вам надо больше, а не писать. 2mes & kemiisto: the type is the more common concept than structure, so mes is right Добавлено через 11 минут и 29 секунд Абстракция:
Отчасти. Основная цель - отбросить лишнее, оставив лишь необходимое для анализа/взаимодействия. Сокрытие деталей лишь один из элементов. Обобщение концепций см. например в "В.Ш.Кауфман «Языки программирования: концепция и принципы»" |
| Автор: mes 6.1.2011, 17:31 | ||
другими словами : выявить суть |
| Автор: kemiisto 6.1.2011, 17:38 | ||||||
Где там хотя бы намёк на какую-то приемственность?
Ничерта не понял. Второй пункт - вообще-вообще не понял. Добавлено через 2 минуты и 8 секунд
Это вообще к чему? Я где-то заявлял обратное? Что такое structure? |
| Автор: mes 6.1.2011, 17:43 |
как я понял, у Вас первый пример демонстриует ADS, a два других ADT.. a на мой взгляд все три - ADS.. У Вас поставляется (предоставляется) структура stack для клиента.. В зависимости от языковых возможностей, это можно решить как минимум двумя способами : 1. документативно, грубо говоря поставить коментарий, что трогать нельзя.. 2. вынести за пределы доступного клиенту, грубо говоря поместить в .cpp файл или пометить как приват.. |
| Автор: kemiisto 6.1.2011, 17:46 | ||
Почему же? В последних двух вариантах есть определение нового пользовательского типа данных. Появляется возможность объявлять и использовать переменные этого типа. |
| Автор: mes 6.1.2011, 17:48 | ||
от того, что появился ADT, ADS никуда не делась.. т.е. ADS может быть реализована : 1. без участия типа данных 2. как тип данных 3. как совокупность типов.. мне надо уйти-скоро вернусь |
| Автор: kemiisto 6.1.2011, 17:58 | ||||||
Если рассматривать только серверный модуль, то ещё как делась. Исчезла бесследно.
Так. Во-первых, у меня написано следующее:
И далее по тексту я поясняю:
В клиентском коде ADS никуда не делись и обратного я не утверждал. Напротив. А вот в серверном модуле ... |
| Автор: mes 6.1.2011, 18:34 | ||
помоему мы одним и тем же термином называем разные вещи.. надо бы сформулировать.. сейчас подумаю как.. Добавлено @ 18:38 вот попробовал сформулировать свое представление на примере : ADS (std::)list и взаимодействие с ним, реализуется с помощью АDT list и АDT iterator.. |
| Автор: ДокторТуамОсес 6.1.2011, 20:09 | ||||
Не совсем так. К примеру, суть автомобиля - это сгорающий бензин, заставляющий двигаться поршень. А мне кроме того, где находится руль и на какие педали жать (чтобы тормозить/ехать) ничего знать не требуется. Так и в программировании. Суть некоторой сущности может быть одной, а абстракция это сущности, с которой работает юзверь - совсем другой Добавлено через 2 минуты и 7 секунд А вообще, господа, Вы уже в дебри/частности полезли. И ушли в сторону от сабжа темы. |
| Автор: mes 6.1.2011, 20:12 | ||||||||||
у автомобиля это не суть.. суть в авто (сам) мобиль (движется) Добавлено @ 20:14
ну так оно и есть.. каждому аспекту свое виденье.. Добавлено @ 20:15
абстракция посредством интерфейса и выражает суть взгляда на сущность.. а не суть сущности Добавлено через 4 минуты и 30 секунд
хоть телегу с рулем подавай.. Добавлено через 6 минут и 38 секунд
даже если, то не так сильно, как позволил себе отойти тс а по сути мы наоборот движемся к цели .. |
| Автор: ДокторТуамОсес 6.1.2011, 21:05 |
"Абстракция данных" (а есть ещё абстракция управления) - парадигма/идиома программирования, придуманная "для «обуздания» сложности очень больших систем." которая подразумевает в частности:
Иногда говоря об абстракции данных употребляют выражение "принцип чёрного ящика" Вообщем, пока как-то так |
| Автор: mes 6.1.2011, 21:15 | ||
ну и ? где увидели противоречие ?
тут тоже нужно понимать что имеется в виду.. главное не то, что мы не знаем что спрятано внутри, а то что все_так_удобно, что нам не требуется заглядывать внутрь.. |
| Автор: ДокторТуамОсес 6.1.2011, 21:30 | ||||
Вот это уже другое дело. Вы молодец, что исправили ошибку в своём определении (правда с моей помощью.... ну да ладно). |
| Автор: mes 6.1.2011, 21:42 | ||||||||
ошибку в определении ? вернемся к контексту моего "определения"
т.е. выявить суть необходимую для анализа/взаимодействия.. а то что при взаимодействие учитывается именно точка зрения взаимодействующего, а не дяди из с соседнего подъезда и так следует.. ну а как же без этого.. если б с полуслова бы все поняли, не зачем было устранять ошибку трактовки.. |
| Автор: 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 |
А модераторам нравится ! А тема хорошая в самом сабже ! Человек может абстрагироваться от реальности, машина нет ! Она тупая, может выполнять действия по некоторому алгоритму, алгоритм придумал КТО ? ЧЕЛОВЕК ! РАЗУМНЫЙ ! вместе получается ЧЕЛОВЕК РАЗУМНЫЙ ! А зачем это надо ?!! ЧЕЛОВЕК НЕ МАШИНА, ДУМАЕТ ОБРАЗАМИ И АБСТРАКЦИЯМИ, быстрее решает сложные проблемы. НО, машина думает БЫСТРЕЕ ! ИТОГ УЖЕ ДАВНО НАСТУПИЛА ИНФОРМАЦИОННАЯ РЕВОЛЮЦИЯ ! p.s. Иногда мне кажется, что компьютер живой. |
| Автор: KaraKum 18.1.2011, 14:51 |
А вот это откуда такое умозаключение? |
| Автор: mes 18.1.2011, 16:53 | ||||
да судя по всему Modul под тролль-бота закосил.. чтоб поставить точку в этой теме.. однако точки не получилось... всего лишь запятая |
| Автор: KaraKum 19.1.2011, 15:20 |
| И чьё же будет последнее слово-то... |
| Автор: kemiisto 19.1.2011, 16:33 |
| Последнее слово. |
| Автор: mes 19.1.2011, 22:28 |
Если так пойдет дальше, то последнее будет за модератором, закрывшим эту тему |
| Автор: ДокторТуамОсес 5.2.2011, 00:48 |
| На днях перечитывал Страуса. И наткнулся на мысль, что отец русской демократии C++ под абстрактным типом понимает такой тип, который можно юзать через интерфейс. Но это ещё не всё. Главное! Под "абстрактностью" типа он понимает такую фичу: что можно изменить реализацию типа в другом файле и при этом нам не придётся перекомпилировать те файлы, в которых этот тип юзается. Короче под абстрактными типами он понимает абстрактные классы (ну те, в которых чисто виртуальные функции-члены). Т.е. когда есть абсолютное разделение (и независимость) интерфейса класса от его реализация. И "абсолютность" абстрактности (по его мнению) заключена в том, что можно изменить реализацию типа и при этом будет не нужно не то, что править файлы, юзающие этот тип, но даже и перекомпилировать их. Достаточно будет только откомпилить заново только файл, содержащий описание реализации типа |
| Автор: ДокторТуамОсес 5.2.2011, 18:29 |
| Чо молчим? Все ушли на фронт RSDN что ли? |
| Автор: mes 5.2.2011, 21:08 |
наверное никому неохота начинать вторую волну и снова повторяться... разве что уточню : абстрактность и абстрактный тип данных это не одно и то же |
| Автор: миг 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 | ||
Вы похоже добрались до 9 ой главы, которая называется "Исходные файлы и программы". Поздравляю. Скоро начнете читать про классы. |
| Автор: baldina 7.2.2011, 11:05 |
| ДокторТуамОсес, в русском переводе читал? ню-ню... |
| Автор: ДокторТуамОсес 8.2.2011, 11:48 |
Дык абстрактный тип данных как раз и призван для поддержки этой пресловутой "абстрактности". Разве не так? Добавлено через 9 минут и 49 секунд Почему же "повторяться"? А Вы не допускаете мысль, что за две недели у "старых" участников темы могли появиться новые мысли? Или не допускаете мысль, что тему могут посетить новые участники, которые ещё не высказывались? |
| Автор: mes 8.2.2011, 12:02 | ||
грубо говоря это один из шагов на пути к абстрактности.. |
| Автор: ДокторТуамОсес 8.2.2011, 12:02 | ||||
Вы плохо понимаете русский язык? И не знаете значение слова "перечитывал"? Тогда я Вам поясню. Слово "перечитывал" говорит о том, что человек прочитал книгу уже столько раз, что замусолил её уже до дыр. |
| Автор: mes 8.2.2011, 12:04 | ||
допускаю, но молчание подозрительно и вижу только две аргументации такому поведению : 1. все важное, что хотелось сказать, уже сказали.. 2. неохота перечитывать 14 страниц, чтоб узнать о чем уже говорили.. |
| Автор: ДокторТуамОсес 8.2.2011, 12:06 | ||
Научились гуглем пользоваться? Поздравляю. Теперь идите и учитесь пользоваться нигмой, экактусом и аск.нетом |
| Автор: mes 8.2.2011, 12:08 | ||
замусоливаность книги не говорит о том, сколько полезного вынес человек из нее некоторые, например, определяют степень своего обучения по просиженным штанам.. что конечно в большей степени определяет, чем занимался человек, во время учебы |
| Автор: ДокторТуамОсес 8.2.2011, 12:10 | ||||
Ну лень перечитывать всего-то 14 страниц (не 500 же) тому, кому тема не очень-то и интересна. А ответы от товарищей, которые никогда не интересовались данной темой и которым в лом потратить 10 минут (чтобы прочитать то, что уже написано) мне не очень интересны Добавлено @ 12:13 Что-то "не густо" важного-то тогда. В основном оффтоп и флуд |
| Автор: mes 8.2.2011, 12:16 | ||||
если б тема действительно была посвещена обсуждению поднятой проблемы, то я согласился бы с высказыванием.. однако ж.. в теме больше мусора, чем полезного материала.. при том начавшийся с первой страницы.. так что сомневаюсь, что найдется много желающих Добавлено через 2 минуты и 23 секунды
Во сами так считаете.. и чего ж тогда предлагаете перечитывать это остальным |
| Автор: ДокторТуамОсес 8.2.2011, 12:23 | ||||
Ну я не виноват, что народ оффтопит и флудит. Я им рот закрыть не могу (я не модератор). Но полезная информация в теме тоже есть. А оффтоп и флуд можно просто пропускать. Поэтому 14 страниц темы можно прочитать ещё быстрее. Поэтому не вижу причин не читать то, что написано в этой теме ранее прежде чем отвечать |
| Автор: миг 8.2.2011, 14:23 | ||||
это тактичное оскорбление не вписывается в тему разговора.. я заметил когда нечего возразить начинают, говорить идите туда-то и поучитесь тому-то..))) вот скажите вам было бы легче осмыслить если бы я скопировал текст с первоисточника и разместил его на форуме? там с вики есть ссылка на Бьерна Страуструпа.. Если вам до сих пор не понятно, что такое абстракция данных, то там все доходчиво написано.. Кстати, никогда не понимал людей у которых дома на столе лежит книжка к примеру: по геометрии, а они на форуме спрашивают про теорему Пифагора. Да еще потом активно спорят действительно это та теорема или нет? и не читайте больше Страуса.. читайте Страуструпа.. |
| Автор: ДокторТуамОсес 8.2.2011, 15:17 | ||||||
Это не «оскорбление», а тактичный намёк, что это хамство - постить ссылку, которую выдаёт гуголь в первой же строке результатов поиска. <агрессивный смайлик>. Но Вы видно не поняли. P.S. Открою Вам секрет, что то, что выдаёт гуголь в первых же строках не всегда является «истиной в последней инстанции»(с) и в википедии часто пишут полную галиматью |
| Автор: mes 8.2.2011, 15:44 | ||
| ДокторТуамОсес, позвольте уточнить, в чем состоит текущий вопрос, из за чего тема была открыта на продолжение? Добавлено через 1 минуту и 32 секунды
|
| Автор: миг 8.2.2011, 15:51 | ||||||||
Я в яндексе нашел.. Ну, тогда приведите оттуда цитату с которой вы не согласны и скажите, что это галиматья.. а еще лучше приведи цитату из своей настольной книжки и начни спорить сам с собой галиматья это или нет)) P.S. А задавать вопрос на который может ответить гугль на первой странице поиска это не хамство? |
| Автор: likenix 8.2.2011, 18:40 | ||
Я хорошо понял Вашу не сложную мысль. Просто Абстрактные классы всегда пишутся в отдельном файлике, и обычно для всех классов создается отдельный заголовочный файлик и файлик реализации который может быть и не один, чтобы тем самым меняя реализацию класса не перекомпилировать весь код куда был включен заголовочный файл этого класаа. А абстрактность это не тоже самое что отделение интерфейса от реализации. Я это все к тому что абстракция непосредственно к языку и к файлам отношения не имеет. Абстракция имеет значение непосредственно при моделировании. Вам пора к санитарам если честно они Вас ждут. ДокторТуамОсес. вообще надо иметь талант читать книгу до дыр и так ни чего не понять. |
| Автор: ДокторТуамОсес 8.2.2011, 19:28 | ||||||
На это раз не буду обращаться к модераторам. Но делаю Вам последнее китайское предупреждение.
А поподробней можно?
Но мы то говорим здесь об "абстракции" именно применительно к программированию, а не "вообще" А подробней (и желательно с конкретными примерами) можно? Добавлено через 2 минуты и 8 секунд
Намекаете, что у Вас есть такой талант? |
| Автор: ДокторТуамОсес 8.2.2011, 19:46 |
| У меня тут неожиданно появился такой вот вопрос: "Без поддержки абстракции (того или иного вида, "под тем или иным соусом"(с)) сейчас не возможно представить ни один используемый в промышленных масштабах язык программирования. А что делать? Такова уж особенность человеческого мозга: когда задача слишком сложна - приходится дробить задачу на части, абстрагироваться от не существенных деталей и прочее. Можно и не использовать абстракцию и писать в машинных кодах. Но тогда написание, к примеру, Windows XP заняло бы миллионы лет. .... А вот интересно: а не придумали ли в наше время чё-нить покруче для "борьбы" со сложностью программных систем? Что придёт на смену методу (или в помощь ему) абстрагирования. Хотя бы какие-то идеи есть? Что кроме дальнейшего повышения уровня абстракции поможет нам справиться со всё возрастающей сложностью разрабатываемых программ?" Добавлено @ 19:52 И вообще за последние лет 30 в программировании было изобретено хоть что-нибудь ПРИНЦИПИАЛЬНО новое? Или просто "дорабатывалось напильником" и "доводилось до ума" то, что придумали ещё в 50-е ... 60-е годы (так или иначе связаное с "абстракцией") ИМХО, нет. А как вы, дамы и господа, считаете Добавлено @ 19:59 Как мне видится выход - это создание автоматических писунов - самообучающиеся программы с искусственным интеллектом , самостоятельно пишущие программы по ТЗ |
| Автор: likenix 8.2.2011, 20:22 | ||||||||
За подробностями к любому языку моделирования в частности UML. Вот там это фундаментальное понятие. Вот цитата из книги Г Буч, Д Рамбо, А Джекобсон Язык UML Руководство пользователя. Если Вы вдруг не вкурсе то эта троица и стала авторами языка UML.
У вас в корне не правильное понимание абстракции. Мы выделяем абстракции не на этапе программирования, а не этапе проектирования. И в каждой модели свои абстракции, в зависимости от конкретного видения системы. Это я опять же к тому что глупо выделять абстракции на этапе программрования, скажите для чего они., особенно про те которые вы как бы поняли у Страуструпа, которые только реализуются разделением на файл заголовочный и файл реализации, за вас это прекрасно сделает система документирования например doxygen или подобная ей. Если только вы вдруг программируете по уже по какой согласованной модели. И тут бац Вас осинило и Вам пришло в голову надо создать новую австракцию и добавить ее в конкретную модель, но это только издержки проектирования. Хотя может вы всегда так программируете, и модели у Вас появлябтся во время написания кода. Абстракция в языке C++ может быть реализована и не одним классом, а 10 и более классов.
Я в свое время читал книгу Страуструпа и распознавал ее(в том смысле что из печатного издания в перенес в формат doc) делал там свои пометки дополнял другими изданиями. Сравнивал мнения и тд и тп. |
| Автор: ДокторТуамОсес 8.2.2011, 21:23 | ||
Тогда, быть может, у Вас есть что-то подобное 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 | ||
Ничего. Ибо абстрагирование есть свойство человеческого мозга. |