powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / SQL - полнота по тьюрингу
174 сообщений из 174, показаны все 7 страниц
SQL - полнота по тьюрингу
    #36357578
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря не знал куда запостить, поэтому запощу сюда...

Возник такой вопрос. Как известно SQL 92 не обладает свойствами полноты по Тьюрингу. Если его рассмотреть в контексте частично рекурсивных функций, то грубо говоря обшая семантика join'ов и выражений, реализует операторы выбора, подстановки и смещения, логикой Group by можно реализовать общерекурсивные функции, а вот примитивную рекурсию в нем не реализуешь (например задачи связанные с графами). В 99-м году соответственно вышел новый стандарт, в который включили возможность рекурсивных запросов (в виде CTE). При помощи них в частности можно реализовывать и недостающую примитивную рекурсию, тем самым SQL:1999 по идее можно считать полным по Тьюрингу. Но почему-то в "гугле" считается что это свойство он приобрел после SQL:2003 с появлением windows функций. При этом их как раз можно реализовать при помощи вложенных подзапросов (даже не прибегая к примитивной рекурсии). Может я чего-то недопонимаю, но если у кого есть какие мысли на сей счет было бы интересно послушать.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36357861
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раз пять прочитал но так и не понял насчет чего должны быть мысли


а при помощи вложенных запросов СТЕ не реализовать
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36357867
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема: «Производство как адекватная ментальность»

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

Показ баннера спонтанно детерминирует контент, осознав маркетинг как часть производства. Сегмент рынка упорядочивает рейтинг, осознав маркетинг как часть производства. Раскрутка, не меняя концепции, изложенной выше, синхронизирует конструктивный потребительский рынок, не считаясь с затратами. Итак, ясно, что побочный PR-эффект абстрактен. Объемная скидка усиливает продвигаемый рекламный бриф, отвоевывая свою долю рынка. Комплексный анализ ситуации масштабирует комплексный анализ ситуации, повышая конкуренцию.

Баланс спроса и предложения однородно тормозит стратегический рыночный план, полагаясь на инсайдерскую информацию. Маркетингово-ориентированное издание стремительно масштабирует конструктивный имидж предприятия, осознав маркетинг как часть производства. Стимулирование сбыта развивает маркетинг, используя опыт предыдущих кампаний. Общество потребления переворачивает конструктивный медийный канал, используя опыт предыдущих кампаний.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36357942
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin
Ваше сообщение напомнило мне случай, произошедший сегодня. Постучалась ко мне некая индийская девушка с софтонепонятночем. После обмена несколькими совершенно пустыми репликами я сказал: "Мне жаль, но ты не прошла тест Тьюринга". Она ответила "Sorry".
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36358020
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Постучалась ко мне некая индийская девушка с софтонепонятночем. После обмена несколькими совершенно пустыми репликами я сказал: "Мне жаль, но ты не прошла тест Тьюринга". Она ответила "Sorry".
да она познакомится поди хотела, а вы ей про тьюринга...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36358646
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекурсивные CTE естественно через вложенные запросы не сделаешь. Собственно поэтому SQL-92 не полон по тьюрингу, то есть чисто при помощи него некоторые задачи, как например поиск в дереве самого верхнего предка не решишь. Придется использовать обычные (императивные языки). В то время как при помощи SQL:1999 (рекурсивные CTE похоже создавались с оператора примитивной рекурсии) можно решать любые задачи, хоть симплекс метод реализовать, теоретически во всяком случаем.
Вопрос на самом деле вот в чем, например в таких ссылках :
http://www.valuedlessons.com/2009/08/sql-is-now-turing-complete.html
Везде упоминается что SQL полон только With CTE и Windowing. При этом Windowing можно реализовать вложенными подзапросами. Соответственно кто ошибается, я или они?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36358856
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieВезде упоминается что SQL полон только With CTE и Windowing. При этом Windowing можно реализовать вложенными подзапросами . Соответственно кто ошибается, я или они?IMHO, не всегда. К примеру, если в таблице без PK имеются неотличимые строки,
попробуйте-ка их пронумеровать в стиле ROW_NUMBER()OVER() подзапросами.
Не уверен, правда, что я это всё корректно "по-Тьюрингу" написал.
Может, и не к месту...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36358873
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap, ладно с ROW_NUMBER()OVER() в некоторых случаях можно найти выход.
А вот как быть с LAG() OVER() или LEAD() OVER()
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36359018
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LAG (как и LEAD) получается в общем-то легко, ищем при помощи MAX подзапроса значение ORDER'а которое меньше значения ORDER'а текущего ряда, при этом order'ам в хвост записываем все ключи - соответственно получаем ключи которые предыдущие по порядку, и для них получаем значение LAG. Наличие повторяющихся строк в контексте полноты по Тьюрингу не рассматривается (долго объяснять почему).
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36360064
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это чё, тема кандидатской?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36360522
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разве LAG и LEAD есть в стандарте ANSI?
http://savage.net.au/SQL/index.html
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36360523
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕНiap, ладно с ROW_NUMBER()OVER() в некоторых случаях можно найти выход.Каким образом? Пример можно посмотреть?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36360545
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapКаким образом? Пример можно посмотреть?
стандартным SQL вряд ли. А вот через rowid/dbkey в подзапросе - почему нет?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36360614
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie wrote:

> подзапросов (даже не прибегая к примитивной рекурсии). Может я чего-то
> недопонимаю, но если у кого есть какие мысли на сей счет было бы
> интересно послушать.


У меня мысль по этому поводу одна: мне абсолютно всё равно, обладает
ли SQL полнотой по Тьюрингу или нет. Или даже ещё лучше так:
чем меньше в SQL полноты по Тьюрингу, тем лучше. Потому что это --
язык запросов, а не язык программирования.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36360632
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitriapКаким образом? Пример можно посмотреть?
стандартным SQL вряд ли. А вот через rowid/dbkey в подзапросе - почему нет?Вопрос-то теоретический, связан именно со стандартом!
В обычной жизни таблиц с неотличимыми строками вообще быть не должно.
Первая нормальная форма, понимаете ли.
В каждой таблице должен быть PRIMARY KEY
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36360636
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie wrote:

> Собственно поэтому SQL-92 не полон по тьюрингу, то есть чисто при помощи
> него некоторые задачи, как например поиск в дереве самого верхнего
> предка не решишь.

А зачем тебе это всё ?

Соответственно кто
> ошибается, я или они?

А какая разница ? Вот в серверах, которые я использую, нет этих CONNECT,
WITH, WINDOW и пр. А если и были бы, я бы их не использовал.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36360658
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap wrote:

> В обычной жизни таблиц с неотличимыми строками вообще быть не должно.
> Первая нормальная форма, понимаете ли.

Не первая, а вторая (и все последующие).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36360968
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

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

