November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Friday, May 23rd, 2008 02:36 pm
Можно ли считать SQL языком программирования?
А Пролог?

Upd: чтоб было понятнее, откуда возник вопрос. Они оба не являются алгоритмическими языками, в том смысле, что не содержат алгоритма получения результата. Они содержат только критерии, которым этот результат должен удовлетворять. Можно ли считать их при этом языками программирования?
Friday, May 23rd, 2008 01:38 pm (UTC)
у SQL есть пордолжения. I-SQL, T-SQL, PSQL к примеру - почему бы и нет?

А пролог я, по-моему, в глаза не видел.
Friday, May 23rd, 2008 01:44 pm (UTC)
а чем пролог не язык програмирования? очень специфичный, но язык
Friday, May 23rd, 2008 01:45 pm (UTC)
SQL в чистом виде - нет. С расширениями - да.

Пролог - да. Ну а определяю я это так: смог бы кто-то написать машину Тьюринга на этом языке?

Если да - язык программирования. Иначе - просто грамматика какая-то.
Friday, May 23rd, 2008 01:47 pm (UTC)
Саш, травой делись!
Ты чего? Structured Query Language - это язык кого????
Пролог - один из языков програмирования.

P.S. Похмеляйся.
Friday, May 23rd, 2008 01:48 pm (UTC)
пролог - конечно язык программирования, на нем даже первые версии эрланга были написаны
Friday, May 23rd, 2008 02:01 pm (UTC)
Определение вообще-то неправильное, есть тьюринг-полные языки, а есть и нет. SQL - это вполне язык программирования.
Friday, May 23rd, 2008 02:04 pm (UTC)
а xml/html ?:)
Friday, May 23rd, 2008 02:07 pm (UTC)
я не про расширения, а про голый SQL
Friday, May 23rd, 2008 02:09 pm (UTC)
SQL, как и пролог, не содержит алгоритма получения результата, а только сообщает о том, каким критериям он должен соответствовать. почему тогда SQL не считается языком программирования (не путать с алгоритмическими языками), а пролог - считается?
Friday, May 23rd, 2008 02:09 pm (UTC)
это языки описания данных, они тут вообще ни при чём
Friday, May 23rd, 2008 02:16 pm (UTC)
потому что на прологе можно программировать общие задачи а на SQL можно только писать обращения к БД?
Friday, May 23rd, 2008 02:18 pm (UTC)
а про общность я ничего не спрашивал. есть языки, заточенные под решение очень узкоспециализированных задач, и это не мешает им быть языками программирования.

тем более, что на sql тоже можно писать не только обращения к БД. select 2+2 from systables;
Friday, May 23rd, 2008 02:20 pm (UTC)
Тогда — нет. Он не тьюринг-полон, где-то я видел доказательство.
Friday, May 23rd, 2008 02:25 pm (UTC)
xslt:math и тп помнишь?
Friday, May 23rd, 2008 02:34 pm (UTC)
Это терминологический вопрос. Определи что ты называешь языком программирования, и сразу получишь ответ.

Я например отношусь скорее к "Some authors restrict the term "programming language" to those languages that can express all possible algorithms"
http://en.wikipedia.org/wiki/Programming_language#cite_note-1
Поэтому SQL это не язык программирования т.к. не turing complete, а brainfuck и пролог языки программирования.

P.S. Пролог таки является алгоритмическим языком программирования, ты наверное хотел использовать термины "императивный"/"декларативный"
Friday, May 23rd, 2008 02:37 pm (UTC)
на сиквеле можно и детерминистические автоматы писать, только зацикленные на базу. на прологе же возможности шире
Friday, May 23rd, 2008 02:38 pm (UTC)
"Some authors restrict the term "programming language" to those languages that can express all possible algorithms"
А что, есть другие признаки? Мне казалось, что тьюринг-полнота — это единственное определение языка программирования :)
Friday, May 23rd, 2008 02:44 pm (UTC)
xslt:math - это фича конкретного интерпретатора, она к самому по себе языку xml отношения не имеет.
Friday, May 23rd, 2008 02:46 pm (UTC)
Это что ж - только императивщину и функциональщину считать языками? А как же декларативные всякие языки?

В общем, правда - ответ на вопрос зависит от определения. Если сделать определение частью постинга, будет смысл обсуждать.

ЗЫ Не говоря уж о том, что надо конкретнее - какой из диалектов (или стандартов) SQL имеется в виду.
Friday, May 23rd, 2008 02:48 pm (UTC)
ЩА придут поклонники функциональности и распнут тебя нафиг.
Причем будут правы.

