Языки программирования, которые определяют проблему вместо решения? - PullRequest
22 голосов
/ 06 августа 2009

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

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

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

Ответы [ 13 ]

0 голосов
/ 06 августа 2009

Я помню, как читал кое-что о вычислениях с использованием ДНК еще в колледже. Вы бы поместили сегменты ДНК в решение, которое представляло бы сегменты проблемы, и определили бы его таким образом, чтобы, если ДНК совмещалась, это было правильное решение. Затем вы позволяете свойствам химикатов решить проблему для вас и искать готовые пряди, которые представляют собой решение. Это похоже на то, к чему вы обращаетесь.

Я не помню, было ли это теоретическим или было сделано.

0 голосов
/ 06 августа 2009

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

Серьезное замечание: еще один голос за Пролог и различные типы DSL, предназначенные для декларативного представления.

0 голосов
/ 06 августа 2009

Существуют различные механизмы правил на основе Java, которые позволяют декларативное программирование - Drools - это тот, с которым я играл, и он кажется довольно интересным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...