З.Ы.: Для тех кто не в курсе, императивные языки, которые задаются как последовательность операторов (обычные языки - Java, C#, ассемблеры и т.п.), а декларативные условно говоря в виде правил, связей, ограничений и т.п. (как SQL)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361018
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie,
что скажете насчет "M" (-> Oslo), к примеру? Занимаетесь похожим?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361210
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

Oslo, а сейчас Microsoft SQL Server Modeling, вобщем-то интеграционная технология, она пытается как-то объединить то что есть.

Мы же в этом смысле работаем над революционной технологией. То есть у ООП как и у SQL очень много недостатков именно как у парадигм (ООП со своей привязкой атрибутов к одному объекту, отсутствием "множественных" (от нескольких объектов) полей, разделением полей и методов и т.п., а SQL с вообще матричной логикой-таблиц и строк (соответственно без наследования), и кучей избыточности в самом языке), соотвественно в проекте заложена концептуально другая "свойство-ориентированная" парадигма, имеющая черты SQL, CLOS (Common Lisp'а - функциональных ООП), формализующая все императивные подходы в функциональные... Физическое выполнение идет через SQL, но это прозрачно для разработчика. Хотя это вобщем-то другая тема.... :)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361230
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT a.key,COUNT(*) FROM A a JOIN A b WHERE b.order<a.order OR (b.order=a.order AND b.key<a.key) GROUP BY a.key

если известно что key уникально - по сути ROW_NUMBER() OVER(ORDER BY order)....
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361236
Фотография Пилотажный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieMasterZiv,

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

З.Ы.: Для тех кто не в курсе, императивные языки, которые задаются как последовательность операторов (обычные языки - Java, C#, ассемблеры и т.п.), а декларативные условно говоря в виде правил, связей, ограничений и т.п. (как SQL)

А в чем парадигма-то? Или до публикации никому ничего?

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

Или это касательно SQL - сделать что-то вроде T-SQL и PL/SQL, но но без императивных конструкций?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361296
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пилотажный,

Описание появится где-то через месяц (если правда первые внедрения не пойдут раньше :( ), в двух словах тяжело объяснить, (все равно как если тоже самое для SQL делать, если вы про него ни разу не слышали).

С T-SQL и PL/SQL некорректно сравнивать те идут от SQL пытаясь как-то приблизится к ООП (что невозможно из-за привязки атрибутов к одному объекту и отсутствию "множественных" полей, к Common Lisp'у кстати шансов было бы больше приблизится, но у него тоже "множественных" полей нету, как и формализаций группировок (типа GROUP BY)). Поэтому по большому счету все сводится к добавлению сбоку императивных функций.

И это не только парадигма работы с данными, там все в одном вплоть до пользовательского интерфейса.

Кстати чисто из любопытства : какие вы декларативные функциональные и логические языки знаете? особенно прикладные в бизнес-решениях? на самом деле интересно... тока не говорите что Haskell и :) ...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361397
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня три момента смущают:
1Мы же в этом смысле работаем над революционной технологией.Еще живы воспоминания о предыдущем революционере

2Описание появится где-то через месяц (если правда первые внедрения не пойдут раньше :( )

3И это не только парадигма работы с данными, там все в одном вплоть до пользовательского интерфейса.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361409
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieС T-SQL и PL/SQL некорректно сравнивать те идут от SQL пытаясь как-то приблизится к ООП
PL/SQL - это АДА, расширенная SQL для работы с таблицами, как отдельным типом данных.
Дейкстра убедительно показал, что IF-FI и DO-OD имеют право на существование, так что чисто декларативные программы - это исключение. Никакой алтернативы SQL и таблицам пока нет.
При разработке очередной "революционной технологии" все надо иметь ввиду.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361441
Фотография Пилотажный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie
Кстати чисто из любопытства : какие вы декларативные функциональные и логические языки знаете? особенно прикладные в бизнес-решениях? на самом деле интересно... тока не говорите что Haskell и :) ...
В смысле "знаю" - что-то программировал, так конечно? И бизнес-решения - что сам или коллективы, где работал, использовали?

Прологи, а также привлекался к программированию на Рефале для одного проекта.

И когда нужно быстрее что-то приличное лабать - как-то сразу не до этих языков.

Вообще в бизнес-решениях по наблюдениям - не густо функц. и лог.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361531
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пилотажный,

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

Под революционным я имел ввиду, не то что завтра перевернет мир и все такое (это покажет время)... А то что не как во всех современных фреймворках (а таких тысячи) ООП, SQL, UI принимаются за аксиому, и идет надстройка как бы их так связать вместе... а предлагается другой принцип (язык если хотите) построения бизнес-решений, в общем-то самодостаточный, и как предполагается универсальный. В нем нету различия на поля и функции (поля частный случай), которые объединены в свойства, все они множественные, формализованы группировки, наследование поддерживается по принципу defgeneric в CLISP, формализованы формы в контексте объектов\свойств и т.п.

В принципе некоторые частичные решения где-то иногда проскакивают (концепция свойств, правда одиночных и в очень странном виде есть в C#,Delphi и т.д., множественная диспетчеризация похожа на функциональные языки и т.п.), некоторых принципиально нигде не видел, но важно что в ней идет все вместе в единой монолитной конструкции...

Про драйвер, да я видел, тоже смешно... Но если задуматься то даже крупные игроки иногда предлагают технологии основная суть которых, решить какую-то небольщую проблемку что нужно нажать не 5 а 3 кнопки, или как с LINQ (немного утрировано конечно) что можно прямо в родном синтаксисе select написать ( а не в кавычках и вызвать метод ) и это преподносится как откровение... И почему то над ними никто не смеется :)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361540
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergUser,

А что вас про UI смущает, если вы получаете высоко-декларативную логику, то естественно "легко" формализовать (и даже автоматически выстроить) ее представление пользователю..
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361563
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,

Не понял вашу мысль... Да АДА вообщем-то обычный императивный, даже не функциональный, язык, в этом смылсе PL\SQL чем принципиально лучше, обычной связки Java\C# + SQL-92 (99)... То что альтернатив SQL в плане декларативных языков нет мы в курсе... И у него кстати масса недостатков, одного факта того, что он не с объектами и свойствами работает а таблицами и строками уже достаточно, что его нельзя самого по себе использовать в разработке бизнес-приложений... Но разве это как раз не повод "развить" его и сделать полностью декларативную среду разработки ;-)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361696
Фотография Пилотажный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie
Пилотажный,
Нет, не обязательно знаете... Просто слышали, где-то когда-то... а дальше google и можно найти описание чего угодно и сравнить.

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

Nitro_Junkie
Под революционным я имел ввиду, не то что завтра перевернет мир и все такое (это покажет время)... А то что не как во всех современных фреймворках (а таких тысячи) ООП, SQL, UI принимаются за аксиому, и идет надстройка как бы их так связать вместе... а предлагается другой принцип (язык если хотите) построения бизнес-решений


РЕВОЛЮЦИОННОСТЬ - всё же это когда много народу в чем-то мучалось и страдало - и тут опа - революция и счастье всем в этом. Вот, например, появление SQL - революция.
А какое счастье, в чем и каким мученникам предполагает дать Ваше создание?



Nitro_Junkie
крупные игроки иногда предлагают технологии основная суть которых, решить какую-то небольщую проблемку что нужно нажать не 5 а 3 кнопки,


Тут интерфейс хотел заменить у одного внедренного уже модуля (такой как для детей типа "дави пипку" на серьезный такой, похожий на всякий другой в программах от софтгигантов) - так операторы возмутились.
Вот что народу надо - "дави пипку", "нажми на кнопку - получишь результат и твоя мечта осуществится".
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361788
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пилотажный,

Проблема программистов в том что при создании технологий они не умеют подходить системно к решению проблем... Обычно увидят какое-то неудобство, и раз вот уже фреймворк\библиотека\технология, кто-то увидит еще и раз такая же хрень сверху... Итого получается какое-нить J2EE, в котором чтобы написать Hello World нужно 7 лет образования, 5 лет опыта и 2 часа работы.
А проблема математиков, что они не программисты... Их всегда уносит в теорию... Так появляются Haskell'ы, Erlang'и и иже с ними

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

Я не говорю, что это абсолютно бесполезно уменьшать количество кнопок. Речь шла о позиционировании этих "серьезных" нововведений... Похоже на тот самый новый драйвер с какими-то "мелкими" фишками...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36361887
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что касается мучеников... То у нас сейчас типовые настройки делают бизнес-аналитики... без программистов... то есть вообще без программистов... Конечно если возникнет вопрос с подключением симплекс-методов и иже с ними там надо будет использовать точки входа и подключать программистов, но например в управлении торговлей, расчетами, CRM и т.п. таких вопросов не возникает... А в конечном итоге, предполагается что формы будут создавать сами пользователи, а особо продвинутые пользователи и бизнес-логику (конечно не тети Маши :) )
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36362278
Alex_new1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkie,

На счет Осло зря вы так отмахиваетесь , вот пожалуйста что пишут в МСе

If Microsoft is able to achieve this vision and its goals—taking into account the required huge support and integration among all of the technical runtimes and “Oslo” (the “Oslo” product team really has to get support from many different Microsoft product teams)—it could really be the start of a revolution in the applications-development field. It will be like changing from assembler and native code bits to high-level programming languages—even better, because, as Doug says, every person (business user) will be, in a certain way, a programmer, because business-expert users will be creating applications.

http://msdn.microsoft.com/en-us/architecture/aa699436.aspx
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36362409
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie wrote:
> парадигмы программирования). И общая идея нужно обоснование того, что
> любую задачу можно решить при помощи ее (естественно есть точки входа
> для императивных языков, но цель максимально минимизировать их
> учавствие, вплоть до нуля).

Если идея в том, чтобы любую задачу написать на SQL -- то идея дурацкая
безотносительно полноты SQL.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36362442
web_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie_мод,

То что альтернатив SQL в плане декларативных языков нет мы в курсе... И у него кстати масса недостатков, одного факта того, что он не с объектами и свойствами работает а таблицами и строками уже достаточно, что его нельзя самого по себе использовать в разработке бизнес-приложений...

Хм, а я таблицы рассматриваю как раз как массивы объектов, а поля как свойства. Именно поэтому не позволяю программистам именовать таблицы во множественном числе, потому что плохо читается SELECT Apples.colour FROM. Да, у таких объектов нет методов. Но, в Оракле, например, можно создавать таблицы объектов с методами (хотя работать с этим всем практически невозможно, т.к. сейчас у них слишком много ограничений), а в Постгрессе схемы можно расматривать как объекты с методами (а в следующей версии у этих "объектов" даже появятся свойства). Кстати, очевидно ваше сравнение объекты-свойства и таблицы-строки не коректно.

Nitro_JunkieПроблема программистов в том что при создании технологий они не умеют подходить системно к решению проблем... Обычно увидят какое-то неудобство, и раз вот уже фреймворк\библиотека\технология, кто-то увидит еще и раз такая же хрень сверху...
А вот это святая правда, дающая твердейшую почву для ваших начинаний.

Nitro_Junkieтиповые настройки делают бизнес-аналитики... без программистов... то есть вообще без программистов... Конечно если возникнет вопрос с подключением симплекс-методов и иже с ними там надо будет использовать точки входа и подключать программистов, но например в управлении торговлей, расчетами, CRM и т.п. таких вопросов не возникает... А в конечном итоге, предполагается что формы будут создавать сами пользователи, а особо продвинутые пользователи и бизнес-логику
Интересную задачу вы берёте. В принципе, это как упростить в компании пирамиду, убрать, так сказать, лишние слои абстракции и подчинить всех рабочих сразу генеральному директору. Хотя, мнение, что отношение Java\C# + SQL далекто от оптимального у меня сомнений не вызывает, улучшать есть что, и даже в революционном смысле.

авторIt will be like changing from assembler and native code bits to high-level programming languages—even better, because, as Doug says, every person (business user) will be, in a certain way, a programmer, because business-expert users will be creating applications
Если честно, - пустые слова, чистый маркетинг. Совершенно очевидно, что бизнес-пользователь, даже на просто SQL ничего серьёзного не напишет, - придётся стать программистом. Куда усложнять то? Да чего уж там душой кривить, даже бизнес-процес в IDEF0 будет сидеть и долго разглядывать... Возможным подходом может стать визард, но уж очень продвинутый, страшно представить насколько :) Потому что у пользователей не так хорошо получается придумывать решения, но сравнительно хорошо получается описывать проблемы - между этими двумя шагами великая работа.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36362725
Фотография Пилотажный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie
Обычно увидят какое-то неудобство, и раз вот уже фреймворк\библиотека\технология, кто-то увидит еще и раз такая же хрень сверху... Итого получается какоенить J2EE, в котором чтобы написать Hello World нужно 7 лет образования, 5 лет опыта и 2 часа работы.


Программисты делают инструмент для программистов же - и само собой ничего лишнего, компактней, четче, короче, ...
Так и в любой сфере деятельности - кому-то непрофи в этом просто дать весь инструмент - так и тоже как применять - и если сам по себе годы может вникать. Ускоряют процесс - специальные учебные курсы.

Nitro_Junkie
Проблема программистов в том что при создании технологий они не умеют подходить системно к решению проблем...
А проблема математиков, что они не программисты... Их всегда уносит в теорию... Так появляются Haskell'ы, Erlang'и и иже с ними


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

Nitro_Junkie
в теорию... Так появляются Haskell'ы, Erlang'и


Erlang, Haskell, ... - это уже прикладные issue общих теории, из которых же C, Paskal, Java, ...
И это видится - как вот есть Европа и Северная Америка (Java, Delphi, C++, C#, ...) - вроде все везде задают, но есть и Азия, Африка, Южная Америка - и там могут жить без Сев. Америки и Европы, и есть такое, чего нет и не может быть в Сев.Америке и Европе, и это великолепно,
и ... когда-то и эти регионы моугт выйти на такой уровень, что будут задавать почти всё в Мире.


К Microsoft Oslo и Rosario - что-то темнили-мудрили и потом заявили, что в основе - UML. (Смех в зале). И где эти сверхязыки суперинжениринга - TLA+ и ...?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36363966
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пытаюсь вот поизучать OCAML. Но функциональный код, даже на окамле читается крайне тяжело, что-бы понять алгоритм, надо превратить мозг в интерпретатор рекурсивных вражений, что мозгу вообще не свойственно по природе. А если использовать чисто императивные возможности, то не видно особых преимуществ перед существующими языками.
Я в сове время очень долго не принимал преимуществ ООП. Вернее понимал, что инкапсуляция - это хорошо, а вот ооп-проектирование не понимал по-настоящему. Понимание идеалогии пришло только после прочтения книги GoF. C функциональным программированием сейчас такая-же проблема, технологию можно изучить, а вот методологи как ее использовать пока не нашел.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36364399
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_new1,

Достаточно просто почитать описание Oslo, и увидеть что они предлагают... ;-)

MasterZiv,

Безотносительно нашего проекта, можно узнать почему? Я понимаю что у любого расширения должны быть императивные черты, чтобы реагировать на события, но если их формализовать в виде например ввода свойства или изменения класса объекта, а все остальное рассматривать как следствие декларативных правил, то почему нет. Кроме того я понимаю что есть явные баги SQL Server'ов, когда очевидно что надо использовать index seek, а не scan с проверкой, но их можно пообходить hint'ами, тем более что основные функции оптимизации заключаются в основном в выборе join'ов, и обработки вложенных подзапросов, все остальное не дает экспоненциального роста производительности...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36364417
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
web_fox Хм, а я таблицы рассматриваю как раз как массивы объектов, а поля как свойства. Именно поэтому не позволяю программистам именовать таблицы во множественном числе, потому что плохо читается SELECT Apples.colour FROM. Да, у таких объектов нет методов. Но, в Оракле, например, можно создавать таблицы объектов с методами (хотя работать с этим всем практически невозможно, т.к. сейчас у них слишком много ограничений), а в Постгрессе схемы можно расматривать как объекты с методами (а в следующей версии у этих "объектов" даже появятся свойства). Кстати, очевидно ваше сравнение объекты-свойства и таблицы-строки не коректно.

Если у вас свойство от нескольких объектов, что бывает в большинстве случаев. Например остаток товара на складе, и очевидно что должна быть таблица с ключом склад, товар и свойством остаток количество, вы ее как что рассматриваете?

Вы немного сами себе противоречите, говорите что рассматриваете таблицы как массивы объектов и поля как свойства и при этом что сравнение объекты-свойства и таблицы-строки не коректно.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36364442
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie wrote:

> Безотносительно нашего проекта, можно узнать почему? Я понимаю что у

0) императивность в языке запросов -- это зло. Я так считаю.
1) может и просто тупо зациклиться.
2) не все СУБД это поддерживают.

В общем, пока очень сильно не припрёт, я лучше сам дерево
разошью и буду обычные запросы писать. Результата транзитивного
замыкания дерева для 80% работы с деревом должно хватать.
А писать поиск в глубину на SQL -- это маразм.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36364484
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пилотажный,

Мы немного о разных вещах говорим, я имел ввиду скорее кто инициирует процесс создании технологий. Понятно что дальше в самом процессе создания учавствуют и директора, и менеджеры и уборщицы и т.п. Но идеологов на мой взгляд можно условно разделить на 2 категории.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36364507
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

0) а в языке запросов и нету императивности, вы наверное имели ввиду рекурсивность
1) они и в императивном языке могут зациклиться
2) вообще они вошли в стандарт SQL:1999, который поддерживают очень многие SQL сервера (Postgre, MSSQL, Oracle и т.п.)

Хотя не спорю, что поддержка рекурсивных запросов в SQL далека от совершенства ... Другой вопрос, насколько часто такие проблемы возникают в бизнес-решениях, насколько они сложны, и насколько их нельзя решить "фиксацией" текущих параметров при проведении транзакции(то есть важна целостность во времени, если не понятно могу пояснить что имеется ввиду).... Если отбросить задачи производства то доля такого функционала очень небольшая (да и в производстве не сильно больше)... Поэтому чисто из-за этого ставить крест на чисто декларативных подходах, это все равно что лечить головную боль ампутацией головы.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36365073
Фотография Пилотажный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldпытаюсь вот поизучать OCAML. Но функциональный код, даже на окамле читается крайне тяжело, что-бы понять алгоритм, надо превратить мозг в интерпретатор рекурсивных вражений, что мозгу вообще не свойственно по природе. А если использовать чисто императивные возможности, то не видно особых преимуществ перед существующими языками.
Я в сове время очень долго не принимал преимуществ ООП. Вернее понимал, что инкапсуляция - это хорошо, а вот ооп-проектирование не понимал по-настоящему. Понимание идеалогии пришло только после прочтения книги GoF. C функциональным программированием сейчас такая-же проблема, технологию можно изучить, а вот методологи как ее использовать пока не нашел.

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

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

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

