LINUX.ORG.RU

Чисто декларативный язык


0

3

Чет пришла мыслишка, напишу, а то потом забуду, позже обмозгую. Идея следующая. У нас (как обычно принято, как сейчас, по дефолту) есть исполнитель и текст программы — данные, а «внутри» программы, есть тоже исполнители (функции, инструкции, подпрограммы) и данные (списки, символы и пр). Это некоторого рода смещение абстракции. А что если мы оставим в языке (правилах написания текста программ) только данные, а обработку этих данных оставим на совести исполнителя? Черт возьми, мы получим чисто декларативный язык!!! В этом языке нет абстракции «исполнитель», есть только абстракция «данные». И это будет работать!!!

Тоесть, у нас получилось четкое разделение ролей. Программа-исполнитель — выполняет, программа-данные только декларирует. Эта концепция гораздо проще выглядит. И нет конечно тут ограничений, один программист может написать и исполнителя и «данные». Но, тут у нас сладкая перспектива открывается: программу-данные можно поручить и секретарше.

Сумбурно изложено, извиняюсь, но это ИМХО, настоящая бомба:)



Последнее исправление: anonimous (всего исправлений: 2)

угадал автора

anonymous
()
Ответ на: комментарий от bvn13

НЕт, основная идея в том, чтобы наклепать мини язычки, с простыми правилами. И можно использовать низкоквалифицированный труд, также как на производстве оператор ЧПУ не обязан быть ни прогером ни токарем, его дело — вбить данные.

anonimous
() автор топика
Ответ на: комментарий от jtootf

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

anonimous
() автор топика

А чем хранение данных в отдельной «программе» отличается от хранения данных в переменных, списках, файлах, базе?

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

Более того, непонятно что ты имеешь в виду под данными - переменные (int a) или их значение (сами данные, например, 42)?

kovrik ★★★★★
()
Ответ на: комментарий от qzxcvbnm

ну настоящий прототип писать мне лень, но вообще, это похоже, например на некий «интерпретатор XML». Зачем тебе код, я не пойму? Код исполнителя — это обычный репл, там в эвале ты указываешь правила интерпретации термов. Все как обысно, но текст не содержит подпрограмм.

anonimous
() автор топика
Ответ на: комментарий от kovrik

под данными

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

anonimous
() автор топика

Чет пришла мыслишка

дави ее сразу

umren ★★★★★
()
Ответ на: комментарий от kovrik

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

Не вижу препятствий. тот же xml или json — пример такого разделения.

anonimous
() автор топика
Ответ на: комментарий от anonimous

надо понимать все же чуть больше чем секретарша

domain-specific. если домен - предметная область рабочего дня секретарши, то она обязательно всё поймёт. только и всего

jtootf ★★★★★
()
Ответ на: комментарий от deep-purple

С нетерпением жду постов от топикстартера о новом удивительном открытии, вот этом.

Deleted
()

Не майся херней, хаскель формально является чисто декларативным языком.

dizza ★★★★★
()
Ответ на: комментарий от E

Что это делает в /dev/?

Зажигает ТСу звезду (эрго, это кому-то нужно).

Apple-ch ★★
()
Ответ на: комментарий от anonimous

настоящий прототип писать мне лень

Ты бы хоть попытался, вместо того чтоб изливать свои гениальные идеи на лор

anonymous
()
Ответ на: комментарий от dizza

Да, это язык со сложными правилами, и костылями, но суть его та-же.

anonimous
() автор топика
Ответ на: комментарий от anonymous

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

anonimous
() автор топика
Ответ на: комментарий от anonimous

Я знаю, что напишу

Я знаю, что не напишешь. С таким attention span и с такой плотностью постов на лоре шансов практически нет

anonymous
()

О, Господи, это же 10 из 10! Десять из десяти, настоящая бомба!

Нобелевскую премию автору!

anonymous
()

man бизнес-логика

anonymous
()

Тебе надо поступить на ВМК и изучать пролог.

vzzo ★★★
()
Ответ на: комментарий от anonimous

Чтобы мыслить в категориях функций, подпрограмм, надо понимать все же чуть больше чем секретарша.

Да ну, мыслить в терминах процессов своей предметной области достаточно естественно.

Дай примерчик псевдокода чтоле.

RedPossum ★★★★★
()
Ответ на: комментарий от Kotolegokot

А если кто-то не умеет в Си?

Ну тогда делать нечего.

i-rinat ★★★★★
()

А что если мы оставим в языке (правилах написания текста программ) только данные, а обработку этих данных оставим на совести исполнителя?

А не лисп ли ты изобрёл с его изоморфностью?

nanoolinux ★★★★
()

но это ИМХО, настоящая бомба:)

Вполне. Даже прототипы есть. SQL + XSLT. Осталось лишь дождаться пока кто-то запилит, после чего 95% остальных языков автоматически уйдут в /dev/null.

atrus ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.