LINUX.ORG.RU

[RFC?] Почему функциональное программирование называется функциональным?


0

0

Собственно, почему? Скажем, лет 20-30 назад это было подходящим названием - основными идеями были функции как объекты первого класса, безымянные функции (лямбда функции), рекурсия (оптимизация хвостовой рекурсии), ну и прочее лямбда-исчисление (как одна из моделей ФП - реально не один ЯП не является чистым интерпретатором лямбда исчисления).

Но сейчас у меня сложилось впечатление, что нынешнее ФП правильнее называть скорее алгебраическим программированием - основными идеями теперь стали алгебраические типы данных, более общие отображения вместо «обычных» функций (морфизмы), ну и прочие категорные понятия.

И у меня появилось следующее мнение. Когда-то (после того как была установлена Тьюринг-полнота лямбда исчисления и оно нашло свою реализацию в Lisp-1 и ML) считалось что лямбда исчисление «это оно». Тем не менее лямбда исчисление это просто Тьюринг полный вычислитель (один из), а вот основными значащими объектами являются категорные понятия (типов и отображений) - чисто декларативные понятия, которые (для реализации собственно «программирования») нужно транслировать в представления того или иного вычислителя - это может быть как лямбда исчисление так и какая-нибудь машина с состояниями (допусти, регистро-стековая машина).

Что знающие люди думают по этому поводу?)

★★★★
Ответ на: комментарий от quasimoto

Нужно как-то доказывать?

есть пять (или шесть - для определения малой категории) аксиом, определяющих категориальную структуру. чтобы доказать, что некоторый universe of discourse обладает категориальной структурой, достаточно проверить их выполнение:

  • 1. каждая стрелка имеет домен и кодомен
  • 2. для стрелок с соответствующими доменами и кодоменами определена композиция
  • 3. для каждого объекта существует id-стрелка
  • 4. композиция стрелок ассоциативна
  • 5. id-стрелка является нейтральным элементом относительно операции композиции

но вообще, категория - это очень слабая абстракция, следовательно категориальную структуру можно обнаружить практически везде; вопрос в том, зачем?

jtootf ★★★★★
()
Ответ на: комментарий от archimag

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

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

Вот знаешь ли ты, к примеру, что была создана грамматика танцев? В 30-х годах, советским филологом-тёткой. Предпологалось, что она окажется годной для обучения танцам (дети, изучаем грамматику, спряжения, склонения, over 9500 различных past perfect/present continuous, и внезапно — всё, вы умеете танцевать !!1111)

Однако, обучать танцам в стиле «делай как я» оказалось удобнее. Возникли фьюжн стили, переходы, такой ремикс движений (который «исследованием грамматики танцев» запарились бы открывать)

Для текстов подобные модели тоже были созданы. Кури в направлении семиотики, обобщённого пространства текстов, психологии восприятия, создания и продвижения брендов, и т.п.

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

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

Изучение программирования это может и забавно, да только не имеет отношения к программированию как практическому роду деятельности и просто не соответствует теме данного форума.

имеет непосредственное отношение — ты не кустарно рожаешь код, ты делаешь исполняемую модель-код, и как ПОЛЕЗНАЯ модель, она должна быть понятной, адекватной, нужной пользователю — соответствовать вот тем количественным критериям качества

anonymous
()
Ответ на: комментарий от archimag

>> неужели программирование больше «литературно» чем формально?

Естественно, программирование как вид деятельности гораздо ближе к литературе, чем к математике

Ближе к работе переводчика-толмача: ты не пишешь Read Only креатифф, ты переводишь с человеко-понятного языка на машино-понятный. Чтобы переводить не как надмозг, а «литературно», «красиво», ты должен овладевать идиомами, фразеологизмами и понятиями, то бишь ПОНЯТНЫМИ моделями.

Надмозг-толмач-кун не нужын — с этим и тупая железка-компилятор справится.

anonymous
()
Ответ на: комментарий от anonymous

> книги-игры, «Хазарский словарь»

У Павича кроме «эстетства» вообще больше нет ничего, я уже давно подобную макулатуру за литературу не считаю.

Когда возникла необходимость создавать тексты в промышленных

масштабах, измеримого качества и критерия, возникла и модель/теория