Так и с декларативными языками - эдак зачем-то начать писать и думать иероглифами.


Вот ещё революционное "программирование без программистов" , из советских времен ещё идущее и пытающееся заявиться широко
"Буран" и язык программирования ДРАКОН
(там и URL на общие описания)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36365087
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkieсделать полностью декларативную среду разработки
Можно, но не нужно. Чаще всего цикл лучше рекурсии.
Nitro_Junkie SQL не с объектами и свойствами работает а таблицами и строками уже достаточно, что его нельзя самого по себе использовать в разработке бизнес-приложений
Ровно наоборот: SQL это рел. алгебра и ее мы и используем при разработки. Объектной алгебры увы не существует.
Операция SQL имет вид: таблица3=таблица1 операция таблица2 ...
Ни один язык не позволяет делать: объект3=объект1 операция объект2
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36365155
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,

а что по вашему в структурном программировании (и ООП) вызов функции как не реляционная алгебра? то есть например:

имя склада = имя(склад(документ))

документ JOIN склад ON склад.id=докуметн.склад
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36365207
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пилотажный,

ООП добавил очень важный аспект программирования как наследование, только при этом почему-то потребовал присваивать функцию одному объекту и обзывать это дело методом. Как следствие получил массу гемора в виде : неоднозначного определение класса для метода, невозможность множественного полиморфизма, проблемы с модульностью и т.п. В функциональных же языках такой привязки нету (собсно их это как правило и отличает), а наследование они поддерживают как возможность "объединение" функций в одну. Правда кроме Common Lisp'а таких языков я честно гря не припомню. Но они очень недружелюбны что в плане синтаксиса, что в плане поддержки, а жаль :( , впрочем с другой стороны может и хорошо что развитие программирования застряло в "тупиковой" в этом смысле ветке ООП, и порой забавно наблюдать как его пытаются скрестить с SQL, не понимая что это невозможно :)
Хотя справедливости ради, даже в Common Lisp'е не догадались сделать поля множественными и сделать их частным случаем функций, так что он тоже не особо был бы панацеей.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36365212
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,

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

> 1) они и в императивном языке могут зациклиться

Запрос на SQL может зациклится ? Не, это уже слишком.
Не может.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36365245
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

An incorrectly composed recursive CTE may cause an infinite loop. For example, if the recursive member query definition returns the same values for both the parent and child columns, an infinite loop is created. To prevent an infinite loop, you can limit the number of recursion levels allowed for a particular statement by using the MAXRECURSION hint and a value between 0 and 32,767 in the OPTION clause of the INSERT, UPDATE, MERGE, DELETE, or SELECT statement. This lets you control the execution of the statement until you resolve the code problem that is creating the loop. The server-wide default is 100. When 0 is specified, no limit is applied. Only one MAXRECURSION value can be specified per statement. For more information, see Query Hints (Transact-SQL).

Вполне может, просто по умолчанию стоит ограничение 100 и это не считается исключением... В конце концов в императивном языке тоже можно поставить через аспект ограничение в глубину 100 и возвращать null когда он достигается. То есть и в SQL и в языках "в чистую" рекурсивный цикл не обнаруживается... Так что не велика разница
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36365370
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie wrote:
> Автор: "Nitro_Junkie"
> MasterZiv,
>
> An incorrectly composed recursive CTE may cause an infinite loop. For

Я просто прочитал это

"1) они и в императивном языке могут зациклиться"

как

"1) они и в декларативном языке могут зациклиться"

Извини.

ПРоцитированное понятно.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36366195
Фотография Пилотажный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieПилотажный,

ООП добавил очень важный аспект программирования как наследование, только при этом почему-то потребовал присваивать функцию одному объекту и обзывать это дело методом. Как следствие получил массу гемора в виде : неоднозначного определение класса для метода, невозможность множественного полиморфизма, проблемы с модульностью и т.п. ...

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

И да - можно обойтись без ООП, используя другие структуры для получения таких же позитивных эффектов, которые дает ООП.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36366464
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пилотажный,

Да методы у класса объекта... в этом их проблема...

Проблемы полиморфизма не из-за множественного наследования. Классический пример - столкновение кораблей и астероидов - когда для функции collide надо сделать реализации - астероид-корабль, астероид-астероид, корабль-астероид, и корабль-корабль, в ООП это будет выглядеть вот так :

abstract class Thing {
abstract void collide(Thing thing);

abstract void collideAsteroid(Asteroid asteroid);
abstract void collideSpaceShip(SpaceShip spaceShip);
};
class Asteroid extends Thing {
void collide(Thing thing) {
thing.collideAsteroid(this);
}
void collideAsteroid(Asteroid asteroid) {
System.out.println("Asteroid 2 hits asteroid 1");
}
void collideSpaceShip(SpaceShip spaceShip) {
System.out.println("Asteroid 2 hits spaceShip 1");
}
};
class SpaceShip extends Thing {
void collide(Thing thing) {
thing.collideSpaceShip(this);
}
void collideAsteroid(Asteroid asteroid) {
System.out.println("SpaceShip 2 hits asteroid 1");
}
void collideSpaceShip(SpaceShip spaceShip) {
System.out.println("SpaceShip 2 hits spaceShip 1");
}
};

в случае функций делаются реализации collide(Asteroid,Asteroid), collide(Asteroid,SpaceShip), collide(SpaceShip,Asteroid), collide(SpaceShip,SpaceShip), после чего все они через какую-нить конструкцию как defgeneric объединяют в один метод collide(Thing,Thing)... Чувствуете разницу. А теперь еще представьте что SpaceShip из другого модуля и функция collide относится к этому модулю, и попробуйте сделать это в ООП не нарушив модульности...

И кстати отказ в от множественного наследования, из-за неоднозначности выбора реализаци тоже редкий дебилизм... Даже в базовых классах уже чувствуется, когда есть интерфейс Map и абстрактный класс AbstractMap... А уж сколько раз я на эту проблему при построении архитектуры нарывался... :( Но как ни крути Java, C# заняли весь рынок, и уйти от них очень не просто...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367153
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkieа что по вашему в структурном программировании (и ООП) вызов функции как не реляционная алгебра?
реляционная алгебра работает с множествами, а функции - с элементами множеств.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367168
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieДа... и к вам тот же вопрос, часто вы сталкиваетесь с задачами рекурсии (кроме классификации) при разработке бизнес-приложений?
Часто - все функции на конструкторском графе
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367185
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieООП добавил очень важный аспект программирования как наследование, только при этом почему-то потребовал присваивать функцию одному объекту и обзывать это дело методом.
Все гораздо хуже: функция - это не метод (т.к. ничего не изменяет), и не свойство. В ООП вообще функциям нет законного места.
А наследование существует со времен С как коструирование новых типов данных.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367216
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkieв случае функций делаются реализации collide(Asteroid,Asteroid), collide(Asteroid,SpaceShip), collide(SpaceShip,Asteroid), collide(SpaceShip,SpaceShip), после чего все они через какую-нить конструкцию как defgeneric объединяют в один метод collide(Thing,Thing)
Я бы сделал наоборот: функция collide(Thing,Thing) сама разбиралась-бы с типами своих параметров
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367252
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модреляционная алгебра работает с множествами, а функции - с элементами множеств.

Элемент множества это подмножество из одного элемента. Вся разница в том, что SQL сразу обрабатывает несколько элементов, а функция грубо говоря по очереди, но с вычислительной точки зрения они абсолютно эквивалентны...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367278
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieДа... и к вам тот же вопрос, часто вы сталкиваетесь с задачами рекурсии (кроме классификации) при разработке бизнес-приложений?
Часто - все функции на конструкторском графе

Забыл упомянуть в вопросе, что не касаясь задач производства (особенно узкоспециализированных)... :) Там много может быть рекурсий не вопрос, хотя объемы там в любом случае как я понимаю небольшие, так что как минимум по скорости использование CTE не так уж и критично...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367298
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieООП добавил очень важный аспект программирования как наследование, только при этом почему-то потребовал присваивать функцию одному объекту и обзывать это дело методом.
Все гораздо хуже: функция - это не метод (т.к. ничего не изменяет), и не свойство. В ООП вообще функциям нет законного места.
А наследование существует со времен С как коструирование новых типов данных.

Функция не может записывать в поля объекта? Или метод обязательно что-то должен изменять в объекте? В спецификации ООП ничего не сказано, о mutability ни объектов ни функций ни методов.
Вы немножко путаете с "чистыми" (математическими) функциями, и соответствующими языками (кроме Haskell'а никого даже и не вспомню), но речь шла не про них...

Вот кстати не помню в C наследования, там типы данных можно наследовать? а то на чистом C писал ну очень давно...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367307
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_Junkieв случае функций делаются реализации collide(Asteroid,Asteroid), collide(Asteroid,SpaceShip), collide(SpaceShip,Asteroid), collide(SpaceShip,SpaceShip), после чего все они через какую-нить конструкцию как defgeneric объединяют в один метод collide(Thing,Thing)
Я бы сделал наоборот: функция collide(Thing,Thing) сама разбиралась-бы с типами своих параметров

Это как? Через if и instanceof... Так по такой логике зачем вообще наследование и полиморфизм, если всегда можно все через if'ы решить? :)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367335
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieЭлемент множества это подмножество из одного элемента.
Нет. Также как один элемент это не список из одного элемента. Это разные типы данных.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367340
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieЗабыл упомянуть в вопросе, что не касаясь задач производства (особенно узкоспециализированных)
Любое сборочное. Объемы ~ 10^7 вершин
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367354
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieФункция не может записывать в поля объекта?
Не должна. И еще вопрос - какого объекта.
Nitro_Junkie Или метод обязательно что-то должен изменять в объекте?
Обязательно, на то он и метод.
Nitro_JunkieВот кстати не помню в C наследования, там типы данных можно наследовать? а то на чистом C писал ну очень давно...
Во многих ЯП (напр эйфория) можно конструировать новые типы на основе уже существующих - вот вам и наследоване и даже множественное.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367359
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieЭто как? Через if и instanceof... Так по такой логике зачем вообще наследование и полиморфизм, если всегда можно все через if'ы решить? :)
Действительно, зачем ?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367376
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieЭлемент множества это подмножество из одного элемента.
Нет. Также как один элемент это не список из одного элемента. Это разные типы данных.

Не правильно выразился... Элемент множества можно рассматривать как подмножество из одного элемента. Таким образом переход от SQL к структурному программированию есть. И наоборот если рассмотреть множество всех возможных параметров функции и ее результатов, то получается таблица. Это конечно очень условное доказательство эквивалентности SQL и структурного программированию. Но идею я надеюсь вы поняли...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367420
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модНе должна. И еще вопрос - какого объекта.
Любого из параметров... Если не должна то зачем она вообще нужна? и как вообще по вашему в функциональном\структурном программировании изменяются объекты?

_модИли метод обязательно что-то должен изменять в объекте?
Обязательно, на то он и метод.
Издеваетесь? С точки зрения надежности архитектуры, идеальный вариант, когда большинство классов immutable'ы, то есть методы конструируют результат, не изменяя ничего в объектах... Интересно почитать где написано, что метод обязан изменять объект.
Вообще интересно, а как тогда называются все то что относится к классу например String, который как известно immutable...

_модВо многих ЯП (напр эйфория) можно конструировать новые типы на основе уже существующих - вот вам и наследоване и даже множественное.
То что множественное наследование есть во многих ЯП я в курсе, речь шла про C...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367436
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieЭто как? Через if и instanceof... Так по такой логике зачем вообще наследование и полиморфизм, если всегда можно все через if'ы решить? :)
Действительно, зачем ?

Затем что понятие наследования существует в человеческой логики. То есть даже человек далекий от программирования понимает что роза это цветок, то есть у нее как и у всех цветов есть интерфейс дарения на 8 марта и т.п.. И программы написанные с использованием наследования более читабельны, как следствие расширяемы надежны и т.п.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367501
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie
Хотя справедливости ради, даже в Common Lisp'е не догадались сделать поля множественными и сделать их частным случаем функций, так что он тоже не особо был бы панацеей.
А можно раскрыть что такое "множественные поля"?
И имея некоторый опыт Сommon Lisp c трудом могу предствить поле объекта в виде не-функции (применительно к CL естественно).
Конечно это можно реализовать благо Lisp - язык гибкий, но вы ведь не об этом?
Извиняюсь за некоторое отклонени от темы.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367580
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antares0Nitro_Junkie
Хотя справедливости ради, даже в Common Lisp'е не догадались сделать поля множественными и сделать их частным случаем функций, так что он тоже не особо был бы панацеей.
А можно раскрыть что такое "множественные поля"?
И имея некоторый опыт Сommon Lisp c трудом могу предствить поле объекта в виде не-функции (применительно к CL естественно).
Конечно это можно реализовать благо Lisp - язык гибкий, но вы ведь не об этом?
Извиняюсь за некоторое отклонени от темы.

Множественные поля это первичные (хранимые) данные не от одного объекта (класса) а сразу от нескольких. То есть например для музыканта, студии записи может быть один контракт... формально в Java это реализуется, как

class Музыкант {
Map<Студия, Контракт> Контракты_музык_со_студ;
};

или

class Студия {
Map<Музыкант, Контракт> Контракты_музык_со_студ;
};

То есть с дополнительным полем, прикладным интерфейсом, ручным созданием выбором имплементации и т.п. В то же время если бы поля сделали как частный случай функции у которой скажем вместо реализации стоит скажем initial... То есть :

Контракт Контракты_музык_со_студ(Студия, Музыкант) initial;

Соответственно обращаться как к функции (что кстати удобно если поле из первичного надо вычисляемым сделать), а записывать через оператор = например
Контракты_музык_со_студ(Studio,BrainStorm) = контракт043;

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

А в Common Lisp'е насколько я понял поля представлены в виде слотов и они все-таки принадлежат ровно одному объекту :( хотя может я чего-то не нашел, так как документирован он просто жестко...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367691
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как страшно далека дискуссия от нужд трудового пролетариата.
кстати я для себя вывел один из надежных признаков того, будет ли язык успешным и популярным или нет.
в нормальных языках пишут так: a=2+2
а в непопулярных так: a=2 2 + или + 2 2.
и обвешайте язык хоть гирляндой монад, замыканий и еще пачкой умных концепций, но 2 2 + - убьет любое начинание. Именно поэтому, когда я я выбирал какой из ФП языков поизучать, то несмотря на восторженные отзывы о хаскеле он отправился вслед за моим любимым фортом :)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367711
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldкак страшно далека дискуссия от нужд трудового пролетариата.
кстати я для себя вывел один из надежных признаков того, будет ли язык успешным и популярным или нет.
в нормальных языках пишут так: a=2+2
а в непопулярных так: a=2 2 + или + 2 2.
и обвешайте язык хоть гирляндой монад, замыканий и еще пачкой умных концепций, но 2 2 + - убьет любое начинание. Именно поэтому, когда я я выбирал какой из ФП языков поизучать, то несмотря на восторженные отзывы о хаскеле он отправился вслед за моим любимым фортом :)

