powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Функциональное программирование
25 сообщений из 300, страница 10 из 12
Функциональное программирование
    #36439514
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
###,

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

Не цепляйтесь к словам, попробуйте мыслить более глобально...
...
Рейтинг: 0 / 0
Функциональное программирование
    #36439537
Фотография Пилотажный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie###,

Нормальная форма SQL'я имеется ввиду

ляп, однако, если под SQL и нормальными формами понимаем одно и тоже :)

Это структура данных (располаг. в таблицах) находятся в разных нормальных формах.
2 НФ - это все данные в 1 НФ и каждый неключевой атрибут (знач. в поле) минимально функционально зависит от первичного ключа.

SQL отдельно и данные отдельно

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

Да в нечистых SQL разных СУБД добавлены возможности построения рекурсивных выражений, но это уже не тот SQL.
P.S. В T-SQL SQL Server 2005 добавлена конструкция WITH
и общая схема рекурсии (из д-ции)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
WITH ИмяCTE (Определение) AS
(
  SELECT … -- Выборка с начальным условием,
  UNION ALL -- Объединение результатов
  SELECT … -- Выборка определяющаяя шаг рекурсии
     INNER JOIN CTE.ДочернийID = ИмяТаблицы.РодительскийID -- Присоединение "по родителю"
) 
что впрочем можно было и на T-SQL, но громоздко и с применением перем., циклов, вспом. табл., ...

Но на чистом SQL что такое можно построить так, чтобы в построении это вызвало само себя?
P.S. И вообще возм. выразить частичн.-рекурс. функции - говорит о том, что язык полный, а не о том, что функциональный.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36439554
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пилотажный,

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

А то что вы описали и есть рекурсивные CTE, и они вошли в стандарт SQL-1999 и поддерживается почти всеми "приличными" СУБД.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36440851
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie пишет:

> Смотря что понимать под простотой. Простота понимания\задания - как
> правило сильно коррелировано с простотой грамматики.

Возми к примеру язык brainfuck, и ты увидешь, что это не так.

Человеку с улицы
> императивные принципы ближе чем декларативные.

Современная прихологическая наука говорит, что примерно половине
людей ближе одно, а другой -- второе.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441424
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieПо результатам этого форума понимаю почему, потому как для 99 процентов программистов любой анализ того что, как и зачем они делают - это "мозговой эксперимент для гиков". Такой умственный пролетариат - мне сказали я делаю... :)

Не считай других тупее себя - это большая (если не фатальная) ошибка.
А то что ты предлагаешь:

1. Слишком примитивно, чтобы быть интересным теоретически (в SQL заложены гораздо более интересные концепции)
2. Совершенно бесполезно в практическом отношении
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441427
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie
Не цепляйтесь к словам, попробуйте мыслить более глобально...

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

Друг мой, SQL не имеет отношения к нормализации БД. Нормальные формы БД прекрасно себе существовали до всякого SQL-я, который классики уже подустали ругать за его популизм и некоторую убогость. Будьте грамотны, я Вас умоляю
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441430
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie
А то что вы описали и есть рекурсивные CTE, и они вошли в стандарт SQL-1999 и поддерживается почти всеми "приличными" СУБД.

Только вот к реляционной алгебре отношения не имеет, вот незадача. В Oracle к примеру есть и более забавная конструкция (MODEL), вполне себе императивная. На практике удобно (местами) к теории отношения не имеет.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441552
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От обсуждения современного ФП сильно отошли в сторону.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441743
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, сложность Brainfuck'а обусловлена принципиально коротким синтаксисом, в аналогичном C++ смотрелось бы проще. Хотя в чем то вы правы.

Подытожу все что я утверждал:
Чтобы не было претензий к нормальным формам, введем понятие ключевой формы - БД удовлетворяет ей если в ней у любой таблицы (запроса) есть ключевые колонки. Соответственно JOIN всегда идет по этим колонкам. То есть любая таблица (запрос) расматривается как отображение ключей (параметров) на значение (что кстати де-факто в математике и является определением функции).

