Re[33]: Жизнь внутри метода
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 17.11.08 15:07
Оценка: +1
Здравствуйте, IT, Вы писали:

ГВ>>С if и switch, как раз понятно: они вполне укладываются в функциональный стиль — выбор и выбор.

IT>Ты о чём? Ни в C#, ни в C/C++ ни if, ни switch ничего не возвращают и никогда не будут возвращать. Так что про immutable стиль в этих языках забудь.

if/switch не предполагают изменения состояния. Pattern matching это что по-твоему, как не завуалированный if?

IT>Так я же тебе как раз и объясняю или ты опять не понял Функциональный аналог цикла — это функция с хвостовой рекурсией.


Да нет, это я как раз понял. Мне по-прежнему непонятно, что должно мешать программировать в FP-стиле на языках семейства С? Семантика if/switch здесь точно не помеха. Цикл — зависит от способности компилятора выделять хвостовую рекурсию, да и с другой стороны — не всегда его нужно преобразовывать в рекурсию.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[58]: декларация
От: EvilChild Ниоткуда  
Дата: 17.11.08 15:11
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

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

Pzz>>Про счета рапиды я ничего не знаю. Ютьюб, говорят, платил за интернет что-то типа лимона в месяц, только за траффик.

ВВ>Ну видно зарабатывают они куда больше.

Я слышал, что это убыточный сервис.
now playing: Boris Brejcha — Aquilah
Re[59]: декларация
От: Воронков Василий Россия  
Дата: 17.11.08 15:18
Оценка:
Здравствуйте, EvilChild, Вы писали:

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

Pzz>>>Про счета рапиды я ничего не знаю. Ютьюб, говорят, платил за интернет что-то типа лимона в месяц, только за траффик.
ВВ>>Ну видно зарабатывают они куда больше.
EC>Я слышал, что это убыточный сервис.

Ютьюб? Вроде бы его Гугл же купил недавно за кругленькую сумму. Смысл тогда тратиться на убыточный сервис? Может, я, конечно, что-то не понимаю
Ну или та же рапида — не может же она быть убыточной. Ибо смысл тогда какой, последний оплот пиратства? Мне кажется, что вполне она живет за счет этих своих премиум аккаунтов.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[34]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 17.11.08 15:29
Оценка: +1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>if/switch не предполагают изменения состояния. Pattern matching это что по-твоему, как не завуалированный if?


if/switch не возвращающие значение и не меняющие состояния бесполезны и безсмысленны.

ГВ>Да нет, это я как раз понял. Мне по-прежнему непонятно, что должно мешать программировать в FP-стиле на языках семейства С? Семантика if/switch здесь точно не помеха.


Самая что ни на есть помеха. Любой алгоритм, выполняющий полезную работу, производит действия над определёнными данными. В императиве эти действия производятся непосредственно над самими данными, меняя тем самым их текущее состояние. В FP текущее состояние не меняется, оно каждый раз воссоздаётся заново. Это состояние хранится в передаваемых параметрах и передаётся в возвращаемых значениях как эстафетная палочка следующей части алгоритма. Если конструкция не возвращает значения, то в immutable стиле она перестаёт работать как часть процесса вычисления и становится бесполезной.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[35]: Жизнь внутри метода
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 17.11.08 15:40
Оценка:
Здравствуйте, IT, Вы писали:

ГВ>>if/switch не предполагают изменения состояния. Pattern matching это что по-твоему, как не завуалированный if?

IT>if/switch не возвращающие значение и не меняющие состояния бесполезны и безсмысленны.

Упс. Так они и не возвращают значение, и не меняют состояние. Состояние меняется операторами присвоения значения, а это совсем не if/switch. Хотя "возврат значения" им приписать можно — в некоторых рамках.

ГВ>>Да нет, это я как раз понял. Мне по-прежнему непонятно, что должно мешать программировать в FP-стиле на языках семейства С? Семантика if/switch здесь точно не помеха.


IT>Самая что ни на есть помеха. Любой алгоритм, выполняющий полезную работу, производит действия над определёнными данными. В императиве эти действия производятся непосредственно над самими данными, меняя тем самым их текущее состояние.


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