Знаете если бы SQL не был бы общепризнанным и вам дали бы его в первый раз... Я думаю ваша реакция была такой же... Нежелание разбираться в проблемах технологий, а просто плыть по течению, это больше характеризует вас, а не языки... no offence ;-)

ps: хотя когда с раной борются косметикой, а не швами, ничего хорошего из этого по определению не получается
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367727
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieКонтакт Контракты_музык_со_студ(Студия, Музыкант) initial;

Соответственно обращаться как к функции (что кстати удобно если поле из первичного надо вычисляемым сделать), а записывать через оператор = например
Контракты_музык_со_студ(Studio,BrainStorm) = контракт043;

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


А в Common Lisp'е насколько я понял поля представлены в виде слотов и они все-таки принадлежат ровно одному объекту :( хотя может я чего-то не нашел, так как документирован он просто жестко...
1. Чем представлены поля и чему принадлежат определяет метакласс.
Даже для стандартного варианта есть еще принадлежность классу.
Значение слота может принаадлежать другому слоту. Точне оба слота содержат ссылку на один и тот же объект.
2. Слот предсавляется в виде (slot-value 'класс 'слот) и обычно это детали внутрипакетной работы.
Опять же как я говорил функция.
3. Для магии типа вашей есть accessor-ы
Для примера (setf (Контракты_музык_со_сту Studio BrainStorm) контракт043)
Точнее это самая простая реализация.
Полноценная реализация на mop это магия чуть повыше, но вполне частая для реализации сложных хотелок.
Жаловаться на отсутсвие доков при наличии HyperSpec-а и AMOP?
Другой вопрос о паттернах и use-case-ах, но это другой вопрос.
P.S. Меня конечно несколько понесло, но люблю точность.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367737
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldкак страшно далека дискуссия от нужд трудового пролетариата.
кстати я для себя вывел один из надежных признаков того, будет ли язык успешным и популярным или нет.
в нормальных языках пишут так: a=2+2
а в непопулярных так: a=2 2 + или + 2 2.
и обвешайте язык хоть гирляндой монад, замыканий и еще пачкой умных концепций, но 2 2 + - убьет любое начинание. Именно поэтому, когда я я выбирал какой из ФП языков поизучать, то несмотря на восторженные отзывы о хаскеле он отправился вслед за моим любимым фортом :)
Еще раз встряну. В Hasskell-е по-моему как раз 2 + 2 (Хотя можно и в префиксной, на выбор)..
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367757
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antares0Nitro_JunkieКонтакт Контракты_музык_со_студ(Студия, Музыкант) initial;

Соответственно обращаться как к функции (что кстати удобно если поле из первичного надо вычисляемым сделать), а записывать через оператор = например
Контракты_музык_со_студ(Studio,BrainStorm) = контракт043;

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


А в Common Lisp'е насколько я понял поля представлены в виде слотов и они все-таки принадлежат ровно одному объекту :( хотя может я чего-то не нашел, так как документирован он просто жестко...
1. Чем представлены поля и чему принадлежат определяет метакласс.
Даже для стандартного варианта есть еще принадлежность классу.
Значение слота может принаадлежать другому слоту. Точне оба слота содержат ссылку на один и тот же объект.
2. Слот предсавляется в виде (slot-value 'класс 'слот) и обычно это детали внутрипакетной работы.
Опять же как я говорил функция.
3. Для магии типа вашей есть accessor-ы
Для примера (setf (Контракты_музык_со_сту Studio BrainStorm) контракт043)
Точнее это самая простая реализация.
Полноценная реализация на mop это магия чуть повыше, но вполне частая для реализации сложных хотелок.
Жаловаться на отсутсвие доков при наличии HyperSpec-а и AMOP?
Другой вопрос о паттернах и use-case-ах, но это другой вопрос.
P.S. Меня конечно несколько понесло, но люблю точность.

Вот честно говоря 1 не понял, можно чуть нагляднее в контексте примера пояснить.

2,3: То есть как в Smalltalk'е все поля private'ы по определению... Но это ничего не меняет, в спецификации языка нету множественных полей, конечно их можно эмулировать, но все равно все придется делать самому... И не факт что хватит статистики, ведь нужно считать количество обращений, записей отсюда выбирать размеры хэшей или вообще ordered реализации, вобщем делать все то что делают СУБД, а это нормально можно сделать только в самой виртуальной машине...

Отсутствие доков определяется как быстро можно найти наглядную структурированую информацию в гугле... От чистого описания синтаксиса наприме при изучении языка мне например ни горячо ни холодно... Впрочем может я на самом деле просто не умею эффективно пользоваться гуглом :)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367882
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkieantares0Nitro_JunkieКонтакт Контракты_музык_со_студ(Студия, Музыкант) initial;

Соответственно обращаться как к функции (что кстати удобно если поле из первичного надо вычисляемым сделать), а записывать через оператор = например
Контракты_музык_со_студ(Studio,BrainStorm) = контракт043;

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


А в Common Lisp'е насколько я понял поля представлены в виде слотов и они все-таки принадлежат ровно одному объекту :( хотя может я чего-то не нашел, так как документирован он просто жестко...
1. Чем представлены поля и чему принадлежат определяет метакласс.
Даже для стандартного варианта есть еще принадлежность классу.
Значение слота может принаадлежать другому слоту. Точне оба слота содержат ссылку на один и тот же объект.
2. Слот предсавляется в виде (slot-value 'класс 'слот) и обычно это детали внутрипакетной работы.
Опять же как я говорил функция.
3. Для магии типа вашей есть accessor-ы
Для примера (setf (Контракты_музык_со_сту Studio BrainStorm) контракт043)
Точнее это самая простая реализация.
Полноценная реализация на mop это магия чуть повыше, но вполне частая для реализации сложных хотелок.
Жаловаться на отсутсвие доков при наличии HyperSpec-а и AMOP?
Другой вопрос о паттернах и use-case-ах, но это другой вопрос.
P.S. Меня конечно несколько понесло, но люблю точность.

Вот честно говоря 1 не понял, можно чуть нагляднее в контексте примера пояснить.

2,3: То есть как в Smalltalk'е все поля private'ы по определению... Но это ничего не меняет, в спецификации языка нету множественных полей, конечно их можно эмулировать, но все равно все придется делать самому... И не факт что хватит статистики, ведь нужно считать количество обращений, записей отсюда выбирать размеры хэшей или вообще ordered реализации, вобщем делать все то что делают СУБД, а это нормально можно сделать только в самой виртуальной машине...

Отсутствие доков определяется как быстро можно найти наглядную структурированую информацию в гугле... От чистого описания синтаксиса наприме при изучении языка мне например ни горячо ни холодно... Впрочем может я на самом деле просто не умею эффективно пользоваться гуглом :)
1. slot-value не прошит раз и навсегда и для всего. Его поведение определяет metaclass класса. Для обычного объекта это standart-class (Или как то так). Обычный класс хранит значения полей в внутренней структуре и соответсвено slot-vlaue просто дает доступ к полям этой структуры. Но никто не мешает создать другой метакласс для персистентных объектов например. Standart-object это всего лишь один из возможных выборов.
2. Что значит эмулировать? Можно взять готовое или написать самому так как хочется другого не дано.
Lisp уже виртуальная машина а mop уже готовая платформа для объектных систем. И то и другое можно изменять под свои нужды.
Про статистику я уже не понял, что мешает её считать?
3. Гугол выдает инфу по ревалентности и поэтому найти php-связзаное гораздо легче. В случае Лиспа нужно быть в теме и точно знать предмет и место поиска.
Я дико извиняюсь но хотя бы pcl http://pcl.lisper.ru был пролистан?
Суть ведь не в том что б доказать, что ЛИСП ЭТО САМЫЙ МОЩНЫЙ ЯЗЫК. Просто для рассматриваемых случаев и пары глав pcl про CLOS в принципе хватит.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36367966
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antares01. slot-value не прошит раз и навсегда и для всего. Его поведение определяет metaclass класса. Для обычного объекта это standart-class (Или как то так). Обычный класс хранит значения полей в внутренней структуре и соответсвено slot-vlaue просто дает доступ к полям этой структуры. Но никто не мешает создать другой метакласс для персистентных объектов например. Standart-object это всего лишь один из возможных выборов.
2. Что значит эмулировать? Можно взять готовое или написать самому так как хочется другого не дано.
Lisp уже виртуальная машина а mop уже готовая платформа для объектных систем. И то и другое можно изменять под свои нужды.
Про статистику я уже не понял, что мешает её считать?
3. Гугол выдает инфу по ревалентности и поэтому найти php-связзаное гораздо легче. В случае Лиспа нужно быть в теме и точно знать предмет и место поиска.
Я дико извиняюсь но хотя бы pcl http://pcl.lisper.ru был пролистан?
Суть ведь не в том что б доказать, что ЛИСП ЭТО САМЫЙ МОЩНЫЙ ЯЗЫК. Просто для рассматриваемых случаев и пары глав pcl про CLOS в принципе хватит.