Тезис 1: 99% БД - в ключевой форме. То есть это не я придумал эту форму, это де-факто есть сейчас.
Тезис 2: SQL при использовании с БД в ключевой форме - соотвествует всем принципам функционального программирования - то есть по сути является функциональным языком.
Тезис 3: SQL-1999 в ключевой форме, реализует уже не реляционную, а классическую "функциональную" алгебру (а частности используемую в частично-рекурсивных функциях, ну и вообще в математических функциях)

Изначально у многих здесь складывается впечатление что ФП - это лямбда-исчисление. То есть если бы автор назвал бы тему лямбда-исчисление в программировании, то да SQL был бы ни при чем. А так SQL самый яркий и популярный пример ФП.

Gluk, специально для вас. Не надо спорить про ключевую форму - это определение, которое я ввел в этом посте. Спорить с определениями глупо, под обсуждение попадает тезисы, в частности - Тезис 1.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441787
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie
Gluk, специально для вас. Не надо спорить про ключевую форму - это определение, которое я ввел в этом посте. Спорить с определениями глупо, под обсуждение попадает тезисы, в частности - Тезис 1.

А с какого перепугу ты решил, что я буду спорить с твоими определениями? Определяй сколько влезет.
Я чуть выше уже говорил, что не надо считать окружающих заведомо более тупыми чем ты сам ???
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441800
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie
Тезис 2: SQL при использовании с БД в ключевой форме - соотвествует всем принципам функционального программирования - то есть по сути является функциональным языком.
Тезис 3: SQL-1999 в ключевой форме, реализует уже не реляционную, а классическую "функциональную" алгебру (а частности используемую в частично-рекурсивных функциях, ну и вообще в математических функциях)


Валяй, изобрази вычислимую функцию следования на любой из существующих реализаций SQL.
После этого можно говорить о частично рекурсивных функциях. Совет, завязывай ты это.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441811
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan), издеваешься? SELECT a.value+1 FROM a - изобразил...

Совет, если ты чего-то не понимаешь, то это не значит что не понимают все остальные... Не надо считать себя умнее остальных ;-)
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441818
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieGluk (Kazan), издеваешься? SELECT a.value+1 FROM a - изобразил...

Совет, если ты чего-то не понимаешь, то это не значит что не понимают все остальные... Не надо считать себя умнее остальных ;-)

опа опа, а где же твое связывание по ключам ? столбцы параметров, столбец значений ???
меняем концепцию на лету ??? ага, достойно
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441824
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Nitro_JunkieGluk (Kazan), издеваешься? SELECT a.value+1 FROM a - изобразил...

Совет, если ты чего-то не понимаешь, то это не значит что не понимают все остальные... Не надо считать себя умнее остальных ;-)

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

твоя функция следования, напоминаю, выглядела так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
x      f(x)
--------
 0        1 
 1        2 
...
 1000   1001 
...

А то что ты изобрази сейчас, так это ваще не разу не функция, а оператор
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441845
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan),

Млин, мне все разжевывать? SELECT a.x1,...,a.xn,a.value+1 FROM a... Вообще в SQL есть дебилизм с неоднозначным определением ключей, то есть в идеале (если бы SQL проецировался изначально в ключевой форме) синтаксис должен был быть следующим SELECT {n} a.value+1 JOIN a.x1=keys.1 AND a.x2=keys.2 ... AND a.xn+keys.n, но что выросло то выросло....

Хотя в общем случае конечно функция следования выглядит как SELECT N.key,N.value+1 FROM N, где N - тождественная функция, в рекурсивном CTE - задается как
with N(key,x) {
SELECT N.key+1,N.x+1 FROM N
}
ну или что-то типа того. Но опять-таки в чистом виде функция следования в SQL обычно не используется.

Что такое оператор?
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441858
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieGluk (Kazan),

Млин, мне все разжевывать? SELECT a.x1,...,a.xn,a.value+1 FROM a... Вообще в SQL есть дебилизм с неоднозначным определением ключей, то есть в идеале (если бы SQL проецировался изначально в ключевой форме) синтаксис должен был быть следующим SELECT {n} a.value+1 JOIN a.x1=keys.1 AND a.x2=keys.2 ... AND a.xn+keys.n, но что выросло то выросло....