на уровне процесса, а не кустарного ремесла.



Вы хотите сказать, что это модель повсеместно используется для создания «выдающегося» программного обеспечения? Или что вы вообще хотите сказать? И какое это имеет отношение к теме обсуждения?

ты не кустарно рожаешь код, ты делаешь исполняемую модель-код


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

она должна быть понятной, адекватной, нужной пользователю —

соответствовать вот тем количественным критериям качества



Можно ссылку на критерии? Что за критерии вообще? При том количественные?

Что вы здесь вообще за абстракций нагородили? Я не мысли, не смысла не уловил.

archimag ★★★
()
Ответ на: комментарий от anonymous

> Ближе к работе переводчика-толмача

Я полагаю, в таком случае, конструкторы самолётов тоже такие переводчики, которые переводят потребности военных стратегов на язык слесарей? Что за бред.

archimag ★★★
()
Ответ на: комментарий от archimag

> Самым важным, помимо смыслового содержания, свойством хорошей литературы является ясное, чёткое, последовательное изложение мысли на протяжении многих и многих страниц текста (здесь отсылаю к произведениям Чехова и Хэмингуэя, как к вершинам подобного творчества).

Хорошая литератута — понятие весьма растяжимое. Есть разные стили, есть разные подходы. Вот например, Умберто Эко как семиотик или Борхес/Кортасар/Борис Виан или такой поэт Велимир Хлебников — это хорошая литература?

Джеймс Джойс «Уллис» — это хорошая литература? Некоторые говорят: да, по ощущениям, хорошая — а я не могу дочитать больше 5-10 страниц подряд, засыпаю на этом потоке сознания. Использую как снотворное.

Хеммингуэй тоже довольно мутен и нуден местами, кстати.

Здесь всё зависит от цели, которую преследовал автор текста. И «ясное, чёткое, последовательное изложение мысли на протяжении многих и многих страниц текста» — явно те та цель.

Это не тема (смысл текста), а рема (средство реализации).

Поскольку сохранения ясности и последовательности для больших программ является, как и для литературных произведений, чрезвычайно сложным, то в основном по этому и можно оценить уровень программиста/

архитектора.

нет такой особой цели «сохранить ясность и последовательность», нет её особой сложности. Просто есть общий техпроцесс подготовки текстов, и если ты ему следуешь, выбирая правильные средства реализации — ясность и последовательность образуются сами собой, вследствие применения этого процесса.

А сложность разработки алгоритмов очень локальна и её преодоление является чисто технической проблемой,

Я вижу сложность не только в конкретных алгоритмах(средствах), но и необходимость введения нужных понятий, сущностей чисто технически, для уменьшения сложности. Типа строительные леса-подпорки.

anonymous
()
Ответ на: комментарий от archimag

«Этот самолёт не будет летать. Он некрасив»

anonymous
()
Ответ на: комментарий от anonymous

> Борхес/Кортасар/Борис Виа

Ну вы и намешали кучу.

поэт Велимир Хлебников — это хорошая литература


Ценность Хлебникова не сколько в его произведениях, сколько во вкладе в развитие поэтического творчества.

Хорошая литератута — понятие весьма растяжимое.


Да нет, не очень, и это не понятие.

Джеймс Джойс «Уллис» — это хорошая литература?


Безусловно, только сильно испорченная критиками, которые раздули Джойса как, наверное, никого больше. Тут сразу вспоминаю Маркеса, который говорил, что чуть было не сварил пресловутого петуха в «Полковнику никто не пишет», а критики превратили его (петуха) в символ революции.

Хеммингуэй тоже довольно мутен и нуден местами, кстати.


Что за места такие?

нет такой особой цели «сохранить ясность и последовательность»,

нет её особой сложности.



Как же, вы просто наверное реального кода, написанного другими людьми, никогда не видели.

Просто есть общий техпроцесс подготовки текстов, и если ты ему

следуешь, выбирая правильные средства реализации — ясность и


последовательность образуются сами собой, вследствие применения


этого процесса.



Вы что-нибудь сложнее хелловорда писали? Ссылка на описание техпроцесса будет?

archimag ★★★
()
Ответ на: комментарий от archimag