1. Даже из того описания что вы дали я все равно не понимаю, как это решит проблему с множественными полями, ведь слот привязан к одному классу (и соответственно метаклассу, который как я понял просто определяет реалищацию slot'а)
2. Эмулировать это, повторяюсь, значит что такой возможности нету в спецификации языка. То есть если захотеть можно эмулировать (читай написать) и СУБД на Lisp'е, но такая "эмуляция" будет иметь такое же отношение к Lisp'у, как Oracle к C++ (или на чем там он написан)

Про статистику, вы себе хорошо представляете алгоритмическую сложность такого процесса (оптимизации реализации хранения)? Там нужно ловить все вызовы, все записи, в отдельных потоках реорганизовывать\собирать мусор у таких множественных полей. Этого никто кроме виртуальной машины сделать не в состоянии, и средствами самого Lisp'а это делать, все равно что симплекс-метод на SQL'е писать.

Еще раз CLOS да решает проблему с множественной диспетчеризацией и не привязывает метод к одному объекту как это сделано в ООП. Чем он реально превосходит большинство существующих языков. Но и дальше он не ушел, во всяком случае если не рассматривать то докуда его теоретически можно расширить в следствие его гибкости
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368050
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Даже из того описания что вы дали я все равно не понимаю, как это решит проблему с множественными полями, ведь слот привязан к одному классу (и соответственно метаклассу, который как я понял просто определяет реалищацию slot'а)
2. Эмулировать это, повторяюсь, значит что такой возможности нету в спецификации языка. То есть если захотеть можно эмулировать (читай написать) и СУБД на Lisp'е, но такая "эмуляция" будет иметь такое же отношение к Lisp'у, как Oracle к C++ (или на чем там он написан)

Про статистику, вы себе хорошо представляете алгоритмическую сложность такого процесса (оптимизации реализации хранения)? Там нужно ловить все вызовы, все записи, в отдельных потоках реорганизовывать\собирать мусор у таких множественных полей. Этого никто кроме виртуальной машины сделать не в состоянии, и средствами самого Lisp'а это делать, все равно что симплекс-метод на SQL'е писать.

Еще раз CLOS да решает проблему с множественной диспетчеризацией и не привязывает метод к одному объекту как это сделано в ООП. Чем он реально превосходит большинство существующих языков. Но и дальше он не ушел, во всяком случае если не рассматривать то докуда его теоретически можно расширить в следствие его гибкости
1. Вернусь к предыдущему утверждению и повторю что принадлежность слота классу опредляется метаклассом класса, точнее релизацией нужных методов для этого метакласса. Можно например, что бы один и тот же слот случайным образом появлялся у разных объектов.
2. Возможность реализации такого поведения заложено в спецификации языка. Нет конечно можно называть реализация пары методов эмуляцией, но для меня это странно.
Oracle реализует другю виртуальную машину поверх того на чем он написан. В случае CL реализация необходимого поведения объектов происходит внутри самой лисп-машины и на самом Common Lisp-е. Разница по-моему очевидна. Даже объектная система не меняется скорее настраивается.
3. Как уже говорил Лисп уже Вирт. машина поэтому ничего не мешает собирать статистику и делать любые другие вещи. В смысле реализации Лисп в отличае от sql компилируемый язык общего назначения ничем не хуже явы или плюсов. Или у вас для реализации нечто более экзотичное?

Но тема скатывается в дискуссию о лиспе. Это не было моей первоначальной целью.
Про что и куда можно расширить с удовольсвием послушаю, если вас не затруднит.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368179
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нитро, вы не правы. Я в SQL я пришел из FoxPro много лет назад. Так вот, даже неопытному новичку тогда было видно, что SQL дает большие преимущества и гибкость в решении задач манипулирования данными, множествами данных. Мозг человека так устроен, что мыслит образами/картинками и основные операции - синтез (соединение), анализ (разделение/фильтрация) и поиск совпадений (корелляция/сравнение). SQL эти абстракции работы мозга отлично реализует. Поэтому при изучении его не надо выворачивать мозг наизнанку. SQL совершил такой прорыв и заслужено получил признание, ибо это действительно удобный инструмент для манипулирования данными.

ФП шаг вперед в развитии языков программирования, но по революционности идей он до SQL не дотягивает. Всякие рекурсии - не свойствены работе мозга, рекурсивные выражения тяжело разбирать и анализировать. Кстати рекурсивные расширения SQL тоже тяжело воспринимать.

Весь вопрос в том, что надо понимать область применения технологии, какие преимущества будут получены при ее использовании. Пока я читаю в стаьях что вроде как можно выиграть на надежности программ, есть какие-то теоретичекие бенефиты в части писания программ, которые смогут хорошо параллелится. Мне очень нравится идея того, что надо программировать что ты хочешь получить и не углубляться в то, как ты это хочешь получить. Так-же как и в SQL. И в принципе за этим будущее.

P.S. Я не зря упомянул форт, нравился он мне очень. И до сих пор жив на всяких embedded системах. Позволяет писать в каком хочешь стиле.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368746
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldнитро, вы не правы. Я в SQL я пришел из FoxPro много лет назад. Так вот, даже неопытному новичку тогда было видно, что SQL дает большие преимущества и гибкость в решении задач манипулирования данными, множествами данных. Мозг человека так устроен, что мыслит образами/картинками и основные операции - синтез (соединение), анализ (разделение/фильтрация) и поиск совпадений (корелляция/сравнение). SQL эти абстракции работы мозга отлично реализует. Поэтому при изучении его не надо выворачивать мозг наизнанку. SQL совершил такой прорыв и заслужено получил признание, ибо это действительно удобный инструмент для манипулирования данными.

ФП шаг вперед в развитии языков программирования, но по революционности идей он до SQL не дотягивает. Всякие рекурсии - не свойствены работе мозга, рекурсивные выражения тяжело разбирать и анализировать. Кстати рекурсивные расширения SQL тоже тяжело воспринимать.

Весь вопрос в том, что надо понимать область применения технологии, какие преимущества будут получены при ее использовании. Пока я читаю в стаьях что вроде как можно выиграть на надежности программ, есть какие-то теоретичекие бенефиты в части писания программ, которые смогут хорошо параллелится. Мне очень нравится идея того, что надо программировать что ты хочешь получить и не углубляться в то, как ты это хочешь получить. Так-же как и в SQL. И в принципе за этим будущее.

P.S. Я не зря упомянул форт, нравился он мне очень. И до сих пор жив на всяких embedded системах. Позволяет писать в каком хочешь стиле.

Первое, я ничуть не преуменьшаю ценность SQL как единственного декларативного на данный момент языка. Он также по сути является одним из очень немногих чистых функциональных языков программирования, в отличие от того же Lisp'а. То есть императивности в нем нету вообще, как класса.

Мозг человека как раз мыслит объектами и свойствами, а не таблицами и строками, поэтому объяснить человеку что такое JOIN, а особенно тип JOIN, который по сути является одним из видов условий (кстати еще одна грубая ошибка при создании SQL) далеко не так просто. Вызов функции в этом смысле более интуитивно понятен.

То что за декларативными подходами будущее это мы как раз понимаем, собсно над этим и работаем.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368764
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie
Мозг человека как раз мыслит объектами и свойствами, а не таблицами и строками, поэтому объяснить человеку что такое JOIN, а особенно тип JOIN, который по сути является одним из видов условий (кстати еще одна грубая ошибка при создании SQL) далеко не так просто. Вызов функции в этом смысле более интуитивно понятен.
Вы в карты в "тысячу" например когда-нибудь играли? Когда данных немного то можно и образами мыслить, а когда их столько что уже в мозг не влезает, то ручки сами табличку начинают рисовать
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368782
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antares0
1. Вернусь к предыдущему утверждению и повторю что принадлежность слота классу опредляется метаклассом класса, точнее релизацией нужных методов для этого метакласса. Можно например, что бы один и тот же слот случайным образом появлялся у разных объектов.

antares0, мы о разных вещах говорим... Еще раз значение слот может определятся сразу несколькими объектами\классами\метаклассами. То есть в описанном случае про контракт музыканта со студией как slot как должен реализовываться какому классу\метаклассу (вы в них по моему немного путаетесь) принадлежать?

antares0
2. Возможность реализации такого поведения заложено в спецификации языка. Нет конечно можно называть реализация пары методов эмуляцией, но для меня это странно.
Oracle реализует другю виртуальную машину поверх того на чем он написан. В случае CL реализация необходимого поведения объектов происходит внутри самой лисп-машины и на самом Common Lisp-е. Разница по-моему очевидна. Даже объектная система не меняется скорее настраивается.
На C++ я тоже могу вручную реализовать сборку мусора, означает ли что C++ поддерживает сборку мусора?

antares0
3. Как уже говорил Лисп уже Вирт. машина поэтому ничего не мешает собирать статистику и делать любые другие вещи. В смысле реализации Лисп в отличае от sql компилируемый язык общего назначения ничем не хуже явы или плюсов. Или у вас для реализации нечто более экзотичное?
Лисп к нашему проекту никакого отношения не имеет, а всего лишь демонстрация что наследование можно заложить в язык без привязки функции одному объекту (как в ООП)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368794
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperNitro_Junkie
Мозг человека как раз мыслит объектами и свойствами, а не таблицами и строками, поэтому объяснить человеку что такое JOIN, а особенно тип JOIN, который по сути является одним из видов условий (кстати еще одна грубая ошибка при создании SQL) далеко не так просто. Вызов функции в этом смысле более интуитивно понятен.
Вы в карты в "тысячу" например когда-нибудь играли? Когда данных немного то можно и образами мыслить, а когда их столько что уже в мозг не влезает, то ручки сами табличку начинают рисовать

Я конечно чего-то путаю наверное, но в тысяче как раз достаточно вести текущий счет, а табличка там это лог изменений, который как раз не нужен.

Сама табличка, как представление списка, безусловно человеку понятна, но вот операции над ними проще понять руководствуясь более высокой логикой, нежели логикой матриц.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368865
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkieесли рассмотреть множество всех возможных параметров функции и ее результатов, то получается таблица.
таблица - это функция натурального аргумента - номера строки, определенная на мн-ве кортежей.
сами кортежи тоже могут содержать таблично заданные функции. Т.о SQL - это язык для работы с табличными функциями.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368879
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieЛюбого из параметров... Если не должна то зачем она вообще нужна? и как вообще по вашему в функциональном\структурном программировании изменяются объекты?
Любого на выбор ? Не пойдет. А объекты изменяют свои св-св методами.
Когда методы конструируют результат это и есть изменение объекта.
Т.е. было одно значение, применили метод, получили другое значение этого-же св-ва этого-же объекта.
Nitro_Junkie
То что множественное наследование есть во многих ЯП я в курсе, речь шла про C...
Я имел ввиду не наследование, а возможность конструировать новые типы данных.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368887
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
antares0А можно раскрыть что такое "множественные поля"?

Автор так называет функции нескольких переменных :)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368894
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkie
Знаете если бы SQL не был бы общепризнанным и вам дали бы его в первый раз... Я думаю ваша реакция была такой же...
В первый раз я смотрел не SQL, а его прототип альфа. Реакция была положительной.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368921
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_Junkieесли рассмотреть множество всех возможных параметров функции и ее результатов, то получается таблица.
таблица - это функция натурального аргумента - номера строки, определенная на мн-ве кортежей.
сами кортежи тоже могут содержать таблично заданные функции. Т.о SQL - это язык для работы с табличными функциями.

Во второй НФ, таблицу уже можно рассматривать как отображение множества ключей (объектов) на множество значений (свойств). И де-факто SQL всегда используется во второй НФ (что собсно и подтверждает что в задачах нужны именно объекты и свойства, а не таблицы и строки). Или вы про 2-ю НФ не согласны?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368963
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модЛюбого на выбор ? Не пойдет. А объекты изменяют свои св-св методами.
Когда методы конструируют результат это и есть изменение объекта.
Т.е. было одно значение, применили метод, получили другое значение этого-же св-ва этого-же объекта.
Честно говоря мало что понял...
Допустим для примера есть класс Query и у него есть метод execute(Session), который выполняет результат SQL запроса, как допустим List<Map<String,Object>>, он не изменяет ни Query ни Session, то есть он не метод?
И вообще не совсем понимаю откуда вы берете такие определения\требование, что функции не могут менять свойства параметров в ФП или методы обязаны изменять объекты в ООП, может дадите ссылку какую нибудь. Первый раз такое слышу...

_модЯ имел ввиду не наследование, а возможность конструировать новые типы данных.
А какое отношение конструирование новых типов данных имеет к наследованию? В C типы данных можно наследовать друг от друга?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36368967
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модantares0А можно раскрыть что такое "множественные поля"?

Автор так называет функции нескольких переменных :)

Функции они по определению нескольких переменных... Скорее поля нескольких переменных...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369083
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объект и образ есть по-сути одно и тоже. Операцию join очень легко представить визуально, достаточно два кватратика нарисовать со стрелочками. Решение задачи на SQL почти есть задачка образно-визуальная, на геометрический преобразования, и по сложности сравнима с пазлами для детей раннего возраста, когда надо кубики и кружочки вставлять в соответствующие им отверстия. Такого рода задачи - самые естественные для мозга.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369111
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модВ первый раз я смотрел не SQL, а его прототип альфа. Реакция была положительной.

Вообще по моим наблюдениям программистов условно пожно поделить на:

1) "пролетарии", которым пофигу, что делать лишь бы им деньги платили, они бы SQL даже не начали изучать, пока начальство не сказало что им за это заплатят... Таких людей процентов 50...
2) "гуру", имеют определенный опыт использования технологий, очень себя ценят за него. Для них все остальное это просто "другое", может и полезное но не сравнится с теми технологиями, в которых они разбираются. Соответственно ищут любую зацепку вроде что на SQL нельзя решить дифференциальное уравнение, после чего разводят руками и ставят на ней крест. Начинают интересоваться только когда технология станет общепризнанной, то есть будет использоваться минимум в процентах 10 существующих систем. Таких "гуру" процентов больше чем следует из названия (просто потому что к ним относятся не те кто таковыми являются, а те кто таковыми себя считают) где-то процентов 25
3) "энтузиасты", делятся в свою очередь:
a) "любители" - с небольшим опытом или идеалисты по жизни - много суеты толку мало, ни глобального видения, ни аналитического мышления, никогда не могут оценить экономическую составляющую своей деятельности, ни какой пользы, кроме большой трудоспособности. Яркий пример тусуется в соседнем треде. Их больше чем кажется процентов 15 наверное
б) "реалисты" - самая интересная категория, реально стремятся развиваться куда-то, анализировать существующие проблемы и т.п. , но их мало не больше 10 процентов

Конечно на самом деле бывают смеси из этих категорий, но не в пропорции 50\50, а скорее с примесями...

Но я рад _мод что вы относитесь больше к последней категории, чем ко всем остальным... ;-)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369133
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldОбъект и образ есть по-сути одно и тоже. Операцию join очень легко представить визуально, достаточно два кватратика нарисовать со стрелочками. Решение задачи на SQL почти есть задачка образно-визуальная, на геометрический преобразования, и по сложности сравнима с пазлами для детей раннего возраста, когда надо кубики и кружочки вставлять в соответствующие им отверстия. Такого рода задачи - самые естественные для мозга.

Это во второй НФ и связываемая таблица с одним ключем... Да и дети вряд ли кубики с кружочками могут клонировать что по сути делает Join. А попробуйте представить этот процесс когда связь идет не по ключу а по нескольким колонкам где могут повторяться значения, вы себе мозг сломаете...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369168
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нитро, не знаю, у меня мозг не ломается на операциях соединения. Мне реально тяжело представлять операции оконные, рекурсивные типа WINDOW, WITH RECURSIVE. Я вот что подумал, что может дело в способе мышления. Если почитать книги по психологии и работе мозга то там выделяются несколько психотипов мышления. Если сильно огрубить, то основными явлются образное (рулит правое полушарие) и логическое (рулит левое). Лично я мыслю картинками. А вот математики как правило имеют ярко выраженное логическое мышление. В общем это тоже надо учитывать при разработке инструментов для прграммистов.
Кстати, что именно вы хотите предложить или хотя-бы над какой проблемой работаете? Ведь даже тот-же лисп не создавался как язык программирования общего назначения, а был предназначен для решения вполне практических задач в области ИИ определнными методами развитыми в 50-е, 60-е годы. Отсюда и название язык обработки списков.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369200
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldнитро, не знаю, у меня мозг не ломается на операциях соединения. Мне реально тяжело представлять операции оконные, рекурсивные типа WINDOW, WITH RECURSIVE. Я вот что подумал, что может дело в способе мышления. Если почитать книги по психологии и работе мозга то там выделяются несколько психотипов мышления. Если сильно огрубить, то основными явлются образное (рулит правое полушарие) и логическое (рулит левое). Лично я мыслю картинками. А вот математики как правило имеют ярко выраженное логическое мышление. В общем это тоже надо учитывать при разработке инструментов для прграммистов.
Кстати, что именно вы хотите предложить или хотя-бы над какой проблемой работаете? Ведь даже тот-же лисп не создавался как язык программирования общего назначения, а был предназначен для решения вполне практических задач в области ИИ определнными методами развитыми в 50-е, 60-е годы. Отсюда и название язык обработки списков.

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

Я уже писал выше, создание полностью декларативной парадигмы разработки бизнес-приложений (информационных систем) .Обобщение и развитие SQL если хотите, вплоть до пользовательского интерфейса, хотя конечно все не совсем так просто.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369397
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie[quot antares0]
1. Вернусь к предыдущему утверждению и повторю что принадлежность слота классу опредляется метаклассом класса, точнее релизацией нужных методов для этого метакласса. Можно например, что бы один и тот же слот случайным образом появлялся у разных объектов.
[quot]
antares0, мы о разных вещах говорим... Еще раз значение слот может определятся сразу несколькими_____
объектами\классами\метаклассами. То есть в описанном случае про контракт музыканта со студией как____
slot как должен реализовываться какому классу\метаклассу (вы в них по моему немного путаетесь)_______
принадлежать?
`Значение слота определяемое несколькими объектами\классами\метаклассами` - про метаклассы в описаном примере речи не шло.
slot-vаlue согласно CLHS вызывает slot-value-using-class определенную в Metaobject Protocol.
Primary Method slot-value-using-class (class standard-class) object (slot standard-effective-slot-definition)
Primary Method slot-value-using-class (class funcallable-standard-class) object (slot standard-effective-slot-definition)
Аргументы по порядку: метакласс,класс.слот.
В живую это вот так (я подравнял для наглядности)
Код: plaintext
1.
2.
3.
(SLOT-VALUE-USING-CLASS (CLSQL-SYS::STANDARD-DB-CLASS  T                 T))
(SLOT-VALUE-USING-CLASS (SB-PCL::STD-CLASS             STANDARD-OBJECT   STANDARD-EFFECTIVE-SLOT-DEFINITION))
(SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS               STRUCTURE-OBJECT  SB-PCL::STRUCTURE-EFFECTIVE-SLOT-DEFINITION))

Замечу что STANDARD-OBJECT здесь type specifier в виде символа, но можно и что-нибудь поинтереснее, например
Код: plaintext
1.
(cons Студия Музыкант)
или что-нибудь параметрическое под спец. требования.
Справедливости ради скажу, что сигнатура slot-value несколько портит эту радужную картину.
Это все про опредление значения слота несколькими параметрами.
Общий слот для нескольких объектов, рассматривать уже лень.

На C++ я тоже могу вручную реализовать сборку мусора, означает ли что C++ поддерживает сборку мусора?

Это похоже на спор о полупустом стакане, но все же.
По моему разумению, С++ поддерживает сборку мусора но предоставляет програмсту на выбор: собирать мусор руками, или автоматизировать процесс по собсвенному вкусу.

Если кажется что я что-то путаю ,то можно попробовать указать на ляпы и смысла в словах станет больше.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369422
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, умножение двух таблиц, когда образуются все возможные комбинации всего со всем я представить могу. Вернее представляю это себе как квадратик, где "все со всеми". Такое на практике случается не часто, сходу сложно вспомнить, когда такое пришлось делать в последний раз.
Декларативный подход - дело благое, может что и получится путное. удачи, но не забывайте про такие мелочи как 2+2 vs 2 2 +
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369484
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkieв задачах нужны именно объекты и свойства, а не таблицы и строки). Или вы про 2-ю НФ не согласны?
Согласен, но таблицы нужны для применения к ним рел. алгебры. У объектов никакой алгебры нет, поэтому никаких серьезных задач на них решать нельзя.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369509
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieИ вообще не совсем понимаю откуда вы берете такие определения\требование, что функции не могут менять свойства параметров в ФП или методы обязаны изменять объекты в ООП, может дадите ссылку какую нибудь. Первый раз такое слышу...
Чистые функции - хороший стиль программирования. Если надо чего-то менять - исп. процедуры.
Объект - это набор св-в, методы нужны только для изменения этих св-в. Узнать значение св-ва можно без всяких методов. Ваши примеры - это использование терминологии ООП там, где оно вообще не применимо (типа притянуто за уши).
Nitro_Junkie
А какое отношение конструирование новых типов данных имеет к наследованию?
Это одно и тоже.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369676
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antares0, касательно lisp, C++

Следуя такой логики ассемблер поддерживает наследование, сборку мусора, множественную диспетчеризацию и т.п. И вообще самый лучший язык. Все то что не входит в описание языка, а только может быть реализовано при помощи его, не является частью языка...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369686
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldну, умножение двух таблиц, когда образуются все возможные комбинации всего со всем я представить могу. Вернее представляю это себе как квадратик, где "все со всеми". Такое на практике случается не часто, сходу сложно вспомнить, когда такое пришлось делать в последний раз.
Декларативный подход - дело благое, может что и получится путное. удачи, но не забывайте про такие мелочи как 2+2 vs 2 2 +

Мы пока не язык делаем... Там настройка в виде кода, потом XML, потом визуальная, и только потом когда-нибудь может в язык оформим.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369687
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_Junkieв задачах нужны именно объекты и свойства, а не таблицы и строки). Или вы про 2-ю НФ не согласны?
Согласен, но таблицы нужны для применения к ним рел. алгебры. У объектов никакой алгебры нет, поэтому никаких серьезных задач на них решать нельзя.

Это вопрос что вы под алгеброй понимаете... в любом случае все то что до 2 НФ в SQL'е избыточно...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369719
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модЧистые функции - хороший стиль программирования. Если надо чего-то менять - исп. процедуры.
Объект - это набор св-в, методы нужны только для изменения этих св-в. Узнать значение св-ва можно без всяких методов. Ваши примеры - это использование терминологии ООП там, где оно вообще не применимо (типа притянуто за уши).
Что-то я запутался. Вы сначала говорили что такого понятия как функции\процедуры в ООП нету, что там есть только классы, объекты, поля и методы... Теперь даже есть чистые функции и соответственно исп. процедуры - или это вы про структурное программирование?

В любом случае допустим если я пишу на Java и мне нужно реализовать описанный мной функционал (про Query), мне с точки зрения ООП как его надо оформлять?


_модЭто одно и тоже.

Но вы мне так и не ответили на вопрос, можно ли наследовать типы данных в C. То есть сказать что тип данных A находится в каком-то отношении с типом B, что все поля типа B по определению есть в A.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369958
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieЭто вопрос что вы под алгеброй понимаете
набор операций над отношениями, реализованные сначала Коддом в алфе а потом в SQL.
Такого набора для объектов не существует, т.е. алгебры объектов нет.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369969
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieТеперь даже есть чистые функции и соответственно исп. процедуры - или это вы про структурное программирование?
Просто программирование.
Nitro_Junkieмне с точки зрения ООП как его надо оформлять?
с точки зрения ООП далеко не все можно реализовать (формально оформить можно только зачем ?)
Nitro_Junkie что все поля типа B по определению есть в A.
можно - по построению
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36369978
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieЭто вопрос что вы под алгеброй понимаете
набор операций над отношениями, реализованные сначала Коддом в алфе а потом в SQL.
Такого набора для объектов не существует, т.е. алгебры объектов нет.

Вполне отлично существуют, например частично-рекурсивные функции... Которые появились задолго до SQL. Там есть 5 операторов при помощи которых можно задать любую вычислимую функцию. Оперирует объектами (если ассоциировать любой объект с числом, предполагая что мн-во объектов счетно). Отлично подходит под ваше определение алгебры. И кстати можно считать были прообразом для реляционной алгебры - операторы подстановки как Join'ы, операторы примитивной рекурсии - рекурсивные CTE, группировки как операции минимизации аргумента...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370014
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,

Видимо мы про какие-то разные ООП говорим... Лично я говорю о классическом, который лежит в основе Java, C# и иже с ними... Где есть классы с полями и методами (как функциями принадлежащему одному объекту\классу к которому можно обращаться через this), есть static методы как функции (но для них принадлежность одному классу выглядит еще более дебильно), которые вообще противоречят ООП... Процедуры соответственно являются частным случаем функций, которые ничего не возвращает, то есть отдельно не рассматривается. Касательно mutability в ООП вообще ничего не сказано . Ну и плюс сверху области видимости, чисто как безопасность. Могу накидать кучу ссылок из википедии, бутча и иже с ними где все что я сказал подтверждается...

Может все-таки поделитесь своим представлением об ООП?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370026
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,

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

Мне симпатична идея, озвученная _мод, что метод должны менять только свойства обьектов. Что-то в этом есть. Примерно как в Оракле нельзя дмл в селекте делать. Порядок появляется что-ли, предсказуемость.

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