Хотя в общем случае конечно функция следования выглядит как SELECT N.key,N.value+1 FROM N, где N - тождественная функция, в рекурсивном CTE - задается как
with N(key,x) {
SELECT N.key+1,N.x+1 FROM N
}
ну или что-то типа того. Но опять-таки в чистом виде функция следования в SQL обычно не используется.

Что такое оператор?

Забыл ? операторами в твоей модели являются select-запросы (операторы подстановки, примитивной рекурсии и минимизации аргумента), а функциями у тебя являются конечные выборки. Поскольку функция слелования определена на счетном множестве, реализовать на SQL практически ты ее не сможешь. Ты и нулевую то функцию не сможешь реализовать
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441881
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan),

Почему, я реализовал выше... Просто SQL сервера ее выполнить не смогут (хотя может есть и те кто смогут). Кроме того функции следования, как и нулевые, в чистом виде на практике не используется. Так что это ты уже теоретизированием занимаешься.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441905
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieGluk (Kazan),
Кроме того функции следования, как и нулевые, в чистом виде на практике не используется. Так что это ты уже теоретизированием занимаешься.

С этого места подробнее, а какие еще базовые функции имеются в определении частично рекурсивных функций? Это у тебя не множество частично рекурсивных функций получается, а какое-то совсем другое множество Нет ничего практичнее хорошей теории.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441929
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan), все завязываем, я вижу что ты совсем невъезжаешь, без обид...
...
Рейтинг: 0 / 0
Функциональное программирование
    #36441957
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieGluk (Kazan), все завязываем, я вижу что ты совсем невъезжаешь, без обид...

Без обид так без обид. Действительно, чего уж обижаться если кто-то понял твою несуразицу лучше чем ты сам ? Я тебе еще пару страниц предлагал валить со своим SQL в другую тему и не мусорить здесь. Там бы тебя никто не трогал :) Действительно, чего обижаться ???
...
Рейтинг: 0 / 0
Функциональное программирование
    #36442086
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как зачинатель топика скажу:
Конечно, еще из школьной математики известно, что функцию можно задать как аналитически, так и таблично. Раз функцию можно задать таблично, то далее можно развивать мысль в эту сторону, размышляя о функциональности SQL и его связи с ФП. Это очень увлекательная мысль, которая уже развернулась на 10 страниц обсуждения, но лично мне она не очень интересна как предмет дискуссии.
Лично мне все-таки не очень понятно, как из таких строительных кирпичиков как:
лямбда функции, замыкание, рекурсия можно писать ПО "завтрашнего дня".
Пока я вижу, что декларативности, как это есть в SQL этот подход не несет. Моя чуйка подсказывает, что большое будущее все-таки за декларативным подходом и ФП скорее занимает промежуточное положение между императивным подходом и декларативным. Очень бы хотелось увидеть что-то вроде книги GoF но для ФП.
Пока в нете есть хорошая статья в последнем номере журнала fprog.ru, с первого раза не понял многого, буду перечитывать еще.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36442099
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надеюсь что antares еще поглядывает в этот тред и может когда-нибудь вернется.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36442132
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old,

Кстати, а лямбда-исчисление вообще говорит что-нибудь о декларативности. То есть я как понимаю оно говорит о возможности создания новых функций из уже существующих, но про базовый класс функций ничего не сказано. Он вообще предполагается императивный или декларативный?
...
Рейтинг: 0 / 0
Функциональное программирование
    #36442245
Jartisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old,

Это не совсем ответ на Ваш вопрос, но может быть Вам будет интересно. Есть такая книга (на англ.)
Real World Haskell
вроде как рассматриваются практические приложения на haskell'е
...
Рейтинг: 0 / 0
Функциональное программирование
    #36442270
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old,

Почитайте про LINQ to Objects . Как раз пример декларативного подхода к обработке коллекций в памяти, внешне несколько напоминает SQL.
На самом деле LINQ - синтаксический сахар, а реально работают функции высшего порядка и лямбды.
...
Рейтинг: 0 / 0
25 сообщений из 300, страница 10 из 12
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Функциональное программирование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]