IT>В FP текущее состояние не меняется, оно каждый раз воссоздаётся заново. Это состояние хранится в передаваемых параметрах и передаётся в возвращаемых значениях как эстафетная палочка следующей части алгоритма.


Угу, угу.

IT>Если конструкция не возвращает значения, то в immutable стиле она перестаёт работать как часть процесса вычисления и становится бесполезной.


Расскажи это авторам pattern matching, COND.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[47]: декларация
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.11.08 16:06
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А тебе таки нужно от Бомбея и до Лондона ?


Мне нужно, чтобы ты осознал, что Россия №1 по площади и всего лишь №9 по населению.

PD>>>Сдается мне, что о персональных компьютерах в 1981 году говорили примерно то же самое.


AVK>>Нет, не говорил.


PD>Ты, может , и не говорил, но при чем здесь ты ?


А при том, что ты со мной беседуешь. Если кто то там что то говорил — все вопросы к нему.

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


PD>Не может. Но это не значет , что нечто аналогичное может.


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

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


PD>ИМХО это именно ты делаешь. Например, зачем тебе понадобилось спорить на мое вполне нейтральное замечание, что я не был в Коломне ?


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

PD>В огороде бузина, а в Киеве дядька. Что-то скучно становится с тобой обсуждать.


Чего, не ведусь на твои приемчики?

PD> Ну написал я , что не был там, и все дела.


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

PD> Так нет, надо глубокие выводы делать.


Глубокие выводы здесь ты в основном делаешь.

PD>А Москва не Россия, верно. Я в ней 5 лет прожил, так что могу судить.


Ага. Замучался я уже лапшу с ушей снимать.

AVK>>


PD>И что тут смешного ?


То и смешно, что за Уралом таких городов совсем не десятки. А вот таких как Коломна — их даже не десятки, сотни. Классический провинциальный городок, не богаче соседней Рязани.

AVK>>Павел, 130 км это уже далеко не ближнее подмосковье. Это самая натуральная провинция, там до Рязани в 2 раза ближе, чем до Москвы.


PD>Ну не знаю, ты там живешь, тебе в конце концов виднее.


Ну вот тогда и не надо мне тут рассказывать, что Москва не Россия.

AVK>>И как же ты телевизер смотришь?


PD>Антенна на крыше стоит. Коллективная. 17 каналов. Представь себе, 95% Омска живет именно так.


А антенна откуда сигнал принимает. Прямо из Останкина?

PD>Увы. Пока что твое высказывание насчет кабельного ТВ в Омске


Я не знаю что там у вас конкретно в Омске. Наличие кабелей весьма характерно для европейской части, по крайней мере для небольших городов, которым советская власть строительством телецентров не озаботилась. Но суть то не в кабелях, суть в том, что несмотря на аналоговый местный канал доставки (будь то кабель или местный телецентр), в локальный хаб контент доставляется давно уже в цифровой форме. Просто потому что втыкать MPEG декодер в каждый телеприемник пока еще дороговато и заметно сказывается на цене недорогих телевисеров. Но не мне тебе расказывать, что эти декодеры дешевеют и будут продолжать дешеветь в обозримом будущем, что уже немалый процент телеприемников продается с поддержкой DVB-T/DVB-C. Так что, как только это станет оправданным, трансляцию переведут в параллеть на этот самый DVB-T, просто потому что диапазон используется эффективнее и меньше гемороя со стабильностью приема. При этом принципиально ничего не поменяется. У меня вот на даче тарелька, дома аналоговый кабель, разницы для юзеря практически нет, разве что тарелька сама программу транслирует, а для аналогового кабеля приходится из инета качать.

PD> мне напомнило высказывание Марии-Антуанетты (кажется) "Если крестьяне жалуются, что им не хватает хлеба, то почему они не едят пирожные" ?


Тарелька со всеми прибамбасами мне обошлась в 5000 р. и час работы. Не думаю, что это такие уж огромные деньги даже для Омска.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[34]: Жизнь внутри метода
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.11.08 16:06
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Тогда да — цикл определяется списком


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

ГВ>(в частном случае — ленивым) управляющих параметров. Конечный он или бесконечный, можно определять изнутри самой функции, реализующей тело цикла.