Вот идею о чистых функциях пытаюсь себе смоделировать. Сижу смотрю сейчас на блок музыкального центра (объект). Вот я ему вызвал метод Повернуть_ручку_звука (по_часовой_стрелке, 10_градусов). А как я звук услышу? Получить через return или должен прочитать его свойство? Инициатива исходит от меня? - нет, инициатива исходит от музыкального центра, именно он воздействует на меня звуком. Т.о. есть "воздействие", "обьект воздействия" и "характер воздействия" - метод, объект и параметры метода. Я воздействую на него, а он воздействует на меня. Причём я оказываю воздействие адресно, а он безадресно. Мы взаимодействуем. Наверное, в идеальном языке программирования должно быть что-то типа такого - взаимных воздействий - поддержка эвентов на уровне языка. Чтобы задача моделирования, например, человека и музыкального центра программировалась as is. А потом на этом же языке нужно как-то сделать воздействие на СУБД, хм. Можно ли это всё смоделировать на полностью декларативной парадигме? В UML есть разные типы диаграмм: описание статики, динамики, состояний... Гда та одна универсальная UML-диаграмма, одна универсальная парадигма? [Спокойной ночи]
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370584
web_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ммм, а это не Objective-C случайно? 8)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370745
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieВполне отлично существуют, например частично-рекурсивные функции...
????
таблица3=таблица1 операция таблица2 - так можно
объект3=объект1 операция объект2 - а так низзя
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370748
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkie
Лично я говорю о классическом, который лежит в основе Java, C# и иже с ними... которые вообще противоречят ООП...
Точнее не скажешь :)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370753
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieИ программирование - это очень абстрактное понятие
У Дейкстры есть книжка "Дисциплина программирования" - я об этом.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370760
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
web_foxМожно ли это всё смоделировать на полностью декларативной парадигме?
Может и можно, вот только зачем ? Воздействие предполагает императивность. Например, программа управления роботом д.б. набором команд. Ну и т.д.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370770
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieМожет все-таки поделитесь своим представлением об ООП?
Дейкстра сказал, что эта парадигма была придумана исключительно для разработки оконного интерфейса. Такая одноразовая штука.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370830
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
web_fox, _мод

Immutable объекты гораздо более предсказуемы чем mutable объекты... Для них можно делать Lazy Evaluation, их можно безопасно передавать другим объектам, и те не будут боятся что переданный объект вдруг без их ведома неожиданно изменится. Но как правило не стоит выбор что делать класс Immutable или Mutable, это определяется задачей\архитектурой. Например в текущем проекте все классы не связанные с хранением текущей информации от пользователя (пример такой информации является тот же музыкальный центр) Immutable а их 90%. Получается что им вообще не место в ООП, что же мы тогда, прости господи, используем за программирование в нашем проекте?

Забавно что оказывается достаточно много людей которые считают что ООП хоть что-то говорит о mutability объектов. ООП это просто надстройка над структурным программированием (о котором писал Дейкстра), в котором добавлена возможность наследования, необходимость запихивать функции в классы и область видимости. А уж особенно противопоставлять его структурному программированию это в стиле акции пчелы против меда.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370842
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод
таблица3=таблица1 операция таблица2 - так можно
объект3=объект1 операция объект2 - а так низзя

Вот ваше определение алгебры :

набор операций над отношениями.

Так вот в случае частично-рекурсивных функций, отношения это функции, операции - операторы создающие новые функции.

И даже для вашего примера вполне обычное структурное программирование подходит:

andWhere = and(where1,where2);

если предположить что класс Where immutable
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370854
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модweb_foxМожно ли это всё смоделировать на полностью декларативной парадигме?
Может и можно, вот только зачем ? Воздействие предполагает императивность. Например, программа управления роботом д.б. набором команд. Ну и т.д.

Я уже писал:
Безотносительно нашего проекта, можно узнать почему? Я понимаю что у любого расширения должны быть императивные черты, чтобы реагировать на события, но если их формализовать в виде например ввода свойства или изменения класса объекта, а все остальное рассматривать как следствие декларативных правил, то почему нет.

И надо это затем что декларативное программирование по всем нефункциональным требования значительно превосходит императивное. Особенно это касается расширяемости, скорости разработки, надежности и т.д. В нем нету последействий, они более высокоуровневые как следствие их прозрачно проще оптимизировать, правила гораздо более "портабельны" чем императивные алгоритмы и т.п.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370856
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieМожет все-таки поделитесь своим представлением об ООП?
Дейкстра сказал, что эта парадигма была придумана исключительно для разработки оконного интерфейса. Такая одноразовая штука.

Мало ли чего он сказал... Если он не понимает ценности наследования, то архитектор из него нулевой. Хотя как алгоритмист он может и впереди многих...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36370940
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie_модNitro_JunkieМожет все-таки поделитесь своим представлением об ООП?
Дейкстра сказал, что эта парадигма была придумана исключительно для разработки оконного интерфейса. Такая одноразовая штука.

Мало ли чего он сказал... Если он не понимает ценности наследования, то архитектор из него нулевой. Хотя как алгоритмист он может и впереди многих...а вот тут люди не менее уверенно утверждали что наследование и не нужно
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371157
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper,

А че мелочится, тогда уже циклы и функции не нужны, условные и безусловные переходы рулят... Если людям не надо наследование, то это характеризует не его ценность, а самих людей, их уровня как разработчиков.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371227
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieТак вот в случае частично-рекурсивных функций, отношения это функции, операции - операторы создающие новые функции.
Таблицы, функции - это одно множество один тип данных. А объекты все разного типа - видите разницу ? Над элементами одного типа можно строить алгебру, а на элементах разных типов - нет.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371240
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieИ надо это затем что декларативное программирование по всем нефункциональным требования значительно превосходит императивное.
Схоластика. Набор команд - это тоже декларация.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371243
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieSergSuper,

А че мелочится, тогда уже циклы и функции не нужны, условные и безусловные переходы рулят... Если людям не надо наследование, то это характеризует не его ценность, а самих людей, их уровня как разработчиков.не, ну Вы почитайте, там у людей аргументы были
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371260
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieЕсли людям не надо наследование, то это характеризует не его ценность, а самих людей, их уровня как разработчиков.
Людям надо и они его давно используют, но только правильно, как конструктор новых типов данных. Посмотрите хотя бы эйфорию.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371283
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieТак вот в случае частично-рекурсивных функций, отношения это функции, операции - операторы создающие новые функции.
Таблицы, функции - это одно множество один тип данных. А объекты все разного типа - видите разницу ? Над элементами одного типа можно строить алгебру, а на элементах разных типов - нет.

Объекты как раз все одного типа - мы ассоциируем их с номерами, то есть просто натуральными числами (забыли про наследование, оно в построении алгебры роли не играет). Функции соответственно интерфейсы объектов (множественные). То есть никакой разницы...

ЗЫ. Функции в частично рекурсивных функциях могут иметь значение undef (null по русски). То есть с точки зрения классических типов данных (программирования), если функции передается объект не того типа, то она просто возвращает undef.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371307
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieЕсли людям не надо наследование, то это характеризует не его ценность, а самих людей, их уровня как разработчиков.
Людям надо и они его давно используют, но только правильно, как конструктор новых типов данных. Посмотрите хотя бы эйфорию.

Наследование - это просто направленный граф классов без циклов. Я даже теоретически не понимаю как его можно неправильно использовать. Может в 2 словах все-таки объясните в чем там суть, а то он все-таки ну очень не распространен, что человеческое описание найти тяжело...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371323
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperNitro_JunkieSergSuper,

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

Там аргументы сводятся к тому что входит ли вообще в ООП наследование... :) Без наследования оно не то что не нужно, оно вообще не имеет смысла.... Но для людей даже википедия не аргумент, спорить в таком случае о чем бы то ни было бесполезно...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371342
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieИ надо это затем что декларативное программирование по всем нефункциональным требования значительно превосходит императивное.
Схоластика. Набор команд - это тоже декларация.

Я на первой странице уже писал определение. Вот определение из википедии:

Императи́вное программи́рование — это парадигма программирования, которая, в отличие от декларативного программирования, описывает процесс вычисления в виде инструкций, изменяющих состояние программы.

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

Ну если для Вас википедия аргумент - есть другой ООП . И как бы даже более изначальный :) И наследование в нем появилось не сразу (да и собственно к ООП-у относится несколько перпендикулярно). Потом уже раскрученный бренд ООП просто стырили

Если серьезно, Страуструп много и вдумчиво смотрел и на Смоллток и на Симулу (в основном на последнюю). Всем оно ему нравилось, кроме производительности. И пришла ему в голову МЫСЛЬ сделать ЭТО, но в компиляторе. Но сделать это в компиляторе ТАКЖЕ было технически невозможно. Потом то что сделали стали называть ООП-ом, но с ООП-ом Смолтока оно различается как Небо и Земля.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371438
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan),

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

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

Дело не в этимологии. То что общепринято называть ООП, к ООП имеет весьма отдаленное отношение. И следует отдавать себе отчет как в этом, так и в том почему это произошло. В любом случае, у меня нет желания спорить на эту тему.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371644
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieОбъекты как раз все одного типа
Разных классов ? Хе-хе
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371674
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkie Может в 2 словах все-таки объясните в чем там суть
В двух слова:

type xxx (x int, y string)

новый тип xxx сконструирован (унаследован) из типов int и string
операции над int можно применять к части x типа xxx
операции над string можно применять к части y типа xxx
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371681
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkie Вот определение из википедии:
Это бред. Даже не хочется объяснять, почему.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371697
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)
+++++
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371710
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieОбъекты как раз все одного типа
Разных классов ? Хе-хе

Нет, одного класса \ типа (в данном контексте это одно и то же)... Я же написал в скобках что для построения алгебры типы и классы не нужны...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371716
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_Junkie Может в 2 словах все-таки объясните в чем там суть
В двух слова:

type xxx (x int, y string)

новый тип xxx сконструирован (унаследован) из типов int и string
операции над int можно применять к части x типа xxx
операции над string можно применять к части y типа xxx

И чем такой подход отличается от обычного множественного наследования? (как в C++ например)?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371730
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_Junkie Вот определение из википедии:
Это бред. Даже не хочется объяснять, почему.

Это определение, а не утверждение. Готов выслушать ваше определение императивного программирования (а также узнать откуда вы его взяли).

P.S. : Английская wiki :
In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state.

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

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

Дело не в этимологии. То что общепринято называть ООП, к ООП имеет весьма отдаленное отношение. И следует отдавать себе отчет как в этом, так и в том почему это произошло. В любом случае, у меня нет желания спорить на эту тему.

То есть вы считаете, что есть правильное определение ООП. А то которое в Wikipedia сейчас, оно неправильное . Тогда может скажете как правильно называется то что сейчас в Wikipedia под названием ООП (и то что я описывал в предыдущих постах про ООП), и я буду употреблять именно этот термин.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371843
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieЯ же написал в скобках что для построения алгебры типы и классы не нужны...
Попробуйте построить
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371847
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieИ чем такой подход отличается от обычного множественного наследования? (как в C++ например)?
Конструктор типов мощнее
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371856
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieГотов выслушать ваше определение императивного программирования
Еще раз повторю - нет принципиальной разницы между императивным, декларативным , функциональным и пр. программированием. Текст любой программы можно рассматривать как декларацию. Термины введены условно.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371872
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieЯ же написал в скобках что для построения алгебры типы и классы не нужны...
Попробуйте построить

Я же вам привел уже пример - частично-рекурсивные функции. Это чистая объектная алгебра.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371913
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieГотов выслушать ваше определение императивного программирования
Еще раз повторю - нет принципиальной разницы между императивным, декларативным , функциональным и пр. программированием. Текст любой программы можно рассматривать как декларацию. Термины введены условно.

_мод, вы так говорите, как будто вы лично придумали эту классификацию и все термины... Термины введены достаточно конкретно, читаем тут :

http://%5Dhttp://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%B4%D0%B8%D0%B3%D0%BC%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%5B/url]

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

Английская версия лучше структурирована, хотя и далеко не идельно (там наглядное дерево есть справа). Но в принципе и русская сойдет.

P.S.: Следуя вашей логике, нет никакой разницы между SQL, C++ и Prolog...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371923
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36371941
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieИ чем такой подход отличается от обычного множественного наследования? (как в C++ например)?
Конструктор типов мощнее

Чем мощнее?

Тока не надо отвечать, чем множественное наследование. Я вижу что именуется каждое "ребро" наследования. То есть можно 2 раза наследовать один и тот же класс, но зачем это надо честно говоря не понятно (противоречит всей логике интерфейсов). А в остальном C++ лучше, он сам определяет по какому ребру идти если путь однозначный.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372102
web_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, я думаю вы через чур сильно накинулись на Nitro_Junkie, и всё чаще приводите ошибочные доводы. Идея Nitro_Junkie понятна и намерения только приветствуются. Лично я считаю, что текущие языки а-ля СИ слишком просто позволяют программисту делать ошибки, а как известно лучшая ИС та, что не позволяет пользователю ошибаться. Одна только слабая типизация сводит все преимущества, например, PHP, при написании приложений корпоративного уровня в хлам (да, звучит дико, но многие пишут корпоративные приложения на этом языке), получается типичный го.но-код. И выражения типа "кривые руки" здесь не канает.

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

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

