Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 158 159 [160] 161 162 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#2386
,
|
|
|
|
Цитата Adil @ Реализовал интерфейс IB::f()? Да автор IA про него и не слышал и во сне не видел, и понятия не имеет, что должен делать IB::f(). ну и что? ему и не нужно знать, если он его не использует, но факт реализации от этого не исчезает. Добавлено Цитата Adil @ Боюсь, что код void do_something_with_IB(A a) будет делать что-то не то, что хотелось бы. этого (делать не то, что хотелось бы) можно легко достичь и без интерфейсов. Добавлено Цитата MyNameIsIgor @ Ну и на кой мужской половой член он мне нужен то тогда? Я не могу писать код, опираясь на него, потому что не могу знать результат работы этого кода. Так что можете этот список методов себе оставить - он совершенно бесполезен. вах, как же ты тогда терпишь инкапсуляцию? ведь ты не знаешь, что делает тот или иной метод, как реализован тот или иной класс |
|
Сообщ.
#2387
,
|
|
|
|
Цитата korvin @ Да, но вы то предлагаете, чтобы этого достигал не программист, а компилятор, выбирая shift одного интерфейса при множественном наследовании. этого (делать не то, что хотелось бы) можно легко достичь и без интерфейсов. Добавлено Цитата korvin @ Не передёргивай. Мы не говорим о том, что нужно знать реализацию. Нужно знать результат. Вы же говорите, что результат одинаков, если сигнатуры совпадают. вах, как же ты тогда терпишь инкапсуляцию? ведь ты не знаешь, что делает тот или иной метод, как реализован тот или иной класс |
|
Сообщ.
#2388
,
|
|
|
|
Цитата MyNameIsIgor @ ни разу. Не вижу в какой момент вам бы требовалась связная работа именно с файлом. Так что даю вводную: нужна функция, принимающая строку и записывающая её в файл начиная с десятой позиции. Вперде, korvin! Вы уж определитесь, что Вам надо, работа с конкретным типом или интерфейсом? но впрочем вот: ![]() ![]() interface PositionalFile { File void Seek (position : int) } func (file : File) Seek (position : int) { // ... } func (file : PositionalFile) writeStr (pos : int, str : string) { file.Open() file.Seek(pos) file.Write(str) file.Close() } |
|
Сообщ.
#2389
,
|
|
|
|
Цитата korvin @ Вы уж определитесь, что Вам надо, работа с конкретным типом или интерфейсом? но впрочем вот: Ну, и ничего страшного, что присутствует предположении о том, что после Open позиция находится в начале? Я как об этом узнал из объявления интерфейса то? |
|
Сообщ.
#2390
,
|
|
|
|
Цитата MyNameIsIgor @ "Не знают" и "осознанно не используют" - вещи разные. Уж неужели мне придётся рассказывать о известных сервисах, положивших с прибором на реаляционнуы модель, потому что не подходит к практике? зачем переводить стрелки? но как будто эти сервисы взяли и отбалды спроектировали БД, без проектирования? |
|
Сообщ.
#2391
,
|
|
|
|
Цитата korvin @ зачем переводить стрелки? А зачем меня сравнивать с кем-то там вам известным, чья деятельность вас не устраивает. Цитата korvin @ но как будто эти сервисы взяли и отбалды спроектировали БД, без проектирования? Наверняка не от балды. Дело то в том, что по ходу была выкинута самая распространённая модель БД. |
|
Сообщ.
#2392
,
|
|
|
|
Цитата Adil @ Не передёргивай. Мы не говорим о том, что нужно знать реализацию. Нужно знать результат. окей. есть класс: ![]() ![]() class Stream { void Open () void Close () any Read () void Write () } что ты можешь сказать о результате выполнения каждого метода? Цитата Adil @ Вы же говорите, что результат одинаков, если сигнатуры совпадают. ![]() нет, не говорю Добавлено Цитата MyNameIsIgor @ А зачем меня сравнивать с кем-то там вам известным, чья деятельность вас не устраивает. я тебя не сравнивал вообще-то, приводил пример. Добавлено Цитата MyNameIsIgor @ Наверняка не от балды. Дело то в том, что по ходу была выкинута самая распространённая модель БД. ну и? люди посидели, _подумали_, возможно провели исследования, и решили, что реляционная модель не подходит к их задачам, взяли другую или спроектировали свою, это что, значит, что реляционную модель вообще теперь нигде нельзя использовать? или, что подходящую модели они выбирали/проектировали наобум? |
|
Сообщ.
#2393
,
|
|
|
|
Цитата korvin @ что ты можешь сказать о результате выполнения каждого метода? Прочитав документацию. Я это множество раз повторял. При существующих языках программирования практически всегда есть семантика, не отражённая в коде. Да, есть тенденции её уменьшения, стремление сделать код самодокументируемым. Не надо мне пояснять преимущества этого тренда. Только реально код ещё долго будет неотделим от документации к нему - это надо принять. |
|
Сообщ.
#2394
,
|
|
|
|
Цитата MyNameIsIgor @ Цитата korvin @ что ты можешь сказать о результате выполнения каждого метода? Прочитав документацию. ну так о чем разговор тогда? Добавлено Цитата MyNameIsIgor @ Ну, и ничего страшного, что присутствует предположении о том, что после Open позиция находится в начале? Я как об этом узнал из объявления интерфейса то? нет такого предположения, с чего ты взял? |
|
Сообщ.
#2395
,
|
|
|
|
Цитата korvin @ ну и? люди посидели, _подумали_, возможно провели исследования, и решили, что реляционная модель не подходит к их задачам, взяли другую или спроектировали свою, это что, значит, что реляционную модель вообще теперь нигде нельзя использовать? Да почему нигде то? Я разве это сказал? Я вот как раз привёл пример, где людям понадобилось что-то отличное от популярной теории. И не смотря на то, что и раньше были исследования в области нереляционных хранилищ, бум возник только при их практической надобности. Вот я о чём говорю. Что в столкновении теории и практики теория всегда проигрывает. В том смысле, что изменяется, или возникает другая. Потому нельзя говорить "надо делать так, потому что в учебнике написано". Надо говорить "в учебнике написано, что надо делать так, потому что [список доводов]" И если список доводов нам не подходит, то мы ищем другой учебник. Так понятнее? Добавлено Цитата korvin @ ну так о чем разговор тогда? Как я устал... Разговор о том, что существует семантика, не отражённая в имени метода и его сигнатуре.Цитата korvin @ нет такого предположения, с чего ты взял? Ах, вы хотите сказать, что Seek у вас ставит позицию не относительно текущей, а по абсолютному номеру? Ну, а как я об этом узнаю из объявления интерфейса? |
|
Сообщ.
#2396
,
|
|
|
|
Цитата MyNameIsIgor @ Как я устал... Разговор о том, что существует семантика, не отражённая в имени метода и его сигнатуре.нуи я показал, что классы точно также не могут дать предположений о семантике, как и интерфейсы, в чем наезд на интерфейсы тогда? Добавлено Цитата MyNameIsIgor @ Ах, вы хотите сказать, что Seek у вас ставит позицию не относительно текущей, а по абсолютному номеру? я хочу сказать, что Seek у меня ставит позицию так, как это позволил сделать разработчик класса, с которым я работаю или так, как я захотел, если это мой класс. Цитата MyNameIsIgor @ Ну, а как я об этом узнаю из объявления интерфейса? ![]() а ты и не должен знать, у тебя есть набор объектов разных классов, реализующих Seek, если тебе нужно знать как объекты какого-то класса/классов реализуют тот или иной метод, ты читаешь документацию к этим классам |
|
Сообщ.
#2397
,
|
|
|
|
Цитата korvin @ То, что три из них не возвращают результата(или возвращают неописанным способом), а один - некоего произвольного типа. что ты можешь сказать о результате выполнения каждого метода? ![]() P.S. А имя интерфейса является частью сигнатуры его методов? Почему? |
|
Сообщ.
#2398
,
|
|
|
|
Цитата MyNameIsIgor @ Да почему нигде то? Я разве это сказал? Я вот как раз привёл пример, где людям понадобилось что-то отличное от популярной теории. И не смотря на то, что и раньше были исследования в области нереляционных хранилищ, бум возник только при их практической надобности. Вот я о чём говорю. Что в столкновении теории и практики теория всегда проигрывает. В том смысле, что изменяется, или возникает другая. Потому нельзя говорить "надо делать так, потому что в учебнике написано". Надо говорить "в учебнике написано, что надо делать так, потому что [список доводов]" И если список доводов нам не подходит, то мы ищем другой учебник. Так понятнее? дык первый учебник-то никуда не девается, теория не исчезает, тебе не подходит -- другим подойдет. но доказать, что она тебе не подходит, ты обязан формально, если приводишь демонстративный практический эксперимент, который опровергает теорию в твоем случае, то ты должен доказать, что эксперимент проведен правильно, указать причины по которым его результат отличается от ожидаемых в теории и соответственно указать, где ошибка в теории |
|
Сообщ.
#2399
,
|
|
|
|
Цитата korvin @ нуи я показал, что классы точно также не могут дать предположений о семантике, как и интерфейсы, в чем наезд на интерфейсы тогда? Это лол что ли такой? Я в ах... просто! Я же говорил Цитата MyNameIsIgor @ Только реально интерфейс требует не только наличие метода с такими то именем и сигнатурой, но ещё и определяет некий контракт, расписанный в документации. и в ответ услышал Цитата korvin @ нет, единственный контракт, который создает интерфейс -- именование множества сообщений, которые может обработать объект и всё. Я разве говорил, что классы абсолютно понятны по коду? Что за бред? Я разве наезжал на интерфейсы? Откуда вы это взяли? Я сказал одну простую вещь: одноимённые и совпадающие по сигнатуре требования методов разных интерфейсов нельзя по умолчанию считать одинаковыми, потому что существует недоступная для компилятора семантика. Подобные решения должны приниматься программистом и выражаться явно в коде. Никаких "наездов". Цитата korvin @ я хочу сказать, что Seek у меня ставит позицию так, как это позволил сделать разработчик класса, с которым я работаю или так, как я захотел, если это мой класс. Тогда функция не выполняет задание: она не гарантирует, что будет записано именно в заданную позицию. Она делает неизвестно что, опираясь на этот ваш бесполезный списочег методов без семантики. Подобные писульки тупо не нужны. Цитата korvin @ а ты и не должен знать, у тебя есть набор объектов разных классов, реализующих Seek, если тебе нужно знать как объекты какого-то класса/классов реализуют тот или иной метод, ты читаешь документацию к этим классам Ага, а ещё знать устройство использующего интерфейс кода, потому что без этого не буду знать, куда пристроить экземпляр имеющегося у меня класса. Добавлено Цитата korvin @ дык первый учебник-то никуда не девается, теория не исчезает, тебе не подходит -- другим подойдет. но доказать, что она тебе не подходит, ты обязан формально, если приводишь демонстративный практический эксперимент, который опровергает теорию в твоем случае, то ты должен доказать, что эксперимент проведен правильно, указать причины по которым его результат отличается от ожидаемых в теории и соответственно указать, где ошибка в теории Ну, и? Я разве против? В чём ваш проблема то? |
|
Сообщ.
#2400
,
|
|
|
|
Цитата trainer @ Цитата korvin @ То, что три из них не возвращают результата(или возвращают неописанным способом), а один - некоего произвольного типа. что ты можешь сказать о результате выполнения каждого метода? ![]() P.S. А имя интерфейса является частью сигнатуры его методов? Почему? то же самое можно сказать из приведенного мной интерфейса =) нет не является, это задача не интерфейсов -- создавать пространства имен Добавлено Цитата MyNameIsIgor @ Цитата korvin @ нуи я показал, что классы точно также не могут дать предположений о семантике, как и интерфейсы, в чем наезд на интерфейсы тогда? Это лол что ли такой? Я в ах... просто! Я же говорил Цитата MyNameIsIgor @ Только реально интерфейс требует не только наличие метода с такими то именем и сигнатурой, но ещё и определяет некий контракт, расписанный в документации. и в ответ услышал Цитата korvin @ нет, единственный контракт, который создает интерфейс -- именование множества сообщений, которые может обработать объект и всё. Я разве говорил, что классы абсолютно понятны по коду? Что за бред? Я разве наезжал на интерфейсы? Откуда вы это взяли? Я сказал одну простую вещь: одноимённые и совпадающие по сигнатуре требования методов разных интерфейсов нельзя по умолчанию считать одинаковыми, потому что существует недоступная для компилятора семантика. Подобные решения должны приниматься программистом и выражаться явно в коде. Никаких "наездов". а я Вам написал Цитата korvin @ единственный контракт, который создает интерфейс -- именование множества сообщений, которые может обработать объект и всё. и никаких других предположений о семантике, только имя метода и его тип, всю остальную семантику создают классы Добавлено Цитата MyNameIsIgor @ Тогда функция не выполняет задание: она не гарантирует, что будет записано именно в заданную позицию. Она делает неизвестно что, опираясь на этот ваш бесполезный списочег методов без семантики. Подобные писульки тупо не нужны. гарантирует. согласно логике работы объектов конкретного класса. не нравится -- опирайтесь на некоторый абстрактный класс File, только не надо потом ругаться, если кто-то в потомке переопределит метод Seek и он будет делать "не то, что Вам хотелось", а приведение потомка к предку испортит логику работы потомка Добавлено Цитата MyNameIsIgor @ Ну, и? Я разве против? В чём ваш проблема то? моя? у меня нет проблемы =/ |