Бесконечный список, если он возможен, более универсален — можно задавать любое условие его окончания снаружи.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[36]: Жизнь внутри метода
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 17.11.08 17:27
Оценка:
Геннадий Васильев,

Цыкл возвращает World.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[36]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 17.11.08 18:00
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>>>if/switch не предполагают изменения состояния. Pattern matching это что по-твоему, как не завуалированный if?

IT>>if/switch не возвращающие значение и не меняющие состояния бесполезны и безсмысленны.

ГВ>Упс. Так они и не возвращают значение, и не меняют состояние.


Вот именно. Т.е. они вообще ничего не делают. И поэтому бесполезны.

ГВ>Ну, закрутилась шарманка. С чего ты взял, что в императиве входные данные обязательно модифицируются? Ничего подобного. Они могут модифицироваться, но это совершенно не обязательно.


А почему именно входные данные. Модифицируется контекст, а в императиве это не только входные данные.

IT>>Если конструкция не возвращает значения, то в immutable стиле она перестаёт работать как часть процесса вычисления и становится бесполезной.


ГВ>Расскажи это авторам pattern matching, COND.


Pattern matching как раз великолепно возвращает данные. Аж со свистом.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[35]: Жизнь внутри метода
От: FR  
Дата: 17.11.08 18:03
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>if/switch не возвращающие значение и не меняющие состояния бесполезны и безсмысленны.


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

ГВ>>Да нет, это я как раз понял. Мне по-прежнему непонятно, что должно мешать программировать в FP-стиле на языках семейства С? Семантика if/switch здесь точно не помеха.


IT>Самая что ни на есть помеха. Любой алгоритм, выполняющий полезную работу, производит действия над определёнными данными. В императиве эти действия производятся непосредственно над самими данными, меняя тем самым их текущее состояние. В FP текущее состояние не меняется, оно каждый раз воссоздаётся заново. Это состояние хранится в передаваемых параметрах и передаётся в возвращаемых значениях как эстафетная палочка следующей части алгоритма. Если конструкция не возвращает значения, то в immutable стиле она перестаёт работать как часть процесса вычисления и становится бесполезной.


Нисколько ни помеха. Чтобы функциональнй стиль нормально работал, достаточно чтобы функция не меняла никакие внешние состояния и не имела мутабельного внутренего сохраняемого между вызовами состояния. Что происходит внутри нее при этом совершенно неважно, даже без проблем допустимо чтобы внутри она использовала и мутабельные переменные и циклы или любую другую имеративщину.
Re[36]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 17.11.08 18:14
Оценка:
Здравствуйте, FR, Вы писали:

IT>>if/switch не возвращающие значение и не меняющие состояния бесполезны и безсмысленны.


FR>А вот тут ты явно подменяешь понятия, в том же си ничто ни мешает писать так чтобы if или switch всегда возвращали значения, кроме того если уж совсем до маразма доходить то никто еще тернарный оператор "?" не отменял.


Это сейчас ты начнёшь подменять понятия, если я попрошу тебя привести код, где if и switch возвращают значения.

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


Это кому не важно? Тебе? Ну с этим я спорить не буду. Но и функциональным стилем это назвать не могу.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[37]: Жизнь внутри метода
От: FR  
Дата: 17.11.08 18:23
Оценка: :)
Здравствуйте, IT, Вы писали:


FR>>А вот тут ты явно подменяешь понятия, в том же си ничто ни мешает писать так чтобы if или switch всегда возвращали значения, кроме того если уж совсем до маразма доходить то никто еще тернарный оператор "?" не отменял.


IT>Это сейчас ты начнёшь подменять понятия, если я попрошу тебя привести код, где if и switch возвращают значения.


Я уже приводил, но мне не трудно повторить:

int fib_r(int n, int a, int b)
{
    if(n == 0)
        return a;
    
    return fib_r(n - 1, b, a + b);
}


здесь if всегда возвращает значения, код чисто функционален, написан на си.

Могу еще и так повторить

int fib_r(int n, int a, int b)
{
    return n == 0 ? a : fib_r(n - 1, b, a + b);
}


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


IT>Это кому не важно? Тебе? Ну с этим я спорить не буду. Но и функциональным стилем это назвать не могу.


