November 2019

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

Style Credit

Expand Cut Tags

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

Upd: чтоб было понятнее, откуда возник вопрос. Они оба не являются алгоритмическими языками, в том смысле, что не содержат алгоритма получения результата. Они содержат только критерии, которым этот результат должен удовлетворять. Можно ли считать их при этом языками программирования?
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 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: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 08:48 am (UTC)
Нет - просто для базы это "элементарное действие".
А так алгоритм на ассемблере это тоже макрос, т.к. ты не управляешь пересылкой электронов в процессоре.
Monday, May 26th, 2008 08:51 am (UTC)
Ну, вот и получается — всё о терминологии спор :)
Monday, May 26th, 2008 06:18 am (UTC)
Вообще, всё упирается в определения, и только в них :)