Re[42]: ФП против ООП
От: the_void Швейцария  
Дата: 02.10.06 17:01
Оценка:
Здравствуйте, VladD2, Вы писали:

MK>>Очень хорошо и подробно об этом написано в CTM.


VD>Осталось выяснить что такое CTM.


Уж не Concepts, Techniques, and Models of Computer Programming ли?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[42]: ФП против ООП
От: Mikl Kurkov Россия  
Дата: 02.10.06 18:07
Оценка: 34 (3)
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Mikl Kurkov, Вы писали:


MK>>Есть такое понятие — лингвистические абстракции (lingustic abstractions). Изначально у нас есть некий базовый язык — по сути описание вычислительной модели. Как правило хорошо поддающийся теоритическим исследованиям, но мало пригодный для программирования на нем человеками. Для повышения удобства начинаем расширять базовый язык, при этом расширения транслируются в простой базовый синтаксис. Так вот эти расширения и разделяют на лингвистические абстракции и синтаксический сахар.


VD>До этого момента вопросов практически нет. Согласен с определениями. Разве что хочу заметить, что для разных языков список таких абстракций может быть разным. И еще что одни бстракции могут выражаться другими. Так что разумнее вести речь о неком минимальном наборе абстракций через которые можно вырзить другой более широкий набор абстракций. Вот он то и будет являться сахаром.


Ну вот же в следующем предложении я говорю что лингвистические абстракции не привязаны к какому-то языку. Это кирпичики, блоки из которых и строятся языки. Естественно что набор абстракций в разных языках разный. И реализуются они по разному. Но это не повод смешивать их с синтаксическим сахаром. Это разные понятия. О чем я и пытался рассказать.

MK>>Основное отличие — лингвистические абстракции не привязаны к конкретному языку, примеры — оператор условного перехода, list comprehensiions, карринг, оператор for, foreach и т.п.


VD>А вот тут уже не согласен. Конструкции вроде "оператор условного перехода, list comprehensiions, карринг, оператор for, foreach и т.п." могут отсуствовать в языке и тогда они будут синтаксическим сахаром для этого языка, а могут являться его базой.


Опять же и синтаксический сахар и лингвистические абстракции — суть расширения синтаксиса базового языка. Но они имеют одно важное отличие. И заключается оно в том, что синтаксический сахар не привносит в язык новых абстракций. Он просто немного меняет синтаксис, как правило позволяя пропускать какие-то ключевые слова или использовать более краткую форму какой-либо конструкции. Этим изменениям и названия-то как правило дать нельзя. И никакой разницы что есть в базовом языке, а чего нету. Мы же говорим о расширении. Ну да есть у нас в базовом языке такое понятие как функция (в смысле процедура, возращающая значение) ну это всего лишь означает что такое расширение нам не понадобится. А вот например в Mozart\Oz есть только процедуры и функции в нем — это расширение , которое транслируется потом в базовый синтаксис. И расширение это правильнее называть лингвистической абстракцией,а не сахаром, т.к. понятие функции достаточно абстрактно и целостно.