Дело не в этимологии. То что общепринято называть ООП, к ООП имеет весьма отдаленное отношение. И следует отдавать себе отчет как в этом, так и в том почему это произошло. В любом случае, у меня нет желания спорить на эту тему.

То есть вы считаете, что есть правильное определение ООП. А то которое в Wikipedia сейчас, оно неправильное . Тогда может скажете как правильно называется то что сейчас в Wikipedia под названием ООП (и то что я описывал в предыдущих постах про ООП), и я буду употреблять именно этот термин.

Я считаю, что есть первоначальное определение (объекты обменивающиеся сообщениями). Правильное оно или нет, не мне судить (этот вопрос очень далек от сферы моих интересов).
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372116
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie
P.S.: Следуя вашей логике, нет никакой разницы между SQL, C++ и Prolog...

Есть разница :) Первый не Тьюринг-полный
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372235
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieЯ же вам привел уже пример - частично-рекурсивные функции. Это чистая объектная алгебра.
Как с помощью функций получить объект неописанного класса ?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372241
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieP.S.: Следуя вашей логике, нет никакой разницы между SQL, C++ и Prolog...
Между тьюринг-полными нет. Семантику любого ЯП можно описать на лиспе. Если описания совпадут то языки эквивалентны
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372248
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieЧем мощнее?
Параметризованные типы. Т.е. конструктор - это функция с параметрами. А ООП-наследование - простое копирование
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372258
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
web_foxКоллеги, я думаю вы через чур сильно накинулись на Nitro_Junkie, и всё чаще приводите ошибочные доводы. Идея Nitro_Junkie понятна и намерения только приветствуются. Лично я считаю, что текущие языки а-ля СИ слишком просто позволяют программисту делать ошибки, а как известно лучшая ИС та, что не позволяет пользователю ошибаться. Одна только слабая типизация сводит все преимущества, например, PHP, при написании приложений корпоративного уровня в хлам (да, звучит дико, но многие пишут корпоративные приложения на этом языке), получается типичный го.но-код. И выражения типа "кривые руки" здесь не канает.

Nitro_Junkie, посоветуйте, пожалуйста, ссылочку на ваш вкус, где можно ознакомиться более подробно либо с вашей концепцией более детально, либо с чужими аналогичными. Я вот понимаю, что декларативный SQL - всего лишь оператор преобразования, на вход подаёшь одно множество, на выходе - получаешь другое. Действительно, тут не нужно хранить никакие состояния и описывать алгоритм, - для оператора достаточно описать закон преобразования. Но вот как на одних операторах преобразования построить полностью бизнес-приложение пока представляю плохо.

Спасибо за понимание, а то начинает казаться что я что-то совсем не то говорю.

Ситуация в том, что проект длится около 2-х лет и только сейчас мы вышли на законченный вариант этой свойство-ориентированной платформы в базовой постановке (бета-версию можно сказать). Честно говоря не ожидал что получится настолько цельная парадигма разработки, но результат превзошел даже мои ожидания. Соответственно с месяц назад мы приступили к описанию парадигмы и сейчас оно готово процентов на 40. В него также войдут презентация, видео с процессом разработки и несколько примеров систем (от самого простого, до достаточно "навернутого")... По плану завершить это все через месяц полтора, на практике думаю все затянется до 2-3 месяцев. После этого начнем продвижение в том числе в нете с целью поиска партнеров, инвесторов, клиентов и т.п. На этот форум ессно ссылку тоже закину :)

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

Что касается аналогичных концепций, то к сожалению, а может и к счастью, то ничего близкого во всяком случае нам не встречалось (а рынок мы мониторили весьма тщательно). Я понимаю возможный (даже сказал бы неизбежный) скепсицизм относительно такого рода высказываний, но чем больше приходится общаться с разработчиками различного уровня, тем лучше я понимаю почему программирование существует в том виде, в котором оно есть сейчас.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372260
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Nitro_Junkie
P.S.: Следуя вашей логике, нет никакой разницы между SQL, C++ и Prolog...

Есть разница :) Первый не Тьюринг-полный

Вы начало темы читали? SQL-1999 как раз Тьюринг-полный...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372299
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieЯ же вам привел уже пример - частично-рекурсивные функции. Это чистая объектная алгебра.
Как с помощью функций получить объект неописанного класса ?

Забыли про классы. Мы говорим про объектную алгебру.
В данной логике класс это производное понятие. Поясню на примере. То есть если у нас есть функция Объем_двигателя(объект1). То Объем_двигателя(Роза1) = undef. Соответственно Объем_двигателя(митсубиси4332) = объем4 . Класс Авто всего лишь обозначают что для всех объектов не этого класса, функция Объем_двигателя всегда будет давать undef (что впрочем не значит что для Авто она не будет undef). То есть объектную логику можно рассматривать в отрыве от классов, а последние рассматривать как просто характеристику функций.

ЗЫ: Если кому-нибудь не _моду, понятен принцип что я написал здесь и выше, напишите, реально интересно... а то мне это очевидно, но такое ощущение что мне одному :)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372327
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieGluk (Kazan)Nitro_Junkie
P.S.: Следуя вашей логике, нет никакой разницы между SQL, C++ и Prolog...

Есть разница :) Первый не Тьюринг-полный

Вы начало темы читали? SQL-1999 как раз Тьюринг-полный...

А вот это еще стоит доказать
кстати, вику и надписи на заборах я тоже не читаю
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372342
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieМы говорим про объектную алгебру.
Да нет никакой объектной алгебры. То что описали - обычный язык без контроля типов, тот же питон
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372367
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieМы говорим про объектную алгебру.
Да нет никакой объектной алгебры. То что описали - обычный язык без контроля типов, тот же питон

Да нет никакой реляционной алгебры. То что описали - обычный язык запросов, тот же SQL.

PS: кстати в питоне есть оператор минимизации аргумента? И то что я описал это декларативный язык, а питон - императивный (по моему определению во всяком случае)...
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372376
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)А вот это еще стоит доказать
кстати, вику и надписи на заборах я тоже не читаю

На раз два доказывается :

функция выбора и следование - обычные выражения
оператор подстановки - операция Join
оператор примитивной рекурсии - рекурсивные CTE
оператор минимизации рекурсии- GROUP BY с аггрегирующей функцией MAX

Значит эквивалентно частично-рекурсивным функциям, значит SQL - тьюринг-полный.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372393
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieЧем мощнее?
Параметризованные типы. Т.е. конструктор - это функция с параметрами. А ООП-наследование - простое копирование

_мод, не поймите меня неправильно, но у меня от ваших постов мозги клинит. Вы как будто хотите не объяснить, а еще больше запутать.

То есть в вашем примере x это не обозначение ребра наследования, а типа generic'а в Java? Но толку наследоваться от generic'а если интерфейсов вы все равно не знаете.

Можно привести пример что можно сделать с параметризованными типами и нельзя сделать логикой наследования.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372396
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNitro_JunkieP.S.: Следуя вашей логике, нет никакой разницы между SQL, C++ и Prolog...
Между тьюринг-полными нет. Семантику любого ЯП можно описать на лиспе. Если описания совпадут то языки эквивалентны

Железно. Можно и на асемблере, а еще круче на машине Тьюринга, назад к земле так сказать.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372399
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie_модNitro_JunkieМы говорим про объектную алгебру.
Да нет никакой объектной алгебры. То что описали - обычный язык без контроля типов, тот же питон

Да нет никакой реляционной алгебры. То что описали - обычный язык запросов, тот же SQL.

PS: кстати в питоне есть оператор минимизации аргумента? И то что я описал это декларативный язык, а питон - императивный (по моему определению во всяком случае)...
А Вы можете объяснить чем операция SQL delete from SomeTable более декларативна чем допустим функция WinAPI DestroyWindow ?
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372401
web_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie,

тогда я вам советую не тратить здесь особо время, а всё-таки довести проект до контрольной точки ;)

авторЗЫ: Если кому-нибудь не _моду, понятен принцип что я написал здесь и выше, напишите, реально интересно... а то мне это очевидно, но такое ощущение что мне одному :)
Да всё тут понятно. Только трудно представить пользу. Если бы какой-то конкретный реальный пример в двух вариантах (1. как обычно программируют и 2. как предлагается), чтобы и отказоустойчивость такого подхода продемонcтрировать и юзабилити с точки зрения интуитивнопонятности.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36372422
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
web_fox,

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

На раз два доказывается :

функция выбора и следование - обычные выражения
оператор подстановки - операция Join
оператор примитивной рекурсии - рекурсивные CTE
оператор минимизации рекурсии- GROUP BY с аггрегирующей функцией MAX

Значит эквивалентно частично-рекурсивным функциям, значит SQL - тьюринг-полный.

простите, но под доказательством я привык понимать нечто более формальное
Вы думаете , что SQL стал Тьюринг-полным, благодаря введению CTE
Я сомневаюсь в том что Вы правы. Развейте мои сомнения.

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

Насколько я понял, Вы как раз к этому и призываете:

- SQL стал Тьюринг-полным (пусть даже так)
- давайте на нем (или на чем то похожем чего Вы не озвучили) программировать ВСЕ
- будет Щастье и мы победим

я что-то упустил ???
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36373022
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieМожно привести пример что можно сделать с параметризованными типами и нельзя сделать логикой наследования.
Я не силен в эйфории. Но параметризованный тип - это вычислимая функция - на наследование не похоже.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36373028
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)- давайте на нем (или на чем то похожем чего Вы не озвучили) программировать ВСЕ
Кстати, хороший вопрос. Например PL/SQL достаточно, чтобы написать на нем ВСЕ (при условии, что GUI делается на IDE). Но PL/SQL далеко не идеален. А вот можно ли придумать идеальный язык, на котором можно написать ВСЕ, как на PL/SQL.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36373068
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модGluk (Kazan)- давайте на нем (или на чем то похожем чего Вы не озвучили) программировать ВСЕ
Кстати, хороший вопрос. Например PL/SQL достаточно, чтобы написать на нем ВСЕ (при условии, что GUI делается на IDE). Но PL/SQL далеко не идеален. А вот можно ли придумать идеальный язык, на котором можно написать ВСЕ, как на PL/SQL.

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

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

Вы передергиваете, я говорил про ВСЕ бизнес-решения (или информационные системы в общем случае). Про написание драйверов, игрушек и т.п. на SQL речи не шло. Впрочем речь шла не о чистом SQL (который во многом ущербен), а о его расширении.

Давай будем политкорректны я утрирую
но даже если речь идет исключительно о ВСЕХ бизнес-решениях, меня терзают смутные сомнения.

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

Скажем так, простым пользователям (не программистам) пользоваться любой декларативной парадигмой проще чем связкой Java\C# + SQL. Во всяком случае ни одного такого пользователя не встречал, а в нашем проекте все приложение создают бизнес-аналитики (люди для которых программирование закончилось одним уроком информатики в 8 классе)
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36373347
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)Но он то хочет на SQL-е без всяких PL, вот в чем фикус пикус :(
Не, без PL не получится, плавали, знаем.
...
Рейтинг: 0 / 0
SQL - полнота по тьюрингу
    #36383126
RomanT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iapNitro_JunkieВезде упоминается что SQL полон только With CTE и Windowing. При этом Windowing можно реализовать вложенными подзапросами . Соответственно кто ошибается, я или они?IMHO, не всегда. К примеру, если в таблице без PK имеются неотличимые строки,
попробуйте-ка их пронумеровать в стиле ROW_NUMBER()OVER() подзапросами.
Не уверен, правда, что я это всё корректно "по-Тьюрингу" написал.
Может, и не к месту...
Оно?

with t1 as
(
select *
from (values (1,'aaa'),(1,'bbb'),(1,'ccc')) a (f1, f2)
),
t11 as
(
select count(*) cnt
from t1
),
t2 as
(
select 1 id
union all
select t2.id + 1 from t2 where t2.id < (select cnt from t11)
)
select t2.id,
t13.f1,
t13.f2
from t2
cross apply
(
select top 1 f1, f2
from (select top (t2.id * 1) f1, f2
from t1 t11
order by f1 asc, f2 asc
) t12
order by f1 desc, f2 desc
) t13
...
Рейтинг: 0 / 0
174 сообщений из 174, показаны все 7 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / SQL - полнота по тьюрингу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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