Навесят тебе и за лисп, и за хаскель и за все
Friday, May 23rd, 2008 02:51 pm (UTC)
ну, функциональщина, в определенном смысле, не содержит "алгоритма получения результата" :)
Friday, May 23rd, 2008 02:51 pm (UTC)
Да, про функциональщину я тоже ... запнулся, когда писал.
Friday, May 23rd, 2008 02:56 pm (UTC)
мы будем говорить про практическую ценность языка Ц без библиотек и загрузщика или ты сам догадался?
Friday, May 23rd, 2008 03:05 pm (UTC)
xml, насколько я помню, язык расширяемый. так что 2+2 в него встроить можно.
но вообще да, ниже правильно написали, что это вопрос определения.
Friday, May 23rd, 2008 03:55 pm (UTC)
а языком программирования, тем не менее, является. как и логические языки типа пролога. так вот я и думаю, а чем SQL хуже?
Friday, May 23rd, 2008 03:55 pm (UTC)
за что распнут-то? я ж ничего не утверждал, я только спросил :)
Friday, May 23rd, 2008 03:58 pm (UTC)
у языка Ц вычислительность присутствует по определению, а у xml - нет.
xml можно использовать для описания программ, но это не делает его сам по сбе языком програмирования, он всё равно остаётся языком описания
Friday, May 23rd, 2008 03:59 pm (UTC)
можно. так вот и вопрос - SQL при этом является языком программирования?
Friday, May 23rd, 2008 04:08 pm (UTC)
а они нервные!
Friday, May 23rd, 2008 04:41 pm (UTC)
присоединюсь к нижеотписавшимся :) что есть язык программирования?
Friday, May 23rd, 2008 04:50 pm (UTC)
"Один вот тоже, шерсть на носу, касался, так его взяли за руки-за ноги и на дерево закинули, там он до сих пор висит, а когда снимут, так больше уже касаться не будет, шерсть на носу…"
Friday, May 23rd, 2008 07:09 pm (UTC)
нервными они становятся тока когда появляются разрывы сессий %)
Friday, May 23rd, 2008 07:16 pm (UTC)
углубимся в терминологию: что такое программа?

Меня вот прикалывает такое (http://slovari.yandex.ru/dict/gl_natural/article/136/136_207.HTM?text=%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0) определение:
Программа - согласно ГОСТ 19781-90 - данные, предназначенные для управления конкретными компонентами системы обработки информации в целях реализации определенного алгоритма.

Относительно того, что SQL - язык, надеюсь сомнений нет ни у кого. И поскольку написанное на этом языке является программой (управляет конкретными системами обработки информации), то значит он язык программирования :)
Friday, May 23rd, 2008 07:18 pm (UTC)
алгоритм обработки функциональщины внутри компилятора/интерпретатора. Есть целевая функция, и её вычисляют.
Friday, May 23rd, 2008 07:28 pm (UTC)
углубимся в терминологию: что такое программа?
Ну, меня везде учили и я везде читал, что “программа — это запись алгоритма в виде, понятном исполнителю, для которого эта программа предназначена.”
Friday, May 23rd, 2008 07:32 pm (UTC)
да-да. Запись на языке SQL понятна исполнителю - серверу.
Friday, May 23rd, 2008 07:34 pm (UTC)
Но она не является записью алгоритма, кроме вырожденных случаев типа SELECT 2+2..

С другой стороны — с прологом почти та же фигня…
Friday, May 23rd, 2008 07:46 pm (UTC)
я вот, честно говоря, совсем не помню привязки к "алогоритму".

В любом случае, алгоритм есть, потому как процессор у нас выполняет таки команды последовательно.

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

Например, для SQL алгоритм машины можно записать так:
1. получить запрос
2. выполнить запрос
Если дальше разворачивать пункты вглубь, то получим программу, которая будет составлена строго по этим самым декларациям.
Sunday, May 25th, 2008 11:52 pm (UTC)
да нет почему же, select * from table1 это описание алгоритма выбирающего все записи из table1.
Monday, May 26th, 2008 06:18 am (UTC)
А как же “Алгоритм есть последовательность элементарных действий, и так далее”? Тут никакой последовательности не видно.
Если переходить на бытовые примеры — то просьба жене “свари борщ” как-то не похожа на алгоритм варки борща. Это скорее запуск макроса, который уже в себе содержит алгоритм (рецепт) :)
Monday, May 26th, 2008 06:18 am (UTC)
Вообще, всё упирается в определения, и только в них :)
Monday, May 26th, 2008 08:48 am (UTC)
Нет - просто для базы это "элементарное действие".
А так алгоритм на ассемблере это тоже макрос, т.к. ты не управляешь пересылкой электронов в процессоре.
Monday, May 26th, 2008 08:51 am (UTC)
Ну, вот и получается — всё о терминологии спор :)