Здравствуйте, FR, Вы писали:
IT>>Нет, не приходило. Лисп является тем функциональным ископаемым, на котором построены все остальные, могущие похвастаться, что обладают тем, чего нет в мейнстриме. А мейнстрим сейчас медленно, но уверенно переваривает и впитывает из этого всё лучшее.
FR>Нет после лиспа уже было много вещей которых в нем нет и вряд ли уже будут. FR>И вообще пока мейнстрим будет давится и с отрыжками переваривать функциональщину, новое може появится совсем в другом месте
Например? Из последнего появивщегося мне известно AOP. Но это не имеет отношения к функциональщине.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Klapaucius, Вы писали:
K>Общепринято, что вечный двигатель первого рода невозможен. Это действительно так (с очень хорошей вероятностью -> 1). Означает ли это, что перпетуум-мобилистов зажимает тупое большинство?
Это не мешает поклоникам двигателей внутреннего сгорания зажимать любителей электродвигателей
K>В большинстве случаев все упирается в договоренность. Кое-что можно доказать, но в рамках системы, непротиворечивость которой невозможно доказать в принципе. Что-то можно проверить на опыте (впрочем, доказательстов в этом случае будет иметь гм... статистический характер. В конце концов, вопросы в науке решаются не голосованием людей, а гы-гы голосованием экспериментов)
Разработка софта ни наука, и решает многое не опыт а как раз голосование людей
Здравствуйте, FR, Вы писали:
IT>>Из этого примера хорошо видно, что анонимный делегат и замыкания в C# — это не более чем синтаксический сахар. Хотя, надо признать, весьма полезный.
FR>Угу я тоже знаю людей программирующих на C++, но думающих в терминах ассемблера FR>Иногда от этого есть польза, но в большинстве случаев только вред.
При чём тут это? Или очень сильно хочется продемонстрировать собственную осведомлённость?
Что нибудь по существу?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
FR>>Нет после лиспа уже было много вещей которых в нем нет и вряд ли уже будут. FR>>И вообще пока мейнстрим будет давится и с отрыжками переваривать функциональщину, новое може появится совсем в другом месте
IT>Например? Из последнего появивщегося мне известно AOP. Но это не имеет отношения к функциональщине.
В лиспе не было вывода типов, ленивости, паттерн матчинга в общем очень многого из того что появилось в новых функциональных языках. Да и вообще лисп не чистый функциональный язык.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, FR, Вы писали:
IT>>>Из этого примера хорошо видно, что анонимный делегат и замыкания в C# — это не более чем синтаксический сахар. Хотя, надо признать, весьма полезный.
FR>>Угу я тоже знаю людей программирующих на C++, но думающих в терминах ассемблера FR>>Иногда от этого есть польза, но в большинстве случаев только вред.
IT>При чём тут это? Или очень сильно хочется продемонстрировать собственную осведомлённость? IT>Что нибудь по существу?
Так это и есть по существу, ты по сути предложил человеку неверное определение замыкания основанное на одной из реализаций.
Теперь понятно. Придираемся к словам?
FR>вывода типов, ленивости, паттерн матчинга в общем очень многого из того что появилось в новых функциональных языках.
А где это всё было? Можешь перечислить? А мы потом посмотрим на время появления этих идей.
FR>Да и вообще лисп не чистый функциональный язык.
Да мне по барабану.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ> Нельзя делать выводы о качественных сторонах продукта по его распространённости.
если ты веришь, что тебя окружают одни идиоты и ты один на коне и весь в белом — то нельзя. Как же можно верить мнению идиотов, когда ты — самый умный и знаешь про это.
Если же ты более реалистично относишься к своим умственным способностям, то надо понимать, что просто так ничего не получается. И распространенность — в том числе.
Здравствуйте, Klapaucius, Вы писали:
K>Здравствуйте, Beam, Вы писали:
B>>Я открыл статью Nemerle в Wikipedia, и я увидел, что та проблема, значение который Вы так пытаетесь преувеличить (незавершение работы метода, в который передан BlockClosure с возвратом), имеется и у Nemerle в макросах.
K>Вы на верном пути. Есть мнение, что return где не появляется — везде вызывает проблемы, хотя и не одинаковой серьезности. K>В Nemerle можно вообще не прыгать. И, по умолчанию, возможности прыгать нет. По-моему, это не может не радовать. Но, видимо по той причине, что возможность попрыгать — это такие милые сердцу программистов грабельки, которые дороги как память, если очень хочется попрыгать все-таки можно. Для этого нужно подключить опредленное простарнство имен. Вот это мне, как раз, не очень нравится, хотя почему такую возможность оставили я понимаю.
В Smalltalk тоже можно вообще не прыгать. Прыгание используется в тех же ситуациях, в которых оно используется в Java/C#. Заметьте, что и в них тоже можно не прыгать, а спокойненько дойти до конца метода.
K>Непонятно мне другое. Почему возможность прыгнуть в Nemerle является оправдание возможности прыгнуть (причем, как я понял, гораздо дальше) в смолтоке?
Вы поняли неправильно — прыгнуть дальше, чем в Nemerle не получится
А насчет Вашего вопроса я скажу следующее. После того как в этом топике были продемонстрированы примеры "с прыганием" в Smalltalk, некоторые личности, не разобравшись с вопросом, эту технику признали опасной. И сообщили, что в современных языках таких проблем нет.
Чтобы опровергнуть данное высказывание я и привел примеры с макросами Nemerle. Как видите, макросы тоже таят такую опасность. Но это же не повод отказываться от макросов в Nemerle? Конечно нет, ведь эта "проблема" не является проблемой (ну никто ж не заставляет Вас писать return где попало).
K>Тут, конечно, были примеры по существу вопроса, как использование ^ помогает сократить код, но вот это вообще к делу отношения не имеет.
Как раз имеет. Я, например, не знаю, зачем может понадобиться ^ внутри блоков кроме как в такой ситуации.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, FR, Вы писали:
FR>>В лиспе не было
IT>Теперь понятно. Придираемся к словам?
Насчет придирок не понял, но ты же утверждал что вся функциональщина была в лиспе.
FR>>вывода типов, ленивости, паттерн матчинга в общем очень многого из того что появилось в новых функциональных языках.
IT>А где это всё было? Можешь перечислить? А мы потом посмотрим на время появления этих идей.
Может где появилось?
Насколько я знаю в Миранде и ML в 70 — 80 годы.
FR>>Да и вообще лисп не чистый функциональный язык.
IT>Да мне по барабану.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, FR, Вы писали:
IT>>>Что нибудь по существу?
FR>>Так это и есть по существу, ты по сути предложил человеку неверное
IT>В чём неверность?
Здравствуйте, FR, Вы писали:
IT>>Теперь понятно. Придираемся к словам? FR>Насчет придирок не понял, но ты же утверждал что вся функциональщина была в лиспе.
Так ты ещё и врун Я утверждал, что Лисп является тем функциональным ископаемым, на котором построены все остальные. Т.е. функциональщина вышла из Лиспа. Или это утверждение аналогично тому что ты мне приписываешь?
IT>>А где это всё было? Можешь перечислить? А мы потом посмотрим на время появления этих идей. FR>Может где появилось? FR>Насколько я знаю в Миранде и ML в 70 — 80 годы.
Т.е. прошло 25-35 лет
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Не хочу. Это отбирает достаточно много сил. Я уж лучше "на пальцах" объясню.
Хоть на пальцах. Зоть на псевдокоде. Хоть как. Только чисто ОО решение.
ANS>Аналог именно этого не потребует даже визитора!
А что он потребует? Продемонстрируй на псевдокоде.
ANS>Ты лучше покажи, как к этому "выкрутасу", положенному в либу, дописать пару своих кастомных вариантов.
А зачем?
ANS>Зачем нужен комментарий к параметрам?
А что больше некчему прицепиться?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Klapaucius, Вы писали:
F>>>Вообще-то это высказываение как раз и было коррекцией — оно отлично дополняло высказывание предыдущего оратора, что "следование за большинством в наименьшей мере требует работы мозга", и как раз приводило систему в баланс — получая именно ситуацию "бездумного следования за кем-либо вообще". ГВ>>Какая ещё, сто тысяч микробайт в шлейф, система?! Следовать "общепринятым" терминам в противовес правильных — как раз показатель бездумности.
K>Это просто пять баллов. [...] K>Как это все объяснить человеку, который говорит, что "истина всегда конкретна". Это тупик.
Э... Обороты изящны. Но всё-таки, перечитайте ту дискуссию, на которую я ссылался. Пока что не хочу в очередной раз заниматься длинным разбором: что, кто и где сказал, и что это означает и какое впечатление производит. Я уже посвятил этому предостаточно букв. Моим оппонентам даже при отсутствии аргументации всегда найдётся что..., кхм, сказать. Пусть и во всё более художественной форме.
K>Но я попробую. Вообще-то, терминология — это результат договоренности. В этом смыcле все термины, конечно, должны быть общепринятыми. Правильные они или нет — вопрос сложный. Определенно — это не исключено. Понятно — очень зависит от того, что понимается под словом "правильный". Мое мнение: учитывая что терминология существует для того, чтобы люди друг друга понимали, то правильный термин в системе из n обменивающихся информацией людей такой, который одинаково понимают больше чем n/2. Т.е. общеприянтый.
На самом деле, "правильны" только те значения терминов, которые были им присущи при их появлении. В противном случае мы всегда сталкиваемся с необходимостью опрашивать n/2 на предмет их согласия с текущим значением терминов. Это не экономично. Соответственно, "правильное" значение термина нужно спрашивать не у большинства голосованием, а у его автора или, скажем так, у достаточно узкого круга. Истина таки да, всегда конкретна. Либо же значение термина должно параллельно уточняться, например, уполномоченными на то группами. В любом случае, круг тех, кто определяет значение термина должен быть достаточно узок, иначе мы превратим совершенно любую коллективную деятельность в бесконечные дебаты.
Согласитесь, было бы удивительным переспрашивать у "большинства", например, что мы сегодня подразумеваем под термином "большинство"?
K>Что касается каких-то фактических сведений о мире — тут все, конечно, сложнее. K>Общепринято, что Земля — круглая. Это не так. Земля имеет форму геоида. Общеприянтые понятия "круг" и "геоид" нетождественны.
На бытовом уровне — да, шар. Но на бытовом уровне и Солнце вокруг Земли может вращаться. Но попробуй, докажи это тем, кто связан с навигацией.
K>Общепринято, что вечный двигатель первого рода невозможен. Это действительно так (с очень хорошей вероятностью -> 1). Означает ли это, что перпетуум-мобилистов зажимает тупое большинство?
Нет. Это означает, что в даном случае большинство более или менее усвоило законы физики.
K>В большинстве случаев все упирается в договоренность. Кое-что можно доказать, но в рамках системы, непротиворечивость которой невозможно доказать в принципе. Что-то можно проверить на опыте (впрочем, доказательстов в этом случае будет иметь гм... статистический характер. В конце концов, вопросы в науке решаются не голосованием людей, а гы-гы голосованием экспериментов)
Это ещё что такое: голосование экспериментов?
ГВ>>В таком контексте упоминание меньшинства в негативном смысле как раз указывает на то, что надо следовать за большинством, даже если оно поставило всё с ног на голову.
K>
K>Не надо додумывать за автора, что он собирался сказать, что он мог сказать, что он подумал и что мог бы подумать, но сразу не собразил.
K>Так говорил кхм... Геннадий Васильев.
Я и не додумывал за автора. Я озвучил впечатление, которое произвели его слова и полагаю, что не сильно промахнулся. Нехай автор лучше формулирует свои мысли, дабы не. Коли уж он хотел сказать что-то другое.
F>>>Предыдущий оратор из этого высказывания взял только часть. Это называется — некорректное уточнение. ГВ>>Не-а. АК всё совершенно правильно сказал. Именно большинство, именно бездумное следование и именно размахивание "общепринятым" как показатель этой самой бездумности.
K>Вот он, образ врага! Скифы, азиаты. Их много. Слышится ржание их коней. Размахивают. Голова — чтобы в нее есть. K>Подтягивают к стенам нашей цитадели осадные ветряные мельницы на колесах.
K>Нас мало — понятно, что мы лучше. Правда, тут главное не ошибиться и не оказаться не в том хвосте нормального распределения.
Ах, сколь витиеваты слова, непонятные слуху простого программиста. Я прямо слышу победное ржание сфероконей и чую ммм... смрад кипящей смолы, которую льют со стен осаждённые. Если бы ещё это имело какое-то отношение к делу.
ГВ>>Я понял в чём прикол. Не надо додумывать за автора, что он собирался сказать, что он мог сказать, что он подумал и что мог бы подумать, но сразу не собразил. Вот что было сказано, то и стало объектом обсуждения. K>Интересно, обстоятельно, респектабельно. Хоть сейчас на скрижали. Жаль только, что это, похоже, принцип на экспорт, а не для внутреннего пользования.
Да, к сожалению, во "внутреннем пользовании" очень часто приходится прибегать к додумыванию. Иначе многих просто невозможно понять.
K>Впрочем, воспринимать продукт творчества любого автора без некоторой доли фантазии — совершенно невозможно. Ведь существует же недоговоренность. Всегда. Любые слова вырваны из контекста, который у автора в голове и нам совершенно не известен.
Весь контекст доступен по приведённой мною ссылке. Прочтите, не пожалеете.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, WolfHound, Вы писали:
ANS>>Аналог именно этого не потребует даже визитора! WH>А что он потребует? Продемонстрируй на псевдокоде.
Потребует 1-го (одного) виртуального метода под названием prettyPrint принимающего 1 (один) параметр — поток вывода и классы в количестве соответсвующем количеству матчей. Или тебя пугает необходимость создавать классы в ОО программе?
ANS>>Ты лучше покажи, как к этому "выкрутасу", положенному в либу, дописать пару своих кастомных вариантов. WH>А зачем?
Ты ж отменя чего хочеш, а я от тебя хочу чего-то в замен. Я правильно понимаю из твоего ответа, что это не возможно в принципе?
Здравствуйте, Andrei N.Sobchuck, Вы писали:
IT>>Если преобразовать этот код в C#, то мы получим примерно следующее (я попытаюсь записать в один if):
ANS>И ты, Брут
И я. Я тебе даже больше скажу. Пару раз при работе надо интеграцией у меня был равноценный выбор — писать код на шарпе или на N. Начинал я это делать на шарпе, т.к. интеллисенс и прочее. Через пять минут плевал на это всё и переносил код в проект на Немерле.
IT>>Желающие могут переписать это на свой лад и даже поприменять разные паттерны, но боюсь что более компактного кода, чем на Nemerle не получится.
ANS>Один раз уже пробовал — <b>получается</b>
Молодец! У тебя получилось лишь решить простую задачку другим способом. Но проблема в том, что на том занятии мы проходили не сложение, а умножение и начали демонстрацию сложных вещей с простых примеров. Поэтому, при условии 2 * 2 = 4, у тебя вышло не хуже: 2 + 2 = 4. Но проблемы начались бы уже при 2 * 3 = 6. Твоё решение было бы 2 + 2 + 2 = 6. А если 2 * 10?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Потребует 1-го (одного) виртуального метода под названием prettyPrint принимающего 1 (один) параметр — поток вывода и классы в количестве соответсвующем количеству матчей. Или тебя пугает необходимость создавать классы в ОО программе?
А можно чуток псевдокода, а то както все очень расплывчато.
ANS>Ты ж отменя чего хочеш, а я от тебя хочу чего-то в замен. Я правильно понимаю из твоего ответа, что это не возможно в принципе?
Так оно в данном случае нафиг не упало.
Но если очень хочется то можно добавить один параметер в SprintTyExpr и одну строчку
if (expr == null) append ("[[[NULL]]]") else
if (user_handler(expr, ...)) { /*do noting*/ } else
match (expr) {
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, FR, Вы писали:
IT>>>Теперь понятно. Придираемся к словам? FR>>Насчет придирок не понял, но ты же утверждал что вся функциональщина была в лиспе.
IT>Так ты ещё и врун Я утверждал, что Лисп является тем функциональным ископаемым, на котором построены все остальные. Т.е. функциональщина вышла из Лиспа. Или это утверждение аналогично тому что ты мне приписываешь?
Да ладно врун, или будем как одна парочка тут в софистике упражнятся?
Вообще все языки вроде идут всего от трех веток первого автокода, фортрана и лиспа (правда про пролог и рефал забудем).
Если я скажу что весь ООП идет от фортрана это будет по твоему верное утверждение?
IT>>>А где это всё было? Можешь перечислить? А мы потом посмотрим на время появления этих идей. FR>>Может где появилось? FR>>Насколько я знаю в Миранде и ML в 70 — 80 годы.
IT>Т.е. прошло 25-35 лет