|
|
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
###, Имелось ввиду не существующий, а "усовершенствованный" SQL с ограничениям накладываемыми 2 НФ, то есть в запросе подразумевается разделение на ключи и т.д. На самом деле у него немного другой синтаксис соответственно должен быть, но это косметическое преобразование. Не цепляйтесь к словам, попробуйте мыслить более глобально... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2010, 18:40:48 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
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. Но на чистом SQL что такое можно построить так, чтобы в построении это вызвало само себя? P.S. И вообще возм. выразить частичн.-рекурс. функции - говорит о том, что язык полный, а не о том, что функциональный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2010, 18:58:18 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Пилотажный, Про нормальную форму я с потолка ляпнул, я имел ввиду наличие ключей и связей только ключей, то есть именно когда таблица - отображение множества на значения. Но согласитесь что в прикладных задачах почти всегда так и есть. А какая это 3 или 5 форма честно гря не помню, но может потом посмотрю... А то что вы описали и есть рекурсивные CTE, и они вошли в стандарт SQL-1999 и поддерживается почти всеми "приличными" СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2010, 19:14:33 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_Junkie пишет: > Смотря что понимать под простотой. Простота понимания\задания - как > правило сильно коррелировано с простотой грамматики. Возми к примеру язык brainfuck, и ты увидешь, что это не так. Человеку с улицы > императивные принципы ближе чем декларативные. Современная прихологическая наука говорит, что примерно половине людей ближе одно, а другой -- второе. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2010, 14:45:11 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_JunkieПо результатам этого форума понимаю почему, потому как для 99 процентов программистов любой анализ того что, как и зачем они делают - это "мозговой эксперимент для гиков". Такой умственный пролетариат - мне сказали я делаю... :) Не считай других тупее себя - это большая (если не фатальная) ошибка. А то что ты предлагаешь: 1. Слишком примитивно, чтобы быть интересным теоретически (в SQL заложены гораздо более интересные концепции) 2. Совершенно бесполезно в практическом отношении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 08:33:10 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_Junkie Не цепляйтесь к словам, попробуйте мыслить более глобально... Почему элементарная техническая неграмотность (причем в своей хлебной области) так часто прикрывается красивыми словами об умении мыслить глобально, ссылками на уважаемые авторитеты и философствованиями на тему эзотерики (а третьего дня путает буквы при правильнописании)? Друг мой, SQL не имеет отношения к нормализации БД. Нормальные формы БД прекрасно себе существовали до всякого SQL-я, который классики уже подустали ругать за его популизм и некоторую убогость. Будьте грамотны, я Вас умоляю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 08:40:02 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_Junkie А то что вы описали и есть рекурсивные CTE, и они вошли в стандарт SQL-1999 и поддерживается почти всеми "приличными" СУБД. Только вот к реляционной алгебре отношения не имеет, вот незадача. В Oracle к примеру есть и более забавная конструкция (MODEL), вполне себе императивная. На практике удобно (местами) к теории отношения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 08:43:20 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
От обсуждения современного ФП сильно отошли в сторону. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 10:30:39 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
MasterZiv, сложность Brainfuck'а обусловлена принципиально коротким синтаксисом, в аналогичном C++ смотрелось бы проще. Хотя в чем то вы правы. Подытожу все что я утверждал: Чтобы не было претензий к нормальным формам, введем понятие ключевой формы - БД удовлетворяет ей если в ней у любой таблицы (запроса) есть ключевые колонки. Соответственно JOIN всегда идет по этим колонкам. То есть любая таблица (запрос) расматривается как отображение ключей (параметров) на значение (что кстати де-факто в математике и является определением функции). Тезис 1: 99% БД - в ключевой форме. То есть это не я придумал эту форму, это де-факто есть сейчас. Тезис 2: SQL при использовании с БД в ключевой форме - соотвествует всем принципам функционального программирования - то есть по сути является функциональным языком. Тезис 3: SQL-1999 в ключевой форме, реализует уже не реляционную, а классическую "функциональную" алгебру (а частности используемую в частично-рекурсивных функциях, ну и вообще в математических функциях) Изначально у многих здесь складывается впечатление что ФП - это лямбда-исчисление. То есть если бы автор назвал бы тему лямбда-исчисление в программировании, то да SQL был бы ни при чем. А так SQL самый яркий и популярный пример ФП. Gluk, специально для вас. Не надо спорить про ключевую форму - это определение, которое я ввел в этом посте. Спорить с определениями глупо, под обсуждение попадает тезисы, в частности - Тезис 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 11:40:55 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_Junkie Gluk, специально для вас. Не надо спорить про ключевую форму - это определение, которое я ввел в этом посте. Спорить с определениями глупо, под обсуждение попадает тезисы, в частности - Тезис 1. А с какого перепугу ты решил, что я буду спорить с твоими определениями? Определяй сколько влезет. Я чуть выше уже говорил, что не надо считать окружающих заведомо более тупыми чем ты сам ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 11:57:19 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_Junkie Тезис 2: SQL при использовании с БД в ключевой форме - соотвествует всем принципам функционального программирования - то есть по сути является функциональным языком. Тезис 3: SQL-1999 в ключевой форме, реализует уже не реляционную, а классическую "функциональную" алгебру (а частности используемую в частично-рекурсивных функциях, ну и вообще в математических функциях) Валяй, изобрази вычислимую функцию следования на любой из существующих реализаций SQL. После этого можно говорить о частично рекурсивных функциях. Совет, завязывай ты это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:01:08 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan), издеваешься? SELECT a.value+1 FROM a - изобразил... Совет, если ты чего-то не понимаешь, то это не значит что не понимают все остальные... Не надо считать себя умнее остальных ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:04:16 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_JunkieGluk (Kazan), издеваешься? SELECT a.value+1 FROM a - изобразил... Совет, если ты чего-то не понимаешь, то это не значит что не понимают все остальные... Не надо считать себя умнее остальных ;-) опа опа, а где же твое связывание по ключам ? столбцы параметров, столбец значений ??? меняем концепцию на лету ??? ага, достойно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:06:59 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Nitro_JunkieGluk (Kazan), издеваешься? SELECT a.value+1 FROM a - изобразил... Совет, если ты чего-то не понимаешь, то это не значит что не понимают все остальные... Не надо считать себя умнее остальных ;-) опа опа, а где же твое связывание по ключам ? столбцы параметров, столбец значений ??? меняем концепцию на лету ??? ага, достойно твоя функция следования, напоминаю, выглядела так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. А то что ты изобрази сейчас, так это ваще не разу не функция, а оператор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:08:57 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
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 обычно не используется. Что такое оператор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:18:28 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
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 практически ты ее не сможешь. Ты и нулевую то функцию не сможешь реализовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:22:26 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan), Почему, я реализовал выше... Просто SQL сервера ее выполнить не смогут (хотя может есть и те кто смогут). Кроме того функции следования, как и нулевые, в чистом виде на практике не используется. Так что это ты уже теоретизированием занимаешься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:31:49 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_JunkieGluk (Kazan), Кроме того функции следования, как и нулевые, в чистом виде на практике не используется. Так что это ты уже теоретизированием занимаешься. С этого места подробнее, а какие еще базовые функции имеются в определении частично рекурсивных функций? Это у тебя не множество частично рекурсивных функций получается, а какое-то совсем другое множество Нет ничего практичнее хорошей теории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:37:53 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan), все завязываем, я вижу что ты совсем невъезжаешь, без обид... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:47:35 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_JunkieGluk (Kazan), все завязываем, я вижу что ты совсем невъезжаешь, без обид... Без обид так без обид. Действительно, чего уж обижаться если кто-то понял твою несуразицу лучше чем ты сам ? Я тебе еще пару страниц предлагал валить со своим SQL в другую тему и не мусорить здесь. Там бы тебя никто не трогал :) Действительно, чего обижаться ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:57:50 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
как зачинатель топика скажу: Конечно, еще из школьной математики известно, что функцию можно задать как аналитически, так и таблично. Раз функцию можно задать таблично, то далее можно развивать мысль в эту сторону, размышляя о функциональности SQL и его связи с ФП. Это очень увлекательная мысль, которая уже развернулась на 10 страниц обсуждения, но лично мне она не очень интересна как предмет дискуссии. Лично мне все-таки не очень понятно, как из таких строительных кирпичиков как: лямбда функции, замыкание, рекурсия можно писать ПО "завтрашнего дня". Пока я вижу, что декларативности, как это есть в SQL этот подход не несет. Моя чуйка подсказывает, что большое будущее все-таки за декларативным подходом и ФП скорее занимает промежуточное положение между императивным подходом и декларативным. Очень бы хотелось увидеть что-то вроде книги GoF но для ФП. Пока в нете есть хорошая статья в последнем номере журнала fprog.ru, с первого раза не понял многого, буду перечитывать еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 13:44:13 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
надеюсь что antares еще поглядывает в этот тред и может когда-нибудь вернется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 13:46:57 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Ggg_old, Кстати, а лямбда-исчисление вообще говорит что-нибудь о декларативности. То есть я как понимаю оно говорит о возможности создания новых функций из уже существующих, но про базовый класс функций ничего не сказано. Он вообще предполагается императивный или декларативный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 13:57:58 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Ggg_old, Это не совсем ответ на Ваш вопрос, но может быть Вам будет интересно. Есть такая книга (на англ.) Real World Haskell вроде как рассматриваются практические приложения на haskell'е ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 14:33:47 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Ggg_old, Почитайте про LINQ to Objects . Как раз пример декларативного подхода к обработке коллекций в памяти, внешне несколько напоминает SQL. На самом деле LINQ - синтаксический сахар, а реально работают функции высшего порядка и лямбды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 14:39:17 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36442132&tid=1343707]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
219ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 566ms |

| 0 / 0 |
