Re[28]: Интерфейс vs. протокол.
От: WolfHound  
Дата: 17.04.11 15:47
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Я же объяснил почему.

Ты сказал "нехочу".

PD>Кстати, из дискуссии с jazzer все вполне выяснилось.

Учитывая что jazzer не показал зависимых типов...

PD>Мое мнение осталось примерно тем же, что и было — применимо в некоторых простых случаях, для более сложных — неприменимо или столь усложнено, что попытка применить эквивалентна переносу рантайма в компиле-тайм. Так что для случаев, когда заведомо известно, что все будет не просто, а очень просто (вроде open-read-close, и ни шагу влево или вправо!) это может быть применимо, ну а если шаги вправо-влево хотя бы в принципе допустимы, то в итоге потратишь времени больше, чем если бы этим не заниматься.

Для того чтобы понять нужно читать первоисточники, а не то что наплел jazzer.

PD>Только вот , еще раз, эта фраза не моя. Кажется, Маркса. Она довольно-таки хорошо известна. И твое отнесение ее к бреду выглядит, право слово, довольно комично, тем более без всякой аргументации.

Аппеляция к авторитету со стороны "научного сотрудника"
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[15]: Интерфейс vs. протокол.
От: WolfHound  
Дата: 17.04.11 16:06
Оценка:
Здравствуйте, 0x7be, Вы писали:

PD>>Ну и зря он мне сообщает об ошибке. Дело в том, что при bool==false файл уже открыт, так как раньше (в совсем другом месте) пришлось выполнить предварительное чтение, а поэтому я решил, что не стоит файл закрывать, ибо знаю, что основное чтение делать вскоре придется — незачем тратить время на его закрытие и открытие заново.

0>Предлагаю на будущее сразу формулировать условие задачи целиком, что бы таких роялей в кустах не появлялось. Намного облегчит общение.
А он всегда так делает.
Причем что самое интересно он считает, что подобная логика организации программы совершенно нормальна.
Еще веселее то, что этот пример абсолютно искусственный, и он не знает, зачем это ему нужно.
А если из него таки вытащить реальное условие задачи, то выясняется что можно сделать намного проще.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[16]: Интерфейс vs. протокол.
От: 0x7be СССР  
Дата: 17.04.11 16:15
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Причем что самое интересно он считает, что подобная логика организации программы совершенно нормальна.

WH>Еще веселее то, что этот пример абсолютно искусственный, и он не знает, зачем это ему нужно.
WH>А если из него таки вытащить реальное условие задачи, то выясняется что можно сделать намного проще.
Ну, на практике всякое случается, иногда приходится делать через Ж. По разным причинам, техническим, историческим.
Но изменять условия задачи по ходу обсуждения все же не стоит.
Re[17]: Интерфейс vs. протокол.
От: WolfHound  
Дата: 17.04.11 17:03
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Ну, на практике всякое случается, иногда приходится делать через Ж. По разным причинам, техническим, историческим.

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

0>Но изменять условия задачи по ходу обсуждения все же не стоит.

Это его обычная тактика.
Вот тут
Автор: WolfHound
Дата: 15.04.11
я сделал не возможное.
Что сделал он?
Сменил задачу, полностью проигнорировав ответ.
Я же говорю, он сюда свою веру пришёл пропагандировать, а не знания получить.
Он этой фигней уже не первый год занимается.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[18]: Интерфейс vs. протокол.
От: 0x7be СССР  
Дата: 17.04.11 17:06
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Я же говорю, он сюда свою веру пришёл пропагандировать, а не знания получить.

WH>Он этой фигней уже не первый год занимается.
А в чем его вера заключается?
Re[19]: Интерфейс vs. протокол.
От: WolfHound  
Дата: 17.04.11 17:50
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>А в чем его вера заключается?

Если коротко то:
Все кроме С++ говно!
В мире есть только императив!
Функциональщина академическое говно!
Всем нужно только С++ и WinAPI!
Производительность нужна любой ценой!
Надежность никому не нужна!
Краткость и понятность кода тоже ни кому не нужны! Тем более что производительность нужна любой ценой!
И вообще по памяти проезжаются только ламеры, а он великий гений программирования и никогда не допускает уязвимостей в своих программах!

То, что за прошедшие годы по всем пунктам его многократно тыкали носом в его ошибки, думаю и так понятно...
В ответ был либо полный игнор либо пафос что мы тут все ламеры которые только и могут что сайты заборостроительных компаний делать.
А если вдруг кому-то из нас дать сделать сайт уровня мелкософт.ком то мы завалим проект с треском.
После того как выяснилось что я в Яндексе работал он как-то сразу перестал вспоминать про сайты...
Это было бы весело если бы он не был профессором. Бедные студенты.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[19]: Интерфейс vs. протокол.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 17.04.11 20:06
Оценка: +1
Здравствуйте, 0x7be, Вы писали:
0>Здравствуйте, WolfHound, Вы писали:

WH>>Я же говорю, он сюда свою веру пришёл пропагандировать, а не знания получить.

WH>>Он этой фигней уже не первый год занимается.
0>А в чем его вера заключается?

Народ... Тема не об этом.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: Интерфейс vs. протокол.
От: vdimas Россия  
Дата: 17.04.11 21:29
Оценка: +1
Здравствуйте, jazzer, Вы писали:

J>Фактически ты предлагаешь сделать объекты явными конечными автоматами, где состояние автомата будет информацией времени компиляции


Да не катят тут объекты никак. Вызов метода объекта не подменяет исходную identity, а требуется именно подменять. Правильно было сказано, что нужен функциональный подход на uniqueness типах. Вполне можно и на С++:
struct Opened  { std::string fname; }; 
struct Closed  {};

Предположим, что у нас есть некий strict_auto_ptr<>, аналог auto_ptr, но без метода release(), чтобы мы могли гарантировать передачу владения.
typedef strict_auto_ptr<Opened> OpenedPtr;
typedef strict_auto_ptr<Closed> ClosedPtr;


Тогда:
OpenedPtr file = openFile("some-path");
file = read(file, &buffer, count);
file = read(file, &buffer2, count2);


От монады maybe можно смело отказываться при наличии нормального механизма исключений. Здесь чтение в buffer2 не покатит, если во время операции чтения в buffer мы не сохранили file, ведь при передаче параметра в read() мы потеряли владение ссылкой.

Кстати, тут налицо еще один момент, о котором я периодически говорю — "строгий" статически типизированный язык должен требовать, чтобы результат ф-ии, отличный от void, куда-то девался, т.е. чтобы не было возможности его проигнорировать.

Характерно, что на C# подобный фокус воспроизвести не получится.
Re[3]: Интерфейс vs. протокол.
От: jazzer Россия Skype: enerjazzer
Дата: 17.04.11 23:33
Оценка:
Здравствуйте, vdimas, Вы писали:

V>От монады maybe можно смело отказываться при наличии нормального механизма исключений. Здесь чтение в buffer2 не покатит, если во время операции чтения в buffer мы не сохранили file, ведь при передаче параметра в read() мы потеряли владение ссылкой.


он не покатит в рантайме, а во время компиляции все хорошо будет.
А 0x7be хочет, чтобы вторая строчка не компилировалась.
Поправь, если не так.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[15]: Интерфейс vs. протокол.
От: Pavel Dvorkin Россия  
Дата: 18.04.11 02:03
Оценка: 2 (1) +1 :)
Здравствуйте, 0x7be, Вы писали:

0>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Ну и зря он мне сообщает об ошибке. Дело в том, что при bool==false файл уже открыт, так как раньше (в совсем другом месте) пришлось выполнить предварительное чтение, а поэтому я решил, что не стоит файл закрывать, ибо знаю, что основное чтение делать вскоре придется — незачем тратить время на его закрытие и открытие заново.

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

0>Касаемо новых условий примера, вот решение:


<skipped>

В том-то и дело, что этот рояль в кустах по ходу разработки появился как черт из табакерки. Не планировал я вначале никакого предварительного чтения, а потом вдруг выяснилось, что оно необходимо. Ты исправил решение на его слуай, а завтра что-то еще изменится. Без этих контрактов вставлю я дополнительные Open, Read, Close и проверю в рантайме тестами работу. А тебе придется на каждый случай модифицировать многое.

Почитай ветвь дискуссии мою с jazzer. То, что ты предлагаешь — это перенос части рантайма в компиле-тайм. Но рантайм гибок, а компиле-тайм — намного меньше, просто потому, что там динамика, а здесь статика. И чем сложнее алгоритм, тем сложнее будет перенести, тем массивнее будут правила в статике, вплоть до полного переноса всей динамики в статику — во всех возможных вариантах.
With best regards
Pavel Dvorkin
Re[27]: Интерфейс vs. протокол.
От: Pavel Dvorkin Россия  
Дата: 18.04.11 02:11
Оценка:
Здравствуйте, dotneter, Вы писали:

PD>>Именно. Немного усложнив ситуацию (я ведь и без того там еще 2 типа определил) и занявшись тройными системами, мы дойдем до полного хаоса.

D>Таr я же и написал что можно типы не определять

D>procedure GetMixtureBoilingPoint(float[0..1] percent, float[0..1] other_percent) : float[25..180]