Не важно для того чтобы программировать в ФП стиле, и писать при этом чисто функционально даже на си.
Re[37]: Жизнь внутри метода
От: FR  
Дата: 17.11.08 18:26
Оценка:
Здравствуйте, IT, Вы писали:

IT>Это кому не важно? Тебе? Ну с этим я спорить не буду. Но и функциональным стилем это назвать не могу.


Для функционального стиля единственное что нужно чистота функций, все остальное шашечки, так что можешь не называть, но это будет самый что ни на есть функциональный стиль.
Вообще похоже тема скоро скатится в тупой терминологический спор как было с сахором
Re[38]: Жизнь внутри метода
От: Воронков Василий Россия  
Дата: 17.11.08 18:33
Оценка:
Здравствуйте, FR, Вы писали:

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

FR>Вообще похоже тема скоро скатится в тупой терминологический спор как было с сахором

В твоих рассуждениях есть один косяк. Ты можешь написать ф-цию которая будет вести себя в функциональном стиле, но при этом быть написанной в императивном стиле. Но смысл такой ф-ции? Получается, что у тебя часть кода в императивном стиле, часть кода — как бы клиентская — в фукциональном стиле. А где граница-то между тем и другим?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[38]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 17.11.08 18:34
Оценка:
Здравствуйте, FR, Вы писали:

FR>Не важно для того чтобы программировать в ФП стиле, и писать при этом чисто функционально даже на си.


Что-то подобное я и ожидал. Было бы забавно посмотреть на реальный код хотя строк в 500 в подобном стиле.

Удивительно, насколько люди могут далеко зайти в попытках отстаивания своих заблуждений.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[39]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 17.11.08 18:38
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>В твоих рассуждениях есть один косяк.


У него другой косяк. Он перепутал понятния immutable style и immutable object и теперь во всю отстаивает своё заблуждение.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[39]: Жизнь внутри метода
От: FR  
Дата: 17.11.08 18:41
Оценка:
Здравствуйте, IT, Вы писали:

FR>>Не важно для того чтобы программировать в ФП стиле, и писать при этом чисто функционально даже на си.


IT>Что-то подобное я и ожидал. Было бы забавно посмотреть на реальный код хотя строк в 500 в подобном стиле.


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

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


Да ты хороший пример
Re[39]: Жизнь внутри метода
От: FR  
Дата: 17.11.08 18:48
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>В твоих рассуждениях есть один косяк. Ты можешь написать ф-цию которая будет вести себя в функциональном стиле, но при этом быть написанной в императивном стиле. Но смысл такой ф-ции? Получается, что у тебя часть кода в императивном стиле, часть кода — как бы клиентская — в фукциональном стиле. А где граница-то между тем и другим?


Нет никакого косяка единственно что требуется чтобы писать в функциональном стиле это чистота функций. При этом минимальная сущность которой мы в ФП оперируем это именно функция, поэтому внутри нее вполне допустима и императивная грязь, но на эту императивщину есть ограничение, она не долнжа влиять на чистоту функции, и поэтому например нельзя изменять глобальные (или статические внутри функций в С++) переменные. Здесь http://www.digitalmars.com/d/2.0/accu-functional.pdf подробно все описано.
Re[40]: Жизнь внутри метода
От: Воронков Василий Россия  
Дата: 17.11.08 18:50
Оценка:
Здравствуйте, FR, Вы писали:

FR>Нет никакого косяка единственно что требуется чтобы писать в функциональном стиле это чистота функций. При этом минимальная сущность которой мы в ФП оперируем это именно функция, поэтому внутри нее вполне допустима и императивная грязь, но на эту императивщину есть ограничение, она не долнжа влиять на чистоту функции, и поэтому например нельзя изменять глобальные (или статические внутри функций в С++) переменные. Здесь http://www.digitalmars.com/d/2.0/accu-functional.pdf подробно все описано.


А где ты оперируешь такой сущностью как функция? В других функциях?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[41]: Жизнь внутри метода
От: FR  
Дата: 17.11.08 18:56
Оценка:
Здравствуйте, Воронков Василий, Вы писали:


ВВ>А где ты оперируешь такой сущностью как функция? В других функциях?


Угу. По сути в функциональщине больше ничего и нету.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.