ОК, давай помедленнее разбёрём. Что ты понимаешь под «качеством» вообще, что — под «качеством текста», «качеством текста литературного произведения», а что — под «качеством программы» (ну и до кучи, «качество используемого языка программирования»)?

Вообще, дай определение «качества». Хотя бы попытайся дать. Нет его — это одно из базовых понятий вроде точки, прямой, формы и содержания, соответствия формы и содержанию. Меры.

Отсюда вопрос — если ты не знаешь *меры* количественно, как ты можешь утверждать, что одна вещь качественнее другой? Если мера каждого вида вещей разная, как утверждать, что один вид качественне другого?

Понятие качества подразумевает понятие меры и цели. Меры и цели чего? Процесса, ибо тогда создаваемый продукт обладает воспроизводимыми, стабильными характеристиками.

Какими сущностями оперирует процесс? моделями и инструментами

anonymous
()
Ответ на: комментарий от archimag

> Ценность Хлебникова не сколько в его произведениях, сколько во вкладе в развитие поэтического творчества.

Вот! И я о том — он писал не для читателей-конечных пользователей, а для таких же как и он, писателей. Писатель-технолог.

Да нет, не очень, и это не понятие.

А что это? Дай тогда определение или критерий «хорошести литературы».

Как же, вы просто наверное реального кода, написанного другими людьми, никогда не видели.

Вот я и говорю — не путай цель со средством.

Ссылка на описание техпроцесса будет?

http://en.wikipedia.org/wiki/Personal_Software_Process http://en.wikipedia.org/wiki/Capability_Maturity_Model

anonymous
()

> Почему функциональное программирование называется функциональным?

Потому что оно хорошо функционирует. А императивное — императивное потому что каждый считает себя императоромЪ всехЪ байтикофф и битикоффЪ.

anonymous
()
Ответ на: комментарий от anonymous

> Отсюда вопрос — если ты не знаешь *меры* количественно, как ты

можешь утверждать, что одна вещь качественнее другой?


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

Понятие качества подразумевает понятие меры и цели. Меры и цели чего?

Процесса, ибо тогда создаваемый продукт обладает воспроизводимыми,


стабильными характеристиками.



Стандартный трёп в стиле PBOK и SMK. «Качество есть следствие качественных процессов», угу. Спасибо, я не религиозен.

archimag ★★★
()
Ответ на: комментарий от anonymous

> http://en.wikipedia.org/wiki/Personal_Software_Process

http://en.wikipedia.org/wiki/Capability_Maturity_Model


А, я понял, вы зарабатываете на жизнь не написание кода, а торговлей «методологическим опиумом». Оставьте эти байки для «высоких» кабинетов. Хороший программный продукт есть следствие, прежде всего, таланта разработчиков + благоприятного стечения обстоятельств.

archimag ★★★
()
Ответ на: комментарий от archimag

>> Отсюда вопрос — если ты не знаешь *меры* количественно, как ты

можешь утверждать, что одна вещь качественнее другой?


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


Не способен. Оценка уже подразумевает критерий, по которому оцениваем. Возможно, что покамест неявный, нечёткий (мозг это умеет, да).
Оценка без критериев — это субъективные, *невоспроизводимые другими* ощущения.

Оценка по озвученным критериям — это метод, процесс, измеримый и воспроизводимый.

«Качество есть следствие качественных процессов», угу.


А что тогда, по-твоему есть качество? Заметь, я тоже не даю определение — я говорю, что если есть метод (желательно, научный), процесс (желательно стабильный и измеримый статистически) — мы имеем некие количественные характеристики, по которым можно это качество оценить.

Качество как императивный результат того-то. Качество как «функциональное значение» — это да, любопытно.

Если это не так (количественных измерений нет), как мы можем вообще что-то оценивать? Субъективно? Что в этом случае измеряется (ощущается) ?

Спасибо, я не религиозен.


это не проповедь конкретной методологии — а выяснение понятий сути, измеримости работы, процесса и результата и «качества работы» как результата в более-менее объективных определениях.

anonymous
()
Ответ на: комментарий от archimag

И что, ты утверждаешь, что статистически эти обстоятельства невоспроизводимы и кроме как субъективно алхимической герменевтикой невоспринимаемы?

Духом святым ты там чтоле, программы пишешь? Исихаст экой.