VD>Отличным примером этого служит Немерле где понятие базы языка четко выделено. В языке нет "операторов условного перехода if, list comprehensiions, карринга, оператор for, foreach, а так же, return, continue, break и т.п.". За-то есть замыкания, локальные функции, лябды, изменяемые переменные, оператор match, и блоки (позволяющие прервать нормальный ход выполнения функции (замена return, continue и break), классы, варианты (алгеброические типы), перечисления, методы, свойства и атрибуты (расширение методанных как в C#). На этой базе те самые отсуствующие сущности: "операторов условного перехода if, list comprehensiions, карринга, оператор for, foreach, а так же, return, continue, break и т.п." реализуются с помощью маросов. Причем сам факт реализации на макросах говорит отом, что сущности являются тем самым сахаром.


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

VD>Так вот на самом деле набор базовых фич может быть и другим. В общем-то замыкания и лямбды тоже можно заменить на более базовые вещи — классы. Но это будет уже другой язык.


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


VD>Вот именно об этом я и говорю! Забвно, что lomeo поставил тебе оценку, но при этом во всю спорит со многими тем о чем ты тут сказал.


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

Вот кстати отвлекусь от темы, но не могу удержаться от цитаты

Возьмем наши споры. Они характеризуются чрезвычайной расплывчатостью, мы очень скоро уходим от основной темы. Это наша черта. Возьмем наши заседания. У нас теперь так много всяких заседаний, комиссий. До чего эти заседания длинны, многоречивы и в большинстве случаев безрезультатны и противоречивы! Мы проводим многие часы в бесплодных, ни к чему не ведущих разговорах. Ставится на обсуждение тема, и сначала обыкновенно и благодаря тому, что задача сложная, охотников говорить нет. Но вот выступает один голос, и после этого уже все хотят говорить, говорить без всякого толку, не подумав хорошенько о теме, не уясняя себе, осложняется ли этим решение вопроса или ускоряется. Подаются бесконечные реплики, на которые тратится больше времени, чем на основной предмет, и наши разговоры растут, как снежный ком. И в конце концов вместо решения получается запутывание вопроса.

Сказано в 1918 году академиком Павловым в его лекции «О русском уме» на вручении Нобелевской премии.

MK>>Очень хорошо и подробно об этом написано в CTM.


VD>Осталось выяснить что такое CTM.


Ну батенька, я уж думал что в "Декларативном программировании" все знают эту аббревиатуру, как и SICP. Это "Concepts, Techniques, and Models of Computer Programming", авторы Peter Van Roy и Seif Haridi. Одна из моих любимейших книг по программированию. Написана очень легким, ясным языком, охватывает огромный класс задач и при этом очень взвешена без перекосов в какую-либо одну парадигму. Тут в форуме была и ссылка на электронный вариант (правда draft).

--
Mikl
Re[42]: ФП против ООП
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 03.10.06 07:35
Оценка:
Здравствуйте, VladD2, Вы писали:

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


VD>А, ну, мы плавно вернулись обратно к главенствованию неизменямости данных. Ясно.


Ну так ты убедился, что когда я говорил об ФВП, я говорил об ФВП или нет?

Анекдот неплохой, спасибо.
Re[40]: ФП против ООП
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 03.10.06 07:42
Оценка: -1
Здравствуйте, VladD2, Вы писали:

L>>Я тоже. Но ты начинаешь развешивать ярлыки.


VD>Погоди. А кто о мифическом ООП-оверхэде говорил? Я?


Это ты говорил о мифическом, я говорил о реальном.

VD>>>Это ты тут доказываешь какой-то выдуманный оверхэд ООП.


L>>Да, ОО более многословен. Он использует больше сущностей.


VD>Значит таки подсаживлася.


Твоя логика меня поражает.

VD>>>А я просто использую ООП там где от него есть реальная польза.


L>>Аналогично. Может я на ОО тоже подсел?


VD>А ты его используешь? Это видимо из-за того что он более многословный, а вам за количество символо платят. Да?


Использую. Не из-за этого. За количество не платят.
Еще версии?

L>>Да и с твоим определением сахара вроде разобрались, чего уж там дальше?


VD>Интересный у вас подход к разбирательству. А еще о ярлыках веч ведете...


Ты хочешь еще поговорить об этом? Зачем? Я уже понял, что любое расширение сахар.

VD>Мы тут с полностью мифически ОО-оверхэдом разобраться то не можем.


А зачем вы там с чем то мифическим разбираетесь? То с мифическим оверхедом, то с мифическим сахаром (кстати, так твой сахар буду называть, чтобы отличать). С реальным разбирайтесь.
Re[43]: ФП против ООП
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.10.06 14:14
Оценка: +1
Здравствуйте, lomeo, Вы писали:

L>Ну так ты убедился, что когда я говорил об ФВП, я говорил об ФВП или нет?


Я убедился, что с догмами спорить безсполезно. Одна сменяет другую.

Если же ты говорил о ФВП, то твои слва лишены всяческого смысла, так как ФВП по определению есть в большинстве языков.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[44]: ФП против ООП
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 03.10.06 15:06
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я убедился, что с догмами спорить безсполезно. Одна сменяет другую.


Ага, я помню, ты себе мир придумываешь и тебе в нём хорошо жить. Вот и про ФВП ты придумал, что я под ними что то другое подразумевал. И все остальные выводы относительно меня оказались ложны. Ну, а что ж ты хотел? Мир то придуманный.

VD>Если же ты говорил о ФВП, то твои слва лишены всяческого смысла, так как ФВП по определению есть в большинстве языков.


А я не говорил о языках, я говорил о подходах, если ты этого до сих пор не понимаешь, что я могу поделать?
Re[41]: ФП против ООП
От: Gaperton http://gaperton.livejournal.com
Дата: 03.10.06 17:55
Оценка: 16 (2) +2
Здравствуйте, FR, Вы писали:

VD>>>>У тебя хобби такое "разговоры не по существу"? Или работа программиста убивает разумное абстрактное начало?


FR>>>А у тебя?


VD>>Месье блюдет национальные традиции или отвечая вопросом на вопрос он пытается уйти от ответа?


FR>Нет, к сожалению не являюсь представителем этой многоуважаемой нации

FR>Кстати задавая этот вопрос ты занимался именно уходом от ответа
FR>Вообще пора закруглятся.

Давно пора. А то весь форум ерундой какой-то загадили — за флудом полезные сообщения найти невозможно. Разборки с Владом переносим в философию, ок? А если честно — я вообще не понимаю, зачем и с какой целью вы отвечаете на всякую ерунду. Что-то новое для себя узнать хотите? Или интересно очень?
Re[45]: ФП против ООП
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.10.06 03:45
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Ага, я помню, ты себе мир придумываешь и тебе в нём хорошо жить. Вот и про ФВП ты придумал, что я под ними что то другое подразумевал. И все остальные выводы относительно меня оказались ложны. Ну, а что ж ты хотел? Мир то придуманный.


Ой, как мне это тебя напоминает.

L>А я не говорил о языках, я говорил о подходах, если ты этого до сих пор не понимаешь, что я могу поделать?


А я тебе говорил, что подходы хороши к месту, и прикливать к ним ярляки минимум не разумно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[46]: ФП против ООП
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 04.10.06 07:37
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>А я не говорил о языках, я говорил о подходах, если ты этого до сих пор не понимаешь, что я могу поделать?


VD>А я тебе говорил, что подходы хороши к месту, и прикливать к ним ярляки минимум не разумно.


У этого подхода такой то недостаток — это ярлык?
Re[42]: ФП против ООП
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 04.10.06 07:39
Оценка: 1 (1) +1
Здравствуйте, Gaperton, Вы писали:

G>Давно пора. А то весь форум ерундой какой-то загадили — за флудом полезные сообщения найти невозможно. Разборки с Владом переносим в философию, ок? А если честно — я вообще не понимаю, зачем и с какой целью вы отвечаете на всякую ерунду. Что-то новое для себя узнать хотите? Или интересно очень?


ХЗ. Утром пришел, смотрю — мне Влад что то написал, ну я ему и ответил, он, наверное, так же поступает
Прекращаю.
Re[43]: ФП против ООП
От: Кодт Россия  
Дата: 05.10.06 08:38
Оценка: +1
Здравствуйте, lomeo, Вы писали:

G>>Давно пора. А то весь форум ерундой какой-то загадили — за флудом полезные сообщения найти невозможно. Разборки с Владом переносим в философию, ок? А если честно — я вообще не понимаю, зачем и с какой целью вы отвечаете на всякую ерунду. Что-то новое для себя узнать хотите? Или интересно очень?


L>ХЗ. Утром пришел, смотрю — мне Влад что то написал, ну я ему и ответил, он, наверное, так же поступает


Это потому что желание общаться превыше желания выделить истину

Вот к примеру, тема синтаксического сахара. (Я не предлагаю снова раздувать полемику, быстренько выскажусь и закрою).
Очевидно, что она может волновать по двум практическим причинам:
— аскетическая: как минимизировать ядро языка, сохранив удобства пользователя (или минимально ущемив)
— гедоническая: как расширить язык для удобства пользователя, сохранив (или минимально затронув) ядро
ну и непрактические причины:
— потренировать мозг в тонких материях
— наконец, просто удовлетворить потребность в общении (эвфемизм идиомы "почесать языком")

Понятно, что вышеуказанное — это и цели, и средства одновременно. Следование аскезе должно уравновешиваться вниманием к комфорту, иначе результат выродится в brainfuck.
Но группа в целом должна согласиться с общим направлением поиска, иначе это будет не спор, в котором истина рождается, а ссора, в которой она умирает.

Итого: а зачем, собственно, мы обсуждаем — "ФП относительно ООП"?
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[43]: ФП против ООП
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.10.06 17:50
Оценка:
Здравствуйте, Mikl Kurkov, Вы писали:

MK> Ну вот же в следующем предложении я говорю что лингвистические абстракции не привязаны к какому-то языку. Это кирпичики, блоки из которых и строятся языки. Естественно что набор абстракций в разных языках разный. И реализуются они по разному. Но это не повод смешивать их с синтаксическим сахаром. Это разные понятия. О чем я и пытался рассказать.


ОК. Есть ли описание предложенной тобой терминологии? И где тогда лежит грать между сахаром и "лингвистическими абстракциями"?

MK>>>Основное отличие — лингвистические абстракции не привязаны к конкретному языку, примеры — оператор условного перехода, list comprehensiions, карринг, оператор for, foreach и т.п.


VD>>А вот тут уже не согласен. Конструкции вроде "оператор условного перехода, list comprehensiions, карринг, оператор for, foreach и т.п." могут отсуствовать в языке и тогда они будут синтаксическим сахаром для этого языка, а могут являться его базой.


MK>Опять же и синтаксический сахар и лингвистические абстракции — суть расширения синтаксиса базового языка. Но они имеют одно важное отличие. И заключается оно в том, что синтаксический сахар не привносит в язык новых абстракций.


Определи, плиз, по четче, понятие "новых абстракций".

MK> Он просто немного меняет синтаксис, как правило позволяя пропускать какие-то ключевые слова или использовать более краткую форму какой-либо конструкции.


foreach является новой абстракцией в этой терминалогии?

MK> Этим изменениям и названия-то как правило дать нельзя. И никакой разницы что есть в базовом языке, а чего нету. Мы же говорим о расширении. Ну да есть у нас в базовом языке такое понятие как функция (в смысле процедура, возращающая значение) ну это всего лишь означает что такое расширение нам не понадобится. А вот например в Mozart\Oz есть только процедуры и функции в нем — это расширение , которое транслируется потом в базовый синтаксис. И расширение это правильнее называть лингвистической абстракцией,а не сахаром, т.к. понятие функции достаточно абстрактно и целостно.


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

MK>Факт реализации на макросах ни о чем не говорит. Ну какая разница на макросах это сделано или доработкой компилятора.


Это самоценно, так как выделяет базис языка (то есть вещи без которых нельзя обойтись без потери полноты по Тьюрингу), и есть вещи которые делают язык выразительнее, богаче. Я бы такие вещи и называл сахаром. То есть для меня сахар это то что не входит в обязательный базис языка.

Твое поерделение "лингвистической абстракции" не подразумевает такое деление и автоматом для меня является ущербным (не отрахающей той сути о которой я говорю).

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


Я все сущьности языка могу как-то назвать. Если взять классический пример сахара, то "++" — это инкремент на еденицу, "+=" — это инкремент на Х, а "х + у" — это сложение. По твоей логике это тоже не должно являться сахаром. Но ты вроде говорил, что это все же сахар. Неувязочка?

VD>>Вот именно об этом я и говорю! Забвно, что lomeo поставил тебе оценку, но при этом во всю спорит со многими тем о чем ты тут сказал.


MK>Я попытался вникнуть в суть ваших разногласий, но ,честно говоря, быстро потерял нить. Как я понял, главная претензия к тебе что ты слишком широко толкуешь понятие синтаксического сахара.


Воообще-то понятие сахар я использую исключительно для того, чтобы иметь емкий термин выражающий дополнительные (сверх минимума) возможности языка. Другого термина не предложено, да и я много раз дал определение того что я понимаю под этим термином. Так что вроде бы недопонимания быть не должно. Но суть спора в другом. Изначально спор был о неком (мифическом с моей точки зрения) оверхэде ООП по сравнению с ФП. Причем в ходе спора стало четко видно, что речь идет не ФЯ и ООЯ, а именно о парадигмах ООП и ФП.

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

Термин "лексическая абстракция" хотя и близок к приемлемому все же не отражает сути (он по твои словам не позволяет поделить эти самые абстракции на базовые и расширения), а стало быть не пригоден для выражения мыслей по данному вопросу. Так что нужен или другой принцип или все же испльзовать тот самый термин сахар. По-моему, с указанными огворками он более чем приемлем. Хотя я лично не наставиваю. Если будт более подходящий термин, то я с радостью его прийму.

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


Я не говорил о том где заканчиваются приемущества. Я объяснял, что ФП-абстракции (давай это так называть) такие же реализации паттернов как и ОО-абстрации. И что говорить о оверхеде парадигм вообще говоря глупо. Можно только говорить о уместности выбора той или иной парадигмы для того или иного проектного решения и о количестве и мощьности реализованных в языке паттетнов.

Грубо говоря я говорил о том, что если взять некий сильно урезанный язык (например, С), то даже при выборе подходящей парадигмы (скажем, ФП), мы получим невероятный оверхед просто в следствии того, что язык не обладает нужными "абстракциями" и их приходится выражать более универсальными, но менее выразительными средствами. Точно так же будут обстоять дела с применением ООП в ФЯ не поддерживющих ООП и темболее в чистых ФЯ.

MK>Вот кстати отвлекусь от темы, но не могу удержаться от цитаты

MK>

MK>Возьмем наши споры. Они характеризуются чрезвычайной расплывчатостью, мы очень скоро уходим от основной темы. Это наша черта. Возьмем наши заседания. У нас теперь так много всяких заседаний, комиссий. До чего эти заседания длинны, многоречивы и в большинстве случаев безрезультатны и противоречивы! Мы проводим многие часы в бесплодных, ни к чему не ведущих разговорах. Ставится на обсуждение тема, и сначала обыкновенно и благодаря тому, что задача сложная, охотников говорить нет. Но вот выступает один голос, и после этого уже все хотят говорить, говорить без всякого толку, не подумав хорошенько о теме, не уясняя себе, осложняется ли этим решение вопроса или ускоряется. Подаются бесконечные реплики, на которые тратится больше времени, чем на основной предмет, и наши разговоры растут, как снежный ком. И в конце концов вместо решения получается запутывание вопроса.

MK>Сказано в 1918 году академиком Павловым в его лекции «О русском уме» на вручении Нобелевской премии.

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

MK>>>Очень хорошо и подробно об этом написано в CTM.


VD>>Осталось выяснить что такое CTM.


MK> Ну батенька, я уж думал что в "Декларативном программировании" все знают эту аббревиатуру, как и SICP. Это "Concepts, Techniques, and Models of Computer Programming", авторы Peter Van Roy и Seif Haridi.


1. Совершенно естественно, что знают это не все. Как минимум не все живут на этом форуме. Многие заходят сюда случайно.
2. Даже житие на этом форуме не позволяет оперировать редко используемыми абривиатурами и не быть при этом неуверенным в них.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.