|
_hum_ |
|
|
|
Раньше было как-то понятно: модель вычисления включает в себя исполнителя (вычислителя), язык (на котором исполнителю пишется алгоритм) и то, каким образом он разворчаивает алгоритмический процесс. Если в модели вычисления в язык входят команды, работа с ячейками памяти, то это императивная модель, в противном случае декларативная.
Теперь же, при более подробном знакомстве, возникают вопросы. Например, как быть с теми же алгорифмами Маркова? С одной стороны, они предполагают постоянную модификацию сохраняемого промежуточного результата, с другой стороны - явных команд нет, явных средств работы с ячейками памяти тоже. Чем это тогда отличается от той же модели рекурсивных функций, которые при развертывании выичсления сохраняют свои промежуточные результаты в переменных-аргументах?
|
|
|
|
 |
|
Circiter |
|
|
|
А кто вам сказал, что между парадигмами должны быть четкие границы?
|
|
|
|
 |
|
_hum_ |
|
|
|
Иначе зачем было вводить эту классификацию, если нет сущностного призака?
|
|
|
|
 |
|
Portnov |
|
|
|
Я плохо представляю, где вы взяли такую классификацию. Существенного смысла она не имеет. Ещё языки программирования как-то можно делить на императивные и декларативные, но и то, все современные языки поддерживают обе парадигмы, в разной степени (скажем, C# — в основном императивный, но на нём можно и декларативно писать, haskell — наоборот).
Более-менее осмысленный подход — определить понятие степени декларативности языка, как степень приближения к (несуществующему) «идеальному декларативному языку», который сам решает любую задачу, её нужно только сформулировать. Тогда тот же haskell будет более декларативным, чем C#.
|
|
|
|
 |
|
Dmitriy_M |
|
|
|
Алгорифмы Маркова, как и машина Тьюринг это математическая модель.
|
|
|
|
 |
|
arseniiv |
|
|
|
И что же? Никто не мешает сделать языки программирования, основанные на них.
|
|
|
|
 |