anonymous
()
Ответ на: комментарий от anonymous

> А что тогда, по-твоему есть качество?

Я смотрю и «вижу»: это хорошо, а это плохо. Я развивал этот навык чтением код различных open source проектов. Зачем мне это как-то формализовать?

И что, ты утверждаешь, что статистически эти

обстоятельства невоспроизводимы



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

archimag ★★★
()
Ответ на: комментарий от archimag

Так же как для программных текстов, есть технологии и процессы для текстов литературных или около того. Есть конкретные курсы и технологии «как стать песателем», «как попасть текстом туда-то», «как написать длинные тексты, чтобы смогли осилить» и т.п. — вполне себе научно, промыслово, поставлено на поток с воткнутой турбинкой.

Давно уже разработка текстофф ведётся не на уровне «субъективных ощущений» и кустарщины, а стабильно, зрело, воспроизводимо и с гарантируемым результатом. Для овладевания таким уровнем разработки и нужно понимание моделей и процессов, и лежащих в их основе теорий, результатом применения которых и является «талант», а не сумбурные субъективные впечатления/ощущения.

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


следствие понимания цели продукта, прежде всего. И меры. То есть, понимания качества.

anonymous
()
Ответ на: комментарий от archimag

>> А что тогда, по-твоему есть качество?

Я смотрю и «вижу»: это хорошо, а это плохо. Я развивал этот навык чтением код различных open source проектов. Зачем мне это как-то формализовать?


Нас таких одиночек over 9500 штук. И понятия качества в голове у всех — разные. Как они смогут совместно работать?

Ещё Грэхэм обращал внимание на то, что команда талантливых разработчиков не нуждается в особом руководстве


исключительно потому, что Innere Führung имеется, и руководство своими руками *талантливые* разработчики осуществляют самостоятельно. Это не значит, что руководства нет вообще.

А все эти методологии преследуют своей целью получить что-нибудь приличное из толпы разработчиков уровнем ниже среднего.


эта цель и приоритетность (масштабируемость over мощь_способностей_каждого) мне и самому не нравится.

выдающиеся программные продукты создают не они.


а статистика проповедников-методологов говорит другое. Что такое «выдающиеся продукты», «хорошая литература» или «good enough software» — тайна сия велика есть. Цели скромнее должны быть.

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

Порядок как бы творчеству не мешает.

anonymous
()
Ответ на: комментарий от archimag

И вот тогда-то я ввел свои пресловутые «индивидуальные
графики», за которые меня, наконец-то, и поперли...

Новогиреево - Реутово


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

! * 500-! ** *
! * * * * 400-! * * * *
! * * * * * 300-! * * * * * * *
! * * * * * * * * * 200-! * * * * * * * *
! * * * * * 100-! * * *
!* 0 ---------------------------------------------
10-е 26-е

А это - Алексей Блиндяев, член КПСС с 1936 г., потрепанный
старый хрен:

! 500-!
! 400-!
! 300-!
! ----- * ------ * ------- * --------- * ---200-!
! 100-!
! 0 --------------------------------------------
10-е 26-е

А вот уж это - ваш покорный слуга, экс-бригадир монтажников
птурс, автор поэмы «Москва - Петушки»:

! * **** 500-! * * * *
! *** * * * 400-! * * * *
! * * * * 300-! * *** * *
! * * * * 200-! * * * *
! ** * * 100-!
! 0 --------------------------------------------
10-е 26-е

Ведь правда, интересные линии? Даже для самого
поверхностного взгляда - интересные? У одного - Гималаи,
Тироль, бакинские промыслы или даже верх кремлевской стены,
которую я, впрочем, никогда не видел.
У другого: предрассветный бриз на реке Кама, тихий всплеск
и бисер фонарной ряби. У третьего - биение гордого сердца,
песня о буревестнике и девятый вал. И все это - если видеть
только внешнюю форму линии.
А тому, кто пытлив (ну, мне, например) эти линии
выбалтывали все, что только можно выболтать о человеке и о
человеческом сердце: все его качества, от сексуальных до
деловых, все его ущербы, деловые и сексуальные. И степень его
уравновешенности, и способность к предательству, и все тайны
подсознательного, если только были эти тайны.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.