D>{

D>}


А теперь представь себе, что мне нужно по процентам двухкомпонентной смеси любого состава определить точку кипения смеси (эх, если бы это было возможно — нет такого способа расчета). И получишь ты в итоге float[-273..5000], то есть просто float.
With best regards
Pavel Dvorkin
Re: Интерфейс vs. протокол.
От: ArtDenis Россия  
Дата: 18.04.11 03:12
Оценка:
Идея хорошая. Надо взять на заметку.
Из минусов вижу, что иногда протокол может быть настолько сложным, что его соблюдение невозможно будет контролировать в compile time. Но возможно, что это повод разбить протокол на несколько независимых уровней.
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[20]: Интерфейс vs. протокол.
От: WolfHound  
Дата: 18.04.11 04:30
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Народ... Тема не об этом.

К сожелению об этом.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[28]: Интерфейс vs. протокол.
От: WolfHound  
Дата: 18.04.11 04:30
Оценка: +2
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А теперь представь себе, что мне нужно по процентам двухкомпонентной смеси любого состава определить точку кипения смеси (эх, если бы это было возможно — нет такого способа расчета). И получишь ты в итоге float[-273..5000], то есть просто float.

Ты либо крестик сними, либо трусы надень.
Если это можно вычислить, то это можно сделать на уровне системы типов.
Если нельзя то, какого черта вообще появилась GetMixtureBoilingPoint?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[29]: Интерфейс vs. протокол.
От: Pavel Dvorkin Россия  
Дата: 18.04.11 05:00
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>А теперь представь себе, что мне нужно по процентам двухкомпонентной смеси любого состава определить точку кипения смеси (эх, если бы это было возможно — нет такого способа расчета). И получишь ты в итоге float[-273..5000], то есть просто float.

WH>Ты либо крестик сними, либо трусы надень.

На таком уровне я с тобой дискуссию продолжать не намерен. Научись для начала себя вести как следует.
With best regards
Pavel Dvorkin
Re[16]: Интерфейс vs. протокол.
От: 0x7be СССР  
Дата: 18.04.11 05:04
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD><skipped>


PD>В том-то и дело, что этот рояль в кустах по ходу разработки появился как черт из табакерки. Не планировал я вначале никакого предварительного чтения, а потом вдруг выяснилось, что оно необходимо. Ты исправил решение на его слуай, а завтра что-то еще изменится. Без этих контрактов вставлю я дополнительные Open, Read, Close и проверю в рантайме тестами работу. А тебе придется на каждый случай модифицировать многое.

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

PD>Почитай ветвь дискуссии мою с jazzer. То, что ты предлагаешь — это перенос части рантайма в компиле-тайм. Но рантайм гибок, а компиле-тайм — намного меньше, просто потому, что там динамика, а здесь статика. И чем сложнее алгоритм, тем сложнее будет перенести, тем массивнее будут правила в статике, вплоть до полного переноса всей динамики в статику — во всех возможных вариантах.

Да, именно так, я предлагаю перенести в статик часть того, что раньше жило только в динамике.
Согласен, тут есть свои пределы, как теоретические, так и практические.
Твердо убежден, что если за разумную цену можно заставить компилятор что-то за меня контролировать, то это лучше сделать.
Re[20]: Интерфейс vs. протокол.
От: 0x7be СССР  
Дата: 18.04.11 05:05
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Народ... Тема не об этом.

Ты прав, завязываю.
Re[30]: Интерфейс vs. протокол.
От: WolfHound  
Дата: 18.04.11 05:19
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>На таком уровне я с тобой дискуссию продолжать не намерен. Научись для начала себя вести как следует.

Ответить по существу в очередной раз не в состоянии. Так и запишем.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[17]: Интерфейс vs. протокол.
От: Pavel Dvorkin Россия  
Дата: 18.04.11 05:22
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Да, именно так, я предлагаю перенести в статик часть того, что раньше жило только в динамике.

0>Согласен, тут есть свои пределы, как теоретические, так и практические.
0>Твердо убежден, что если за разумную цену можно заставить компилятор что-то за меня контролировать, то это лучше сделать.

Боюсь, что в серьезных задачах цена будет очень высокой.
With best regards
Pavel Dvorkin
Re[31]: Интерфейс vs. протокол.
От: Pavel Dvorkin Россия  
Дата: 18.04.11 05:23
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>На таком уровне я с тобой дискуссию продолжать не намерен. Научись для начала себя вести как следует.

WH>Ответить по существу в очередной раз не в состоянии. Так и запишем.

Провокациями занялся ? Ну-ну.
With best regards
Pavel Dvorkin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.